Tìm hiểu về kỹ thuật Phân lớp tương đương - Equivalence Patitioning
Trong kiểm thử phần mềm, việc sử dụng kỹ thuật phân lớp tương đương trong quá trình viết testcase là việc làm không thể thiếu nhằm giảm khổi lượng công việc cho tester bằng cách giảm tổng số các trường hợp kiểm thử phải được xây dựng. Sau đây, chúng ta đi sâu vào tìm hiểu về kỹ thuật Phân lớp ...
Trong kiểm thử phần mềm, việc sử dụng kỹ thuật phân lớp tương đương trong quá trình viết testcase là việc làm không thể thiếu nhằm giảm khổi lượng công việc cho tester bằng cách giảm tổng số các trường hợp kiểm thử phải được xây dựng. Sau đây, chúng ta đi sâu vào tìm hiểu về kỹ thuật Phân lớp tương đương và ứng dụng của kỹ thuật trong thực tế. 1. Định nghĩa Phân lớp tương đương là một phương pháp kiểm thử hộp đen chia miền đầu vào của một chương trình thành nhiều lớp dữ liệu, từ đó suy dẫn ra các ca kiểm thử. Phương pháp này cố gắng xác định ra một ca kiểm thử mà làm lộ ra một lớp lỗi, do đó làm giảm tổng số các trường hợp kiểm thử phải được xây dựng. 2. Thiết kế ca kiểm thử cho kỹ thuật Phân lớp tương đương 2.1. Lớp tương đương Lớp tương đương biểu thị cho tập các trạng thái hợp lệ hay không hợp lệ đối với điều kiện vào. Ví dụ 1: “Giá trị x chỉ có thể dao động từ 0 đến 10”.
- Lớp tương đương hợp lệ: 0 <=x <= 10
- 2 lớp tương đương không hợp lệ: x < 0 và x > 10
Một ca kiểm thử tốt có 2 đặc tính:
- Giảm thiểu số lượng các ca kiểm thử khác mà phải được phát triển để hoàn thành mục tiêu đã định của kiểm thử “hợp lý”.
- Bao phủ một tập rất lớn các ca kiểm thử khác. Tức là, nó nói cho chúng ta một thứ gì đó về sự có mặt hay vắng mặt của những lỗi qua tập giá trị đầu vào cụ thể.
Thiết kế ca kiểm thử sử dụng phân lớp tương đương dựa trên sự đánh giá về các lớp tương đương với một điều kiện vào, tiến hành theo 2 bước:
- Xác định các lớp tương đương.
- Xác định các ca kiểm thử.
2.2. Xác định các lớp tương đương 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. Mẫu liệt kê các lớp tương đương:
- Điều kiện đầu vào:* là một giá trị đặc biệt, mảng số hay chuỗi, tập hợp hay điều kiện đúng sai*
- Các lớp tương đương hợp lệ: mô tả các đầu vào hợp lệ của chương trình
- Các lớp tương đương không hợp lệ: mô tả các trạng thái khác của chương trình như: sai, thiếu, không đúng...
Nguyên tắc để xác định lớp tương đương: NT1 : Điều kiện đầu vào định rõ giới hạn của một mảng thì chia vùng tương đương thành 3 tình huống:
- Xác định 1 lớp tương đương hợp lệ.
- Xác định 2 lớp tương đương không hợp lệ. Xem Ví dụ 1
NT2: Điều kiện đầu vào là một giá trị xác định thì chia vùng tương đương thành 3 tình huống: + Xác định 1 lớp tương đương hợp lệ. + Xác định 2 lớp tương đương không hợp lệ. Ví dụ 2 : “Giá trị x =10”.
- Lớp tương đương hợp lệ: x = 10
- 2 lớp tương đương không hợp lệ: x <10 và x > 10
NT3: Điều kiện đầu vào chỉ định là một tập giá trị thì ta sẽ xác định mỗi giá trị trong tập đó là một lớp tương đương hợp lệ và chia lớp tương đương thành 2 tình huống như sau: + Xác định 1 lớp tương đương hợp lệ. + Xác định 1 lớp tương đương không hợp lệ. Ví dụ 3 : “Các loại xe được đăng ký là xe bus, xe khách, xe tải, xe taxi và xe máy”.
- 5 lớp tương đương hợp lệ tương ứng với 5 loại xe: "xe bus", "xe khách", "xe tải", "xe taxi" và "xe máy"
- 1 lớp tương đương không hợp lệ: một loại xe khác các loại xe nêu trên ví dụ như “xe đạp"
NT4: Nếu điều kiện đầu vào xác định là một kiểu đúng sai thì chia vùng tương đương thành 2 tình huống: + Xác định 1 lớp tương đương hợp lệ. + Xác định 1 lớp tương đương không hợp lệ.
Ví dụ 4: “Ký tự đầu tiên là khoảng trắng”
- 1 lớp tương đương hợp lệ: “ký tự đầu tiên là khoảng trắng”
- 1 lớp tương đương không hợp lệ: “không phải là khoảng trắng”
2.3 Xác định các ca kiểm thử Với các lớp tương đương xác định được ở 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 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.
2.4 Ví dụ về phân lớp tương đương
Yêu cầu: Nếu bạn đi xe điện chuyến trước 9:30 sáng hoặc từ sau 4:00 chiều đến 7:30 tối (giờ cao điểm), thì bạn phải mua vé thường. Vé tiết kiệm (giá thấp hơn vé thường) có hiệu lực cho các chuyến xe từ 9:30 sáng đến 4:00 chiều và sau 7:30 tối. Dựa vào yêu cầu trên, các bạn hãy: + Liệt kê ra các vùng và các giá trị biên để kiểm thử thời gian của tàu đối với các loại vé. + Liệt kê các vùng hợp lệ và không hợp lệ. Cho biết đâu là giá trị biên (Dùng bảng để dễ liệt kê các vùng tương đương và các giá trị biên) + Viết test case để test yêu cầu trên dựa vào các vùng tương đương và giá trị biên.
Bài làm: Các vùng : (0 – 9h30) , (9hh31 – 16h), (16h01 – 19h30), (19h31 – 23h59)
- Vé thường: Các vùng hợp lệ: (0 – 9h30), (16h01 – 19h30) Các vùng không hợp lệ: (9hh31 – 16h), (19h31 – 23h59)
- Vé tiết kiệm:
Các vùng hợp lệ: (9hh31 – 16h), (19h31 – 23h59)
Các vùng không hợp lệ: (0 – 9h30), (16h01 – 19h30)
Các giá trị biên: 9h30, 16h và 19h30.
Ta cần: 4 testcase để kiểm tra các vùng: 6 testcase kiểm tra các giá trị biên: 9h29, 9h31, 5h59, 16h01, 19h29 và 19h31. 1 testcase kiểm tra giá trị < 0 và 1 test case cho giá trị > 23h59
Đầu tiên là lập một bảng mô tả các biên giữa vé thường và vé tiết kiệm:
Chúng ta giả sử tàu hoạt động từ 4h sáng (4:00) đến 11h đêm (23:00). Sau đây là bảng liệt kê các vùng tương đương:
Dựa vào bảng trên, chúng ta cần test các test case sau:
TC1 - Xuất phát lúc 0:00 - Không hợp lệ
TC2 - Xuất phát lúc 3:00 - Không hợp lệ
TC3 - Xuất phát lúc 3:59 - Không hợp lệ
TC4 - Xuất phát lúc 4:00 - Vé bình thường
TC5 - Xuất phát lúc 5:30 - Vé bình thường
TC6 - Xuất phát lúc 9:29 - Vé bình thường
TC7 - Xuất phát lúc 9:30 - Vé tiết kiệm
TC8 - Xuất phát lúc 12:00 - Vé tiết kiệm
TC9 - Xuất phát lúc 16:00 - Vé tiết kiệm
TC10 - Xuất phát lúc 16:01 - Vé bình thường
TC11 - Xuất phát lúc 18:00 - Vé bình thường
TC12 - Xuất phát lúc 19:30 - Vé bình thường
TC13 - Xuất phát lúc 19:31 - Vé tiết kiệm
TC14 - Xuất phát lúc 21:00 - Vé tiết kiệm
TC15 - Xuất phát lúc 22:59 - Vé tiết kiệm
TC16 - Xuất phát lúc 23:00 - Không hợp lệ
TC17 - Xuất phát lúc 23:59 - Không hợp lệ
KL: Trong danh sách test case trê đây, các test case TC1, TC3, TC4, TC6, TC7,TC9, TC10, TC12, TC13, TC15, TC16 là những test case dựa vào giá trị biên (boundary value), các test case còn lại là test case dựa vào lớp tương đương.
Mặc dù việc phân lớp tương đương là rất tốt khi lựa chọn ngẫu nhiên các ca kiểm thử, nhưng nó vẫn có những thiếu sót. Ví dụ, nó bỏ qua các kiểu test – case có lợi nào đó. 2 kỹ thuật phân tích giá trị biên và đồ thị nguyên nhân – kết quả, bao phủ được nhiều những thiếu sót này. Chúng ta sẽ tiếp tục tìm hiểu ở những phần sau.