Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
3,07 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Chu Thị Minh Huệ KIỂMTHỬDỰATRÊNMÔHÌNHVỚICÁCHTIẾPCẬNMƠHÌNH HĨA CHUN BIỆTMIỀN TĨM TẮT LUẬN ÁN TIẾN SỸ CƠNG NGHỆ THƠNG TIN Hà Nội - 2018 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Chu Thị Minh Huệ KIỂMTHỬDỰATRÊNMƠHÌNHVỚICÁCHTIẾPCẬNMƠHÌNH HĨA CHUN BIỆTMIỀN Chun ngành: Kỹ thuật Phần mềm Mã số: 9480103.01 TÓM TẮT LUẬN ÁN TIẾN SỸ CÔNG NGHỆ THÔNG TIN NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS Nguyễn Ngọc Bình TS Đặng Đức Hạnh Hà Nội - 2018 Mục lục Giới thiệu 1.1 Đặt vấn đề 1.2 Mục tiêu nghiên cứu đóng góp luận án 1.3 Bố cục luận án 1 2 Kiến thức sở 2.1 Kiểmthửdựa ca sử dụng 2.2 Mơhìnhhóa chun biệtmiền 2.3 Chuyển đổi mơhình 2.4 Ngôn ngữ ràng buộc đối tượng OCL 3 4 Đặc 3.1 3.2 3.3 3.4 3.5 3.6 tả ca sử dụng theo hướng mơhìnhhóa chun biệtmiền Giới thiệu Xác định miền cho ngữ cảnh đặc tả ca sử dụng Cú pháp USL 3.3.1 Cú pháp trừu tượng USL 3.3.2 Các luật hợp lệ siêu mơhình USL 3.3.3 Cú pháp cụ thể USL Ngữ nghĩa hình thức mơhình USL Chuyển đổi mơhình USL Kết chương 12 12 Phương pháp sinh tự động ca kiểmthử từ môhình ca sử dụng 4.1 Giới thiệu 4.2 Tổng quan kỹ thuật đề xuất 4.3 Ngôn ngữ đặc tả ca kiểmthử TCSL 4.3.1 Xác định miền cho ngữ cảnh đặc tả ca kiểmthử chức 4.3.2 Định nghĩa siêu mơhình TCSL 4.4 Chuyển đổi mơhình từ USL sang TCSL 4.4.1 Xác định tiêu chí phủ 4.4.2 Sinh kịch ca sử dụng ràng buộc 4.4.3 Sinh liệu đầu vào kiểmthử 4.4.4 Sinh mơhình TCSL 4.5 Tổng kết chương THỰC NGHIỆM VÀ ĐÁNH GIÁ 5.1 Giới thiệu 5.2 Công cụ hỗ trợ USL 5.3 Đánh giá 5.3.1 Đánh giá ngôn ngữ USL 5.3.2 Đánh giá phương pháp sinh i ca kiểmthử USLTG 13 13 13 13 13 14 15 15 15 16 16 18 20 20 20 20 20 21 5.4 Kết chương 22 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 23 6.1 Các đóng góp luận án 23 6.2 Hướng phát triển 23 Danh mục cơng trình khoa học 25 ii Chương Giới thiệu 1.1 Đặt vấn đề Trong quy trình phát triển phần mềm, yêu cầu chức (functional software requirements) phần mềm đầu vào để xây dựng ca kiểmthử chức năng, mơhình cấu trúc (biểu đồ lớp), mơhình hành vi (biểu đồ tuần tự, biểu đồ hoạt động) cho hệ thống, v.v Trong thực tế, yêu cầu phần mềm thường hay thay đổi suốt quy trình phát triển phần mềm Khi yêu cầu phần mềm thay đổi, mơhình ca kiểmthử liên quan phải xây dựng thực thi lại (kiểm thử hồi quy) Vì vậy, nỗ lực yêu cầu để xác định, bảo trì, thực thi ca kiểmthử yêu cầu thay đổi lớn Đối với hoạt động kiểmthử phần mềm, giải pháp sinh thực thi ca kiểmthửcách tự động giúp tiết kiệm nhiều thời gian nỗ lực giảm số lượng lỗi sai sót hoạt động kiểmthử phần mềm Do đó, có nhiều nghiên cứu đề xuất giải pháp tăng tính tự động phát triển phần mềm hoạt động kiểmthử phần mềm Các cơng trình nghiên cứu sinh tự động ca kiểmthử chức từ ca sử dụng đa dạng, phức tạp vớivới nhiều cáchtiếpcận khác Trong khuôn khổ nghiên cứu, luận án nghiên cứu phương pháp kiểmthửkiểmthửdựamơhìnhvớicáchtiếpcậnmơhìnhhóa chun biệtmiền để giải toán sinh tự động ca kiểmthử chức từ ca sử dụng Trong luận án tập trung vào hai pha phương pháp kiểmthửdựamơhìnhmơhìnhhóa sinh tự động ca kiểm thử, cụ thể sau: (i) Đặc tả mơhình ca sử dụng đủ xác để sinh tự động chế tác phần mềm khác có sinh ca kiểmthử (ii) Bài toán sinh tự động ca kiểmthử từ ca sử dụng Vì vây, mục tiêu luận án hướng đến tập trung đề xuất hai ngôn ngữ đặc tả chuyênbiệtmiền cho miền đặc tả ca sử dụng miền đặc tả ca kiểmthử phương pháp chuyển tự động từ môhình ca sử dụng vào mơhình ca kiểmthử chức ngơn ngữ mơhìnhhóa chun biệtmiền đề xuất Bài tốn có đầu vào biểu đồ ca sử dụng UML, mô tả ca sử dụng ngôn ngữ tự nhiên, mơhình lớp đặc tả khái niệm miền hệ thống Đối tượng nghiên cứu luận án kỹ thuật kiểmthửdựamơ hình, kỹ thuật xây dựng ngơn ngữ mơhìnhhóa chun biệt miền, phương pháp sinh tự động ca kiểmthử chức từ ca sử dụng Cụ thể, luận án quan tâm đến biểu đồ ca sử dụng, mô tả ca sử dụng, mơhình lớp đặc tả khái niệm miền hệ thống, mô tả ca kiểmthử chức Các mơhình lớp mơhình ca sử dụng xem xét mức đặc tả yêu cầu phần mềm ca kiểmthử chức xem xét xác định từ yêu cầu chức phần mềm tài liệu đặc tả yêu cầu phần mềm 1.2 Mục tiêu nghiên cứu đóng góp luận án Mục tiêu luận án đặt ca sử dụng vào ngữ cảnh quy trình kiểmthửdựamơhình Điều cho phép tự động hóa hoạt động kiểmthử chức mà đầu vào yêu cầu chức phần mềm Thứ nhất, luận án đề xuất phương pháp đặc tả ca sử dụng vớicáchtiếpcậnmơhìnhhóa chun biệtmiềnThứ hai, luận án đề xuất phương pháp đặc tả ca kiểmthửThứ ba, luận án đề xuất phương pháp chuyển tự động từ môhình ca sử dụng USL sang mơhình đặc tả ca kiểmthử TCSL Cuối cùng, luận án xây dựng công cụ hỗ trợ USL Công cụ cho phép tích hợp ca sử dụng vào phương pháp phát triển hướng mơhình Để minh chứng khả ứng dụng USL vào thực tế, luận án trình bày kết áp dụng USL cho số ca sử dụng Ngoài ra, luận án đưa đánh giá, so sánh phương pháp đặc tả ca sử dụng phương pháp sinh ca kiểmthửvới nghiên cứu khác liên quan Các kết nghiên cứu luận án nhằm xây dựng phương pháp hoàn chỉnh để sinh tự động ca kiểmthử chức từ ca sử dụng phương pháp kiểmthửdựamôhìnhvớicáchtiếpcậnmơhìnhhóa chun biệtmiền Từ nghiên cứu hướng đến phương pháp hồn chỉnh cho phép tích hợp ca sử dụng vào phương pháp phát triển hướng mơhình 1.3 Bố cục luận án Luận án bao gồm sáu chương Trong đó, Chương trình bày kiến thức sử dụng luận án Chương trình bày cách tóm tắt kiến thức sở sử dụng chương Chương đề xuất ngôn ngữ đặc tả chuyênbiệtmiền cho miền đặc tả ca sử dụng tên USL Chương trình bày phương pháp sinh tự động ca kiểmthử chức từ ca sử dụng Công cụ hỗ trợ USL trình bày Chương Cuối cùng, Chương kết luận đưa hướng nghiên cứu luận án Chương Kiến thức sở 2.1 Kiểmthửdựa ca sử dụng Kiểmthử (Testing) quy trình thực chương trình với ý định tìm kiếm lỗi Kiểmthử phần mềm bao gồm việc kiểm chứng động hành vi chương trình tập hữu hạn ca kiểmthử (test case) Các ca kiểmthử lựa chọn phù hợp từ miền thực thi thường vơ hạn để có hành vi mong đợi Ca kiểmthử (Test case) tập liệu kiểmthử (test data), điều kiện thực (pre-condition), bước kiểmthử (test steps), kết đầu mong đợi (expected output) phát triển cho kịch kiểmthử (test scenario) cụ thể để kiểm chứng tuân thủ yêu cầu xác định Một ca kiểmthử định nghĩa thử nghiệm đơn lẻ thực để đạt mục tiêu kiểmthử phần mềm cụ thể, chẳng hạn qua đường thực thi chương trình cụ thể kiểm chứng tuân thủ yêu cầu cụ thể Dữ liệu kiểmthử (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ểmthử trình kiểmthử Kịch kiểmthử (Test scenario) ca kiểmthử trừu tượng thường bao gồm nhiều ca kiểmthử liên quan Mục đích kịch kiểmthử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 Với kịch kiểm thử, kiểmthử viên xác định nhiều liệu kiểmthử thỏa mãn kịch kiểmthử Một ca kiểmthử kết hợp kịch kiểmthửvới liệu kiểmthử thỏa mãn kịch Kiểmthửdựamơhình (Model-Based Testing - MBT ) kỹ thuật kiểmthửvới mục đích để sinh ca kiểmthử tự động từ mơhình mà đặc tả khía cạnh liên quan hành vi hệ thống cầnkiểmthử (System Under Testing - SUT ) Tiêu chuẩn bao phủ (Test coverage criteria) tập quy tắc mà hướng dẫn định yếu tố thích hợp cần đề cập để phủ để tạo đầy đủ cho ca kiểmthử thiết kế 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ểmthử so với yêu cầu phần mềm, thông qua kiểmthử để loại trừ sai sót tăng chất lượng phần mềm Luận án trình bày tiêu chí phủ kiểmthử mà luận án áp dụng để sinh ca kiểmthử Chương Tiêu chí phủ đường hoạt động Kundu Samanta đề xuất tiêu chí phủ kiểmthử tên phủ đường hoạt động (activity path coverage) Tiêu chí mục đích để sử dụng cho kiểmthử vòng lặp kiểmthử đồng thời hành động đồ thị hoạt động Ca sử dụng (use case) Ca sử dụng sử dụng rộng rãi phương tiện để nắm bắt yêu cầu chức phần mềm Một ca sử dụng mô tả chức sử dụng cụ thể hệ thống tác nhân (actor) Mỗi ca sử dụng mô tả tương tác tác nhân với hệ thống để đạt nhiệm vụ cụ thể (hoặc cung cấp có giá trị cho người dùng) Các ca sử dụng chế tác trung tâm phát triển phần mềm Chúng sử dụng đầu vào để xây dựng chế tác khác phần mềm, mơhình hành vi, mơhình cấu trúc, ca kiểmthử hệ thống Mơhình ca sử dụng (use case model) Một mơhình ca sử dụng UML thường thể biểu đồ ca sử dụng liên kết lỏng lẻo vớimô tả ca sử dụng ngơn ngữ tự nhiên trình bày mẫu có cấu trúc Trong biểu đồ ca sử dụng cung cấp tổng quan ca sử dụng, người dùng hệ thống mối quan hệ ca sử dụng người dùng Các mô tả ca sử dụng mô tả chuỗi tương tác môi trường hệ thống Mô tả ca sử dụng ngôn ngữ tự nhiên cho phép người dùng bên tham gia phát triển phần mềm dễ dàng hiểu được u cầu hệ thống 2.2 Mơhìnhhóa chun biệtmiền Ngôn ngữ chuyênbiệtmiền (Domain-Specific Language - DSL) ngơn ngữ chương trình ngơn ngữ đặc tả thực thi, cách tích hợp khái niệm trừu tượng tri thức miền vào ngôn ngữ dạng ký hiệu có tính biểu cảm cao DSL tăng mức độ trừu tượng cách sử dụng khái niệm quen thuộc vớichuyên gia miền thường giới hạn miền vấn đề cụ thể Ngơn ngữ mơhìnhhóachuyênbiệtmiền (Domain-Specific Modeling Language DSML) ngôn ngữ chuyênbiệtmiền cụ thể DSML sử dụng để xây dựng mơhình đồ họa cho hệ thống phần mềm Mơhìnhhóa chun biệtmiền (Domain-Specific Modelling - DSM) sử dụng DSML để tạo mơ hình, sinh mã từ mơhìnhvới sinh mã Phát triển hướng mơhình (Model-Driven Development - MDD) mơhình phát triển mà sử dụng mơ chế tác quy trình phát triển phần mềm Thông thường, MDD triển khai sinh tự động bán tự động từ mơhình 2.3 Chuyển đổi mơhình Một phép chuyển đổi mơhình chương trình để tạo tự động mơhình văn đầu từ mơhình đầu vào Chuyển đổi mơhình có ba dạng: Chuyểnmơhình sang mơhình (Model to Model - M2M), mơhình sang văn (Model to Text M2T), văn sang mơhình (Text to Model - T2M) 2.4 Ngôn ngữ ràng buộc đối tượng OCL Ngôn ngữ ràng buộc đối tượng OCL (Object Constraint Language) đời nhằm mục đích khắc phục hạn chế UML việc biểu diễn xác khía cạnh chi tiết thiết kế hệ thống OCL phát triển lần đầu vào năm 1995 IBM tích hợp vào UML năm 1997 Đầu tiên, OCL sử dụng ngôn ngữ ràng buộc cho UML, nhiên phạm vi mở rộng nhanh chóng OCL trở thành thành phần quan trọng kỹ nghệ hướng mơhình MDE (Model-Driven Engineering) OCL sử dụng ngơn ngữ mặc định cho trình diễn tất truy vấn mơhình siêu mơ hình, thực đặc tả yêu cầu OCL thường sử dụng để trình diễn chuyểnmơhình (như phần mơhình nguồn mơhình đích luật chuyểnmơ hình), luật hợp lệ (như phần định nghĩa ngôn ngữ chuyênbiệtmiền mới), mẫu sinh mã nguồn (như cách để mô tả mẫu luật sinh) Chương Đặc tả ca sử dụng theo hướng mơhìnhhóa chun biệtmiền 3.1 Giới thiệu Ca sử dụng chế tác phần mềm mà sử dụng chủ yếu để nắm bắt cấu trúc yêu cầu chức phần mềm Mơhình ca sử dụng đặc tả chủ yếu biểu đồ ca sử dụng mô tả dạng văn cấu trúc lỏng lẻo Lợi ích đặc tả ca sử dụng ngôn ngữ tự nhiên dễ dàng cho bên liên quan khơng có kỹ thuật hiểu Tuy nhiên, mơhình ca sử dụng trình bày dạng thường chứa phần thơng tin mập mờ khơng xác Điều ngăn cảnmơhình ca sử dụng sử dụng trực tiếpcáchtiếpcận hướng mô hình, nguồn chuyển để cung cấp mơhình cấu trúc, mơhình hành vi, ca kiểmthử Trong chương này, luận án tập trung nghiên cứu xây dựng ngơn ngữ mơhìnhhóachuyênbiệt cho miền đặc tả thông tin mô tả ca sử dụng Luận án khắc phục hạn chế nêu nghiên cứu khác Cú pháp trừu tượng USL định nghĩa cáchmở rộng siêu mơhình biểu đồ ca sử dụng biểu đồ hoạt động UML 3.2 Xác định miền cho ngữ cảnh đặc tả ca sử dụng Bảng 3.1 mô tả ca sử dụng Lend book, mô tả có định dạng theo cấu trúc mẫu mơ tả ca sử dụng thông thường Một mẫu mô tả ca sử dụng thường gồm hai phần: phần tử thông tin tổng quan mô tả chi tiết luồng Phần thông tin tổng quan bao gồm: tên ca sử dụng (use case name), mơ tả tóm lược (brief description) mơ tả tóm lược ca sử dụng, tác nhân (actors) mô tả tác nhân thực ca sử dụng, tiền điều kiện (pre-condition) hậu điều kiện (postcondition) mô tả tiền hậu điều kiện ca sử dụng, kích hoạt (trigger) mơ tả kiện kích hoạt ca sử dụng, yêu cầu đặc biệt (special requirement) mô tả yêu cầu phi chức ca sử dụng Phần thứ hai ca sử dụng thơng tin mơ tả hai loại luồng: luồng (basic flow) luồng thay (alternative flows) Nội dung luồng mơ tả bước thực ca sử dụng điều kiện thông thường ca sử dụng thực Một ca sử dụng có luồng Các luồng thay mơ tả hành vi tùy chọn ngoại lệ hành vi thơng thường khác Luồng luồng thay thường cấu trúc bước (steps) luồng (subflows) Tuy nhiên, làm mịn luồng để chứa luồng số luồng thay Mỗi bước ca sử dụng mô tả nhiều hành động thực hệ thống tác nhân Mỗi bước luồng chứa hành động thực hệ thống tác nhân Các hành động mô tả bước chia thành chín loại hành động sau: Actor-Input hành động tác nhân để gửi liệu tới hệ thống miền công việc đặc tả ca sử dụng Bảng 3.1: Mô tả ca sử dụng Lend book Use case name: Lend Book Brief description: The Librarian processes a book loan Actors: Librarian Precondition: The librarian has logged into the system successful Postcondition: If the use case successfully ends, the book loan is saved and a complete message is shown In the other case, the system displays an error message Trigger: The Librarian requests a book-loan process Special requirement: There is no special requirement Basic flow The Librarian selects the Lend Book function The system shows the Lend-book window, gets the current date and assigns it to the book-loan date The Librarian enters a book copy id The system checks the book copy id If it is invalid, it goes to step 4a.1 The Librarian enters a borrower id The system validates the borrower id If it is invalid, it goes to step 6a.1 The Librarian clicks the save-book-loan button The system validates the conditions to lend book If it is invalid, the system goes to step 8a.1 The system saves the book loan record, then executing two steps 10 and 11 concurrently 10 The system shows a complete message 11 The system prints the borrowing bill Alternate flows E1 request searched book The Librarian selects the search function after step 4a.1 The system executes the extending use case Search book 4a The book copy id is invalid The system shows an error message, then going to step 6a The Borrower id is invalid The system shows an error message, then going to step 8a The lending condition is invalid The system shows an error message The system ends the use case Actor-Request hành động tác nhân gửi yêu cầu tới hệ thống System-Display hành động hệ thống mà hệ thống thực hoạt động với giao diện người dùng System-Operation hành động hệ thống để thẩm định yêu cầu liệu, xử lý tính tốn liệu System-State hành động hệ thống để truy vấn cập nhật trạng thái bên hệ thống System-Output hành động hệ thống để gửi đầu cho tác nhân System-Request hành động hệ thống để gửi yêu cầu tới tác nhân phụ (secondary actor) System-Include hành động hệ thống để gọi ca sử dụng khác có quan hệ «include» với ca sử dụng System-Extend hành động hệ thống để gọi ca sử dụng khác có quan hệ «extend» với ca sử dụng 3.3 3.3.1 Cú pháp USL Cú pháp trừu tượng USL Hình 3.1 thể siêu mơhình USL Để ngắn gọn, luận án chia siêu mơhình vào bốn khối (a), (b), (c), (d) đánh nhãn số thứ tự khái niệm để chia khối Hình 3.1-a có nghĩa khối (a)) trình bày khái niệm mức Hình 3.1-b Khi đó: defGuard(a) định nghĩa sau: preC(D), if a ∈ NI guardE(e)(e ∈ D.E , target(e) = a), if a ∈ AcNode \ Nj (e∈D.E ,target(e)=a) isCompleted(e)∧guardE(e), if a ∈ Nj = preC(DI )∧preA(a)∧guardE(e)(e ∈ D.E , target(e) = a), if a ∈ Actsi preC(DX )∧preA(a)∧guardE(e)(e ∈ D.E , target(e) = a), if a ∈ Actse preA(a)∧guardE(e)(s ∈ Af , target(e) = s), if ((a ∈ Aact )∧ (a = firstAct(s)) preA(a)(s ∈ Af , a ∈ actions(s)), if otherwise Định nghĩa 3.3 (Các hàm LTS) Cho LTS L mơhình USL D, g|a|r trạng thái thời L α, chuyển t = α −→ α ∈ L.T Luận án định nghĩa thuật ngữ sau: - preT(t) = α, postT(t) = α , guard(t) = g, postC(t) = r , act(t) = a - eval(g) giá trị ràng buộc g - reachable(α) = {t | preT(t) = α} tập chuyển mà α Bảng 3.2: Danh sách hàm định nghĩa D Hàm firstAct(c) = c Điều kiện c ∈ AcNode lastAct(c) = c c ∈ AcNode source(e) = ns Mô tả Trả hành động chứa ControlNode Trả hành động cuối chứa ControlNode Trả USLNode nguồn FlowEdge Trả USLNode đích FlowEdge Trả điều kiện gác FlowEdge Trả điều kiện gác cạnh có nút nguồn nút đích truyền vào Trả tiền điều kiện hành động Trả hậu điều kiện hành động Trả tiền điều kiện ControlNode InitialNode Trả hậu điều kiện ControlNode FinalNode Trả hậu điều kiện ControlNode FinalNode Trả hậu điều kiện FinalNode Trả tiền điều kiện mơhình USL e ∈ E , ns ∈ A, nt ∈ A, g ∈ G, (ns , g, e, nt ) ∈ Fe target(e) = nt guardE(e) = g guardE(ns , nt ) = g a ∈ Actions(D), (pe , a, po ) ∈ Fc preA(a) = pe postA(a) = po preA(c) = True c ∈ (AcNode \ NI ) postA(c) = True c ∈ (AcNode \ Nf ) postA(c) = True c ∈ (AcNode \ Nf ) postC(c) = pu c ∈ Nf , (c, pu ) ∈ Ff preC(D) = cpreUC isCompleted(e) True = isCompleted(e) False = e ∈ E, lastAct(target(e)) hoàn thành thực thi e ∈ E, lastAct(target(e)) chưa hoàn thành thực thi 11 Trả trạng thái hoàn thành cạnh - firable(α) = {t ∈ reachable(α), eval(guard(t)) = true} tập chuyển mà kích hoạt (fired) từ α Định nghĩa 3.4 (Chuyển đồng thời) Cho LTS L mơhình USL D trạng thái α Một chuyển trạng thái đồng thời τ ∈ L.T tập chuyển t1 , t2 , , tn ∈ firable(α) Định nghĩa 3.5 (Thực thi kịch ca sử dụng) Cho kịch ca sử dụng mơhình USL D bao gồm chuỗi hành động (a0 , , an−1 ) Sự thực thi t t tn−1 kịch đường LTS L D: p = α0 → α1 → → αn , gi |ai |ri ti = αi −→ αi+1 (∀ i = 0, , n−1), α0 = L.αinit , αn ∈ L.F, ti ∈ L.T 3.5 Chuyển đổi mơhình USL USL xây dựng để đặc tả xác thành phần thơng tin mô tả hành vi cấu trúc ca sử dụng với mục đích tích hợp ca sử dụng vào phương pháp phát triển hướng mơhình Vì vậy, mơhình ca sử dụng USL sử dụng đầu vào cho chuyển đổi mơhình để chuyển sang mơhình cấu trúc biểu đồ lớp UML, mơhình hành vi biểu đồ hoạt động biểu đồ UML, ca kiểmthử chức mức hệ thống, tài liệu mô tả ca sử dụng ngôn ngữ tự nhiên theo mẫu Để minh họa cho khả sinh tự động sang mơhình tài liệu khác từ mơhình USL, luận án xây dựng chuyển USL2TUCD ngơn ngữ chuyểnmơhình M2T Acceleo để chuyển tự động mơhình USL sang mơ tả ca sử dụng dạng ngôn ngữ tự nhiên dựa theo mẫu (Template Use Case Description - TUCD) 3.6 Kết chương Trong chương này, luận án đề xuất ngôn ngữ mơhìnhhóa chun biệtmiền tên USL để đặc tả xác ca sử dụng mơhình Để đạt mục tiêu này, luận án nghiên cứu miền đặc tả ca sử dụng mục đích sử dụng quy trình phát triển phần mềm Kế tiếp, luận án phát triển cú pháp trừu tượng cú pháp cụ thể cho ngôn ngữ, định nghĩa tập luật hợp lệ cho ngơn ngữ Ngồi ra, ngữ nghĩa thực thi cho mơhình USL định nghĩa cách ánh xạ sang hệ thống chuyển trạng thái gán nhãn Tiếp theo, để đánh giá khả tích hợp ngơn ngữ USL vào phương pháp phát triển phần mềm hướng mơ hình, luận án thảo luận chuyểnmơhình áp dụng để sinh tự động chế tác phần mềm khác từ mơhình USL Cuối cùng, luận án đánh giá khả diễn tả ngôn ngữ USL với ngôn ngữ khác tồn Kết nghiên cứu công bố kỷ yếu Hội nghị quốc tế lần thứ Information and Communication Technology 2017 (SoICT) (cơng trình khoa học số (4)), tạp chí International Journal of Computing and Informatics 2018 (Informatica) (cơng trình khoa học số (2)), kỷ yếu hội nghị nước lần thứ Fundamental and Applied Information Technology Research (Fair) (cơng trình khoa học số (5)) 12 Chương Phương pháp sinh tự động ca kiểmthử từ mơhình ca sử dụng Trong chương này, luận án đề xuất phương pháp sinh tự động ca kiểmthử chức từ mơhình ca sử dụng, phương pháp có tên USLTG Đầu tiên, luận án đề xuất xây dựng ngôn ngữ đặc tả ca kiểm chức tên TCSL Sau đó, phương pháp USLTG đọc mơhình USL đặc tả ca sử dụng để sinh tự động ca kiểmthử đặc tả mơhình TCSL Cụ thể, luận án xây dựng ba thuật tốn để sinh kịch kiểm thử, liệu kiểm thử, chuyển ca kiểmthử vào môhình TCSL 4.1 Giới thiệu Trong kiểmthử chức năng, thiết kế ca kiểmthử thường thực thủ công, dựa vào tài liệu đặc tả yêu cầu phần mềm Tuy nhiên, yêu cầu phần mềm thường hay thay đổi suốt quy trình phát triển phần mềm Do đó, ca kiểmthử liên quan phải xây dựng lại thực thi lại Vì vậy, nỗ lực yêu cầu để xác định, bảo trì, thực thi ca kiểmthử cho ca sử dụng lớn Việc đề xuất phát triển kỹ thuật kiểmthử tự động trở nên cấp thiết Giải pháp sinh thực thi ca kiểmthử chức từ ca sử dụng tự động giúp tiết kiệm nhiều thời gian nỗ lực giảm số lượng lỗi sai sót hoạt động kiểmthử phần mềm Vì vậy, chương luận án tập trung vào nghiên cứu đề xuất ngôn ngữ đặc tả ca kiểmthử chức xây dựng quy trình để sinh tự động ca kiểmthử chức từ mơhình ca sử dụng 4.2 Tổng quan kỹ thuật đề xuất Hình 4.1 biểu diễn bước cáchtiếpcận USLTG luận án USLTG mục đích để sinh tự động ca kiểmthử từ ca sử dụng 4.3 4.3.1 Ngôn ngữ đặc tả ca kiểmthử TCSL Xác định miền cho ngữ cảnh đặc tả ca kiểmthử chức Theo Raghavendra để ca kiểmthử sinh tự động tập lệnh thực thi kiểmthử công cụ thực thi kiểmthử tự động, ca kiểmthử phải gồm bốn phần thông tin khác là: bước kiểmthử (step), đối tượng kiểmthử bước kiểmthử (test object), hành động bên đối tượng kiểmthử (test action), liệu kiểmthử (test data) 13 Hình 4.1: Tổng quan cáchtiếpcận USLTG Bảng 4.1: Hai ca kiểmthử ca sử dụng Lend book STT 4.3.2 Bước Librarian selects the Lend-book function Librarian enters a book copy id Librarian enters a borrower id Librarian enters a borrower id Librarian clicks the save-book-loan button The system save the book loan record the system shows a complete message the system prints the borrowing bill Đối tượng Hành động lendbookF select bcid bid bid enter enter enter SaveBLoan click BookLoan verify message verify bBill verify Dữ liệu Dữ liệu “bc 01” “” “b 02” “bc 03” “b 03” “b 02” a Book loan is recorded “Book loan save complete” “Book loan receipt is printed” Định nghĩa siêu mơhình TCSL Luận án đề xuất ngôn ngữ TCSL (Test Case Specification Language) để đặc tả ca kiểmthử chức mức Một môhình TCSL với mục đích để nắm bắt thơng tin ca kiểmthử hệ thống Một hệ thống bao gồm tập ca sử dụng Mỗi ca sử dụng bao gồm nhiều snapshot mà nắm bắt trạng thái bên hệ thống trước thực ca sử dụng tập ca kiểmthử mà tạo từ kịch kiểmthử kết hợp với liệu kiểmthử Cụ thể, liệu kiểmthử ca sử dụng xác định dựa vào trạng thái bên hệ thống Những trạng thái thể khái niệm miền hệ thống mà liên quan tới ca sử dụng Hình 4.2 hiển thị siêu mơhình ngơn ngữ TCSL mà định nghĩa dự án EMF Eclipse Luận án định nghĩa luật hợp lệ siêu mơhình TCSL để thẩm định mơhình TCSL chúng tạo Luật 1: Một TestScenario có hai Step Luật 2: Tất Step TestScenario có số DataCase 14 Hình 4.2: Siêu mơhình TCSL Luật 3: Nếu hành động mà thực hai TestStep hai CheckPoint khác kịch kiểmthử TestScenario, DataTupe DataCase hai Steps phải có thuộc tính Luật 4: Tất DataCase Step TestScenario sinh từ SnapShot 4.4 4.4.1 Chuyển đổi mơhình từ USL sang TCSL Xác định tiêu chí phủ USL định nghĩa khái niệm dựa cấu trúc biều đồ hoạt động để đặc tả luồng điều khiển qua bước mô tả luồng kiện ca sử dụng Vì vậy, Luận án sử dụng tiêu chí phủ đường hoạt động đề xuất Kundu cộng để sinh ca kiểmthử từ mơhình USL Cụ thể, đường USL đường từ nút bắt đầu InitialNode tới nút kết thúc FinalNode mơhình USL Đường tương ứng với đường hoạt động đồ thị hoạt động Định nghĩa 4.1 (Ca kiểmthử USL) Một kịch ca sử dụng mơhình USL D mà gồm chuỗi hành động (a1 , , an ) Với tập liệu đầu vào cụ thể thỏa mãn tập tiền điều kiện thực hành động kịch bản, thực thi kiểmthử ứng với đường hệ thống chuyển trạng thái gán nhãn t t gi |ai |ri t n LTS L D : p = α0 → α1 → → αn , Khi ti = αi−1 −→ αi (∀ i = 1, , n), α0 = L.αinit , αn ∈ L.F, ti ∈ L.T Kết ca kiểmthử "Pass" tập tất hậu điều kiện hành động thỏa mãn tất chuyển, ngược lại kết "Fail" Định nghĩa 4.2 (Tiêu chí phủ đường USL) Cho Pu tập đường USL ca sử dụng u từ mơhình USL, T tập ca kiểm thử, T gọi thỏa mãn tiêu chí phủ đường USL vào ∀ pi ∈ Pu , ∃ t ∈ T cho kịch tương ứng với t thực theo đường USL pi 4.4.2 Sinh kịch ca sử dụng ràng buộc USLTG mục đích để sinh kịch kiểmthử mà thỏa mãn tiêu chí đầy đủ phủ kiểmthử Đầu tiên, USLTG sinh tất đường USL theo tiêu chí phủ đường USL từ nút bắt đầu InitialNode tới nút kết thúc FinalNode mơhình USL Chú ý với đường sinh, điều kiện gác cạnh FlowEdge kết hợp với tiền điều kiện hành động chuyển thành tiền điều kiện 15 hành động Mỗi đường xem kịch ca sử dụng Sau đó, kịch ca sử dụng thăm lại để sinh kịch kiểmthử Thuật toán 4.1 GenScenarios 34 GenScenarios(D) Input: D is a USL model Output: paths is a set of constrained use case scenarios returning from D BEGIN pt ← ∅; sc ← ∅; x ← the InitialNode of D; GenerateScenarios(pt,sc,x); END Procedure GenerateScenarios (pt,sc,x) prex = the last node in pt; push(pt,x) if x is FinalNode then sc ← sc ∪ x; paths ← paths ∪ sc; exit end if x is DecisionNode then if ∀ e ∈ outGoing(x) was visited then bf ← the BasicFlowEdge in outGoing(x) if ∃ bf then GenerateScenarios(pt, sc, targetNode(bf)); else exit ; else foreach t in outGoing(x) that was not visited ptn ← copy objects from pt; scn ← copy objects from sc GenerateScenarios(ptn, scn, targetNode(e)) end end else if x is ForkNode then sc ← sc ∪ x; jn ← null; allsubSteps ← ∅; allsubpaths ← ∅ foreach t in outGoing(x) subSteps ← null; subPaths ← null; //subSteps, a set of USLNode sequences, //subpaths, a set of Action sequences and jn, a JoinNode VisitSubpath(allsubSteps, allsubPaths, subSteps, subPaths, targetNode(e), jn) end //maxLength(allsubSteps) returns the max size of subpaths in allsubSteps for i=0; i