PHÂN BIỆT: Test Suite, Test Plan, Test Scenario và Test Case

Câu hỏi được đặt ra trong bài này là: Test suite, Test plan, Test scenario và Test case là những gì, có liên quan đến nhau ra sao?

Trước tiên, ta có thể tìm định nghĩa tổng quan của chúng thông qua chương trình học của ISTQB.

Test Plan 

Tài liệu tổng quan về việc test 1 project. Scope của project, hướng tiếp cận, STLC(Software Testing Life Cycle), resource và nhân lực cần có, các features cần được test và không phải test, các tool test và môi trường test cần có. Có thể ví test plan là 1 cái xương sống của 1 testing project và là cái được chuẩn bị đầu tiên khi có 1 project.


Test Case

Theo ISTQB Glossary of Testing Terms 2.1 (ISTQB) thì Test Case được định nghĩa như sau:

Test Case là một tập hợp các giá trị nhập, các điều kiện tiên quyết thực thi, các kết quả mong đợi và các điều kiện kết thúc, được xây dựng cho mục đích hoặc điều kiện kiểm thử riêng biệt, như thực hiện một đường dẫn chương trình riêng hoặc để kiểm tra lại đúng với yêu cầu của spec. [Theo IEEE 610]

Lưu ý rằng quá trình phát triển test case có thể giúp tìm ra lỗi trong các yêu cầu hoặc thiết kế của ứng dụng, vì nó đòi hỏi phải tư duy hoàn toàn thông qua các hoạt động của ứng dụng. Vì lý do này, việc chuẩn bị test case sớm nhất có thể trong qui trình phát triển phần mềm là rất hữu ích.

Điều quan trọng khi thiết lập một Test Case:

  • Ít step nhất có thể và chắc chắn rằng chỉ có 1 bước verify cần thực hiện. 
  • Expected result phải được miêu tả 1 cách rõ ràng. Một ví dụ cho việc mô tả không rõ ràng như sau: "test pass khi user login thành công". Thành công như thế nào? điều gì chứng tỏ login thành công? App hay web sẽ redirect user tới screen nào? Điều gì xác định là user đã được login? Tất cả phải được nêu một cách RÕ RÀNG NHẤT CÓ THỂ. Điều này là tối quan trọng nếu bạn muốn test case có thể được automate.
  • Pre-requisites phải được mô tả rõ ràng. Những features nào phải hoạt động trước khi test case có thể chạy? Tester phải làm gì trước khi bắt đầu test case? Test case nào cần phải pass trước khi có thể chạy test case hiện tại?



Phần mềm quản lý Test Case nổi tiếng: RedMine / RedCase

Test Scenario

Test scenario là 1 kịch bản trong đó có chứa các test case liên quan đến kịch bản đó. Test scenario đi sâu hơn vào chi tiết của từng feature. Test scenario mô tả cái cần test, lưu ý là cái cần test chứ không test như thế nào. Ở đây có thể ví dụ một test scenario điển hình như: Test Login form và kiểm tra chắc chắn rằng nó hoạt động như mong muốn. Một test scenario có thể gồm nhiều test case.

Test Scenario là tập hợp các testcase để test 1 form hoặc function, chỉ nêu mục đích, không chỉ ra các step cụ thể. Còn test case thì có step cụ thể làm thế nào để test được.

Thí dụ:
Test Scenario: Kiểm tra chức năng Send email
Các Test Case nằm trong Test Scenario gồm :
+ Check phản ứng của Send button khi không có địa chỉ mail
+ Check phản ứng của Send button khi không có title
+ Check phản ứng của Send button khi nhập email không có trên server

Test scenario có thể bao gồm các test scenario nhỏ hơn bên trong.
(UC là use case, ví dụ như use case [admin], admin có thể quản lý bài viết, quản lý account; use case [member] thì edit account, đăng bài).

Test case và Test Scenario. Loại nào ưu việt hơn?

Bất cứ ai làm về kiểm thử phần mềm đều hiểu thế nào là Test Case nhưng rất ít bạn biết về Test Scenario. 

Test Case được ví như những đơn vị nhỏ nhất của từng test project, như các tế bào của một cơ thể sống. Trong khi đó Test Scenario đi sâu hơn vào chi tiết của từng feature. 

Khi dự án không có nhiều thời gian, Test Scenario sẽ là một lựa chọn tối ưu cho dự án. Và nó cũng vẫn đạt được hiệu quả cao như việc tạo Test Case. Bạn có thể "smoke test" (phương pháp kiểm thử nhanh) nhờ vào tập Test Scenario thay vì rà soát hàng ngàn Test Case.

Test Suite

Là một tập hợp các test case cho một mục đích nhất định, ví dụ như Regression Test Suite được chạy để verify những feature cũ.

  • Bản chất của Test Suite là mô tả thật rõ ràng mục tiêu và đích đến của các trường hợp kiểm thử.
  • Test Suite và Test Scenario hoàn toàn không liên quan đến nhau.


Rất nhiều tester lẫn lộn giữa test case và test scenario. Việc thực hiện test case cần chi tiết và chính xác tuyệt đối, không chung chung như scenario. Các bạn có thể thắc mắc rằng vì sao cần quá nhiều chi tiết cho test case như vậy, hoặc cảm thấy tốn thời gian khi soạn các test cases. Nên lưu ý rằng một project có rất nhiều phase. Có thể bạn test khi application đang được develop và chuyển qua project khác khi app đã "go live". Những tester khác sẽ được hưởng lợi rất nhiều nếu người ta biết rõ bạn đã test những gì và test như thế nào thông qua những test case bạn đã soạn. Nên nếu có thể, hãy cụ thể hóa và document tất cả những gì bạn đã làm thông qua những thứ như Test Plan, Test Scenario và Test Case.

Test suite rất hữu ích khi phân rã các chức năng lớn thành các chức năng nhỏ ở các cấp độ sâu hơn. Thí dụ ta s có Business Requirement gồm có chức năng Login, Send mail, Purchase. Với chức năng Purchase ta lại có 2 loại user ứng với mỗi kiểu purchase tương ứng.

Mô hình sẽ đi như sau:
BR_Login => UC_User =>TC1_TC5
BR_Sentmail => UC_User =>TC6_TC10
BR_Purchase => UC_NormalUser => TC11_TC20
BR_Purchase => UC_BusinessUser => TC21_TC30

Test suite về bản chất là tương tự như phân loại một tập hợp các thành phần. Việc phân loại giúp chúng ta lọc hoặc "vớt nhanh" các nhóm tương đồng. Thí dụ chúng ta có thể gán nhãn các Test Case ở nhiều module khác nhau vào một nhóm có tên là "Tài khoản". Nhóm này sẽ bao gồm toàn bộ vòng đời của một tài khoản từ lúc tạo ra cho đến khi kích hoạt, đăng nhập và phê duyệt, khóa tài khoản... ở hệ thống quản trị (Admin).

Thông thường, một test suite sẽ có một vài đặc điểm chính sau:

  • Test Suite được tạo ra sau test plan (kế hoạch kiểm thử)
  • Test Suite bao gồm một số bài kiểm tra và trường hợp kiểm thử.
  • Mô tả mục tiêu và đích đến của các trường hợp kiểm thử
  • Test Suite bao gồm các thông số kiểm thử, như ứng dụng, môi trường, phiên bản, v.v…
  • Có thể tạo ra Test Suite dựa trên test cycle (chu trình kiểm thử) cũng như test scope (Phạm vi kiểm thử)
  • Bao gồm nhiều thể loại kiểm thử, như kiểm thử chức năng hoặc phi chức năng
  • Giúp tăng hiệu suất của quá trình kiểm thử bằng cách giúp kiểm thử liên tục ở những vùng hoặc điểm "nóng" cần khoanh vùng. Tạo ra các tình huống khẩn cấp dễ dàng hơn là tìm kiếm những Test Case liên quan từ danh sách hàng ngàn Test Cases (dễ khiến bạn "tàu hỏa nhập ma").
  • Có thể được sử dụng bởi nhiều công cụ tự động như jUnit, Selenium, etc.
     

Tìm hiểu thêm: Test Suite là gì?

Công cụ quản lý Test Case

Có rất nhiều phần mềm có thể giúp bạn quản lý Test Cases, từ các bản có phí đắt tiền như JIRA cho đến miễn phí như RedMine. Bạn cũng có thể tìm kiếm cho mình một phần mềm Web trên PHP, chúng tôi đề nghị bạn có thể mua source của phần mềm sau để làm công cụ quản lý chuyên nghiệp:

https://codecanyon.net/item/qa-desk-simple-elegant-manual-test-management-tool/21985515

Các tính năng
  • Built Using Laravel (7.x) PHP and AngularJS Framework (1.7.x).
  • Based on Bootstrap HTML/CSS Framework.
  • Responsive Layout.
  • Ready to Use.
  • Well documented.
  • User friendly UI.
  • Robust Admin Section
  • Secure data handling.
  • Manage manual testing process easily.
  • Requirement Management.
  • Test Plan Management.
  • Test Suite Management.
  • Test Case Management.
  • Test Cycle Management.
  • Test Execution Management.
  • Issues Management.
  • Notes Management
  • Feasibility to create User Role with Permissions
  • Dashboard to show work statistics graphically.
     

TIGO Solutions