Sinh dữ liệu kiểm thử trong kiểm thử cấu trúc

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 38 - 42)

2.5 Tổng quan về sinh dữ liệu kiểm thử tự động

2.5.1 Sinh dữ liệu kiểm thử trong kiểm thử cấu trúc

Các cách tiếp cận dựa trên cấu trúc có thể chia ra làm ba loại: phương pháp tĩnh, phương pháp động và kết hợp cả hai. Các phương pháp tiếp cận tĩnh sử dụng thực thi các tượng trưng để xác định tĩnh các đường đi và sử dụng các tiêu chuẩn khác nhau để sinh ra dữ liệu kiểm thử. Cách tiếp cận động thực thi trực tiếp hệ thống kiểm thử để tìm kiếm dữ liệu kiểm thử mong muốn. Việc sử dụng cả thực thi tượng tương và thực thi SUT là phương pháp kết hợp cả hai.

2.5.1.1 Các phương pháp sinh dữ liệu kiểm thử tĩnh

Đây là những phương pháp kiểm thử được sử dụng cho việc phân tích và kiểm tra tĩnh của hệ thống chẳng hạn như các tài liệu yêu cầu, các biểu đồ thiết kế và mã nguồn phần mềm, có thể thực hiện thủ cơng hoặc tự động, thực tế không chạy phần mềm. Một trong những nghiên cứu sớm nhất để tự động hóa việc tạo ra dữ liệu kiểm thử là phương pháp thực thi tượng trưng của tác giả Clarke [19]. Phương pháp này tập trung vào việc thực thi các tượng trưng để sinh dữ liệu kiểm thử dựa trên cấu trúc. Hệ thống thực thi tượng trưng thực hiện bằng cách duyệt các đường dẫn đưa ra trong CFG và xây dựng biểu diễn các tượng trưng của các biến đầu vào. Các nhánh trong chương trình được đưa ra bởi các ràng buộc của các biến. Đây là giải pháp cho các ràng buộc này đại diện cho dữ liệu kiểm thử trên đường dẫn đưa ra. Nhóm tác giả đưa ra phương pháp đó thực thi các tượng trưng của đường dẫn trong chương trình ANSI Fortran để sinh ra một tập các ràng buộc. Giải pháp giải cho các ràng buộc tuyến tính để sinh dữ liệu đầu vào trên đường dẫn thực thi được chỉ rõ. Tuy nhiên, phương pháp có một số giới hạn sau: vấn đề bùng nổ đường dẫn được sinh ra hoặc với hệ thống không bao gồm đường dẫn nào được chọn; vấn đề chỉ số của mảng phụ thuộc vào dữ liệu đầu vào, bất kỳ giải pháp nào cho các ràng buộc đều gây ra việc thực thi của đường dẫn đó với điều kiện tương ứng.

Casegen và các đồng sự trong [80] xây dựng dựa trên cơng việc của Clarke với mục đích cải tiến q trình xử lý với các mảng. Cách tiếp cận khơng thực thi tượng trưng của một mảng khi phụ thuộc dữ liệu đầu vào cho đến khi các dữ liệu thỏa mãn các ràng buộc. Giá trị cho các biến theo mảng được truy cập phụ thuộc vào cách xác định đầu tiên. Điều này cho phép truy cập mảng được xác định hoàn toàn. Phương pháp yêu cầu tạo ra một tượng trưng mới thay thế của mảng, giống với trường hợp thay thế trước trừ phần tử được yêu cầu. Do đó, cách tiếp cận này yêu cầu một không gian bộ nhớ lớn để lưu trữ tất cả các biểu diễn tượng trưng của từng mảng.

Coen–Porisini và các đồng sự trong [21] đưa ra giải quyết vấn đề với bộ nhớ, phát triển từ kinh nghiệm của Casegen bằng cách gợi ý một cách tiếp cận gia tăng. Điều này liên quan đến các ràng buộc của từng biến đến một tập các giá trị tượng trưng và những ràng buộc mà theo đó mỗi giá trị sẽ được giữ. Những bộ giá trị này được cập nhật từng bước nhằm giảm sự tăng trưởng quá

mức của cả hai khơng gian tính tốn và thời gian thực hiện thuật tốn trên. Mặc dù có những cải tiến, điểm yếu vẫn còn liên quan đến các con trỏ và vịng lặp khơng giới hạn với thực thi tượng trưng. Việc kiểm thử phần mềm ở mức cao hơn kiểm thử đơn vị cũng có thể thực hiện bằng phương pháp thực thi tượng trưng nhưng khá tốn kém.

DeMillo và các đồng sự trong [26, 74, 29], đã mở rộng ứng dụng thực thi tượng trưng, nhằm mục tiêu giải quyết với những đột biến, như được yêu cầu trong kiểm thử đột biến. Phương pháp này đưa ra quá trình kiểm thử dựa trên ràng buộc. Đây là một ràng buộc miêu tả điều kiện cần thiết để diệt các đột biến trong một chương trình. Tuy nhiên, điều này không thể đảm bảo chắc chắn rằng đột biến sẽ bị diệt (đây là một vấn đề khó giải quyết như trong nghiên cứu [74]). Sức mạnh của cách tiếp cận là nâng cao các định nghĩa của ràng buộc vị từ. Khi một biểu thức vị từ bị đột biến, các ràng buộc bổ sung được tạo ra. Chúng buộc kết quả của vị từ bột biến khác biệt so với vị từ gốc. Ví dụ, nếu biến X trong vị từ ban đầu là X > 0, đột biến để đưa ra Y > 0, điều kiện cần

thiết là X 6=Y và vị từ ràng buộc sẽ là: (X >0)6= (Y >0).

Một hướng tiếp cận nữa là các thủ tục tìm kiếm. Việc giảm miền được sử dụng để tìm các giải pháp cho các đường điều kiện kết hợp, điều kiện cần thiết và điều kiện vị từ xác định. Giảm miền bằng cách sử dụng thông tin trong hệ thống ràng buộc để giảm trực tiếp các miền của biến như sau:

i. Các miền biến ban đầu xuất phát từ thông tin về loại dữ liệu của biến.

ii. Giảm một miền của biến sử dụng thông tin trong một ràng buộc. Thông tin này được truyền thông qua hệ thống ràng buộc.

(a) Cho các ràng buộc của quan hệ x<C (trong đó, x là một biến và C là một hằng), miền của biến x sẽ giảm và < là toán tử quan hệ.

(b) Cho các ràng buộc của quan hệ x<y (trong đó, x và y là các biến), các miền của cả hai biến x và y đều giảm và < là toán tử quan hệ.

iii. Tiếp tục từ bước ii với từng biến lần lượt cho đến khi không thể giảm được thêm nữa.

iv. Chỉ định giá trị ngẫu nhiên cho biến với miền nhỏ nhất, đưa ra miền hiệu quả với từng phần tử riêng lẻ. Điều này sau đó được thực hiện với tất cả các ràng buộc hệ thống. Tiếp tục từ bước ii.

v. Nếu tất cả các biến được gán giá trị thì mục đích tìm kiếm đạt được, nếu khơng quay lại từ bước i.

Tất cả các hướng tiếp cận tĩnh có những hạn chế về giới hạn các thực thi tượng trưng, các vịng lặp chỉ phân tích điểm vào và điểm ra, phân tích đối với mảng và các vấn đề về con trỏ và bộ nhớ động rất khó giải quyết.

2.5.1.2 Các phương pháp sinh dữ liệu kiểm thử động

Kỹ thuật động được thực thi thực tế các phần mềm và khai thác các thơng tin chỉ có sẵn trong thời gian chạy. Việc sử dụng đầu tiên các phương pháp động là tự động hóa việc sinh dữ liệu kiểm thử được trình bày bởi Miller và các đồng sự trong [69]. Nghiên cứu của nhóm tác giả này đề cập đến việc tạo ra dữ liệu kiểm thử dựa trên cấu trúc được xây dựng tốt nhất như một vấn đề số hóa tối ưu. Cách tiếp cận địi hỏi người dùng lựa chọn một đường dẫn để kiểm thử và tạo ra một phiên bản của SUT chỉ chứa đường dẫn đó. Tất cả các điều kiện trên đường dẫn là thay thế bằng các ràng buộc. Một chức năng được sử dụng để lập bản đồ các ràng buộc này lên một giá trị thực. Chức năng được cơng thức hóa theo cách các phủ định khi bất kỳ ràng buộc nào không thỏa mãn và chỉ khẳng định khi tất cả các ràng buộc được thỏa mãn. Tìm dữ liệu kiểm thử bao gồm việc sử dụng các kỹ thuật với số để tối ưu hóa các ràng buộc, và dừng lại ngay khi có chức năng thỏa mãn. Các đề xuất theo hướng này bao gồm áp dụng các kỹ thuật tối ưu heuristic [110, 91] để cải tiến sự tin cậy của việc tìm kiếm.

Trong phương pháp sinh dữ liệu kiểm thử hướng mục đích (goal oriented test data generation), nhóm tác giả trong [34] xác định cách tiếp cận hướng mục đích cũng như q trình sinh dữ liệu đầu vào để thực thi câu lệnh lựa chọn của đường dẫn đưa ra và lựa chọn đường dẫn bị loại bỏ. Nghiên cứu này sử dụng sự phụ thuộc dữ liệu để hướng dẫn q trình tìm kiếm. Phân tích sự phụ thuộc dữ liệu được sử dụng để xác định các câu lệnh lựa chọn có ảnh hưởng đến thực thi các câu lệnh đó. Việc sinh các đầu vào thơng qua việc duyệt các đường dẫn không xác định (một đường dẫn không xác định là đường với một vài đoạn bị lỡ). Vì phương pháp này sử dụng khái niệm tìm bất kỳ đường dẫn nào nên khó đốn độ bao phủ đưa ra trong tập các mục đích. Theo hướng mục đích này có hai cách tiếp cận là: “Assertion – based” trong [111] và “Chaining approach” trong [34]. Trong cách tiếp cận đầu các khẳng định (assertions) được thêm và

giải quyết trong khi đó cách tiếp cận thứ hai là sự phân tích dữ liệu phụ thuộc được thực thi. Hướng tiếp cận mục đích đối mặt với vấn đề của lựa chọn các mục đích và dữ liệu kiểm thử thích hợp.

2.5.1.3 Các phương pháp sinh dữ liệu kiểm thử kết hợp

Kết hợp hướng nghiên cứu sinh dữ liệu kiểm thử bằng phương pháp động và tĩnh, các nghiên cứu dựa trên phương pháp này nhấn mạnh sự kết hợp cho thấy các ưu điểm của các phương pháp khác nhau. Một trong nghiên cứu sớm theo hướng tiếp cận này là phương pháp giảm miền động trong [75] kết hợp cả phương pháp tĩnh và động cho việc sinh dữ liệu kiểm thử. Nền tảng của phương pháp dựa trên các ràng buộc [26] và phương pháp hướng mục đích trong [61]. Hướng tiếp cận này cho kết quả được cải thiện đặc biệt với mảng và khai thác một mức độ nhất định các thông tin về thời gian chạy.

Hướng tiếp cận trong [108]: phương pháp này không theo các bước truyền thống của việc sinh ra dữ liệu kiểm thử mà thay vào đó, bao trùm một phần hoặc tồn bộ khoảng khơng đầu vào của chương trình kiểm tra. Nghiên cứu này lấy các vị từ của các đường dẫn và sử dụng các chương trình logic các ràng buộc. Phương pháp cố gắng để tránh các vấn đề có tính phức tạp của cả phân tích tĩnh và số lượng các thực thi địi hỏi trong các thuật tốn tìm kiếm trong nghiên cứu [61] được sử dụng kỹ thuật hàm nhỏ nhất.

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 38 - 42)

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

(175 trang)