Sunday, March 27, 2022

Kiểm thử giá trị biên

Kiểm thử giá trị biên là một phương pháp kiểm thử hộp đen dựa vào đặc tả của hàm. Phương pháp này xuất phát từ một thực tế rằng lỗi của phần mềm thường xảy ra vào biên của miền xác định của các biến đầu vào của hàm. Điều này là do các lập trình viên thường quên hoặc nhầm lẫn trong các dấu <, >, với <=, và >= khi viết các điều kiện.

Để việc trình bày phương pháp trở nên đơn giản và dễ hiểu, tôi trình bày thông qua một ví dụ sau.

Xét một hàm trong C# như sau:

public void DoSomething(int x, int y);

Trong đó, từ nghiệp vụ của hệ thống, ta có được thông tin giá trị của x, y như sau: 1<x<7 và 5<y<13.

  •  Kiểm thử giá trị biên thông thường

Với phương pháp kiểm thử biên thông thường, ta chỉ cần xét năm giá trị với mỗi biến đầu vào bao gồm: min, min+, norm, max-, max. Trong ví dụ này, với x, ta cần xét 1, 2, norm = (7+1)/2 = 4, 6, 7. Với y, ta cần xét 5, 6, norm = (13+5)/2 = 9, 12, 13.

Khi đã xác định được những giá trị của mỗi biến đầu vào, việc kết hợp chúng lại với nhau cũng cần làm sao cho hiệu quả. Ở đây, ta kết hợp mỗi giá trị của x với norm của y và ngược lại. Sau khi loại bỏ ca kiểm thử trùng nhau, ta chỉ còn 9 ca kiểm thử sau: (4,5), (4,6), (4,9), (4,12), (4,13), (1,9), (2,9), (6,9), (7,9).

 

  • Kiểm thử giá trị biên mạnh

Trong nhiều trường hợp, ta có thể sử dụng phương pháp kiểm thử giá trị biên mạnh. Trong phương pháp này, ta thêm vào giá trị min- và max+ cho mỗi miền giá trị của biến đầu vào. Như vậy, với mỗi biến đầu vào, ta có 7 giá trị: min-, min, min+, norm, max-, max, max+. Trong ví dụ ta đang xét, tổ hợp lại ta có thêm 4 ca kiểm thử sau: (0,9), (8,9), (4, 4), (4, 14). Tổng số, ta có 13 ca kiểm thử.

 

  • Kiểm thử giá trị biên tổ hợp

Trong phương pháp này, thay vì ta kết hợp giá trị norm của biến đầu vào này với các giá trị của biến đầu vào khác, ta tính tổ hợp của chúng với nhau. Phương pháp này tạo ra những ca kiểm thử có khả năng tìm lỗi tốt hơn. Tuy nhiên, chúng tạo ra số lượng lớn ca kiểm thử. Số lượng ca kiểm thử được tạo ra cho một hàm có n tham số lên tới 7^n ca.

 

  • Kiểm thử giá trị biên đặc biệt

Trong một số tình huống, việc hiểu rõ nghiệp vụ của hệ thống rất hữu ích để tạo ra những ca kiểm thử có khả năng bắt lỗi cao. Ví dụ điển hình cho tình huống này là việc kiểm thử các giá trị ngày 29 tháng 2 cho những năm nhuận và không nhuận. Ta có thể kiểm tra cả các giá trị ngày 28 và 30 tháng 2 cho cả năm nhuận và năm không nhuận.

 

  • Kiểm thử giá trị biên từ mã nguồn

Mặc dù kiểm thử giá trị biên xuất phát từ yêu cầu của phần mềm, nếu ta không có yêu cầu của phần mềm mà chỉ có mã nguồn của nó, vậy ta có thể áp dụng chiến lược kiểm thử giá trị biên không? Tôi xin dành phần thảo luận lại cho độc giả với tình huống ví dụ và một vài câu hỏi mở phía sau. Giả sử hàm kiểm tra một tam giác hợp lệ với độ dài các cạnh a, b, c đều nằm trong khoảng từ 1 đến 10 (1 <= a, b, c <= 10).

int isTriangle(int a, int b, int c)

{

            if((a < b+c) && (b < a+c) && (c< a+b))

{

                        return 1;

            }

            else return 0;

}

Câu hỏi 1: Liệu trong tình huống này, ta có bao nhiêu ca kiểm thử biên?

Câu hỏi 2: Ta có nên cân nhắc tính biên (b+c) đối với a, (a+c) đối với b, và (a+b) đối với c?

(https://www.facebook.com/thayvietkiemthu/posts/117051350927092)

Kiểm thử cặp đôi thông minh

  Kiểm thử cặp đôi thông minh (pairwise testing) là một trường hợp đặc biệt của phương pháp kiểm thử tổ hợp. Trong phương pháp kiểm thử cặp ...