3. Bố cục của luận văn
3.5.2. Kết quả thực nghiệm
Thuật toán leo đồi cơ bản:
Lần 1 Lần 2 Lần 3 Kết quả Số vòng lặp Kết quả Số vòng lặp Kết quả Số vòng lặp {14.0,15.0,18.0} 1 {19.0,42.0,8.0} 1 {27.0,37.0,45.0} 1 {-16.0,15.0,18.0} 1 {-11.0,42.0,8.0} 1 {-3.0,37.0,45.0} 1 {29.0,46.0,9.0} 2 {19.0,12.0,8.0} 1 {27.0,7.0,45.0} 1 {16.0,16.0,13.0} 17 {19.0,19.0,7.0} 22 {46.0,46.0,44.0} 25 {34.0,10.0,34.0} 22 {34.0,40.0,40.0} 27 {46.0,43.0,46.0} 36 {2.0,9.0,9.0} 42 {38.0,3.0,38.0} 67 {22.0,40.0,40.0} 50 {5.0,5.0,5.0} 233 {43.0,43.0,43.0} 197 {38.0,38.0,38.0} 172
Bảng 3.1. Bảng kết quả thực nghiệm thuật toán leo đồi cơ bản
Thuật toán leo đồi dốc đứng:
Lần 1 Lần 2 Lần 3 Kết quả Số vòng lặp Kết quả Số vòng lặp Kết quả Số vòng lặp {23.0,42.0,39.0} 1 {16.0,21.0,44.0} 1 {6.0,30.0,3.0} 1 {-7.0,42.0,39.0} 1 {-14.0,21.0,44.0} 1 {-24.0,30.0,3.0} 1 {38.0,20.0,2.0} 4 {23.0,9.0,23.0} 2 {15.0,34.0,33.0} 4 {21.0,17.0,17.0} 38 {47.0,38.0,29.0} 3 {23.0,50.0,50.0} 50 {35.0,39.0,35.0} 66 {4.0,37.0,37.0} 33 {28.0,18.0,28.0} 115 {31.0,31.0,50.0} 69 {44.0,44.0,10.0} 87 {31.0,31.0,12.0} 167 {12.0,12.0,12.0} 1295 {8.0,8.0,8.0} 1484 {5.0,5.0,5.0} 1678
Thuật toán Tabu-search: Lần 1 Lần 2 Lần 3 Kết quả Số vòng lặp Kết quả Số vòng lặp Kết quả Số vòng lặp {33.0,2.0,30.0} 1 {9.0,14.0,33.0} 1 {21.0,36.0,18.0} 1 {-7.0,2.0,30.0} 1 {-21.0,14.0,33.0} 1 {-9.0,36.0,18.0} 1 {48.0,48.0,7.0} 2 {40.0,10.0,47.0} 2 {61.0,36.0,18.0} 1 {18.0,48.0,37.0} 2 {10.0,10.0,17.0} 2 {48.0,48.0,5.0} 6 {43.0,22.0,43.0} 4 {44.0,32.0,44.0} 16 {50.0,32.0,50.0} 23 {3.0,2.0,2.0} 26 {4.0,46.0,46.0} 24 {25.0,45.0,45.0} 29 {5.0,5.0,5.0} 380 {9.0,9.0,9.0} 180 {25.0,25.0,25.0} 238
Bảng 3.3. Bảng kết quả thực nghiệm thuật toán Tabu-search
3.5.3. Nhận xét đánh giá
Qua thực nghiệm với các thuật toán ta thấy:
Leo đồi dốc đứng đi mỗi bƣớc sẽ lâu hơn leo đồi đơn giản, nhƣng sẽ đến kết quả nhanh hơn (vì theo kết quả ở phần trên, trong mỗi vòng lặp của leo đồi dốc đứng đều chọn ra 1 nút có chi phí nhỏ nhất trong các chi phí nhỏ hơn giá trị ban đầu, còn vòng lặp của leo đồi cơ bản chỉ cần chọn ra những nút có chi phí nhỏ hơn chi phí của nút ban đầu. Nhƣ vậy bƣớc chọn 1 nút sẽ mất nhiều thời gian hơn nhƣng về sau chỉ cần duyệt riêng nút đó nên sẽ nhanh hơn duyệt nhiều nút).
Điểm mạnh của thuật toán leo đồi là đơn giản, dễ lập trình, không tốn bộ nhớ do không phải lƣu bất kỳ thứ gì, chỉ lƣu trạng thái tạm thời và các hàng xóm (theo nhƣ kết quả thì thuật toán leo đồi cơ bản không hề có các danh sách nhƣ CFG, ST,
LT nhƣ thuật toán Tabu-search). Nhƣng chính đặc điểm này cũng dẫn đến trƣờng hợp thuật toán leo đồi có thể gặp phải trƣờng hợp lặp vô hạn. Trong khi đó thuật toán Tabu-search thì có danh sách lƣu những điểm đã đi qua nên tiết kiệm thời gian hơn.
Tabu-search là một trong những Meta-Heuristic đƣợc áp dụng nhiều nhất cho các bài toán tối ƣu tổ hợp khó. Tabu-search sẽ tìm kiếm và chỉ lựa ra một lời giải duy nhất để làm cơ sở cho bƣớc lặp tiếp theo - đây chính là điểm khác biệt cơ bản nhất giữa thuật giải Tabu-search so với nhóm các thuật giải tiến hoá (như thuật giải di truyền, lập trình tiến hoá, v.v.). Ở nhóm các thuật giải tiến hoá, sau mỗi bƣớc lặp, kết quả thu đƣợc là cả một tập các lời giải, trong khi ở Tabu-search, chỉ thu đƣợc một lời giải duy nhất.
Cả ba thuật toán đều có thể gặp khả năng thất bại trong việc tìm lời giải.
3.6.Kết chƣơng
Chƣơng 3 đã trình bày đƣợc:
Mô tả bài toán phân loại tam giác với biểu đồ luồng dữ liệu cho trƣớc. Trình bày đƣợc ý tƣởng và cài đặt thuật toán leo đồi cơ bản.
Trình bày đƣợc ý tƣởng và cài đặt thuật toán leo đồi dốc đứng. Trình bày đƣợc ý tƣởng và cài đặt thuật toán Tabu-search.
Đƣa ra kết quả thực nghiệm của ba thuật toán và đánh giá kết quả của 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).
KẾT LUẬN VÀ KIẾN NGHỊ A. Kết luận:
Qua thời gian làm việc, với sự nỗ lực của bản thân và đƣợc sự hƣớng dẫn tận tình của PGS.TS. Huỳnh Quyết Thắng, tôi đã cơ bản hoàn thành Luận văn "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 tìm kiếm" của mình.
Đề tài đã giải quyết đƣợc các vấn đề sau:
1. Trình bày các kỹ thuật trong kiểm thử phần mềm, trong đó tập trung vào phân tích ba kỹ thuật chính là: kiểm thử hộp đen, kiểm thử hộp trắng và kiểm thử hộp xám.
2. Phân tích kỹ thuật kiểm thử cấu trúc, đƣa ra các phƣơng pháp trong kiểm thử cấu trúc nhƣ: kiểm thử theo câu lệnh, kiểm thử theo đƣờng dẫn, …
3. Giới thiệu về phƣơng pháp kiểm thử dựa trên tìm kiếm.
4. Đi sâu vào phân tích ba thuật toán: thuật toán leo đồi cơ bản (Hill climbing), thuật toán leo đồi dốc đứng và thuật toán Tabu-search.
Các kết quả chính đạt đƣợc trong đề tài:
1. Nghiên cứu về các kỹ thuật kiểm thử cấu trúc chƣơng trình.
2. Ứng dụng phƣơng pháp kiểm thử dựa tìm kiếm để kiểm thử cấu trúc chƣơng trình.
3. Tác giả đã cài đặt và sử dụng 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 để thử nghiệm kiểm thử cấu trúc đối với bài toán phân loại tam giác và đã đánh giá kết quả cụ thể.
Những khó khăn gặp phải trong quá trình thực hiện đề tài:
Việc phân tích và kiểm thử phần mềm ở Việt Nam hiện nay còn chƣa đƣợc chú trọng.
Việc tìm hiểu và ứng dụng các phƣơng pháp kiểm thử dựa trên tìm kiếm là một hƣớng đi đã đƣợc đề xuất từ những năm 1976 nhƣng mãi đến những năm 1990 mới thực sự đƣợc các nhà nghiên cứu trên thế giới quan tâm.Tuy nhiên ở Việt Nam việc tìm hiểu và ứng dụng các phƣơng pháp kiểm thử dựa trên tìm kiếm còn chƣa thu hút đƣợc giới nghiên cứu và chƣa phổ biến.
Hƣớng giải quyết:
Cần phải chú trọng hơn nữa việc phân tích và kiểm thử phần mềm vì kiểm thử là một giai đoạn quan trọng của quá trình kiểm soát chất lƣợng trong quy trình phát triển phần mềm.
Cần phải tiếp tục tìm hiểu sâu hơn nữa và phân tích rõ đƣợc ƣu điểm của các phƣơng pháp kiểm thử dựa trên tìm kiếm, từ đó sẽ thu hút đƣợc đông đảo các nhà nghiên cứu tham gia phát triển các phƣơng pháp dựa trên tìm kiếm để kiểm thử cấu trúc chƣơng trình, góp phần đảm bảo hiệu quả hoạt động tối ƣu của phần mềm.
B. Kiến nghị:
Trong quá trình nghiên cứu và hoàn thành luận văn tác giả nhận thấy: hiện nay vấn đề kiểm thử phần mềm vẫn chƣa thực sự đƣợc đầu tƣ và quan tâm đúng mức. Nƣớc tahiện nay đang trong quá trình xây dựng và phát triển ngành công nghiệp phần mềm do đóviệc ứng dụng công cụ kiểm thử phần mềm tự động chắc chắn sẽ giúp giảm công sức của cán bộ kiểm thử đồng thời làm tăng chất lƣợng phần mềm. Trong điều kiện Việt Nam hiện nay, với tỷ trọng gia công phần mềm ngày càng lớn tại các công ty phần mềm, để nâng cao chất lƣợng của các sản phẩm phần mềm thì cần phải có những chính sách đầu tƣ và sự quan tâm sâu sắc cho quá trình kiểm thử phần mềm.