Quá trình quay lui

Một phần của tài liệu Các kỹ thuật kiểm thử cấu trúc chương trình theo hướng tiếp cận kiểm thử dựa (Trang 39 - 44)

3. Bố cục của luận văn

2.5.8. Quá trình quay lui

TSG sử dụng quá trình quy lui để tìm một nút con subgoal từ một CS tồi và đƣợc xác định bởi hai tham số:

MAXCS: số lớn nhất các vòng lặp để đạt tới một nút con với CS giống nhau. Điều này tránh cho TSG bị mắc kẹt khi cố gắng đi đến một nút mà sử dụng CS xấu.

MAXNS: số lớn nhất các vòng lặp mà một nút trở thành subgoal. Điều này tránh cho TSG bị mắc kẹt khi cố gắng đến một nút không khả thi bởi vì khi đó, một nút chỉ là subgoal nút trong MAXNS lần, TSG đánh dấu nó nhƣ một nút có thể không khả thi và sẽ không bao giờ chọn nó là subgoal của việc tìm kiếm.

Thuật toán quay lui có ba giai đoạn khác nhau:

 Giai đoạn 1 đƣợc áp dụng khi đạt đến MAXCS và MAXNS chƣa đạt đến. Ở giai đoạn này, subgoal đƣợc giữ nguyên. TSG cố đạt đến nó và sử dụng CS mới. CS mới này sẽ là BSnparent hoặc BKSnsgoalnotherparent trong trƣờng hợp subgoal không có nhiều hơn một nút cha.

Ví dụ trên mô tả việc chọn BKS73 nhƣ một CS. Nếu việc tìm kiếm sử dụng CS này không đạt đƣợc đến node 7 trong MAXCS vòng lặp, thuật toán TSG áp dụng giai đoạn này của quy trình quay lui:

Hình 2.5. Ví dụ mô tả quá trình quay lui

Theo đó, BKS73

sẽ đƣợc thêm vào LT và CS mới là BKS72 (giả sử f72 (BKS72) < f75 (BKS75))

 Giai đoạn 2 đƣợc áp dụng khi giai đoạn một không thành công và MAXNS cho nút subgoal không đƣợc đạt đến. Nút subgoal đƣợc thay đổi, nhƣng TSG không đánh dấu nó là không khả thi. Thuật toán quay lui lây lan trong CFG và TSG cố gắng tạo giải pháp mới. Nếu quá trình quay lui đạt đến nút gốc, TSG sẽ sinh một kiểm thử ngẫu nhiên mới mà có thể tiếp tục tìm kiếm.

 Giai đoạn 3 đƣợc áp dụng khi TSG đạt đến MAXNS cho subgoal nút. Subgoal nút sẽ bị thay đổi và TSG đánh dấu nó là không khả thi.

2.6.Kết chƣơng

Chƣơng II đã trình bày đƣợc:

Phương pháp kiểm thử dựa tìm kiếm:

Kiểm thử dựa tìm kiếm là sử dụng kỹ thuật tối ƣu hóa meta-heuristic để tự động hoặc tự động hóa từng phần cho nhiệm vụ kiểm tra.

Kiểm thử dựa tìm kiếm đƣợc xuất hiện vào năm 1976 và là công trình của hai nhà nghiên cứu ngƣời Mỹ, Webb Miller và David Spooner.Năm 1992, Xanthakis áp dụng thuật toán di truyền cho vấn đề này. Kể từ đó đã có sự bùng nổ của công việc, sử dụng thuật giải Meta-Heuristc rộng rãi hơn so với chỉ kiểm thử sinh ra dữ liệu.Và hiện nay,tỷ lệ ứng dụng các kỹ thuật dựa trên tìm kiếm để kiểm thử phần mềm là 70%.

Tìm kiếm Heuristic:

Khái niệm: Trong tìm kiếm không gian trạng thái, Heuristic thực chất là các hàm đánh giá dùng để chọn những nhánh nào có nhiều khả năng nhất dẫn đến một giải pháp chấp nhận đƣợc.

Nguyên lý:

o Nguyên lý vét cạn thông minh.

o Nguyên lý tham lam (Greedy).

o Nguyên lý thứ tự.

o Hàm Heuristic.

Các thuật toán của tìm kiếm Heuristic:

o Thuật toán leo đồi (Hill climbing - Pearl 1984): Chiến lƣợc leo đồi phát triển trạng thái con tốt nhất sẽ đƣợc chọn cho bƣớc tiếp theo, không lƣu giữ lại bất kỳ thông tin gì, chỉ lƣu lại trạng thái tạm thời và các hàng xóm [13]. Quá trình tìm kiếm sẽ dừng lại khi tiếp cận trạng thái tốt hơn so với mọi trạng thái con của nó. Trong tìm kiếm leo đồi việc lựa chọn trạng thái tiếp theo dựa trên một hàm đánh giá.

 Thuật toán leo đồi cơ bản: [11]

Là một trƣờng hợp đặc biệt của tìm kiếm theo chiều sâu. Thuật toán thực hiện bằng cách tạo ra hàng xóm cho trạng thái hiện thời và di chuyển sang hàng xóm có hàm đánh giá tốt hơn.

 Thuật toán leo đồi dốc đứng: [12]

Về cơ bản thuật toán leo đồi dốc đứng cũng giống leo đồi cơ bản, chỉ khác ở điểm là leo đồi dốc đứng sẽ duyệt tất cả các hƣớng đi có thể và chọn hƣớng đi theo trạng thái tốt nhất trong các trạng thái kế tiếp có thể có (trong khi đó leo đồi chỉ chọn đi theo trạng thái kế tiếp đầu tiên tốt hơn trạng thái hiện thời mà nó tìm thấy).

 Đánh giá hai thuật toán leo đồi :

So với leo đồi đơn giản, leo đồi dốc đứng có ƣu điểm là luôn luôn chọn hƣớng có triển vọng nhất để đi. Nhƣng điều này không đảm bảo leo đồi dốc đứng luôn tốt hơn leo đồi cơ bản. Leo đồi dốc đứng chỉ tốt hơn leo đồi cơ bản trong một số trƣờng hợp.

o Thuật toán tìm kiếm Tabu

Từ một lời giải ban đầu, tìm kiếm TABU sẽ lặp đi lặp lại quá trình tìm kiếm nhằm cải thiện dần lời giải tốt nhất hiện có (ta sẽ gọi tắt là kỷ lục) của bài toán. Tại mỗi bƣớc lặp, thuật toán sẽ duyệt trong một miền lân cận (cũng có thể là toàn bộ lân cận) của lời giải hiện tại để chọn ra lời giải tốt nhất, lời giải này sẽ thay thế cho lời giải hiện tại ở bƣớc lặp kế tiếp.

 Mục tiêu và giải pháp của TSG

Mục tiêu của TSG là sinh dữ liệu kiểm thử mà chứa nhiều nhất các nhánh bao phủ chƣơng trình kiểm thử.

 Hàm đánh giá

Hàm đánh giá đo xem một giải pháp tốt để đạt đƣợc mục tiêu tìm kiếm nhƣ thế nào. TSG sử dụng hai hàm đánh giá khác nhau.

 Chọn lựa nút subgoal

Nút subgoal (nsgoal) là một nút mà TSG phải bao phủ trong suốt các vòng lặp.Mục tiêu cuối cùng của TSG là bao phủ toàn bộ các nút của CFG.

 Sinh các ứng của viên hàng xóm

TSG sinh ra 4*n ứng cử viên hàng xóm của CS, n là số lƣợng đầu vào của chƣơng trình. Theo đó, thuật toán sẽ tạo ra hai kiểm thử hàng xóm gần và hai kiểm thử hàng xóm xa từ CS.

 Tabu list: bộ nhớ của TSG

Một trong những đặc trƣng chính của tìm kiếm Tabu là bộ nhớ ngắn hạn (short-term ST) và bộ nhớ dài hạn (long-term LT).

 Quá trình quay lui

TSG sử dụng quá trình quy lui để tìm một nút con subgoal từ một CS tồi và đƣợc xác định bởi hai tham số: MAXCS;MAXNS.

Chƣơng này tìm hiểu kỹ về phƣơng pháp kiểm thử dựa tìm kiếm từ lịch sử ra đời, quá trình phát triển và độ ứng dụng phổ biến trong ngày nay. Tiêu biểu cho phƣơng pháp này là ba thuật toán:thuật toán leo đồi cơ bản, thuật toán leo đồi dốc đứng và thuật toán Tabu-search.

CHƢƠNG 3. THỬ NGHIỆM ÁP DỤNG CÁC THUẬT TOÁN KIỂM THỬ DỰA TÌM KIẾM TRONG KIỂM THỬ CẤU TRÚC

Một phần của tài liệu Các kỹ thuật kiểm thử cấu trúc chương trình theo hướng tiếp cận kiểm thử dựa (Trang 39 - 44)

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

(82 trang)