Khi thực hiện kiểm thử thủ công (manual testing) bạn hẳn đã bắt gặp những thuật ngữ về các loại testing như: Smoke Testing, Integration Testing, Regression Testing, Security Testing, Performance Testing, Acceptance Testing, v.v. Vậy kiểm thử tự động (automation testing) có thể triển khai cho những loại test nào? Thực tế là khá nhiều.
Trong nội dung bài viết này sẽ tập trung giới thiệu các loại test đang triển khai tự động tại Cybozu, đây cũng là một số loại testing phổ biến được khuyến khích triển khai automation testing vì những lợi ích mà nó đem lại khá nhiều. Hãy cũng tìm hiểu về các loại testing và lợi ích cụ thể từ việc thực hiện kiểm thử tự động chúng qua nội dung chi tiết bên dưới.
Các loại test triển khai tự động tại Cybozu
Phần nội dung bên dưới, tôi viết dựa trên dự án automation testing tại Cybozu triển khai trên sản phẩm Garoon.
Garoon là sản phẩm chủ lực của tập đoàn Cybozu, hỗ trợ làm việc nhóm. Bạn có thể thử trải nghiệm online để biết thêm về sản phẩm.
Acceptance testing
Định nghĩa về acceptance testing:
Acceptance testing là loại test được thực hiện nhằm đánh giá chức năng của phần mềm có đáp ứng được những yêu cầu đã chỉ định hay không.
Từ định nghĩa về acceptance testing bạn có thể nhận thấy rằng loại test này có vai trò quan trọng, quyết định xem chức năng của sản phẩm có thể được release hay không. Mỗi khi có sự thay đổi về source code thì các test case của acceptance testing luôn cần được phía QA thực hiện test để kiểm tra lại tính ổn định của phần mềm.
Dựa trên cơ sở đó, khi thực hiện automation testing chúng tôi ưu tiên triển khai cho acceptance testing trước tiên. Điều này sẽ giúp bộ phận QA tránh phải thực hiện lặp đi lặp lại acceptance testing. Từ đó, QA sẽ có thời gian để tìm hiểu sâu hơn về nghiệp vụ sản phẩm, thực hiện những test case cho tính năng mới hay các test case đặc biệt, nâng cao chất lượng cho sản phẩm.
Cross browser testing
Định nghĩa về cross browser testing:
Cross browser testing là công việc kiểm tra và phân tích hành vi của website trên những môi trường browser khác nhau. Nó giúp đảm bảo rằng trang web của bạn mang lại trải nghiệm người dùng tối ưu, không phụ thuộc vào trình duyệt được sử dụng để truy cập.
Trên thực tế, khi đề cập đến cross browser testing phạm vi thực hiện test khá rộng:
- Thực hiện test kết hợp giữa browser và hệ điều hành khác nhau. Ví dụ: Các browser phổ biến Firefox, Chrome, Edge, Safari - test trên các hệ điều hành phổ biến như Windows, macOS, iOS và Android
- Thiết bị khác nhau: người dùng sẽ tương tác với website bằng các thiết bị khác nhau như smartphones, tablets, desktops, laptop, v.v.
Dựa trên một số yếu tố: nhu cầu khách hàng, tần suất xuất hiện bug, chiến lược test cho cross browser testing tại Cybozu được thiết kế để kiểm tra sự hoạt động của sản phẩm trên các browser phổ biến là Firefox, Chrome, Edge. Chúng tôi không thực hiện test kết hợp browser với hệ điều hành hay test trên các nhiều thiết bị.
Loại test này không giống với acceptance testing, tần suất thực hiện không thường xuyên. Thông thường cross browser testing được chạy trước mỗi lần release. Tuy nhiên, việc thực hiện kiểm thử thủ công cho cross browser testing thực sự là một công việc nhiều và vất vả đối với QA. Do đó, sau khi tự động hóa acceptance testing thì chúng tôi thực hiện tự động hóa cho cross browser testing để giảm gánh nặng cho bộ phận QA.
Thực hiện automation testing cho cross browser testing gặp phải một số khó khăn như:
- Sẽ cần xử lý riêng cho từng loại browser: upload file, drag and drop, locator, v.v.
- Browser IE thực hiện automation testing còn gặp nhiều khó khăn
Do đó, việc tiến hành automation testing cho loại test này sẽ tốn nhiều chi phí. Bạn nên cân nhắc điều đó trước khi thực hiện.
Customization JS testing
Thuật ngữ “Customization JS testing“ có thể khá mới mẻ với bạn. Thậm chí khi tìm kiếm trên cộng đồng mạng cũng khá hiếm gặp. Đây là loại testing dựa trên đặc điểm sau của sản phẩm Garoon:
Sản phẩm Garoon của Cybozu cho phép khách hàng upload một hay nhiều file .js
lên trong phần cài đặt hệ thống. Nội dung file này sẽ được tuân theo một format định sẵn để can thiệp vào web element trên giao diện của user và thay đổi cách chúng hiển thị, hoặc cho phép thêm element mới, v.v. Các tác vụ này gọi chung là tùy biến JS (customization JS).
Và tất nhiên để cung cấp chức năng này tới khách hàng, QA bắt buộc phải thực hiện upload một hay nhiều file .js
lên, kiểm tra xem giao diện có áp dụng các cài đặt mới từ những file này không.
Đối với loại testing này, QA cần chuẩn bị những file .js
. Để làm được việc này, QA cũng phải tìm hiểu về một số syntax của JavaScript để hiểu được cơ bản file này sẽ làm thay đổi giao diện ở đâu, như thế nào?
Chính vì thế, việc tự động hóa cho loại Customization JS được thực hiện để hỗ trợ cho bộ phận QA, giảm thời gian chuẩn bị những file .js
phức tạp.
API testing
Định nghĩa về API (Application Programming Interface) tesing:
API testing là một loại kiểm tra phần mềm nhằm xác nhận các APIs. Mục đích của API testing là để kiểm tra chức năng, độ tin cậy, hiệu suất và tính bảo mật của các APIs.
Đặc điểm của API testing:
Thông thường với GUI testing, bạn sẽ nhập dữ liệu trên, gửi kết quả, xác nhận kết quả trên UI của ứng dụng. Với API testing thì khác, bạn sử dụng phần mềm để gửi lệnh gọi tới API, sau đó nhận kết quả trả về của hệ thống. Toàn bộ quá trình, không cần tương tác với UI.
API testing rất khác với GUI testing và sẽ không tập trung vào giao diện của một ứng dụng. Nó chủ yếu tập trung vào lớp logic nghiệp vụ của kiến trúc phần mềm.
Tại Cybozu, chúng tôi thực hiện tự động hóa cho API testing trên các loại như sau:
- SOAP API testing
- REST API testing
Nội dung bài viết này chúng tôi không đi sâu vào giải thích SOAP hay REST API là gì, khác biệt ra sao. Bạn có thể tham khảo tại đây để có thêm thông tin chi tiết.
Nhìn chung SOAP hay REST API đều là các web APIs service. Garoon của Cybozu cung cấp đến cho khách hàng cả hai loại dịch vụ này.
Để thực hiện manual testing cho API testing bên phía QA sẽ sử dụng một số các phần mềm để gọi đến các API và kiểm tra xem dữ liệu trả về có đúng hay không. Số lượng test case của API testing thường tương đối lớn. Dữ liệu trả về sẽ có định dạng json hay xml tùy thuộc vào từng loại dịch vụ. Để xác nhận dữ liệu trả về bằng mắt sẽ gây khó khăn cũng như dễ xảy ra sai sót.
Hiện tại Cybozu đã thực hiện kiểm thử tự động cho cả SOAP và REST API testing. Qua thực tế chúng tôi nhận thấy việc chạy tự động cho API testing giúp tiết kiệm rất nhiều thời gian. Chúng tôi tích hợp automation testing cho Garoon lên hệ thống CI, và tiến hành thống kê so sánh thời gian chạy giữa manual và automation testing. Hãy cũng xem kết quả trong sơ đồ bên dưới:
Vì không cần tương tác với UI nên hàng trăm test case có thể hoàn thành trong thời gian vài phút. Rõ ràng automation giúp rút ngắn thời gian testing cho loại API testing rất nhiều: nhanh hơn hàng trăm lần so với việc thực hiện thủ công.
Mặt khác, tự động hóa cũng giúp kết quả test ổn định hơn, tránh được một số human error như: nhập thiếu thuộc tính của API, nhập sai format, v.v.
Đối với automation testing cho API testing, bạn sẽ cần tìm hiểm thêm một số công cụ hay thư viện hỗ trợ gửi request. Với JavaScript, axios là một thư viện được sử dụng rộng rãi. Bạn có thể xem xét để sử dụng axios trong dự án của mình.
Một số loại test khác
Như đã đề cập ở phần đầu bài viết, kiểm thử tự động còn có thể mở rộng và phát triển trên các loại test khác nhau rất đa dạng. Một số loại test có thể xem xét để thực hiện kiểm thử tự động như:
- Regression testing
- Performance testing
- Security testing
Tùy vào nhu cầu dự án mà bạn có thể xem xét việc thực hiện tự động trên loại test nào cho phù hợp.
Tổng quan dự án tự động tại Cybozu
Chúng tôi đã giới thiệu với các bạn các loại test triển khai tự động cho Garoon. Các loại test này được tổ chức nằm chung trong 1 dự án để việc maintain được dễ dàng.
Sau đây là hình ảnh minh họa cho dự án:
tests/end_to_end/
|--- acceptance <----| Thư mực chứa source code của acceptance testing.
|--- configuration <----| Thư mực chứa source code của cross browser testing.
|--- js_api <----| Thư mực chứa source code của customization JS testing.
|--- rest_api <----| Thư mực chứa source code của REST API testing.
|--- soap_api <----| Thư mực chứa source code của SOAP API testing.
...
Lời kết
Hi vọng qua bài viết này các bạn có thể nắm được một số các loại test của kiểm thử tự động và lợi ích của việc tự động hóa của loại test đó đem lại là gì. Từ đó bạn có thể xem xét lựa chọn ra loại test cần ưu tiên để tự động hóa cho dự án mình phát triển.
Tài liệu tham khảo
What is User Acceptance Testing (UAT)? with Example
Cross Browser Testing: Definition, Why it is Important, How to do it
API Testing Tutorial: What is API Test Automation? How to Test