Hành Trình Ứng Dụng Automation Test Vào Dự Án Migration
Trong bối cảnh dịch bệnh diễn biến hết sức phức tạp, câu hỏi về việc tìm lời giải đáp cho bài toán ứng dụng Automation Test vào dòng dự án Migration để tăng tốc độ phát triển và giảm chi phí nhân công trở nên vô cùng cấp bách...
Tiền truyện
Âu Lạc Quốc, Địa Cầu, Thái Dương Tinh Hệ, Cô Vy đệ nhất niên.
Dịch bệnh hoành hành khắp tinh cầu. Khắp nơi sinh linh đồ thán, tự giam lỏng trong nhà để phòng tránh dịch bệnh. Kế sinh nhai của hàng trăm vạn con dân vương quốc bị ảnh hưởng nghiêm trọng. Duy có Ải Nhân (1) tộc chuyên luyện chế pháp khí (2) là ít bị ảnh hưởng. Tuy nhiên trước tình hình dịch bệnh kéo dài khó lường, tộc trưởng Ải Nhân tộc đã ra quyết định đặt cả tộc vào trạng thái lâm nguy. Hạn chế tuyển dụng tộc nhân mới, cắt giảm chi tiêu và luân chuyển nội bộ là các biện pháp cơ bản để đảm bảo sự tồn vong của toàn tộc.
Một trong các pháp môn được nhiều người nghĩ đến để cắt giảm chi tiêu là tự động hoá kiểm thử pháp khí bằng pháp bảo (3). Nếu một pháp bảo được sử dụng để tự kiểm tra chất lượng pháp khí được sử dụng thì có thể cắt giảm rất nhiều chi phí con người. Tuy nhiên mọi việc lại không đơn giản chỉ là đi mua một pháp bảo loại kiểm tra về rồi sử dụng đại trà là xong. Bản thân pháp bảo có thể có giá rất cao, hoặc nếu miễn phí thì lại tốn chi phí đào tạo nhân công, và sẽ chiếm nhân công của bên chế tạo pháp khí. Nếu sử dụng pháp môn này không cẩn thận thì có thể trở thành giết địch 1000 tự tổn 800, hoặc thậm chí tự sát cũng không làm địch suy chuyển mảy may.
Rất may là nhiều bậc trưởng lão trong tộc sau nhiều năm nghiên cứu đã phát triển thành công pháp môn kiểm thử tự động áp dụng được cho rất nhiều kiểu dự án, duy chỉ có một quy trình chế tạo rất khó ứng dụng kiểm thử tự động, đó là quy trình chế tạo pháp khí mới dựa trên thiết kế của pháp khí cũ nhưng sử dụng công nghệ và vật liệu mới. Đứng trước thử thách đó, và cũng đang trực tiếp thí điểm một dự án kiểm thử tự động cho dòng dự án này (Application Migration), tại hạ xin mạn phép đưa ra lời giải cho bài toán này như nội dung bên dưới.
(1) Ải Nhân: Tộc người lùn trong thần thoại châu Âu, có sở trường chế tạo vũ khí trang bị.
(2) Pháp khí: AUT, SUT, ứng dụng cần test.
(3) Pháp bảo: Tool hoặc framework làm automation test
UT: Unit testing
IT: Integration testing
1: Giả định
Để ứng dụng kiểm thử tự động có hiệu quả thì cần có các điều kiện cần thiết. Và riêng với dòng dự án migration ta phải giả thiết những điều kiện như sau:
- Nhu cầu kiểm thử chủ chốt có trong dự án là: So sánh năng suất của 2 ứng dụng, đảm bảo ứng dụng mới chạy đúng chức năng và có năng suất cao hơn hoặc bằng ứng dụng cũ.
- Ứng dụng mới phải có quy trình làm việc hoàn toàn giống và các thành phần trên giao diện giống > 90% so với ứng dụng cũ, phần backend giữa hai ứng dụng phải có data model giống nhau trên từng cặp API tương ứng. Chỉ khác biệt về các thuộc tính hiển thị hoặc định danh, hoặc xác thực.
- Không thể tự động hoá kiểm thử mức độ cao với dòng dự án này do thời gian gấp rút và hạn chế về nhân lực.
- Không thực hiện tự động hoá kiểm thử toàn bộ ứng dụng cũ, nên tự động hoá kiểm thử chức năng toàn bộ với ứng dụng mới nếu thời gian phát triển lâu hơn 1 năm.
- Công cụ phải dễ sử dụng để tận dụng được nguồn lực sẵn có là các nhân viên kiểm thử thủ công (manual test engineer).
2: Công cụ
Trên thị trường, Blazemeter là công cụ duy nhất có khả năng vừa kiểm thử năng suất (performance) vừa kiểm thử chức năng (functional), tuy nhiên công cụ này có giá thành cao và vẫn thiếu chức năng so sánh kết quả giữa 2 ứng dụng. Do đó tại hạ quyết định tự phát triển một giải pháp, tạm gọi là akaMeter, giải pháp này sẽ là kết hợp giữa các công cụ dưới đây:
- JMeter: Để đo năng suất
- Webdriver: Để điều khiển trình duyệt
- Middleware tự phát triển: Để kết nối các thành phần trong giải pháp, cũng như lập báo cáo và liên kết với các hệ thống CICD.
3: Các phương pháp kiểm thử trong dự án
- So sánh năng suất đơn lẻ giữa từng cặp API của hai hệ thống bằng JMeter bằng cùng script. JMeter sẽ gọi thẳng từng API và lấy kết quả. Phép thử này cho biết API mới hay cũ hoạt động nhanh hơn, API nào chịu tải tốt hơn.
2. So sánh năng suất thực thi trên giao diện: Tương tự như sơ đồ trên, nhưng lần này JMeter sẽ gọi script selenium để thực thi phép đo trên giao diện của 2 ứng dụng. Phép đo này có thể kết hợp cùng phép đo ở trên trong cùng kịch bản để đo năng suất trải nghiệm người dùng kết hợp với hệ thống chạy toàn tải, không tải hoặc quá tải. Cho phép phát hiện ra các điểm yếu về năng suất ở phía Frontend và Backend đồng thời.
3. Kiểm thử tích hợp hệ thống tự động: Sử dụng Selenium và ngôn ngữ Java như thông thường. Chỉ test một số giới hạn các test case integration hoặc system trên HỆ THỐNG MỚI, đảm bảo là tất cả các màn hình đều được duyệt qua ít nhất một lần trong test suite. Bộ test suite này nhằm đảm bảo phát hiện bug tích hợp sớm trước giai đoạn release (Ví dụ khi 1 module thay đổi nhưng 1 module liên quan khác không thay đổi theo, UT vẫn pass nhưng IT sẽ fail do 2 module không nói chuyện được với nhau). Phần này thuộc phạm vi functional testing nên tại hạ không đề cập sâu hơn trong bài viết này.
4. Heartbeat: Kiểm tra nhịp tim. Chạy cùng 1 test script đơn giản (vd login) trên hệ thống staging hoặc production mỗi 15 phút 1 lần để đảm bảo hệ thống đang online. Phép thử tuy rất đơn giản về mặt kỹ thuật nhưng đã từng giúp chúng tôi phát hiện ra lỗi memory leak trên hệ thống của một khách hàng lớn sau khoảng 1 tuần chạy.
4: Phương án kết hợp các phép đo trong dự án
Do chưa làm tài liệu tỷ suất hoàn vốn (ROI) vậy nên tại hạ tạm thời chỉ có thể đưa ra các khuyến cáo như sau:
- Nếu dự án kéo dài dưới 6 tháng: Chỉ nên áp dụng phép đo IV.2 và IV.4
- Nếu dự án kéo dài từ 6 tháng đến 1 năm: Áp dụng phép đo IV.2, IV.3 và IV.4
- Dự án kéo dài hơn 1 năm: Áp dụng kết hợp cả 4 phép đo.
- Để tester manual cũng có thể viết được test script, cần core member viết các hàm dùng chung trước cho các từ khoá cơ bản trong kiểm thử: Click, Type, Verify, Check..., đọc từ khoá từ CSV hoặc Excel và xử lý các ngoại lệ thật tốt, như vậy manual tester có thể dễ dàng viết test script và chạy thử chỉ bằng file excel, csv hoặc 1 lệnh đơn giản.
Kết
Nhu cầu kiểm thử phần mềm tự động không phải thời này mới có. Đó là bài toán đặt ra từ lâu và đặt trong bối cảnh xã hội bây giờ trở nên cấp bách hơn bao giờ hết. Giải được bài toán ứng dụng auto test trong dự án đồng thời kết hợp các phép đo để đạt được hiệu suất cao nhất trong công việc là mục tiêu của tất cả các doanh nghiệp trong thời gian tới.