Các kỹ thuật sinh dữ liệu kiểm thử tự động dựa trên mô hình (tt)

27 64 0
Các kỹ thuật sinh dữ liệu kiểm thử tự động dựa trên mô hình (tt)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ VŨ THỊ ĐÀO CÁC KỸ THUẬT SINH TỰ ĐỘNG DỮ LIỆU KIỂM THỬ DỰA TRÊN CÁC BIỂU ĐỒ UML Chuyên ngành: Kỹ thuật Phần mềm Mã số: 62.48.01.03 TÓM TẮT LUẬN ÁN TIẾN SĨ NGÀNH CÔNG NGHỆ THÔNG TIN Hà Nội – 2018 Cơng trình hồn thành tại: Trường Đại học Công nghệ - Đại học Quốc gia Hà Nội Người hướng dẫn khoa học: PGS TS Nguyễn Việt Hà Phản biện 1: Phản biện 2: Phản biện 2: Luận án tiến sĩ bảo vệ trước hội đồng cấp Đại học Quốc gia chấm luận án tiến sĩ họp tại………………………………………… Vào hồi 14h 00 ngày 28 tháng 11 năm 2017 Có thể tìm hiểu luận án tại: - Thư viện Quốc gia Việt Nam - Trung tâm Thông tin – Thư viện, Đại học Quốc gia Hà Nộ Chương Giới thiệu 1.1 Đặt vấn đề Trong trình phát triển phần mềm, kiểm thử giai đoạn quan trọng thực cần thiết để tạo hệ thống phần mềm có chất lượng cao Các công ty phần mềm tổ chức phát triển phần mềm hướng tới giải pháp tự động hóa q trình kiểm thử Tuy nhiên, đa số trình thực tự động tập trung vào việc thực thi kịch liệu kiểm thử mà không quan tâm nhiều đến việc thiết kế chúng Hơn nữa, việc phát lỗi phần mềm chủ yếu chất lượng kịch liệu kiểm thử thiết kế Vì vậy, luận án tập trung giải giai đoạn thiết kế kiểm thử: sinh kịch liệu kiểm thử từ biểu đồ UML (Unified Modeling Language) ràng buộc OCL (Object Constraint Language) Luận án đề xuất giải pháp hỗ trợ việc giải vấn đề toán Thứ nhất, luận án đề xuất quy trình sinh liệu kiểm thử từ biểu đồ UML ràng buộc OCL Biểu đồ UML 2.0 áp dụng cho tất mười hai tốn tử, có cấu trúc phức tạp, khối lồng ghép Và phương pháp áp dụng cho ràng buộc kiểu liệu số cấu trúc động Thứ hai, luận án đề xuất phương pháp sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 biểu đồ lớp trường hợp vòng lặp ứng dụng tương tranh, giải vấn đề bùng nổ số kịch kiểm thử Thứ ba, luận án đưa phương pháp cải tiến việc sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 biểu đồ lớp với ràng buộc chuỗi Các kết nghiên cứu kết rời rạc mà chúng có mối liên hệ chặt chẽ việc tích hợp với tạo thành giải pháp cho tốn kiểm thử dựa hình 1.2 Phương pháp nội dung nghiên cứu Để thực nội dung nghiên cứu luận án, tác giả tiến hành theo phương pháp tiếp cận từ xuống, phân loại hệ thống hóa lý thuyết phương pháp sinh liệu kiểm thử tự động từ hình, từ phân tích, phân loại tổng hợp phương pháp Theo cách phân loại đưa ra, luận án sâu phân tích đặc điểm ưu nhược điểm loại Từ phương pháp phân tích tổng hợp trên, với khía cạnh kiểm thử dựa hình, luận án chọn đối tượng nghiên cứu luận án việc sinh tự động liệu kiểm thử từ biểu đồ UML Từ với đặc trưng biểu đồ, luận án nghiên cứu liên quan để đề xuất cải tiến đưa phương pháp sinh kịch liệu kiểm thử, với mục đích giảm số lượng, tăng độ bao phủ tránh bùng nổ số lượng kịch kiểm thử sinh Giҧi quyӃt ÿһc trѭng, toán tӱ cӫa biӇu ÿӗ UML ÿã chӑn Các yêu cҫu hình hóa Các dӳ liӋu kiӇm thӱ, ca kiӇm thӱ Các biӇu ÿӗ UML Bӝ sinh ÿҫu mong muӕn Ĉánh giá QuyӃt ÿӏnh: - Tҥo thêm ca kiӇm thӱ - ChӍnh sӱa hình - Ĉánh giá ÿӝ tin cұy ÿӝ ÿo chҩt lѭӧng kiӇm thӱ Giҧi quyӃt vӟi kiӇu dӳ liӋu sӕ, có cҩu trúc ÿӝng, ràng buӝc chuӛi kiӇm thӱ vòng lһp Phân tích kӃt quҧ Giҧm sӕ lѭӧng tăng ÿӝ bao phӫ cӫa kӏch bҧn kiӇm thӱ, Tránh bùng nә sӕ lѭӧng luӗng song song, khóa chӃt, ÿӗng bӝ Báo cáo kiӇm thӱ Lҩy kӃt quҧ kiӇm thӱ Sҧn phҭm cҫn kiӇm thӱ Hình 1.1: Các nội dung luận án giải toán kiểm thử dựa hình Việc sinh liệu kiểm thử xem xét với biến có kiểu liệu khác loại ràng buộc khác trường hợp kiểm thử vòng lặp Hình 1.1 tả quy trình tốn kiểm thử dựa hình, vấn đề luận án tập trung giải hình chữ nhật góc tròn nét đứt 1.3 Cấu trúc luận án Phần lại luận án cấu trúc sau Chương giới thiệu kiến thức tảng vấn đề nghiên cứu luận án Đây sở lý thuyết cho việc xây dựng phương pháp sinh liệu kiểm thử tự động từ biểu đồ UML chương từ Chương đến Chương Chương trình bày nội dung kết nghiên cứu Phương pháp sinh liệu kiểm thử tự động giải cho tất mười hai toán tử biểu đồ UML 2.0 kiểu liệu số cấu trúc động Phương pháp đề xuất việc sinh liệu kiểm thử tự động với trường hợp kiểm thử vòng lặp ứng dụng tương tranh trình bày Chương Chương trình bày nội dung kết nghiên cứu Phương pháp sinh liệu kiểm thử tự động với việc cải tiến giải với ràng buộc chuỗi Tổng kết kết nghiên cứu luận án hướng nghiên cứu trình bày Chương Chương Kiến thức tảng 2.1 Các khái niệm Kiểm thử phần mềm trình kiểm tra đảm bảo sản phẩm phần mềm thực để thỏa mãn yêu cầu khách hàng Mục đích kiểm thử nhằm đánh giá chất lượng tính chấp nhận sản phẩm ❼ Ca kiểm thử (Test case): gồm tập liệu đầu vào, bước thực giá trị đầu mong đợi phần mềm Với ca kiểm thử, kết mong đợi so sánh với kết thực tế kịch thực thi phần mềm ❼ Dữ liệu kiểm thử (Test data): tập giá trị thực (thỏa mãn tiêu chuẩn bao phủ liệu chọn) xác định rõ đầu vào để thực ca kiểm thử trình kiểm thử ❼ Tiêu chuẩn bao phủ liệu kiểm thử (Test data coverage criteria): tập quy tắc sử dụng để xác định việc chọn giá trị liệu kiểm thử Tiêu chuẩn xác định độ phủ không gian liệu đầu vào chương trình hình ❼ Kịch kiểm thử (Test scenario):là khái niệm mức cao cần kiểm thử, thường bao gồm nhiều ca kiểm thử liên quan Mục đích kịch kiểm thử kiểm tra việc thực chức từ đầu đến cuối chức phần mềm đảm bảo luồng logic hoạt động Khi kịch kiểm thử xác định, trường hợp kiểm thử viết cho kịch với liệu đầu vào khác Các ca kiểm thử trường hợp miêu tả chi tiết mức thấp kịch kiểm thử ❼ Tiêu chuẩn bao phủ (Coverage criteria): tập quy tắc yêu cầu mà kiểm thử cần phải thoả mãn Mục đích để đánh giá mức độ hiệu ca kiểm thử, đo phần trăm độ bao phủ đặc tả chương trình ca kiểm thử so với yêu cầu phần mềm, thông qua kiểm thử để loại trừ sai sót tăng chất lượng phần mềm 2.2 Kiểm thử dựa hình Kiểm thử dựa hình phương pháp kiểm thử mà ca kiểm thử sinh từ hình, đặc tả hành vi hệ thống kiểm thử (System Under Testing – SUT) hình biểu diễn máy hữu hạn trạng thái, ôtômát, đặc tả đại số, biểu đồ UML, v.v Kiểm thử dựa hình tự động hóa thiết kế chi tiết ca kiểm thử Cụ thể, thay việc thiết kế hàng trăm ca kiểm thử thủ cơng người thiết kế kiểm thử xây dựng hình trừu tượng SUT, sau cơng cụ kiểm thử dựa hình sinh tập ca kiểm thử từ hình Tồn thời gian thiết kế kiểm thử giảm xuống, ưu điểm phát sinh tập ca kiểm thử khác từ hình việc sử dụng tiêu chuẩn bao phủ khác Hình 2.1 năm bước quy trình kiểm thử dựa hình Các u cҫu kӃ hoҥch kiӇm thӱ hình hình hóa (Bӝ sinh ca kiӇm thӱ) Sinh trӯu tѭӧng kiӇm thӱ ca kiӇm thӱ Phân tích kӃt quҧ kiӇm thӱ ÿoҥn mã kiӇm thӱ kӃt quҧ Thӵc thi kiӇm Cө thӇ hóa trӯu thӱ SUT tѭӧng kiӇm thӱ (Công cө thӵc thi kiӇm thӱ) (Bӝ sinh mã kiӇm thӱ) Hình 2.1: Q trình kiểm thử dựa hình 2.3 Tổng quan sinh liệu kiểm thử tự động Sự cần thiết việc sinh liệu kiểm thử tự động xuất phát từ hai mục đích chính: để tăng chất lượng phần mềm giảm chi phí phát triển Các trường hợp kiểm thử ngoại lệ khơng có tiêu chuẩn kiểm thử đầy đủ Do đó, việc xem xét đầy đủ tiêu chuẩn bao phủ kiểm thử cho trường hợp để hướng tới việc sinh kiểm thử tự động phương pháp hiệu mang tính hệ thống thӡ i gian Ph́˿ng pháp Ph́˿ng pháp tƭnh Gi ҧm miӅn ÿӝng Dӵa giҧi ràng buӝc ÿͱng D ӵa chuӛi (chaining) Ĉӏnh hѭӟng mөc ÿích Thӵc thi tѭӧ ng tr ѭng Phѭѫ ng pháp sӕ Kӻ thuұt tӕi ѭ u Kӻ thuұt t ӕi ѭu Z Kӻ thuұt ÿһc t ҧ cho máy hӳu hҥn tr ҥng thái Sinh dӳ liӋu kiӇm thӱ ngүu nhiên Kӻ thuұt dӵa cú pháp phѭѫng pháp kiӇm thӱ Hình 2.2: Các hướng tiếp cận Sinh liệu kiểm thử tự động Các cách tiếp cận dựa cấu trúc chia làm ba loại: phương pháp tĩnh, phương pháp động kết hợp hai Các phương pháp tiếp cận tĩnh sử dụng thực thi tượng trưng để xác định tĩnh đường sau sử dụng tiêu chuẩn khác để sinh liệu kiểm thử Cách tiếp cận động thực thi hệ thống cần kiểm thử để tìm kiếm liệu kiểm thử mong muốn Việc sử dụng thực thi tượng tương thực thi hệ thống kiểm thử phương pháp kết hợp hai Hình 2.2 cách tổng quan hướng tiếp cận sinh liệu kiểm thử tự động Trong đó, theo trục đứng hướng lên chiều tăng dần thời gian phương pháp kiểm thử đưa trục ngang phương pháp kiểm thử khác Sinh liệu kiểm thử từ biểu đồ UML: Các biểu đồ UML sử dụng phổ biến thực tiễn công ty phát triển phần mềm UML 2.0 chứa tập biểu đồ hiệu định nghĩa cách linh hoạt mở, biểu diễn khía cạnh khác hệ thống biểu đồ khác Việc sử dụng biểu đồ UML kết hợp với OCL để biểu diễn đặc tả ràng buộc mà nhiều biểu đồ khơng biểu diễn hết Vì vậy, kiểm thử từ biểu đồ UML cần thiết để chọn tập biểu đồ phân loại ngữ nghĩa cho việc chọn Mỗi cơng cụ kiểm thử dựa hình có cách tiếp cận khác để hỗ trợ biểu đồ khác định nghĩa tập sử dụng biểu đồ Điều cần thiết để định nghĩa phần liệu biểu đồ (biểu đồ lớp, biểu đồ đối tượng) khía cạnh hành vi động biểu đồ Biểu đồ phù hợp cho việc tả ca kiểm thử trừu tượng, xem đầu trình sinh kiểm thử Thực đưa đường dẫn kiểm thử mong muốn thông qua hình hành vi riêng biệt 2.4 Các cơng cụ sinh liệu kiểm thử Tiêu chuҭn ÿһc tҧ ÿҫu vào Hӝp xám Hӝp ÿen EXE Agedis PEX JTest SpecExplorer Korat Conformiq Qtronic ChӍ có tiêu chuҭn kiӇm thӱ Ĉһc tҧ Hiện nay, có nhiều cơng cụ hỗ trợ sinh kịch kiểm thử tự động nói chung liệu kiểm thử nói riêng Phần đưa cách tổng quan công cụ có sẵn thương mại nghiên cứu (trong Hình 2.3) Các cơng cụ phân loại theo hai tiêu chí: sinh tự động từ mã nguồn sinh tự động từ đặc tả hình Trong Hình 2.3 phân biệt công cụ không sử dụng đặc tả, sử dụng đặc tả tiêu chuẩn kiểm thử Các công cụ phân loại theo kỹ thuật kiểm thử hộp trắng, kiểm thử hộp đen kiểm thử hộp xám UniTesK JavaTesK CTesK RanDoop Hӝp trҳng AutoTest AnalytiX Khơng C++Test AgitarOne DART JPF Khơng có mã nguӗn mã nguӗn Hình 2.3: Phân loại cơng cụ sinh kiểm thử tự động Chương Sinh liệu kiểm thử cho kiểu liệu số cấu trúc động 3.1 Giới thiệu Trong hướng tiếp cận sinh liệu kiểm thử tự động từ biểu đồ UML, toán đặt làm sinh tự động liệu kiểm thử từ biểu đồ UML 2.0 ràng buộc OCL để kịch kiểm thử có độ bao phủ tốt kiểm soát số lượng kịch kiểm thử sinh Một số hướng không giải triệt để tất toán tử trường hợp lồng biểu đồ UML Thông tin hình trung gian chuyển từ biểu đồ không đầy đủ từ biểu đồ gốc Các phương pháp giải ràng buộc kịch thường giải trường hợp chung, không ý giải trường hợp đặc biệt với biến cấu trúc động (kiểu liệu cấu trúc động bao gồm thành phần kiểu liệu trỏ thành phần kiểu cấu trúc, kiểu liệu bản) Việc sinh liệu kiểm thử biến trỏ từ hình UML thực thi đoạn mã kiểm thử tự động vấn đề mà theo hiểu biết tác giả chưa thấy nghiên cứu đưa Việc xem xét độ bao phủ, khả tìm lỗi kịch kiểm thử sinh gặp nhiều thách thức Vì vậy, luận án đề xuất phương pháp sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 ràng buộc OCL với biến kiểu liệu số cấu trúc động Phương pháp đề xuất áp dụng cho tất mười hai toán tử, trường hợp lồng biểu đồ UML 2.0 3.2 Phương pháp sinh liệu kiểm thử cho biến kiểu liệu số cấu trúc động 3.2.1 Tổng quan phương pháp đề xuất Từ vấn đề tồn nêu trên, luận án cải tiến phương pháp sinh liệu kiểm thử từ biểu đồ UML 2.0 ràng buộc OCL với biến có kiểu liệu số cấu trúc động Phương pháp chia làm bốn bước sau: ❼ Bước chuyển đổi biểu đồ tuần tự, biểu đồ lớp thành CFG ❼ Từ CFG sinh kịch kiểm thử tương ứng với tiền hậu điều kiện kịch tập ràng buộc BiӇ u ÿӗ tu ҫn tӵ UML Các ràng buӝ c OCL c ӫ a biӇu ÿӗ lӟp Ĉӗ thӏ dòng ÿ iӅ u khiӇn Sinh k ӏch bҧ n kiӇm th ӱ Chӑn v ӏ tӯ , chuy Ӈn thành hàm v ӏ tӯ Các dӳ liӋu kiӇ m thӱ Hình 3.1: Các bước sinh liệu kiểm thử ❼ Trong kịch kiểm thử, vị từ (từ ràng buộc) chọn chuyển thành hàm vị từSinh liệu kiểm thử kịch kiểm thử từ hàm vị từ Chuyển biểu đồ thành đồ thị dòng điều khiển Đồ thị dòng điều khiển (Control Flow Graph – CFG) đồ thị trung gian để sinh kịch kiểm thử Các thông tin CFG chuyển từ biểu đồ UML ràng buộc OCL tương ứng Một CFG đồ thị biểu diễn trực tiếp tương ứng với biểu đồ đưa thông tin ràng buộc lấy từ biểu đồ lớp Có năm loại nút (đỉnh) đồ thị: block node (BN), decision node (DN), merge node (MN), fork node (FN) join node (JN) Trong đó, BN nút tương ứng với thông điệp; DN biểu diễn biểu thức điều kiện biểu thức logic thỏa mãn cho việc lựa chọn toán hạng toán tử; MN biểu diễn nút toán tử lựa chọn; FN biểu diễn đầu vào JN biểu diễn đầu toán tử song song yếu Ý tưởng phương pháp sinh CFG: Đầu tiên, việc sinh cấu trúc liệu biểu đồ tạo nên hàng đợi bao gồm: thông điệp (message), toán tử (fragment) toán hạng (operand) Sử dụng hàm lặp với mục đích sinh loại nút khác từ hàng đợi Mỗi bước lặp phân tích phần tử hàng đợi để tạo nút tương ứng Bởi tham số thông điệp biểu đồ thiếu thông tin ràng buộc kiểu liệu chúng, ràng buộc lấy từ biểu đồ lớp cập nhật thông tin vào nút tương ứng Thuật tốn phân tích phần tử biểu đồ trường hợp toán tử lồng đan xen toán tử Thuật toán đưa bắt buộc chuyển biểu đồ thành dạng file xmi Tất phần tử xếp theo trình tự biểu đồ đưa vào Hình 3.2 Hình 3.3 minh họa cho việc chuyển sang CFG mười hai toán tử Sinh kịch kiểm thử Giả sử CFG gồm: (A, E, in, F) Mỗi đỉnh Ai ∈ A có cấu trúc sau: , đó: noId nhãn gắn nút; noType loại nút in, BN, DN, MN, FN, JN f ni ; noDetails =< m1 , m2 , , mq > với q số thông điệp Bi ∈ BN Mỗi nút Bi biểu diễn thông điệp mi Mỗi thông điệp mi đỉnh đồ thị G có tiền hậu điều kiện (preCi postCi ) Thuật toán miêu tả chi tiết với đầu vào bao gồm thông tin đồ thị G, đầu tập kịch kiểm thử T mà kịch thỏa mãn độ bao phủ thơng điệp, dòng thơng điệp độ bao phủ tiền hậu điều kiện b:B a:A B1 a:A b:B D1 break m1() [c] [c] [c] opt B2 [c] [!c] D1 m1() m2() B2 B1 m2() M1 b:B a:A [c] alt [c] m1() [!c] D1 b:B a:A B1 B2 [!c] [c] m2() [!c] loop(0,n) D1 m() M1 [c] B1 a:A b:B FN1 par A:A a:A m1() b:B c:C B2 B1 strict B1 m2() m1() B3 B2 m2() m3() JN1 B3 m3() A:A a:A b:B c:C FN1 A:A a:A seq b:B B2 m1() m1() B1 m2() B3 m2() B1 critical B2 m3() JN1 Hình 3.2: Chuyển từ biểu đồ sang CFG (của toán tử opt, alt, break, loop, parallel, weak sequencing, strict critical region) a:A b:B A:A a:A ignore {m2} b:B x==y m1() B1 assert m2() B1 m1() B3 {x==y} m3() a:A b:B A:A a:A b:B consider {m1,m3} B1 neg m1() m2() operand==m1 m1() B3 false true B2 m3() m2() Hình 3.3: Chuyển từ biểu đồ sang CFG (của toán tử ignore, consider, assert negative) Bảng 3.2: Kết thực nghiệm so sánh phương pháp đề xuất với phương pháp Trung Dinh–Trong 3.3.2 Loại lỗi Số lỗi gieo MM FOA SCS BCS FM FP MBA FC FAM WIT WRP FOP Tổng 5 5 4 42 Phương pháp Số lỗi bao phủ điều kiện 5 2 35 Trung Dinh–Trong Số lỗi bao phủ thông điệp 5 2 32 Phương pháp đề xuất Số lỗi bao Số lỗi bao phủ điều kiện phủ thông điệp 5 4 2 1 5 5 4 2 1 3 40 39 Thực nghiệm đánh giá phần sinh kịch kiểm thử tự động Trong thực nghiệm này, tác giả sử dụng tập chức liệu dùng cách tiếp cận Trung Dinh–Trong: hệ thống bán hàng online (OSHOP) hệ thống thành phần hình UML (COMP) Một tập hợp loại lỗi đưa việc xác định lỗi phổ biến hệ thống: Thiếu thông điệp (MM); Thứ tự gọi thông điệp sai (FOM); Sai thông điệp (FM); Giới hạn phạm vi cấu trúc điều kiện (SCS); Mở rộng phạm vi cấu trúc điều kiện (BCS); Các tham số sai (FP); Thiếu nhánh thay (MBA); Điều kiện sai (FC); Bản số quan hệ lớp sai (FAM); Cây thừa kế sai (WIT); Tham chiếu đến lớp cha sai (WRP); Các ràng buộc OCL sai (FOP) Kết thực nghiệm Bảng 3.2 số lượng lỗi theo tiêu chuẩn.Theo phương pháp Trung Dinh–Trong có 42 lỗi cấy vào 35 lỗi (khoảng 83%) tìm thấy đầu vào kiểm thử thỏa mãn tiêu chuẩn bao phủ điều kiện Theo tiêu chuẩn bao phủ thơng điệp tìm 32 lỗi Trong theo phương pháp đề xuất tìm 40 lỗi tiêu chuẩn bao phủ điều kiện (khoảng 95%) tiêu chuẩn bao phủ thơng điệp tìm 39 lỗi (khoảng 92%) 3.4 Kết luận Chương trình bày phương pháp đề xuất sinh liệu kiểm thử từ biểu đồ UML 2.0 biểu đồ lớp với ràng buộc số cấu trúc động Phương pháp áp dụng cho tất mười hai toán tử khối lồng ghép biểu đồ Các kết thực nghiệm phương pháp đề xuất sinh kịch kiểm thử có độ bao phủ có khả tìm lỗi tốt so với số phương pháp có Với giải pháp này, số vấn đề khó áp dụng phương pháp kiểm thử dựa hình thiếu phương pháp thiết kế kiểm thử giải Một phần kết công bố tại Chuyên san cơng trình Nghiên cứu phát triển ứng dụng công nghệ thông tin truyền thông Hội nghị quốc tế APLAS 2016 Tác giả nghiên cứu với hệ thống thực lớn để chứng minh tính hiệu Đồng thời, tiếp tục phát triển sinh kịch kiểm thử từ loại biểu đồ UML khác kết hợp loại biểu đồ khác để chúng có độ bao phủ tốt 11 Chương Sinh liệu kiểm thử cho vòng lặp ứng dụng tương tranh 4.1 Giới thiệu Trong thực tế nhiều hệ thống phức tạp, trình sinh kịch kiểm thử tự động từ biểu đồ UML 2.0 ràng buộc biểu đồ lớp thực cần thiết, cách tiếp cận trình sinh kiểm thử tự động đối mặt với số vấn đề Thứ nhất, chương trình tương tranh khơng đơn định thực cho đầu khác với đầu vào lần thực thi khác Tính tương tranh biểu đồ miêu tả toán tử song song yếu Do đó, q trình sinh kịch kiểm thử chương trình tương tranh có thách thức định mà chương trình khơng có Thứ hai, đặc trưng nhánh biểu đồ dẫn đến việc sinh số lượng lớn kịch kiểm thử số có kịch khơng khả thi Chương luận án đề xuất để giải vấn đề Phương pháp cải tiến sinh kịch kiểm thử từ biểu đồ UML 2.0 ràng buộc biểu đồ lớp theo tiêu chuẩn bao phủ tương tranh Ưu điểm phương pháp đề xuất sử dụng thuật toán chọn lọc kịch kiểm thử khả thi sinh ra, tránh việc bùng nổ số lượng kịch trường hợp toán tử song song yếu Dữ liệu kiểm thử đưa từ việc giải ràng buộc việc sử dụng vị từ giảm miền biến bước Vì vậy, sinh liệu kiểm thử trường hợp bao phủ vòng lặp 4.2 Phương pháp đề xuất 4.2.1 Tổng quan phương pháp đề xuất Từ vấn đề tồn nêu trên, luận án đề xuất phương pháp sinh kịch kiểm thử từ biểu đồ UML 2.0 ràng buộc biểu đồ lớp theo tiêu chuẩn bao phủ tương tranh khác Hơn nữa, tác giả cải tiến phương pháp giảm miền động để sinh liệu kiểm thử trường hợp độ bao phủ lặp khác Phương pháp đề xuất bao gồm bước thực sau: ❼ Đầu tiên, chuyển đổi biểu đồ UML 2.0 ràng buộc biểu đồ lớp thành CFG 12 ❼ Tiếp theo, từ CFG sinh kịch kiểm thử theo độ bao phủ tương tranh khác ❼ Sau đó, sinh liệu kiểm thử từ ràng buộc kịch kiểm thử theo độ bao phủ lặp 4.2.2 Sinh kịch kiểm thử Đầu vào trình sinh kịch kiểm thử CFG đưa Chương Đầu trình tập kịch hữu hạn mà kịch đường dẫn hoàn thành từ nút bắt đầu nút kết thúc Không thể khả thi kiểm thử tất đường dẫn nguồn lực kiểm thử có giới hạn Vì vậy, phương pháp mà luận án đề xuất sử dụng ba tiêu chuẩn kiểm thử tương tranh khác sinh kịch kiểm thử Tiêu chuẩn bao phủ yếu trường hợp tiêu chuẩn bao phủ trung bình, tiêu chuẩn bao phủ yếu đưa tốn hạng tiêu chuẩn bao phủ trung bình đưa tất toán hạng Thuật toán đưa để sinh kịch kiểm thử theo tiêu chuẩn tương tranh trung bình Thuật tốn Sinh kịch kiểm thử theo độ bao phủ tương tranh trung bình Input: Đồ thị dòng điều khiển G với nút khởi tạo in nút kết thúc f ni Output: T tập hợp kịch kiểm thử, t đường dẫn kiểm thử 1: T = ∅; t = ∅; 2: curN ode = in; //Nút nút in 3: repeat 4: move to next node; 5: if curN ode == BN then 6: t.append(BN); 7: end if 8: if curN ode == DN then 9: Append true part of BN up to MN in t 10: Append false part of BN up to MN in t 11: end if 12: if (curN ode == F N ) then 13: create sub path ti for each fork out flow; 14: append BN of each fork flow up to JN in respective sub path ti ; 15: end if 16: if (curN ode == f ni ) then 17: T = T ∪ {t}; 18: end if 19: until Graph end Mục đích Thuật tốn đề xuất sử dụng tiêu chuẩn bao phủ mạnh có chọn lọc để giải vấn đề chia sẻ liệu đồng không bị bùng nổ số lượng kịch kiểm thử sinh Trong toán tử song song yếu, việc chọn lựa điểm hốn đổi tương ứng thơng điệp đan xen toán hạng quan trọng Nếu khơng có điểm hốn đổi cho luồng đồng thời thơng điệp thực thi sau thơng điệp khác theo cách Các khơng kiểm tra tính đồng thời thơng điệp Nếu điểm hốn đổi sau thơng điệp số lượng đường dẫn sinh tăng nhanh, dẫn đến bùng nổ Tuy nhiên, thơng điệp luồng đồng thời có chia liệu cần thứ tự thông điệp luồng khác mà thứ tự cần chen ngang thông điệp cách chặt chẽ luồng đồng thời cần lựa chọn cẩn thận 13 Thuật toán Sinh kịch kiểm thử theo độ bao phủ tương tranh mạnh Input: Đồ thị dòng điều khiển G với nút khởi tạo in nút kết thúc f ni Output: T tập hợp kịch kiểm thử, t đường dẫn kiểm thử 1: T = ∅; t = ∅; 2: curN ode = in; //Nút nút in 3: repeat 4: move to next node; 5: if (curN ode == BN ) then 6: t.append(BN); 7: end if 8: if (curN ode==DN and Branch is TRUE) then 9: Append t with true part BN to MN; 10: else 11: Append t with false part BN to MN; 12: end if 13: if (curN ode == F N ) then 14: active all sub paths of FN; 15: repeat 16: Select random sub path; 17: Append t with node up to before or after node having isAsyn //Thơng điệp có thuộc tính isAsyn (true) điểm hoán đổi 18: until all sub paths are empty 19: end if 20: if (curN ode == f ni ) then 21: T = T ∪ {t}; 22: end if 23: until Graph end điểm hoán đổi để sinh kịch kiểm thử tương ứng Một chọn lựa điểm hoán đổi điểm chia sẻ liệu luồng Những điểm hốn đổi đưa với mục đích tìm lỗi thứ tự lỗi an toàn liệu thực thi luồng đồng thời Các kịch kiểm thử sinh Thuật toán có khả phát lỗi an tồn liệu, thực thi đồng thời tìm trạng thái khơng đồng điểm chia sẻ liệu chen ngang rõ luồng thực thi Do đó, Thuật tốn đề xuất áp dụng cho hệ thống để sinh kịch kiểm thử theo độ bao phủ tương tranh mạnh tránh vấn đề bùng nổ kịch kiểm thử 4.2.3 Sinh liệu kiểm thử Các kịch kiểm thử sinh thông điệp thực ràng buộc Tuần tự khả thi tìm thấy liệu kiểm thử để thỏa mãn tất ràng buộc kèm với kịch Phương pháp đưa giải vấn đề tìm giá trị kịch kiểm thử CFG, sử dụng vị từ thời điểm giảm miền biến bước Chúng cải tiến phương pháp giảm miền động (dynamic domain reduction — DDR), đặc biệt trường hợp vòng lặp Cách tiếp cận sử dụng phương pháp giảm miền trực tiếp cho miền giá trị biến, tạo tập giá trị biểu diễn điều kiện đường dẫn thực thi Phương pháp cải tiến trường hợp bao phủ vòng lặp Theo độ bao phủ kiểm thử vòng lặp, tùy trường hợp tham số tốn tử loop có khơng bao gồm tham số số vòng lặp tối đa (max) số vòng lặp tối thiểu (min) thuật tốn sinh trường hợp kiểm thử tương ứng theo độ bao phủ lặp Thuật toán đề xuất để sinh số vòng lặp m tương ứng trường hợp khác độ bao phủ kiểm thử vòng lặp 14 Thuật tốn Sinh trường hợp kiểm thử tương ứng theo độ bao phủ lặp Input: t đường dẫn kiểm thử bao gồm nút DN toán tử lặp tập ràng buộc tương ứng Output: Các đường dẫn kiểm thử với m vòng lặp 1: if (fragment==’loop’ && guard ==true && parameters have max and min) then 2: k := random(max − 1); //k is random number with < k < max − 1; 3: m := {0; min; + 1; k; max − 1; max}; 4: else if (parameters only have max) then 5: m := random(max − 1); //k is random number with < k < max − 1; 6: m := {0; 1; 2; k; max − 1; max}; 7: else if (parameters only have min) then 8: k is random number >2; 9: m := {0; min; + 1; k}; 10: else 11: k is random number >2; 12: m := {0; 1; 2; k}; 13: end if Ĉӗ thӏ dòng ÿiӅu khiӇn Ràng buӝc cӫa bi Ӄn T: tұp ti t ҩt cҧ ÿѭӡng dүn, tӯ ÿiӇm N1 ÿӃn ÿiӇm Ng; k; m có T có rӛng khơng? khơng Xét ÿѭӡng dүn ti tӯ T T = T - { ti} không kiӇm tra nút hi Ӌn tҥi DN? có Thӵc hi Ӌn theo câu lӋ nh (có thӇ thay ÿәi giá trӏ bi Ӄn) Ĉánh dҩu ÿӃm DN(x) Ĉӑc vӏ tӯ cҥnh nhánh getSplit ÿӇ gi ҧm miӅn cӫa biӃn không duyӋt l ҥi nút trѭӟc DN ÿѭӡng dүn ti có Di chuyӇn ÿӃn nút DN gҫn nhҩt tr ѭӟc ÿó có nhiӅu hѫn k ÿiӇm chia tҥi DN? không không kiӇm tra miӅn mӟi thӓa mãn ràng buӝc có kiӇm tra x sӕ vòng lһp m hay khơng? khơng có kiӇm tra nút hi Ӌn tҥi có nút ÿích Ng? khơng Chӑn giá trӏ cӫa biӃn tӯ mi Ӆn giá trӏ ÿѭӧc gi ҧm Di chuyӇn sang nút ti Ӄp theo Không thӇ sinh dӳ li Ӌu kiӇm thӱ D ӳ liӋu kiӇm thӱ Hình 4.1: Quá trình sinh liệu kiểm thử Hình 4.1 thể quy trình sinh liệu kiểm thử từ tập đường dẫn T ràng buộc Một đường dẫn biểu diễn danh sách vị từ với vị từ cho DN Từ ràng buộc biến vị từ theo đường dẫn ti , GetSplit để tạo điểm chia nhằm giảm miền giới hạn biến Đường dẫn ti duyệt, trình tìm kiếm sử dụng để chia miền biến với mục đích nỗ lực để tìm tập hợp giá trị mà thỏa mãn ràng buộc GetSplit thuật toán thay đổi miền biến ràng buộc thỏa mãn: miền 15 Automated Test Data Generation Module UML Sequence Diagram + Class Diagram [Tool] Java Source Code XMI file Test data, Test scenarios [Tester] Select Test Coverage Hình 4.2: Kiến trúc phát triển cơng cụ SequenceConcur Bảng 4.1: Kết MS sử dụng cho kịch kiểm thử sinh cách tiếp cận nhóm tác giả Sun Phương pháp đề xuất Mức Phương thức Lớp Số ca kiểm thử 10/20/30 2/10/20/30 Phương pháp Sun Kịch Kịch Kịch Kịch bản bản 41.2% 38.5% 37.5% 40.2% 42.5% 45.7% 43.7% 46.4% 64.5% 64.5% 68.5% 68.5% Phương pháp đề xuất Kịch Kịch Kịch bản 51.2% 40.5% 45.7% 56.5% 55.7% 47.7% 74.5% 74.5% 81.5% Kịch 50.2% 60.4% 81.5% thỏa mãn ràng buộc kích thước hai miền chia Với kịch kiểm thử duyệt, biến kiểm tra tự động, tốn tử vòng lặp DN đánh dấu đếm với biến x, kiểm tra số lần duyệt DN có m hay khơng Trong trường hợp thỏa mãn liệu kiểm thử sinh với m vòng lặp Do đó, sinh liệu kiểm thử thỏa mãn bao phủ vòng lặp 4.3 Thực nghiệm Chúng xây dựng công cụ SequenceConcur sử dụng phương pháp đề xuất Hình 4.2 kiến trúc cơng cụ Tất thực nghiệm thực thi với cơng cụ máy tính Intel Core i3- 6100U CPU 2.30 GHz với RAM 2GB 4.3.1 Thực nghiệm Áp dụng cho biểu đồ UML chức Chuyển tiền hệ thống Ngân hàng, sau so sánh độ phân tích đột biến (Mutation Score – MS) kịch kiểm thử sinh cách tiếp cận đề xuất cách tiếp cận nhóm tác giả Sun Bộ gieo lỗi: sau có kịch kiểm thử hai cách tiếp cận sử dụng hệ thống đột biến mã nguồn mở muJava gieo ngẫu nhiên lỗi cho hệ thống Sử dụng hệ thống muJava, toán tử đột biến có loại mức phương thức loại mức lớp áp dụng Trong loại toán tử áp dụng này, có tổng số 351 mức phương thức 26 mức lớp đột biến sinh Khả dò tìm lỗi: sử dụng độ đo MS để đo chất lượng kiểm thử sinh hai phương pháp Các kích thước thay đổi 2, 10, 20 30 ca kiểm thử kịch Từ Bảng 4.1, Tác giả có số nhận xét: Các kịch kiểm thử sinh phương pháp đề xuất có độ đo MS cao hai mức so 16 Bảng 4.2: Kết MS phương pháp đề xuất phương pháp kiểm thử ngẫu nhiên ID Số lượng ca kiểm thử 10/20/30 15/25/35 Mức Phương thức Lớp Tổng số Phương thức Lớp Tổng số Phương thức Lớp Tổng số Tổng số đột biến 351 26 377 351 26 377 425 29 454 Phương pháp đề xuất Tổng số đột MS biến bị giết 261 74.3% 26 100% 287 76.2% 266 75.7% 26 100% 292 77.5% 336 79.1% 29 100% 365 80.3% Phương pháp ngẫu nhiên Tổng số đột MS biến bị giết 139 39.6% 23 88.4% 162 42.9% 153 43.5% 26 100% 179 47.4% 173 40.7% 28 96.5% 201 44.2% với phương pháp nhóm tác giả Sun; Các kiểm thử sinh ra hiệu tìm lỗi tốt: có khả tìm 40.5% lỗi mức độ phương thức có khả tìm 74.5% lỗi mức độ lớp 4.3.2 Thực nghiệm Thực nghiệm thứ hai áp dụng cho ba biểu đồ ba chức điển hình thể tính tương tranh lặp Sau đó, so sánh khả tìm lỗi kịch kiểm thử sinh phương pháp đề xuất phương pháp kiểm thử ngẫu nhiên Từ Bảng 4.2 tác giả có số nhận xét: với kích thước, kiểm thử sinh phương pháp đề xuất đạt độ đo MS cao so với phương pháp kiểm thử ngẫu nhiên; Không phụ thuộc vào số kiểm thử, kiểm thử phương pháp đề xuất đạt 100% mức độ lớp phương pháp ngẫu nhiên đạt 88.4%; Kết thực nghiệm rằng, kiểm thử sinh dò tìm đến 76% lỗi gieo với kích thước nhỏ kiểm thử (một ca kiểm thử kịch bản) 4.4 Kết luận Chương trình bày phương pháp đề xuất sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 biểu đồ lớp ứng dụng tương tranh bao phủ lặp Chìa khóa phương pháp đề xuất thuật toán chọn kịch kiểm thử khả thi trường hợp khai thác đan xen thông điệp toán tử song song yếu Phương pháp sinh kịch kiểm thử tránh bùng nổ ca kiểm thử việc lựa chọn điểm hốn đổi Do đó, lỗi tương tranh hệ thống tìm thấy Hơn nữa, phương pháp cải tiến việc sinh liệu kiểm thử trường hợp bao phủ vòng lặp Phương pháp hỗ trợ tiêu chuẩn bao phủ khác kiểm thử tính tương tranh ứng dụng hiệu Thực nghiệm khả tìm lỗi kịch kiểm thử tốt so với phương pháp kiểm thử khác, chứng tỏ tính hiệu độ tin cậy phương pháp đưa mặt thực nghiệm Các đóng góp chương cơng bố Kỷ yếu Hội thảo quốc tế SoICT 2015 Tạp chí Khoa học Đại học Quốc Gia Hà Nội (VNU Journal of Science 2016) 17 Chương Sinh liệu kiểm thử cho kiểu liệu chuỗi 5.1 Giới thiệu Phương pháp sinh liệu kiểm thử từ biểu đồ UML tập trung giải ràng buộc mà loại biến có kiểu liệu số Tuy nhiên, có nhiều ứng dụng bị lỗi trình xử lý chuỗi Vì vậy, nghiên cứu phát triển phương pháp sinh liệu kiểm thử từ biểu đồ UML với giải ràng buộc chuỗi cần thiết, áp dụng ứng dụng web có nhiều biến liệu chuỗi sử dụng Chương luận án cải tiến phương pháp để sinh kịch kiểm thử tự động từ biểu đồ UML 2.0 biểu đồ lớp với ràng buộc chuỗi Thuật toán sinh kịch kiểm thử để tránh bùng nổ đường dẫn kiểm thử trường hợp khơng có điểm chia sẻ liệu luồng song song Việc giải với ràng buộc chuỗi sử dụng cải tiến giải Z3–str Điểm trình sinh liệu kiểm thử đưa quy tắc giảm phương pháp đệ quy cho toán tử search replaceAll; mở rộng quy tắc tiền xử lý cho toán tử khác charAt, lastindexOf, trim, startsWith endsWith 5.2 Phương pháp đề xuất 5.2.1 Tổng quan phương pháp đề xuất Từ vấn đề tồn nêu trên, tác giả đề xuất phương pháp sinh liệu kiểm thử với giải ràng buộc chuỗi từ biểu đồ biểu đồ lớp UML Phương pháp đề xuất bao gồm bước thực sau: ❼ Đầu tiên, chuyển đổi biểu đồ UML 2.0 ràng buộc biểu đồ lớp thành CFG (trong Chương 3) ❼ Tiếp theo, từ CFG sinh kịch kiểm thử trường hợp khơng có chia sẻ liệu luồng song song ❼ Sau đó, sinh liệu kiểm thử với ràng buộc chuỗi kịch kiểm thử 5.2.2 Sinh kịch kiểm thử Chương đưa phương pháp giải vấn đề để tránh bùng nổ đường dẫn kiểm thử việc chọn lựa điểm chia sẻ liệu luồng song song 18 hai toán tử song song yếu Tuy nhiên, có nhiều ứng dụng thực tế khơng có điểm chia sẻ liệu luồng song song Trong trường hợp đó, luận án phát triển Thuật toán (GenerateTestScenario) để duyệt CFG sử dụng thuật tốn tìm kiếm theo chiều sâu (DFS) tìm kiếm theo chiều rộng (BFS) Thuật toán BFS sử dụng nút F N Việc sử dụng BFS với mục đích tránh việc duyệt tìm điểm chia sẻ liệu luồng song song Hơn nữa, thuật toán BFS gặp F N tránh vấn đề khóa chết đồng luồng (vì sử dụng DFS mà duyệt luồng lại đợi luồng khác xử lý xảy trường hợp khóa chết) Phần lại thuật tốn việc duyệt CFG sử dụng DFS với thông điệp Như vậy, tránh lãng phí thời gian việc tìm điểm chia sẻ liệu tránh bùng nổ đường dẫn kiểm thử kịch kiểm thử Thuật toán (GenerateTestScenario) Sinh kịch kiểm thử từ CFG Input: Đồ thị dòng điều khiển G với nút khởi tạo in nút kết thúc f ni Output: T tập kịch kiểm thử, t đường dẫn kiểm thử 1: T = ∅; t = ∅; queue = ∅; 2: curN ode = in; // current node starts from in 3: repeat 4: t.append(curNode); 5: move to next node; 6: if (curN ode == DN && decision==TRUE) then 7: Append true part of BN up to MN in t 8: else 9: Append false part of BN up to MN in t; 10: end if 11: if (curN ode == F N ) then 12: active all nodes of threads; nodes = ready; 13: put a beginning node x of queue; x= waiting; 14: repeat 15: remove front node y of queue; y=processed; 16: t.append(y); 17: The neighbour(z) of y having ready status add to the end of queue; 18: z = waiting; 19: until (queue is empty) 20: end if 21: if (curN ode == f ni ) then 22: T = T ∪ {t}; 23: end if 24: until Graph end 5.2.3 Giải ràng buộc chuỗi Đầu vào đường dẫn kiểm thử hệ ràng buộc bao gồm ràng buộc chuỗi từ CFG Mục đích sinh tập liệu kiểm thử để thỏa mãn ràng buộc chuỗi kịch kiểm thử tương ứng Phương pháp cải tiến giải Z3–str, có hai ưu điểm sử dụng thuật tốn Z3–Str Thứ nhất, Z3–Str hỗ trợ kiểu liệu ngun thủy chuỗi khơng cần chuyển ràng buộc chuỗi sang biểu diễn khác chẳng hạn bit–vectơ Do đó, việc xử lý tránh phải xác định độ dài chuỗi trước giải ràng buộc Thứ hai, giải sử dụng sức mạnh Z3 để giải khả giải đồng thời ràng buộc chuỗi phi chuỗi cách hiệu Trong Z3–str sử dụng ba toán tử nguyên thủy: phương trình chuỗi, phép nối chuỗi độ dài chuỗi Phương pháp sử dụng thuật toán giảm để giảm toán tử chuỗi khác thành cơng thức tương đương dựa tốn tử ngun 19 thủy Z3 hình hóa trực tiếp quan hệ tương đương đối tượng biến, đặt chúng lớp tương đương Do đó, chiến lược tổng quan giảm tốn tử chuỗi khác để đơn giản hóa quan hệ tương đương Cải tiến quy tắc giảm: Trong ngữ pháp ràng buộc Z3–str ngồi tốn tử ngun thủy hỗ trợ tốn tử chuỗi sau: substring, contains, indexof, replace split Toán tử replace thay chuỗi tìm thấy chuỗi gốc, không thay tất lần xuất chuỗi Chương luận án đề xuất quy tắc xử lý cho toán tử replaceAll search, replaceAll định nghĩa dựa vào search đưa việc sử dụng hàm định nghĩa đệ quy Bảng 5.1 quy tắc giảm cho toán tử search replaceAll Bảng 5.1: Quy tắc giảm sử dụng gọi đệ quy Toán tử i = search(S, x) R = replaceAll(S, x, T ) Quy tắc giảm (i = −1 ∧ ¬(contain(S, x))) ∨ (i ≥ ∧ S = xs1 · xs2 · xs3 ∧ length(xs1 ) = i ∧ xs2 = x ∧ ¬(contain(xs1 , x))) i = search(S, x) ∧ ((i = −1 ∧ R = S) ∨ (i ≥ ∧ S = xs1 · xs2 · xs3 ∧ R = RT · RR ∧ xs2 = x ∧ length(xs1 ) = i ∧ RT = xs1 · T · xs3 ∧ RR = replaceAll(xs3 , x, T ))) search: tìm chuỗi x chuỗi S , khơng tìm thấy chuỗi x S giá trị số i trả −1 Ngược lại, tìm thấy chuỗi x chuỗi gốc S giá trị i trả vị trí chuỗi x xuất S Giả sử chuỗi gốc S phép nối ba chuỗi xs1 , xs2 xs3 Chuỗi xs1 khơng tìm thấy chuỗi x, chuỗi thứ hai phép nối xs2 chuỗi x độ dài xs1 i replaceAll: tìm chuỗi x chuỗi gốc S , tất vị trí tìm thấy x thay T chuỗi R Việc xử lý với replaceAll sử dụng dựa toán tử search phương pháp đệ quy Đầu tiên, tìm x chuỗi gốc S kết trả số i Nếu khơng có chuỗi x S chuỗi thay R S Trường hợp chuỗi gốc S có tìm thấy chuỗi x chuỗi S tách phép nối: S = xs1 · xs2 · xs3 chuỗi thay R gồm phép nối chuỗi RT RR Trong chuỗi xs1 chuỗi x, độ dài xs1 i xs2 = x chuỗi thay RT chuỗi xs2 thay T Việc thay đệ quy áp dụng cho chuỗi lại xs3 thay T x để chuỗi RR Bảng 5.2: Các quy tắc tiền xử lý cho toán tử chuỗi Toán tử c=x.charAt(i) i= x1 lastIndexOf (x2 ) x2 = x1 trim j= x.startsW ith(xt , i) i= x.endsW ith(xt ) Công thức đưa charAt(x, i) = c → x = x1 t.x2 ∧ t = c ∧ length(x1 ) = i lastIndexOf (x1 , x2 ) = i → (x1 = xs1 xs2 xs3 ) ∧ (i = −1 ∨ i ≥ 0) ∧ ((i = −1) ↔ (¬contains(x1 , x2 )) ∧ ((i ≥ 0) ↔ (i = length(xs1 ) ∧ xs2 = x2 ∧ (¬contains(xs3 , x2 ))) trim(x1 , x2 ) → (x1 = xs1 xs2 xs3 ) ∧ (xs2 = x2 ) ∧ ((xs1 =“ ”) ∨(xs3 =“ ”)) startsW ith(x, xt , i, j) → (x = x1 x2 x3 ) ∧ (j = ∨ j = 0) ∧ ((j = 1) ∧ x2 = xt ∧ length(x1 ) = i) ∧ ((j = 0) ∧ (¬contains(x, xt )) endsW ith(x, xt , i) → (x = x1 x2 x3 ) ∧ (i = ∨ i = 0) ∧ ((i = 1) ∧ x2 = xt ∧ ¬contains(x3 , xt )) ∧ ((i = 0) ∧ ¬contains(x, xt )) charAt: đưa hai tham số x i Toán tử trả kí tự c, định vị vị trí i rõ chuỗi x, việc đánh số x vị trí Trong chuỗi x tách thành ba phần: chuỗi x1 , kí tự t chuỗi x2 ; kí tự t kí tự trả c độ dài chuỗi x1 vị trí i tương ứng kí tự c x đưa 20 lastIndexOf : Nếu chuỗi x2 chuỗi chuỗi x1 tốn tử trả số kí tự chuỗi x2 xuất cuối Nếu chuỗi x2 không chuỗi chuỗi x1 tốn tử trả −1 Ngược lại, (i ≥ 0) x1 tách thành ba phần xs1 , xs2 xs3 chuỗi x1 gồm chuỗi x2 , x2 xs2 , i độ dài chuỗi xs1 chuỗi xs3 không bao gồm x2 trim: x2 = x1 trim hàm trả chuỗi x2 chuỗi x1 bỏ qua khoảng trắng phần đầu phần sau chuỗi x1 startsWith: toán tử kiểm tra liệu chuỗi xt chuỗi chuỗi x xt xác định vị trí i chuỗi x Nếu giá trị trả j = chuỗi xt chuỗi xuất x; ngược lại j = xt khơng chuỗi x endsWith: toán tử trả true (i = 1) chuỗi xt chuỗi sau chuỗi x, ngược lại trả false (i = 0) Công thức đưa biểu diễn x thành ba chuỗi: x1 , x2 x3 Giá trị biến i có hai lựa chọn: chuỗi x không bao gồm chuỗi xt i Ngược lại, giá trị j xt x2 chuỗi x3 khơng bao gồm chuỗi xt 5.3 Thực nghiệm Chúng xây dựng công cụ SeqString để cài đặt phương pháp đưa Tất thực nghiệm chạy Intel Core i3- 6100U CPU 2.30 GHz với RAM GB 5.3.1 Thực nghiệm Ba ứng dụng có chức với ràng buộc chuỗi toán tử liên quan Chúng tơi so sánh phần trăm tìm lỗi hệ thống sử dụng phương pháp đề xuất sử dụng phương pháp sinh liệu kiểm thử ngẫu nhiên Bảng 5.3: So sánh khả tìm lỗi chức ứng dụng Ứng dụng Miêu tả Đầu vào A Checking information of user registration Business ordering Insurance registration B C Lỗi tìm kiểm thử ngẫu nhiên (%) 3(strings) Lỗi tìm phương pháp đề xuất (%) 100 5(strings) 4(strings) 100 90 36.5 35.6 42.5 Giả sử lỗi đưa vào chức điểm biên liệu kiểm thử Trong chức kiểm tra thông tin người dùng đăng kí (A) có ba biến chuỗi hai toán tử quan hệ; chức đặt đơn hàng (B) có năm biến chuỗi ba tốn tử quan hệ; chức đăng kí bảo hiểm (C) có bốn biến chuỗi khơng có tốn tử quan hệ Từ Bảng 5.3, với ứng dụng C phần trăm tìm lỗi đạt 90% khơng có tốn tử quan hệ nên khơng có biểu thức vùng biên liệu, liệu kiểm thử khơng đạt độ bao phủ biên Như vậy, khả tìm lỗi kịch kiểm thử theo phương pháp đề xuất tốt theo phương pháp kiểm thử ngẫu nhiên 5.3.2 Thực nghiệm Chúng sử dụng liệu thực nghiệm nhóm tác giả Shoichiro, bổ sung ràng buộc bao gồm toán tử chuỗi tiền xử lý Thực nghiệm với biểu đồ 21 UML ràng buộc giống nhau, sau so sánh việc sinh liệu kiểm thử thời gian thực phương pháp đưa phương pháp nhóm tác giả Shoichiro Vì vậy, giả sử tiến hành thực nghiệm cho ràng buộc chuỗi biểu đồ biểu đồ lớp Sau đó, tiến hành thực thi 30 lần trường hợp lấy trung bình thời gian thực thi công cụ đưa so sánh với phương pháp Shoichiro Bảng 5.4 cho thấy năm trường hợp mà phương pháp giải phần khơng xác để có giá trị liệu kiểm thử Phân tích thời gian giải ràng buộc chuỗi sử dụng quy tắc tiền xử lý cho tốn tử (charAt, lastindexOf, trim, startsWith endsWith) cơng cụ đưa SeqString có thời gian xử lý nhanh kịch kiểm thử ứng dụng Như vậy, phương pháp cải tiến giải tốt với nhiều toán tử chuỗi hầu hết trường hợp so với phương pháp Shoichiro; Phương pháp sinh kịch kiểm thử có độ bao phủ tốt tìm nhiều lỗi so với số phương pháp Bảng 5.4: So sánh xử lý toán tử chuỗi hiệu SeqString với phương pháp nhóm tác giả Shoichiro Toán tử concat indexOf charAt match replace substringcharAt split startsWith lastIndexOf charAtreplace replaceAll 5.4 Đầu vào 12 12 13 15 10 Giải tốn tử xác? Shoichiro SeqString x x Thời gian(s) Shoichiro SeqString 0.117 0.035 0.292 0.055 0.142 0.041 0.108 0.036 0.152 0.045 0.196 0.045 x 0.245 0.061 12 10 x 0.205 0.172 0.427 0.038 11 x - 0.055 Kết luận Chương luận án trình bày phương pháp cải tiến việc sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 biểu đồ lớp với giải ràng buộc chuỗi Thuật toán đưa sinh kịch kiểm thử để tránh bùng nổ đường dẫn kiểm thử trường hợp khơng có điểm chia sẻ liệu luồng song song ứng dụng Với kịch kiểm thử sinh tập ràng buộc chuỗi biểu thức vùng biên biến chuyển đổi thành định dạng đầu vào giải Z3–str So sánh với tiếp cận Z3–str, phương pháp đề xuất quy tắc giảm phương pháp đệ quy cho toán tử search, replaceAll mở rộng quy tắc tiền xử lý cho toán tử charAt, lastindexOf, trim, startsWith endsWith Các kết thực nghiệm phương pháp mà luận án cải tiến giải nhiều tốn tử chuỗi xác so với số phương pháp Hơn nữa, kịch kiểm thử sinh thỏa mãn độ bao phủ biên nên đa số lỗi điểm biên liệu tìm thấy ứng dụng Các đóng góp chương công bố Hội nghị quốc tế Hệ thống thông tin Cơ sở liệu thông minh (ACIIDS 2017) 22 Chương Kết luận 6.1 Các kết đạt Trong trình phát triển phần mềm, việc áp dụng kiểm thử dựa hình có ý nghĩa quan trọng, giúp giảm giá thành phát triển, tiết kiệm thời gian, nâng cao chất lượng tăng độ tin cậy phần mềm Vì vậy, luận án nghiên cứu số giải pháp hỗ trợ sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 Luận án đạt kết sau: Thứ nhất, luận án đề xuất quy trình sinh liệu kiểm thử từ biểu đồ UML 2.0 biểu đồ lớp Biểu đồ UML 2.0 áp dụng cho tất mười hai tốn tử, có cấu trúc phức tạp khối lồng ghép Trong trình sinh thực thi kịch liệu kiểm thử tự động áp dụng cho biến số cấu trúc động ràng buộc Chúng chuyển thủ cơng thành đoạn mã kiểm thử thực tự động dựa công cụ kiểm thử Các kết thực nghiệm phương pháp đề xuất sinh kịch kiểm thử có độ bao phủ khả tìm lỗi tốt so với phương pháp Thứ hai, luận án đề xuất phương pháp sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 biểu đồ lớp trường hợp vòng lặp ứng dụng tương tranh Phương pháp sinh kịch kiểm thử tránh bùng nổ kịch kiểm thử lỗi tương tranh hệ thống tìm thấy Hơn nữa, điểm phương pháp sinh liệu kiểm thử bao phủ vòng lặp Phương pháp hỗ trợ tiêu chuẩn bao phủ tương tranh khác kiểm thử lỗi liên quan đến khóa chết đồng Thực nghiệm mà chứng minh khả tìm lỗi kịch kiểm thử tốt so với số phương pháp khác, chứng tỏ tính hiệu độ tin cậy phương pháp đưa mặt thực nghiệm Thứ ba, luận án đưa phương pháp cải tiến việc sinh liệu kiểm thử tự động từ biểu đồ UML 2.0 biểu đồ lớp với ràng buộc chuỗi Thuật toán đưa sinh kịch kiểm thử để tránh bùng nổ đường dẫn kiểm thử trường hợp khơng có điểm chia sẻ liệu luồng song song ứng dụng Với kịch kiểm thử sinh tập ràng buộc chuỗi biểu thức vùng biên biến chuyển đổi thành định dạng đầu vào giải Z3–str So sánh với tiếp cận Z3–str, luận án đề xuất quy tắc giảm, phương pháp đệ quy cho toán tử search, replaceAll mở rộng quy tắc tiền xử lý cho toán tử charAt, lastindexOf, trim, startsWith endsWith Các kết thực nghiệm 23 phương pháp mà luận án cải tiến giải nhiều tốn tử chuỗi xác hiệu tốt nhiều trường hợp so với số phương pháp Hơn nữa, kịch kiểm thử sinh thỏa mãn độ bao phủ biên nên đa số lỗi điểm biên liệu tìm thấy ứng dụng Như vậy, đóng góp mà luận án đề xuất giải số vấn đề giai đoạn thiết kế kiểm thử từ biểu đồ UML 2.0, góp phần giải tốn lớn kiểm thử dựa hình Kết luận án có khả phát triển ứng dụng thực tiễn, nhằm giải số vấn đề chất lượng kiểm soát chất lượng phần mềm quan tâm 6.2 Hướng nghiên cứu Trong trình nghiên cứu thực nghiệm, tác giả nhận thấy số hạn chế hướng phát triển luận án Về thực nghiệm đưa chương nói chung đơn giản, chưa thể phức tạp thiết kế thực tế Đối với phương pháp đề xuất hạn chế hướng nghiên cứu tiếp theo, cụ thể sau: Chương chưa chứng minh tính đắn phương pháp sinh CFG mặt lý thuyết mà dựa sở thực nghiệm với số hệ thống điển hình Trong nghiên cứu tiếp theo, tác giả tiến hành chứng minh mặt lý thuyết tính đắn phương pháp Đồng thời, tiếp tục phát triển sinh kịch kiểm thử từ loại biểu đồ UML khác kết hợp loại biểu đồ khác để kịch kiểm thử có độ bao phủ tốt Thuật tốn sinh liệu kiểm thử hàm tìm kiếm cục bộ, chưa phải tìm kiếm tồn cục Chương tiếp tục nghiên cứu việc xác định kịch kiểm thử khả thi không khả thi mà không cần liệu kiểm thử đầu vào toán chưa giải Trong việc đánh giá tính hiệu khả dò tìm lỗi kịch kiểm thử, tác giả sử dụng độ đo đột biến, loại độ bao phủ khác biểu đồ Hướng nghiên cứu tiếp phát triển sâu vào độ đo đặc điểm loại độ đo khác phù hợp với ứng dụng kịch kiểm thử sinh Chương đưa thuật tốn sinh kịch kiểm thử khó kiểm soát theo tiêu chuẩn bao phủ tương tranh khác Hơn nữa, việc chuyển đổi tập ràng buộc chuỗi đường dẫn kiểm thử vào giải Z3–Str thực thủ công Tác giả nghiên cứu để áp dụng chuyển đổi ràng buộc chuỗi thực tự động Hướng nghiên cứu việc chuẩn hóa kịch kiểm thử sinh để thực tự động hóa hệ thống thực quan tâm 24 DANH MỤC CÁC CƠNG TRÌNH KHOA HỌC CỦA TÁC GIẢ LIÊN QUAN ĐẾN LUẬN ÁN [1] Vũ Thị Đào, Tô Văn Khánh Nguyễn Việt Hà (2014), “Phương pháp sinh ca kiểm thử tự động từ hình thiết kế UML ngôn ngữ ràng buộc đối tương OCL”, Chuyên san Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT, ISSN: 1859-3526, Tập V-1, số 11(31), pp 70-82 [2] Thi Dao Vu, Pham Ngoc Hung, Viet Ha Nguyen (2015), “A Method for Automated Test Data Generation from Sequence Diagrams and Object Constraint Language”, In Proc Of the Sixth International Symposium Information and Communication Technology (SoICT 2015), pp 335–441 ACM International Publishing [3] Thi Dao Vu, Pham Ngoc Hung, Viet Ha Nguyen (2016), “Automated Testing for Java Programs with Test Cases Generation from Sequence Diagrams and Object Constraint Language” (poster), The 14th Asian Symposium on Programming Languages and Systems - APLAS 2016 Springer International Publishing [4] Thi Dao Vu, Pham Ngoc Hung, Viet Ha Nguyen (2016), “ A Method for Automated Test Cases Generation from Sequence Diagrams and Object Constraint Language for Concurrent Programs”, VNU Journal of Science: Computer Science and Communication Engineering, ISSN: 0866-8612, Vol 32, No.3(2016), pp 54–71 [5] Thi Dao Vu, Pham Ngoc Hung, Viet Ha Nguyen (2017), “A Method for Automated Test Cases Generation from UML Models with String Constraints”, In Proc Of the 9th Asian Conference on Intelligent Information and Database Systems (ACIIDS 2017), pp 525–536 Springer International Publishing ... cө thӵc thi kiӇm thӱ) (Bӝ sinh mã kiӇm thӱ) Hình 2.1: Quá trình kiểm thử dựa mơ hình 2.3 Tổng quan sinh liệu kiểm thử tự động Sự cần thiết việc sinh liệu kiểm thử tự động xuất phát từ hai mục... tự động Chương Sinh liệu kiểm thử cho kiểu liệu số cấu trúc động 3.1 Giới thiệu Trong hướng tiếp cận sinh liệu kiểm thử tự động từ biểu đồ UML, toán đặt làm sinh tự động liệu kiểm thử từ biểu đồ... lượng phần mềm 2.2 Kiểm thử dựa mơ hình Kiểm thử dựa mơ hình phương pháp kiểm thử mà ca kiểm thử sinh từ mơ hình, đặc tả hành vi hệ thống kiểm thử (System Under Testing – SUT) Mơ hình biểu diễn máy

Ngày đăng: 14/03/2019, 14:59

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan