KỸ THUẬT VIẾT TEST CASE 2: Phân vùng tương đương

KỸ THUẬT VIẾT TEST CASE 2:  Phân vùng tương đương

  Thiết kế test case là một kỹ thuật rất quan trọng trong quá trình làm test và nó gắn bó với người tester trong suốt quãng thời gian làm nghề. Ở phần một, chúng ta đã cùng tìm hiểu về kĩ thuật thiết kế test case đầu tiên - kỹ thuật “phân tích giá trị biên”. Trong bài blog này, chúng ta sẽ cùng tìm hiểu thêm một kỹ thuật thiết kế test case khác. Đó là kỹ thuật “phân vùng tương đương”.

  Giả sử trong phần mềm có một trường yêu cầu người dùng nhập một dãy số bất kỳ (giới hạn từ 6-10 ký tự). Vậy trong ví dụ này chúng ta có thể sử dụng kỹ thuật viết test case phân vùng tương đương như thế nào?

Định nghĩa:

  • Phân vùng tương đương (Equivalence Partitioning) là một loại của Kiểm thử hộp đen (Black box testing) mà ta có thể áp dụng vào tất cả các cấp độ kiểm thử như: kiểm thử đơn vị (unit testing), kiểm thử tích hợp (integration testing), kiểm thử hệ thống (system testing) …
  • Đây là phương pháp chia các điều kiện đầu vào thành những vùng tương đương nhau. Tất cả các giá trị trong một vùng tương đương sẽ cho một kết quả đầu ra giống nhau. Vì vậy chúng ta có thể test một giá trị đại diện trong vùng tương đương. Điều này giúp tiết kiệm thời gian test.
  • Các lớp tương đương được xác định bằng bằng cách lấy mỗi trạng thái đầu vào (thường là 1 câu hay 1 cụm từ trong đặc tả) và phân chia nó thành 2 hay nhiều nhóm.
  • Thiết kế test case bằng phân vùng tương đương được tiến hành theo hai bước:

+ Xác định các lớp tương đương.

+ Xác định các ca kiểm thử.

Xác định các lớp tương đương:

  • Có hai kiểu lớp tương đương được xác định:

+ Lớp tương đương hợp lệ: Mô tả các đầu vào hợp lệ của điều kiện.

+ Lớp tương đương không hợp lệ: Mô tả tất cả các trạng thái có thể khác của điều kiện. (Ví dụ như các giá trị đầu vào không đúng).

  • Những nguyên tắc áp dụng để xác định các lớp tương đương:

+ Nếu 1 trạng thái đầu vào định rõ giới hạn của các giá trị, xác định 1 lớp tương đương hợp lệ và 2 lớp tương đương không hợp lệ.

+ Nếu 1 trạng thái đầu vào xác định số giá trị, xác định 1 lớp tương đương hợp lệ và 2 lớp tương đương bất hợp lệ.

+ Nếu 1 trạng thái đầu vào chỉ định tập các giá trị đầu vào và chương trình sử dụng mỗi giá trị là khác nhau, xác định 1 lớp tương đương hợp lệ cho mỗi loại và 1 lớp tương đương không hợp lệ.

+ Nếu 1 trạng thái đầu vào chỉ định một tình huống “chắc chắn – must be”, xác định 1 lớp tương đương hợp lệ và 1 lớp tương đương không hợp lệ.

Xác định các ca kiểm thử:

  Đối với các lớp tương đương mà chúng ta đã xác định ở bước trên, bước thứ hai là sử dụng các lớp tương đương đó để xác định các ca kiểm thử. Quá trình này gồm các bước như sau:

  • Gán 1 số duy nhất cho mỗi lớp tương đương.
  • Cho đến khi tất cả các lớp tương đương hợp lệ được bao phủ bởi (hợp nhất thành) các ca kiểm thử, viết 1 ca kiểm thử mới bao phủ càng nhiều các lớp tương đương chưa được bao phủ càng tốt.
  • Cho đến khi các ca kiểm thử của bạn đã bao phủ tất cả các lớp tương đương không hợp lệ, viết 1 ca kiểm thử mà bao phủ một và chỉ một trong các lớp tương đương không hợp lệ chưa được bao phủ.
  • Lý do mà mỗi ca kiểm thử riêng bao phủ các trường hợp không hợp lệ là vì các kiểm tra đầu vào không đúng nào đó che giấu hoặc thay thế các kiểm tra đầu vào không đúng khác.

Ưu vả nhược điểm của kỹ thuật:

Ưu điểm:

  Vì mỗi vùng tương đương ta chỉ cần test trên các phần tử đại diện nên số lượng test case được giảm đi khá nhiều nhờ đó mà thời gian thực hiện test cũng giảm đáng kể.

Nhược điểm:

  • Không phải với bất kỳ trường hợp nào đều có thể áp dụng kỹ thuật này.
  • Có thể bị rò rỉ lỗi ở biên nếu chỉ chọn giá trị ở khoảng giữa của miền tương đương.

=> Khi phần lớn các lỗi được tìm thấy lúc kiểm tra giá trị ở biên của các phân vùng thì chúng ta nên kết hợp với kỹ thuật phân tích giá trị biên (boundary value analysis) mà chúng ta đã tìm hiểu ở phần trước.

Tổng kết:

  Vậy tại sao cần kiểm thử giá trị biên và phân vùng tương đương?

  • Hai kỹ thuật này đều thích hợp cho các ứng dụng chuyên về tính toán với số lượng lớn biến, đầu vào.
  • Có hướng dẫn rất rõ ràng về việc xác định các test case mà không ảnh hưởng đến hiệu quả của kiểm thử.
  • Hai kỹ thuật này được sử dụng để giảm số lượng lớn các test case. Các khối lượng test case đã phân chia có thể quản lý được.

  Quay trở lại với ví dụ đầu tiên ta có ở phần mở bài: “Trong phần mềm có một trường yêu cầu người dùng nhập một dãy số bất kỳ (giới hạn từ 6-10 ký tự)”. Khi sử dụng kỹ thuật viết test case phân tích vùng tương đương, ta sẽ có như sau:

Mô tả

Kết quả dự kiến

Nhập 0 đến 5 ký tự vào trường 

Hệ thống không chấp nhận

Nhập 6 đến 10 ký tự vào trường

Hệ thống chấp nhận

Nhập 11 đến 14 ký tự vào trường 

Hệ thống không chấp nhận

Dựa vào yêu cầu đề bài, ta có thể có các lớp phân vùng như sau:

  • Phân vùng 1: Nhập giá trị hợp lệ từ 0->10 ký tự.
  • Phân vùng 2: Nhập giá trị không hợp lệ < 0 ký tự.
  • Phân vùng 3: Nhập giá trị không hợp lệ > 10 ký tự.
  • Phân vùng 4: Trường hợp để trống không nhập gì hoặc nhập ký tự không phải dạng số.

Sau khi áp dụng kỹ thuật phân vùng tương đương, ta có thể có được các test case như sau:

  • Test case 1: Nhập giá trị từ 0->10 (Có thể chỉ nhập số 5): Hệ thống chấp nhận.
  • Test case 2: Nhập giá trị < 0 ( có thể chỉ nhập số -5): Hệ thống không chấp nhận.
  • Test case 3: Nhập giá trị >10: Hệ thống không chấp nhận.
  • Test case 4: Để trống không nhập gì hoặc nhập ký tự không phải dạng số: Hệ thống không chấp nhận.

Tài liệu tham khảo:

Tìm đọc bài blog "KỸ THUẬT VIẾT TEST CASE 1:  Phân tích giá trị biên" tại đây:

KỸ THUẬT VIẾT TEST CASE 1: Phân tích giá trị biên
Trong phát triển phần mềm, viết test case (trường hợp kiểm thử) là một công việc quan trọng đối với một tester. Bởi nếu thiết kế test case không hiệu quả sẽ tiêu tốn rất nhiều thời gian và tiền bạc, dẫn đến việc chất lượng sản phẩm không được