.Kiểm thử hộp trắngdòng điều khiển theo hướng tĩnh

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java (Trang 25 - 27)

2.5. So sánh kĩ thuật kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh và động

Mỗi một kĩ thuật kiểm thử đều có những ưu điểm và hạn chế riêng. Để có cái nhìn tổng quan về hai kĩ thuật, chúng tôi đưa ra sự so sánh về số ca kiểm thử, thời gian sinh ca kiểm thử, khả năng kiểm thử vòng lặp, ảnh hưởng bởi phức tạp mã nguồn đối với hai kĩ thuật.

14

Về số ca kiểm thử. Nhìn chung, với mã nguồn chỉ chứa các câu lệnh rẽ nhánh và không chứa vòng lặp, hai kĩ thuật kiểm thử nêu trên cho số bộ ca kiểm thử như nhau. Tuy nhiên, trong trường hợp có vòng lặp thì kĩ thuật kiểm thử tĩnh đưa ra số ca kiểm thử ít hơn so với kiểm thử động. Theo hướng tĩnh, các đường đi chứa vòng lặp lặp lại một lần sẽ được cấu trúc lại để lặp nhiều hơn một lần. Nói cụ thể hơn, từ một đường kiểm thử chứa vòng lặp ban đầu sẽ sinh ra một tập các đường kiểm thử mới dùng để kiểm thử tính đúng đắn vòng lặp. Nếu vòng lặp trong đường kiểm thử xác định được số lần lặp tối đa thì số đường đi mới sinh ra là bảy. Ngược lại, nếu vòng lặp không xác định số lần lặp tối đa thì số đường đi mới sinh ra là bốn.

Với mã nguồn chứa vòng lặp, kiểm thử động sử dụng kĩ thuật phủ định hệ để sinh ca kiểm thử kế tiếp nên số ca kiểm thử có thể rất lớn hoặc không xác định. Cụ thể, trường hợp số ca kiểm thử rất lớn xảy ra khi vòng lặp có cận lặp lớn, ví dụ, khối lệnh điều khiển “for (int i = 0; i< 1000; i++)” có số lần lặp tối đa là 1000 lần. Trường hợp số ca kiểm thử không xác định xảy ra khi số lần lặp không được biết trước như “while (m!=n){...}”, trong đó mn là hai tham số kiểu nguyên truyền vào hàm. Để giải quyết hai vấn đề này, một vài công cụ kiểm thử như đã chèn thêm mã nguồn xác định số lần lặp tối đa của mỗi vòng lặp hoặc thêm yêu cầu thời gian chạy. Tuy nhiên, nhìn chung số ca kiểm thử vẫn khá lớn gây khó khăn cho quản lí.

Về thời gian sinh ca kiểm thử.Một cách tổng quan, kiểm thử động thực thi ca kiểm thử lặp lại nhiều lần nên thời gian sinh ca kiểm thử lâu hơn.

Về khả năng kiểm thử vòng lặp. Kiểm thử tĩnh hướng đến chỉ kiểm thử một vòng lặp duy nhất tại một thời điểm. Do đó, trong trường hợp có nhiều vòng lặp, chẳng hạn như đường kiểm thử đi qua hai vòng lặp lồng nhau thì quy trình kiểm thử tiến hành với từng vòng lặp riêng và tìm cách phá vỡ cấu trúc lặp các vòng lặp còn lại. Ngược lại, kiểm thử động hướng đến kiểm thử tính đúng đắn của các vòng lặp một cách đồng thời thay vì riêng rẽ. Tư tưởng này mô phỏng quá trình thực thi trong thực tế.

Tính phức tạp mã nguồn.Hiện nay, quy tắc viết mã nguồn rất đa dạng và các quy tắc mới có thể được đưa ra trong các phiên bản trình biên dịch mới. Kiểm thử tĩnh bị hạn chế bởi tính phức tạp mã nguồn. Ví dụ, trường hợp mã nguồn chứa các hàm biến đổi xâu thì kĩ thuật kiểm thử này yêu cầu cần phải xây dựng lại các hàm đó một cách thủ công. Ngược lại, kiểm thử động không bị ảnh hưởng lớn bởi những sự thay đổi này và bởi tính phức tạp mã nguồn. Nguyên nhân chính do kiểm thử động tận dụng thế mạnh trình biên dịch để sinh ca kiểm thử mới.

15

CHƯƠNG 3: PHƯƠNG PHÁP KIỂM THỬ DÒNG ĐIỀU KHIỂN HƯỚNG TĨNH CHO CÁC HÀM JAVA

Chương này nghiên cứu phương pháp kiểm thử tự động hàm Java sử dụng kỹ thuật kiểm thử kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh. Phương pháp nghiên cứu cách xây dựng đồ thị dòng điều khiển CFG, sinh tập đường đi độc lập, kỹ thuật kiểm thử tính đúng đắn với hàm đầu vào chứa vòng lặp đơn hoặc hai vòng lặp lồng nhau. Ngoài ra, kỹ thuật thực thi tượng trưng được mô tả một cách chi tiết nêu cách xây dựng hệ ràng buộc từ một đường thi hành bất kì. Tổng quan về SMT-Solver và kỹ thuật sinh ngẫu nhiên được trình bày để giải hệ ràng buộc sinh dữ liệu cho tập ca kiểm thử.

3.1. Ý tưởng

Luận văn nghiên cứu phương pháp kiểm thử hàm Java sử dụng kỹ thuật kiểm thử hộp trắngdòng điều khiển theo hướng tĩnh và cài đặt một công cụ hỗ trợ cho phương pháp này.

Sinh CFG

Sinh tập đường đi độc lập

Sinh tập đường kiểm thử

Sinh đường kiểm thử vòng lặp

Sinh hệ ràng buộc

Sinh dữ liệu cho các ca kiểm thử

Thực thi ca kiểm thử Hàm Java

Độ phủ

Một phần của tài liệu (LUẬN văn THẠC sĩ) phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng java (Trang 25 - 27)

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

(62 trang)