12/08/2018, 16:42

Negative Testing và cách viết test case Negative

Positive testing và Negative testing là gì? Positive testing: Positive testing, hay còn được gọi là “Happy path testing” thường là hình thức kiểm thử đầu tiên mà 1 người kiểm thử sẽ thực hiện trên 1 ứng dụng. Đó là quá trình chạy 1 kịch bản kiểm thử chỉ với dữ liệu đúng và hợp lệ. ...

Positive testing và Negative testing là gì?

Positive testing:

Positive testing, hay còn được gọi là “Happy path testing” thường là hình thức kiểm thử đầu tiên mà 1 người kiểm thử sẽ thực hiện trên 1 ứng dụng. Đó là quá trình chạy 1 kịch bản kiểm thử chỉ với dữ liệu đúng và hợp lệ. Nếu kịch bản đó không cần dùng dữ liệu thì positive testing sẽ đòi hỏi chạy 1 kiểm thử chính xác và từ đó đảm bảo ứng dụng đáp ứng được yêu cầu đặt ra. Đôi khi có nhiều hơn 1 cách thức thực hiện chức năng hoặc nhiệm vụ với ngụ ý giúp người dùng có thể sử dụng linh hoạt hơn hoặc giúp sự nhất quán chung của sản phẩm đó. Đây được gọi là ‘Alternative path testing’ (kiểm thử đường thay thế), cũng là 1 loại của positive testing. Trong kiểm thử đường thay thế, kiểm thử được thực hiện lại để đáp ứng yêu cầu nhưng sử dụng route khác. Kịch bản kiểm thử thậm chí sẽ dùng cùng loại dữ liệu để đạt được kết quả tương tự. Hình và giải thích bên dưới giúp bạn có cái hiểu rõ hơn: A là điểm xuất phát và B là điểm kết thúc. Có 2 cách để đi từ A đến B. Route 1 là tuyến đường sử dụng chung và Route 2 là tuyến đường thay thế. Do đó ở trường hợp này, "Happy path testing" sẽ đi từ điểm A đến B sử dụng Route 1 và ‘Alternative path testing’ sẽ bao gồm việc lấy Route 2 để đi từ A đến B. Quan sát thấy kết quả của cả 2 cách đều ra cùng kết quả.

Negative testing

Negative testing - hay còn gọi là error path testing hay failure testing – thường được thực hiện để đảm bảo tính ổn định của ứng dụng. Negative testing là quá trình áp dụng sáng tạo nhiều nhất có thể và xác nhận ứng dụng đối ứng lại dữ liệu không hợp lệ. Nghĩa là mục đích của nó là để kiểm tra lỗi hiển thị có đúng chỗ không, hoặc xử lý dữ liệu xấu sao cho hợp lý hơn. Thực sự cần hiểu tại sao negative testing lại cần thiết trong quá trình kiểm thử của bạn. Độ tin tưởng về chức năng của ứng dụng hay phần mềm có thể được đánh giá chỉ với những kịch bản negative khi chúng được thiết kế 1 cách hiệu quả. Negative testing không chỉ nhằm mục đích đưa ra bất kỳ sai sót tiềm ẩn nào có thể ảnh hưởng đến sản phẩm mà còn là công cụ xác định điều kiện khiến ứng dụng bị sụp đổ. Ví dụ: Hãy viết các test case negative về 1 cái bút. Động cơ cơ bản của 1 cái bút là viết trên giấy. Một vài ví dụ về negative testing: • Thay đổi môi trường mà nó có thể viết lên, từ giấy thành quần áo vải hoặc gạch và xem liệu nó có thể viết không. • Nhúng bút vào nước rồi xác nhận xem nó có viết được nữa không. • Thay lõi chì dự trữ của bút bằng 1 cái trống rồi kiểm tra nó có ngừng viết hay không.

Ví dụ thực hành của positive và negative testing

Chúng ta hãy lấy 1 ví dụ về UI wizard để tạo một vài chính sách. Ở wizard, người dùng phải nhập giá trị văn bản trong 1 ô và giá trị số ở 1 cái khác. Ô đầu tiên: Ở ô đầu tiên mong muốn người dùng cung cấp tên của chính sách như bên dưới: Bây giờ ta sẽ tạo yêu cầu nhé. Yêu cầu: • Textbox name là một tham số bắt buộc • Description là không bắt buộc. • Name chỉ có thể chứa các ký tự a-z và A-Z. Không bao gồm số, có thể chứa ký tự đặc biệt. •Tên có thể dài tối đa 10 ký tự. Giờ thì hãy thiết kế các trường hợp kiểm thử positive và negative cho ví dụ này.nhé. Positive test cases: Bên dưới là các trường hợp kiểm thử positive

  1. ABCDEFGH (xác nhận trường hợp viết hoa trong giới hạn số kí tự)
  2. abcdefgh (xác nhận trường hợp viết thường trong giới hạn số kí tự)
  3. aabbccddmn (xác nhận giới hạn số kí tự)
  4. aDBcefz (xác nhận kết hợp giữa viết thường và viết hoa trong giới hạn số kí tự)
  5. … và các trường hợp khác

Negative test cases: Bên dưới là các trường hợp kiểm thử negative

  1. ABCDEFGHJKIOOOOOKIsns (name vượt quá 10 kí tự)
  2. abcd1234 (name có giá trị số)
  3. Không nhập name
  4. sndddwwww_ (name gồm kí tự đặc biệt)
  5. … và các trường hợp khác

Ô thứ 2: Ở ô thứ 2, user được mong muốn sẽ nhập vào chỉ giá trị số như bên dưới: Yêu cầu:

  • ID phải bao gồm 1 số từ 1- 250
  • Trường ID là bắt buộc Hãy tạo các trường hợp positive và negative test cho ô này.

Positive test: bên dưới là các trường hợp positive testing

  1. 12 (nhập giá trị hợp lệ trong phạm vi đặc tả)
  2. 1,250 (nhập giá trị biên trong phạm vi đặc tả)

Negative test: bên dưới là các trường hợp negative testing

  1. Ab (nhập kí tự thay vì số)
  2. 0, 252 (nhập ngoài giá trị biên)
  3. Nhập giá trị null
  4. -2 (nhập ngoài giá trị trong phạm vi)
  5. +56 (nhập giá trị hợp lệ có tiền tố bằng giá trị đặc biệt)

Các nhân tố cơ bản giúp ích trong việc viết Positive và Negative test

Nếu bạn xem kỹ ví dụ ở trên, bạn sẽ thấy có khá nhiều kịch bản positive và negative. Tuy nhiên kiểm thử hiệu quả là khi bạn biết cách tối ưu hóa danh sách ngữ cảnh positive và negative theo 1 cách giúp bạn đạt đến việc kiểm thử đầy đủ nhất. Ngoài ra, trong cả hai trường hợp này, bạn sẽ thấy một mô hình chung về cách kịch bản được đưa ra. Trong cả hai trường hợp trên, có hai thông số hoặc kỹ thuật cơ bản tạo thành một cơ sở để thiết kế đủ số lượng các trường hợp kiểm thử positive và negative. Có 2 thông số là :

  • Phân tích giá trị biên
  • Phân vùng tương đương

Phân tích giá trị biên:

Như chính tên của nó, ranh giới chỉ giới hạn cho một cái gì đó. Do đó nó liên quan đến việc thiết kế các kịch bản kiểm thử chỉ tập trung vào các giá trị ranh giới và xác nhận cách ứng dụng hoạt động. Nếu đầu vào được cung cấp trong các giá trị ranh giới thì nó được xem là positive testing và đầu vào vượt quá giá trị ranh giới được xem là một phần của negative testing. Ví dụ: nếu một ứng dụng cụ thể chấp nhận các ID VLAN từ 0-255. Khi đó 0, 255 sẽ tạo thành các giá trị ranh giới. Bất kỳ đầu vào nào dưới 0 hoặc trên 255 sẽ bị coi là không hợp lệ và sẽ tạo thành negative testing.

Phân vùng tương đương:

Trong phân vùng Tương đương, dữ liệu kiểm thử được tách biệt thành các phân vùng khác nhau. Các phân vùng này được gọi là các lớp dữ liệu tương đương. Giả sử rằng các dữ liệu đầu vào khác nhau (dữ liệu có thể là một điều kiện) ở mỗi phân vùng xử lý theo cùng một cách. Do đó chỉ có một điều kiện hoặc tình huống cụ thể cần phải được kiểm tra từ mỗi phân vùng như thể cái hoạt động thì tất cả những cái khác trong vùng cũng làm việc. Tương tự, nếu một điều kiện trong phân vùng không hoạt động, thì nhưng cái còn lại cũng không làm việc. Ở cùng ví dụ VLAN bên trên, giá trị có thể chia thành 2 vùng như sau:

  • Các giá trị từ -255 đến -1 ở 1 vùng
  • Các giá trị từ 0 đến 255 ở 1 vùng khác

Tổng kết:

Negative testing đảm bảo rằng nghiệp vụ được xác nhận, negative testing đảm bảo rằng phần mềm được chuyển giao không có sai sót nào có thể xảy ra khi khách hàng sử dụng.

Nguồn tham khảo: http://www.softwaretestinghelp.com/what-is-negative-testing/

0