Lấy mẫu đột biến

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Kỹ thuật kiểm thử đột biến và ứng dụng để kiểm thử các chương trình Java (Trang 34 - 36)

3.1. Giảm chi phí tính tốn

3.1.1.1. Lấy mẫu đột biến

Lấy mẫu đột biến là một phương pháp đơn giản lựa chọn ngẫu nhiên một tập con nhỏ các đột biến từ tập toàn bộ các đột biến. Ý tưởng này được đề xuất đầu tiên bởi Acree và Budd [30]. Trong phương pháp lấy mẫu đột biến, đầu tiên tất cả các đột biến có thể có được tạo ra như trong kiểm thử đột biến truyền thống. Sau đó, x% của những đột biến này được lựa chọn ngẫu nhiên để phân tích đột biến và các đột biến cịn lại được bỏ đi.

Đã có nhiều nghiên cứu thực nghiệm về phương pháp này. Vấn đề chính là về việc chọn tỷ lệ lựa chọn ngẫu nhiên (x) còn được gọi là tỷ lệ lấy mẫu x%. Các nghiên cứu của Acree và Budd đề nghị rằng tỷ lệ lấy mẫu 10% có thể xác định trên 99% tất cả đột biến không tương đương trong khi cung cấp tiết kiệm chi phí đáng kể. Wong [18] tiếp tục nghiên cứu các lợi ích về chi phí của lấy mẫu đột biến bằng cách thay đổi tỷ lệ lấy mẫu từ 10% đến 40%. Ngay cả ở mức thấp nhất, các kết quả của Wong cho thấy lẫy mẫu đột biến là một chiến lược cắt giảm chi phí hiệu quả cung cấp các tập dữ liệu thử có khả năng xác định ít nhất 96,14% tất cả các đột biến nhưng chỉ phải kiểm tra 9,8% đột biến.

Một điểm nổi bật hơn nữa trong [18] là đối với các tập dữ liệu thử chất lượng dựa vào lấy mẫu, một tỷ lệ lấy mẫu cao khơng có nghĩa là sẽ tạo ra tỷ lệ đột biến cao hơn tỷ lệ lấy mẫu thấp. Ban đầu, điều này có vẻ khơng hợp lý. Một trong những mong chờ đó là các dữ liệu thử được tạo ra từ tỷ lệ lấy mẫu lớn thì sẽ chất lượng hơn trong việc xác định đột biến còn lại so với từ tỷ lệ lấy mẫu nhỏ. Tuy nhiên, các kết quả của Wong cho thấy; đối với hàm TEXTFMT, tỷ lệ lấy mẫu 25% đạt được tỷ lệ đột biến 98,92% so với 99,01% cho tỷ lệ lấy mẫu 10%. Các kết quả này cho thấy rằng số lượng đột biến được kiểm tra không phải là chỉ báo rõ ràng về tỷ lệ đột biến (ngoại trừ kiểm tra tất cả các đột biến), nhưng thay vào đó, dấu hiệu là các dữ liệu thử có khả năng xác định đột biến nhiều hơn những dấu hiệu khác. Trong trường hợp này, việc lựa chọn các đột biến cho kiểm thử có ảnh hưởng đến các dữ liệu thử được tạo ra và tỷ lệ đột biến không?

Các đột biến có thể được phân loại dựa trên tập các dữ liệu thử diệt chúng. Đột biến mạnh là rất khó phát hiện, đòi hỏi dữ liệu thử đặc biệt để diệt nó. Ngược lại, đột biến yếu có thể dễ dàng phát hiện bởi bất kỳ dữ liệu thử nào. Do đó, cần có các tập dữ liệu thử khác nhau để diệt chúng. Các tập dữ liệu thử này nói chung là khơng được biết trước khi (và thường sau khi) kiểm thử. Tuy nhiên, tập dữ liệu thử đó phải được tạo ra để diệt đột biến. Hãy xem xét tình huống, chọn W là đột biến yếu và chọn S là đột biến mạnh, W sẽ có tập dữ liệu thử để diệt nó - TW và S chưa có dữ liệu thử diệt được nó - TS. Có ba tình huống có thể xảy ra được minh họa ở hình 3.1:

TW Ts (a) (c) Ts TW TW Ts (b)

1. TS TW. Tập dữ liệu thử diệt đột biến mạnh hơn là tập con của tập dữ liệu thử diệt các đột biến yếu hơn– hình 3.1(a).

2. (TS  TW)  (TS TW ). TS không phải là tập con của TW nhưng hai tập giao nhau – hình3.1 (b).

3. TS TW =. Hai tập dữ liệu thử rời nhau – hình3.1 (c).

Nếu tình huống 1 xảy ra, thì chọn đột biến mạnh hơn trong quá trình lấy mẫu sẽ đảm bảo dữ liệu thử được tạo ra diệt đột biến yếu hơn- tức là dữ liệu thử được tạo ra trong cả TS và TW. Tuy nhiên, nếu đột biến yếu hơn được lựa chọn, thì cơ hội dữ liệu thử được tạo ra diệt được đột biến mạnh hơn sẽ bị giảm - tức là dữ liệu thử ở trong TW nhưng có thể hoặc khơng thể ở trong TS. Nếu tình huống 3 xảy ra, thì việc lựa chọn đột biến trong lấy mẫu sẽ chỉ tạo ra dữ liệu thử có khả năng diệt đột biến đặc biệt. Tình huống 2 là sự kết hợp của hai loại. Lựa chọn đột biến mạnh hơn sẽ tạo ra dữ liệu thử có thể hoặc khơng thể diệt được đột biến yếu hơn và ngược lại. Nói chung, kích thước của TW có thể sẽ lớn hơn kích thước của TS, dữ liệu thử từ TW giao nhau với TS có thể sẽ nhỏ hơn so với dữ liệu thử từ TS giao nhau với TW. Ví dụ, cho một dữ liệu thử x là giao với hai tập |TW|= 20 và |TS|= 5. Nếu dữ liệu thử được tạo ra để diệt đột biến yếu hơn (nghĩa là dữ liệu thử thuộc TW) thì tỷ lệ của x là 1/20. Nếu dữ liệu thử được tạo ra để diệt đột biến mạnh hơn (nghĩa là dữ liệu thử thuộc TS) thì tỷ lệ của x là 1/5.

Ba tình huống trên cho thấy rằng, đột biến được chọn trong quá trình lấy mẫu sẽ ảnh hưởng đến các dữ liệu thử được tạo ra. Hơn nữa, chúng cho thấy rằng lựa chọn các đột biến mạnh hơn cải thiện cơ hội diệt các đột biến yếu hơn và vì vậy kích thước của lấy mẫu đột biến là khơng quan trọng, nhưng đó vẫn là sự lựa chọn đột biến. Lấy mẫu từ đột biến mạnh hơn với tỷ lệ thấp hơn có thể tạo ra tỷ lệ đột biến cao hơn lấy mẫu từ đột biến yếu hơn với tỷ lệ cao hơn.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Kỹ thuật kiểm thử đột biến và ứng dụng để kiểm thử các chương trình Java (Trang 34 - 36)

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

(76 trang)