Sinh các bộ dữ liệu kiểm thử

Một phần của tài liệu NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG (Trang 65 - 66)

DI ĐỘNG VÀ PHƯƠNG PHÁP PHÁT TRIỂN LINH HOẠT

2.3. Kỹ thuật phân tích mã nguồn tìm lỗi tiềm ẩn cho các phương thức của lớp Java

2.3.4. Sinh các bộ dữ liệu kiểm thử

Mỗi phương thức có một danh sách tham số khác nhau. Công việc sinh các bộ dữ liệu kiểm thử đồng nghĩa với việc sinh ra các đối số tương ứng để truyền vào danh sách tham số của phương thức đó. Ví dụ một phương thức có danh sách tham số:

void methodName (int p1, double p2, boolean [] p3, float [] p4)

Khi đó kỹ sư phát triển cần tạo ra mỗi bộ dữ liệu kiểm thử gồm có: (1) Một giá trị nguyên tương ứng với p1; (2) Một giá trị số thực double tương ứng với p2; (3) Một mảng các giá trị logic tương ứng với mảng p3; (4) Một mảng các giá trị thực float tương ứng với mảng p4.

Các bộ dữ liệu kiểm thử có thể được sinh ngẫu nhiên hoặc sinh theo các tiêu chí xác định. Luận án sử dụng các tiêu chí của N. Tracey và cộng sự [113] để sinh các bộ dữ liệu kiểm thử. Trong trường hợp sinh các bộ dữ liệu kiểm thử ngẫu nhiên, chúng ta cần một công thức chỉ ra số lượng bộ dữ liệu kiểm thử cần sinh ra là bao nhiêu để đảm bảo nếu mã nguồn viết ra với tất cả các câu lệnh, tất cả các nhánh, tất cả các đường thực sự có thể được bao phủ thì mơ hình của chúng ta cũng phải chỉ ra được điều đó.

Giả sử phương thức cần kiểm thử có b nút rẽ nhánh (if, while, do-while, for, và switch). Gọi tập các nút rẽ nhánh này là B. Nếu tất cả các nút rẽ nhánh nối tiếp nhau thì cần sinh một số lượng bộ dữ liệu kiểm thử sao cho nó đi qua được tất cả các nhánh của nút có nhiều nhánh nhất. Trường hợp xấu nhất, tất cả các nút rẽ nhánh lồng nhau, khi đó số nhánh đường đi của luồng điều khiển bằng:

1 − + ∑ | ( )|

(2.1)

Trong đó, | . | chỉ số phần tử của một tập hợp. Mỗi nhánh đường đi của luồng điều khiển hiểu là một đường đi đầy đủ trong biểu đồ cấu trúc điều khiển của phương thức [40].

Gọi số nút trung bình mỗi nhánh đường đi của luồng điều khiển là . Nếu tồn tại lỗi trên tất cả các nút mỗi nhánh đường đi của luồng điều khiển, thì cần ít nhất bộ dữ liệu khác nhau để phát hiện lỗi trong nút của mỗi nhánh. Vì mỗi khi gặp lỗi

53

phương thức bị dừng lại và chúng ta cần lặp lại việc kiểm thử từ đầu với một bộ dữ liệu mới. Như vậy cần ít nhất

×(1− +∑| ( )|)

để phát hiện được tất cả các lỗi trong tất cả các nhánh đường đi của luồng điều khiển. Khi đó chỉ cần tăng một tỉ lệ số bộ dữ liệu kiểm thử cần sinh theo công thức trên để đảm bảo đạt được độ bao phủ. Gọi là hằng số thể hiện tỉ lệ đó, ≥ 1.

Khi đó số bộ dữ liệu kiểm thử cần sinh theo phương pháp ngẫu nhiên bằng: × ×(1 − +∑| ( )|)

Một phần của tài liệu NGHIÊN CỨU PHÁT TRIỂN KỸ THUẬT VÀ GIẢI PHÁP KIỂM THỬ ỨNG DỤNG DI ĐỘNG (Trang 65 - 66)

Tải bản đầy đủ (DOC)

(143 trang)
w