Giới thiệu 3 cách thiết kế testcases: Positive, Negative và Destructive Testcase

I.Giới thiệu

Chúng ta thường nói rất nhiều về các tài liệu trong kiểm thử. Đó là một phần rất quan trọng trong quá trình kiểm thử phần mềm, testcase cũng nằm trong số đó. Testcase được hiểu là trường hợp kiểm thử gồm mỗi chuỗi hành động theo từng bước của Tester nhằm để xác nhận xem một phần của hệ thống hoạt động đúng theo yêu cầu, mong muốn của người sử dụng hay chưa? Nhưng trước khi viết testcase, có bước rất quan trọng mà Tester phải xem xét đó chính là xác định kiểu của testcase mình sẽ viết. Mục tiêu của testcase là gì? Phải xác định hệ thống phần mềm hoạt động đúng? Hay chưa đúng? Hay để xem phần mềm có thể bị chết hoặc gặp trục trặc ở một điểm/phần nào đó? Do đó, chúng ta thường chia thành 3 kiểu viết testcase trong khi kiểm thử hệ thống bao phủ được 3 cách tiếp cận kiểm thử:

  • Positive test cases
  • Negative test cases
  • Destructive test cases => Bài viết này sẽ giới thiệu tổng quan 3 kiểu testcase đã nêu trên, đi từ khái niệm, mục đích đến ví dụ tham khảo.

II. Positive Testcases

1. Khái niệm

Positive testcase là cách viết testcase dựa vào các trường hợp dữ liệu đầu vào hợp lệ để xác nhận hệ thống phần mềm đang hoạt động đúng theo yêu cầu hay không?

2. Mục đích

Mục đích chính của cách viết này là để chắc chắn hệ thống phần mềm không phát sinh lỗi, hoạt động đúng chức năng khi thử nghiệm các điều kiện đầu vào hợp lệ đáp ứng các đặc tả yêu cầu hay mong muốn của người sử dụng.

3. Ví dụ

Cho một ví dụ về việc "Xác nhận xem việc nhập mật khẩu vào textbox (khi đăng ký tài khoản) có đáp ứng yêu cầu: Cho phép nhập mật khẩu gồm 5-10 ký tự chỉ gồm ký tự chữ và số"

Thiết kế testcase positive:

  • Xác định điều kiện đầu vào: "5-10 ký tự" và "ký tự là chữ và số"
  • Dựa vào kỹ thuật bảng quyết định, ta có thể chia dữ liệu đầu vào có thể là các trường hợp hợp lệ và không hợp lệ từ 2 điều kiện.
  • Các testcase positive chính là các testcase hợp lệ dữ liệu đầu vào. Cụ thể các case sau trong ví dụ:
    • Trường mật khẩu gồm 5 ký tự
    • Trường mật khẩu gồm 10 ký tự
    • Trường mật khẩu đều là ký tự số
    • Trường mật khẩu đều là ký tự chữ
    • Trường mật khẩu gồm các ký tự chữ và số

III. Negative Testcases

1. Khái niệm

Negative testcase là cách viết testcase dựa vào các trường hợp dữ liệu đầu vào không hợp lệ để xác thực xem phần mềm không hoạt động đúng với các đầu vào này hay không?

2. Mục đích

Mục đích chính của cách viết này để đảm bảo hệ thống phần mềm hợp lệ chặn được các trường hợp sai có thể xảy ra và hệ thống phần mềm thực hiện việc nào đó (VD: thông báo lỗi, cảnh báo sai) với những đầu vào không hợp lệ này.

3. Ví dụ

Ta sẽ xét lại ví dụ "Xác nhận xem việc nhập mật khẩu vào textbox khi đăng ký tài khoản có yêu cầu: Cho phép nhập 5-10 ký tự chỉ gồm ký tự chữ và số" như trên. Sự khác biệt viết Negative testcases so với viết Positive testcases chủ yếu là:

  • Các negative testcases là những trường hợp đầu vào không hợp lệ đã được phân tích ra. Cụ thể như sau:
    • Trường mật khẩu gồm 1-4 ký tự
    • Trường mật khẩu gồm lớn hơn 11 ký tự
    • Trường mật khẩu các ký tự khác ký tự số và chữ: ký tự đặc biệt như !, @,#,$,%,^,&,*
  • Với các trường hợp này hệ thống phải không cho phép nhập hoặc đưa ra thông báo xác nhận lỗi.Hệ thống nên xử lý phù hợp với các cách tiếp cận UI.

IV. Destructive Testcases

1. Khái niệm

Destructive Testcases là cách viết testcase thử nghiệm "phá vỡ" hệ thống, kiểm tra hệ thống có xử lý đến mức nào, có thể bị chết ở điểm nào không?

2.Mục đích

Mục đích chính của cách viết này là kiểm thử giới hạn xử lý của hệ thống, có xảy ra trục trặc ở điểm nào không sau một loạt thao tác?

3. Ví dụ

  • Khi kiểm thử hệ thống, có thể thử nghiệm một số testcase như sau:
    • Xóa/chèn một đoạn Javascript vào trang web với mục đích phá hoại
    • Sử dụng độ tải lớn vào hệ thống để xem hệ thống có thể dẫn đến failure hay không?
    • Nhấp chuột nhanh để phá vỡ 1 trang web nào đó trong hệ thống
  • Bằng việc tạo ra một số kịch bản kiểm thử không đoán trước được như thế này, người kiểm thử có thể xác định được hệ thống phần mềm có thể xử lý đủ loại tình huống đã mượt hay chưa?

V.Áp dụng ba loại testcase trong việc kiểm thử hệ thống

Thật dễ dàng để kiểm thử các positive testcases trong quá trình kiểm thử, nhưng người kiểm thử cũng không thể bỏ qua các negative và destructive testcases. Ba kiểu viết testcase có thể áp dụng với nhiều loại kiểm thử như: kiểm thử tích hợp, kiểm thử chức năng - phi chức năng hay kiểm thử chấp nhận người dùng. Khi áp dụng cả 3 loại testcase này, người kiểm thử có thể xem xét được tất cả các góc nhìn của việc kiểm thử, dẫn đến độ bao phủ kiểm thử hệ thống cao hơn, sản phẩm phần mềm sẽ có chất lượng tốt hơn. Bài viết tham khảo: https://blog.testlodge.com/positive-negative-destructive-test-cases/


All Rights Reserved