Tài liệu Kiểm thử dựa trên mô hình với cách tiếp cận mô hình hóa chuyên biệt miền

  • Số trang: 161 |
  • Loại file: PDF |
  • Lượt xem: 131 |
  • Lượt tải: 0

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Chu Thị Minh Huệ KIỂM THỬ DỰA TRÊN MÔ HÌNH VỚI CÁCH TIẾP CẬN MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN LUẬN ÁN TIẾN SỸ CÔNG NGHỆ THÔNG TIN Hà Nội - 2019 LỜI CAM ĐOAN Tôi xin cam đoan luận án “Kiểm thử dựa trên mô hình với cách tiếp cận mô hình hóa chuyên biệt miền” là công trình nghiên cứu của riêng tôi. Các số liệu, kết quả được trình bày trong luận án là hoàn toàn trung thực và chưa từng được công bố trong bất kỳ một công trình nào khác.  Tôi đã trích dẫn đầy đủ các tài liệu tham khảo, công trình nghiên cứu liên quan ở trong nước và quốc tế. Ngoại trừ các tài liệu tham khảo này, luận án hoàn toàn là công việc của riêng tôi.  Trong các công trình khoa học được công bố trong luận án, tôi đã thể hiện rõ ràng và chính xác đóng góp của các đồng tác giả và những gì do tôi đã đóng góp.  Luận án được hoàn thành trong thời gian tôi làm Nghiên cứu sinh tại Bộ môn Công nghệ phần mềm, Khoa Công nghệ Thông tin, Trường Đại học Công nghệ, Đại học Quốc gia Hà Nội. Tác giả: Hà Nội: i LỜI CẢM ƠN Trước hết, tôi muốn bày tỏ sự biết ơn đến PGS. TS. Nguyễn Ngọc Bình và TS. Đặng Đức Hạnh, cán bộ hướng dẫn, các thầy đã trực tiếp giảng dạy và định hướng tôi trong suốt thời gian học cao học, thực hiện luận văn thạc sĩ cũng như luận án này. Một vinh dự lớn cho tôi được học tập, nghiên cứu dưới sự hướng dẫn của các Thầy. Tôi xin bày tỏ sự biết ơn sâu sắc đến các Thầy Cô trong Bộ môn Công nghệ phần mềm vì sự giúp đỡ của các Thầy Cô về các đóng góp rất hữu ích cho luận án. Tôi xin trân trọng cảm ơn Khoa Công nghệ thông tin, Phòng Đào tạo và Ban giám hiệu trường Đại học Công nghệ đã tạo điều kiện thuận lợi cho tôi trong suốt quá trình thực hiện luận án. Tôi cũng bày tỏ sự biết ơn đến Trường Đại học Sư phạm Kỹ thuật Hưng Yên đã tạo điều kiện về thời gian và tài chính cho tôi thực hiện luận án này. Tôi muốn cảm ơn đến Ban chủ nhiệm, các cán bộ, giảng viên Khoa Công nghệ thông tin - Trường Đại học Sư phạm Kỹ thuật Hưng Yên đã cổ vũ động viên và sát cánh bên tôi trong suốt quá trình nghiên cứu. Tôi muốn cảm ơn đến tất cả những người bạn của tôi, những người luôn chia sẻ, động viên tôi bất cứ khi nào tôi cần và tôi luôn ghi nhớ điều đó. Cuối cùng, tôi xin bày tỏ lòng biết ơn vô hạn đối với cha mẹ, chồng, con và gia đình đã luôn ủng hộ và yêu thương tôi một cách vô điều kiện. Nếu không có sự ủng hộ của gia đình và chồng con tôi không thể hoàn thành được luận án này. ii iii TÓM TẮT Luận án này trình bày một số phương pháp cho phép sinh tự động các ca kiểm thử chức năng mức hệ thống từ các ca sử dụng áp dụng các kỹ thuật kiểm thử dựa trên mô hình với hướng tiếp cận mô hình hóa chuyên biệt miền (Domain Specific Modeling - DSM ). Cụ thể, luận án quan tâm đến phương pháp đặc tả rõ ràng các ca sử dụng và các ca kiểm thử bằng các mô hình trong các ngôn ngữ mô hình hóa chuyên biệt miền và phương pháp chuyển tự động các mô hình ca sử dụng sang mô hình ca kiểm thử trong các ngôn ngữ đặc tả chuyên biệt miền. Các đóng góp chính của luận án như sau. Đề xuất ngôn ngữ USL (Use Case Specification Language) để đặc tả rõ ràng các ca sử dụng, hướng đến khả năng sinh tự động các chế tác phần mềm (software artifacts) khác nhau trong quy trình phát triển phần mềm bằng các chuyển đổi mô hình. Ngôn ngữ được xây dựng với cách tiếp cận mô hình hóa chuyên biệt miền. Xây dựng ngôn ngữ TCSL (Test Case Specification Language) để đặc tả rõ ràng các ca kiểm thử. Ngôn ngữ được xây dựng với cách tiếp cận mô hình hóa chuyên biệt miền. Đề xuất một phương pháp USLTG (USL-based Test Generation) để sinh tự động các ca kiểm thử từ ca sử dụng bằng cách chuyển đổi tự động các mô hình USL vào trong một mô hình TCSL. Xây dựng bộ công cụ hỗ trợ USL để hiện thực hóa những đề xuất của luận án. Bộ công cụ hỗ trợ USL cho phép tích hợp ngôn ngữ USL vào trong phương pháp phát triển phần mềm hướng mô hình. Cụ thể, bộ công cụ cung cấp trình soạn thảo để tạo các mô hình USL một các trực quan và cung cấp các bộ sinh tự động các chế tác khác nhau từ mô hình. Trọng tâm chính của luận án này là sinh các ca kiểm thử tự động từ các mô hình USL. Ngoài ra, luận án cũng trình bày các ví dụ nghiên cứu được áp dụng cho các phương pháp của luận án, cung cấp các đánh giá của ngôn ngữ USL với các ngôn ngữ đặc tả khác, và so sánh phương pháp USLTG với một số phương pháp sinh ca kiểm thử từ ca sử dụng khác. Từ khóa: ca sử dụng, ca kiểm thử, sinh ca kiểm thử tự động, mô hình hóa chuyên biệt miền, USL, TCSL, USLTG. Mục lục Lời cam đoan i Lời cảm ơn ii Tóm tắt iii Mục lục iv Danh mục các từ viết tắt vii Danh mục các bảng ix Danh mục các hình vẽ x Danh mục các thuật toán xii Danh mục các đặc tả xiii Chương 1. MỞ ĐẦU 1.1 Đặt vấn đề . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Mục tiêu nghiên cứu và các đóng góp chính của luận án . . . 1.3 Cấu trúc luận án . . . . . . . . . . . . . . . . . . . . . . . . . . Chương 2. KIẾN THỨC CƠ SỞ 2.1 Kiểm thử dựa trên ca sử dụng . . . . . . . . . . 2.1.1 Kiểm thử phần mềm . . . . . . . . . . . . 2.1.2 Ca sử dụng . . . . . . . . . . . . . . . . . 2.1.3 Xây dựng các ca kiểm thử từ ca sử dụng 2.2 Mô hình hóa chuyên biệt miền . . . . . . . . . . 2.2.1 Một số khái niệm cơ bản . . . . . . . . . 2.2.2 Phương pháp xây dựng DSML . . . . . . 2.2.3 Xây dựng DSML trong Eclipse . . . . . . 2.3 Chuyển đổi mô hình . . . . . . . . . . . . . . . . 2.3.1 Chuyển đổi mô hình sang mô hình . . . . iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1 5 9 11 11 11 22 25 27 27 28 31 32 32 v Nội dung 2.3.2 Chuyển đổi mô hình sang văn bản 2.4 Ngôn ngữ ràng buộc đối tượng OCL . . . 2.4.1 Cơ bản về OCL . . . . . . . . . . . 2.4.2 Công cụ hỗ trợ OCL . . . . . . . . 2.5 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 38 38 41 46 Chương 3. ĐẶC TẢ CA SỬ DỤNG THEO HƯỚNG MÔ HÌNH HÓA CHUYÊN BIỆT MIỀN 3.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . 3.3 Xác định miền cho ngữ cảnh đặc tả ca sử dụng . . . . . . . . 3.4 Cú pháp của USL . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Cú pháp trừu tượng của USL . . . . . . . . . . . . . . . 3.4.2 Các luật hợp lệ trên siêu mô hình của USL . . . . . . . 3.4.3 Cú pháp cụ thể của USL . . . . . . . . . . . . . . . . . 3.5 Ngữ nghĩa hình thức của mô hình USL . . . . . . . . . . . . . 3.6 Chuyển đổi mô hình USL . . . . . . . . . . . . . . . . . . . . . 3.6.1 Sinh các ca kiểm thử . . . . . . . . . . . . . . . . . . . . 3.6.2 Sinh các mô hình cấu trúc và mô hình hành vi . . . . . 3.6.3 Sinh TUCDs . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . 47 47 49 52 58 58 62 66 69 76 76 77 78 81 Chương 4. PHƯƠNG PHÁP SINH TỰ ĐỘNG CÁC CA KIỂM THỬ TỪ MÔ HÌNH CA SỬ DỤNG VÀ MÔ HÌNH KHÁI NIỆM MIỀN CỦA HỆ THỐNG 82 4.1 Giới thiệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 4.2 Các nghiên cứu liên quan . . . . . . . . . . . . . . . . . . . . . 85 4.3 Tổng quan phương pháp đề xuất . . . . . . . . . . . . . . . . . 88 4.4 Ngôn ngữ đặc tả các ca kiểm thử TCSL . . . . . . . . . . . . 89 4.4.1 Xác định miền cho ngữ cảnh đặc tả ca kiểm thử chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.4.2 Định nghĩa siêu mô hình TCSL . . . . . . . . . . . . . 92 4.5 Chuyển đổi mô hình từ USL sang TCSL . . . . . . . . . . . . 96 4.5.1 Xác định tiêu chí phủ . . . . . . . . . . . . . . . . . . . 96 4.5.2 Sinh các kịch bản ca sử dụng và các ràng buộc . . . . 97 4.5.3 Sinh các bộ dữ liệu đầu vào kiểm thử . . . . . . . . . . 101 4.5.4 Sinh mô hình TCSL . . . . . . . . . . . . . . . . . . . . 106 4.6 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Chương 5. THỰC NGHIỆM VÀ ĐÁNH GIÁ 111 vi Nội dung 5.1 5.2 5.3 5.4 Giới thiệu . . . . . . . . . . . . . . Công cụ hỗ trợ USL . . . . . . . . Ví dụ minh họa . . . . . . . . . . . Đánh giá . . . . . . . . . . . . . . 5.4.1 Đánh giá ngôn ngữ USL . . 5.4.2 Đánh giá phương pháp sinh 5.5 Tổng kết chương . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . các ca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . kiểm thử USLTG . . . . . . . . . . . . . . . . . . 111 112 115 122 122 129 133 Chương 6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 134 6.1 Các đóng góp của luận án . . . . . . . . . . . . . . . . . . . . . 135 6.2 Hướng phát triển . . . . . . . . . . . . . . . . . . . . . . . . . . 137 DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC 140 TÀI LIỆU THAM KHẢO 140 DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Dạng đầy đủ Diễn giải ATL Ngôn ngữ chuyển đổi ATLAS ATLAS Transformation Language DSL Domain-Specific Language Ngôn ngữ chuyên biệt miền DSM Domain-Specific Modeling Mô hình hóa chuyên biệt miền DSML Domain-Specific Modeling Ngôn ngữ mô hình hóa Language chuyên biệt miền EMF Eclipse Modeling Framework Khung mô hình hóa eclipse GMF Graphical Modeling Khung mô hình hóa Framework đồ họa Keyword-Driven Testing Khung kiểm thử Framework hướng từ khóa Labelled Transition System Hệ thống chuyển được KDTF LTS gán nhãn MBT Model-Based Testing Kiểm thử dựa trên mô hình MDD Model-Driven Deverlop Phát triển hướng mô hình MDE Model-Driven Engineering Kỹ nghệ hướng mô hình MOF Meta-Object Facility Phương tiện siêu đối tượng M2M Model to Model Mô hình sang mô hình M2T Model to Text Mô hình sang văn bản NLP Natural Language Processing Xử lý ngôn ngữ tự nhiên vii viii Danh mục các từ viết tắt NTD RNL RSL Navigational Development Các kỹ thuật phát triển Techniques điều hướng Restricted-form of Natural Định dạng bị giới hạn Language của ngôn ngữ tự nhiên Requirements Specification Ngôn ngữ đặc tả yêu cầu Language RUCM Restricted Use Case Mô hình hóa ca sử dụng Modeling được giới hạn OMG Object Management Group Nhóm quản lý đối tượng OCL Object Constraint Language Ngôn ngữ ràng buộc đối tượng TCSL Test Case Specification Ngôn ngữ đặc tả Language ca kiểm thử TSL Test Specification Language Ngôn ngữ đặc tả kiểm thử UCTM Use Case Test Model Mô hình kiểm thử ca sử dụng UML Unified Modeling Language Ngôn ngữ mô hình hóa thống nhất USL Use Case Specication Ngôn ngữ đặc tả ca sử dụng Language USLTG USL-based Test Generation Sinh kiểm thử dựa trên mô hình USL XML eXtensible Markup Language Ngôn ngữ đánh dấu mở rộng DANH MỤC CÁC BẢNG 2.1 2.2 2.3 2.4 Một mẫu mô tả ca sử dụng . . . . . . . . . . . . . . . . . . . . Các kịch bản của ca sử dụng Đăng nhập . . . . . . . . . . . . Các ca kiểm thử cho ca sử dụng Đăng nhập . . . . . . . . . . Các ca kiểm thử của ca sử dụng Đăng nhập với các giá trị xác định . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Mô tả của ca sử dụng Lend book . . . . . . . . . . . . . . . Các ký hiệu đồ họa của các khái niệm trong mô hình USL Danh sách các hàm được định nghĩa trong D . . . . . . . . Ngữ nghĩa dựa trên LTS của các khái niệm USL cơ bản . . . . . 54 66 72 74 4.1 Hai ca kiểm thử của ca sử dụng Lend book . . . . . . . . . . . 91 3.1 3.2 3.3 3.4 . . . . 24 25 26 5.1 Mô tả ca sử dụng Withdraw . . . . . . . . . . . . . . . . . . . 115 5.2 Các biến đầu vào và các điều kiện gác đã được xử lý của các kịch bản ca sử dụng Withdraw . . . . . . . . . . . . . . . . . . 119 5.3 Các đối tượng EV được sinh của các kịch bản ca sử dụng Withdraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 5.4 Các ca kiểm thử được sinh của ca sử dụng Lend book . . . . . 120 5.5 So sánh khả năng diễn tả giữa các ngôn ngữ đặc tả ca sử dụng 124 5.6 Số các kịch bản được sinh trong một số nghiên cứu . . . . . . 130 5.7 Sự so sánh các thông tin được xác định và ngôn ngữ đặc tả kiểm thử của các phương pháp . . . . . . . . . . . . . . . . . . 131 ix DANH MỤC CÁC HÌNH VẼ 1.1 Ngữ cảnh nghiên cứu, phương pháp thực hiện, và các đóng góp của luận án. . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cấu trúc luận án. . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 Các pha kiểm thử và phát triển trong mô hình chữ V [50]. . . Quy trình kiểm thử dựa trên mô hình [9]. . . . . . . . . . . . Các ví dụ của biểu đồ hoạt động với các cấu trúc lặp [39]. . . Ví dụ của biểu đồ hoạt động có chứa các hành động đồng thời [39]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Biểu đồ ca sử dụng của hệ thống đăng ký khóa học đơn giản. Các luồng sự kiện trong một ca sử dụng [26]. . . . . . . . . . Một ví dụ về siêu mô hình. . . . . . . . . . . . . . . . . . . . . Các kiểu chuyển mô hình: (a) chuyển ngoại sinh và (b) chuyển nội sinh [9]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Một phần siêu mô hình của sWML và MVC [9]. . . . . . . . Các mẫu, máy mẫu, và mô hình nguồn để cung cấp văn bản [9]. Các ca sử dụng thẩm định và kiểm chứng [18]. . . . . . . . . . Đầu vào và đầu ra của các ca sử dụng [18]. . . . . . . . . . . . Biểu đồ đối tượng OMfull . . . . . . . . . . . . . . . . . . . . . . 3.1 Mô hình ca sử dụng đơn giản và mô hình các khái niệm của hệ thống Library. . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Biểu đồ hoạt động đặc tả luồng điều khiển của ca sử dụng Lend book. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Siêu mô hình USL. . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Ví dụ thể hiện của siêu mô hình USL. . . . . . . . . . . . . . . 3.5 Đặc tả ca sử dụng Lend Book bằng một mô hình USL. . . . . 3.6 Một snapshot của ca sử dụng Lend Book. . . . . . . . . . . . . 3.7 Tệp TUCD được sinh của ca sử dụng Lend book. . . . . . . . x 6 9 14 16 19 21 22 23 29 33 33 35 42 42 45 52 56 59 60 68 75 80 xi Danh mục các hình vẽ 4.1 4.2 4.3 4.4 4.5 Tổng quan của cách tiếp cận USLTG. . . . . . . . . . . . . . . Siêu mô hình của TCSL. . . . . . . . . . . . . . . . . . . . . . Lưu đồ thuật toán của Thủ tục GenerateScenarios. . . . . . . Lưu đồ thuật toán của Thuật toán GenTestInputData. . . . . Biểu đồ lớp mô hình các khái niệm của hệ thống Library và biểu đồ các đối tượng. . . . . . . . . . . . . . . . . . . . . . . . 4.6 Lưu đồ thuật toán của Thuật toán GenTCSLModel. . . . . . 4.7 Các ca kiểm thử trong Bảng 4.1 được đặc tả trong mô hình TCSL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.1 5.2 5.3 5.4 5.5 5.6 Các thành phần chính của công cụ USL. . . . . . . . Kiến trúc của bộ sinh USLTG. . . . . . . . . . . . . . Giao diện công cụ hỗ trợ USL. . . . . . . . . . . . . . Mô hình USL của ca sử dụng Withdraw. . . . . . . . Mô tả theo mẫu được sinh của ca sử dụng Withdraw. Biểu đồ lớp của ATM và một hình chụp hệ thống. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 93 100 104 105 107 108 112 114 114 116 117 118 DANH MỤC CÁC THUẬT TOÁN 4.1 GenScenarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 GenTestInputData . . . . . . . . . . . . . . . . . . . . . . . . . 102 4.3 GenTCSLModel . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 xii 98 DANH MỤC CÁC ĐẶC TẢ 2.1 2.2 2.3 2.4 2.5 2.6 2.7 3.1 3.2 5.1 Ví dụ một chương trình chuyển trong ATL [9]. . . . . . . . . 34 Ví dụ một chương trình chuyển trong Acceleo [9]. . . . . . . 37 Ví dụ mô hình Employee trong môi trường đặc tả dựa trên UML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Mô hình lớp CM trong công cụ USE. . . . . . . . . . . . . . . 43 Tệp cấu hình CONF. . . . . . . . . . . . . . . . . . . . . . . . 44 Các ràng buộc bất biến INVS. . . . . . . . . . . . . . . . . . . 44 Các đối tượng và liên kết đã được xác định trong biểu đồ lớp OMpartial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Chuyển USL2TUCD . . . . . . . . . . . . . . . . . . . . . . . 79 Chuyển libraryUCD . . . . . . . . . . . . . . . . . . . . . . . . 80 Tệp XML lưu mô hình TCSL của ca sử dụng Withdraw . . . 121 xiii Chương 1 MỞ ĐẦU 1.1 Đặt vấn đề Ngày nay, các hệ thống phần mềm càng ngày càng trở nên phức tạp và được ứng dụng rộng rãi trong hầu hết lĩnh vực của đời sống xã hội. Để tăng tính cạnh tranh của các sản phẩm phần mềm, chi phí phát triển phần mềm cần phải được cắt giảm trong khi chất lượng phần mềm phải được nâng cao. Kiểm thử phần mềm (software testing) là một hoạt động quan trọng để đảm bảo chất lượng phần mềm. Hoạt động này chiếm nhiều thời gian và chi phí trong phát triển phần mềm thường từ 30-60% [71]. Khi kiểm thử một ứng dụng, các kiểm thử viên sẽ xây dựng các ca kiểm thử (test cases) dựa trên tài liệu đầu vào, sau đó khi có chương trình phần mềm thì thực thi các ca kiểm thử thủ công hoặc tự động bằng các công cụ thực thi kiểm thử tự động. Trong thực tế, các yêu cầu phần mềm thường hay thay đổi trong suốt quy trình phát triển phần mềm. Khi các yêu cầu phần mềm thay đổi, các ca kiểm thử liên quan phải được xây dựng và thực thi lại (kiểm thử hồi quy). Vì vậy, những nỗ lực được yêu cầu để xác định, bảo trì, và thực thi các ca kiểm thử khi các yêu cầu thay đổi là rất lớn. Đối với hoạt động kiểm thử phần mềm, giải pháp sinh và thực thi các ca kiểm thử một cách tự động giúp tiết kiệm rất nhiều thời gian và các nỗ lực cũng như giảm được số lượng các lỗi và các sai sót trong hoạt động kiểm thử phần mềm. Do đó, nhiều nghiên cứu đã đề xuất các giải pháp tăng tính tự động trong phát triển phần mềm cũng như hoạt động kiểm thử phần mềm. 1 Mở đầu 2 Hiện tại trong thực tế, kiểm thử tự động tập trung vào thực thi kiểm thử tự động, còn vấn đề sinh các ca kiểm thử tự động chưa được giải quyết triệt để. Trong các quy trình kiểm thử phần mềm, quy trình kiểm thử dựa trên mô hình (Model-Based Testing - MBT ) đẩy mạnh mức độ tự động hóa cao hơn [71]. Quy trình này không chỉ tự động hóa trong thực thi kiểm thử mà còn tự động hóa trong sinh các ca kiểm thử. Lợi ích chính của MBT là tạo điều kiện thuận lợi cho việc duy trì bộ kiểm thử và phủ của bộ kiểm thử. Khi tiến hóa phần mềm, các mô hình được cập nhật, sau đó bộ kiểm thử được sinh cập nhật một cách tự động. Với ý nghĩa to lớn của MBT trong công nghiệp phần mềm, phương pháp này đang là một giải pháp tối ưu giúp tăng tính tự động, tăng năng suất, tăng chất lượng, và giảm chi phí trong phát triển phần mềm nói chung và trong kiểm thử nói riêng. Quy trình MBT gồm năm bước chính là (1) mô hình hóa, (2) sinh các ca kiểm thử, (3) sinh các tập lệnh thực thi kiểm thử (test scripts), (4) thực thi kiểm thử, (5) phân tích các ca kiểm thử được minh họa như Hình 2.2. Trong đó, ba bước cuối cùng đã được giải quyết rất tốt bằng các công cụ thực thi kiểm thử tự động thương mại hoặc miễn phí trên thị trường. Hai bước đầu tiên là (1) mô hình hóa và (2) sinh các ca kiểm thử còn gặp nhiều thách thức với cộng đồng nghiên cứu. Trong hoạt động kiểm thử phần mềm, các yêu cầu chức năng (functional software requirements) của phần mềm là đầu vào để xây dựng các ca kiểm thử chức năng. Các yêu cầu chức năng phần mềm thường được cấu trúc và biểu diễn bằng các ca sử dụng. Một mô hình ca sử dụng thường được đặc tả bằng các biểu đồ ca sử dụng và các mô tả của các ca sử dụng ở dạng văn bản có cấu trúc theo mẫu [53]. Với dạng thể hiện này thì mô hình ca sử dụng sẽ tạo điều kiện thuận lợi cho các bên liên quan trong phát triển phần mềm dễ dàng đọc, học, và sử dụng chúng. Tuy nhiên, các mô tả ca sử dụng trong ngôn ngữ tự nhiên là rất khó để xác định tự động các thông tin được mô tả trong nó. Vì vậy, bài toán sinh các ca kiểm thử chức năng tự động từ mô hình ca sử dụng vẫn còn rất nhiều thách thức. Nhiều nghiên cứu như trong [7, 11, 23, 24, 41, 43, 51, 58, 65, 67, 73] đã chỉ dẫn các cách tiếp cận để sinh tự động các ca kiểm thử từ mô hình ca sử dụng. Một số nghiên cứu như trong [58, 73] đã đề xuất phương pháp sinh tự động các ca kiểm thử chức năng từ các đặc tả ca sử dụng trong ngôn ngữ tự nhiên theo mẫu với các luật hạn chế và các từ khóa. Để sinh tự động được Mở đầu 3 các ca kiểm thử, đầu tiên các nghiên cứu này sử dụng kỹ thuật xử lý ngôn ngữ tự nhiên để sinh các mô hình trung gian. Sau đó, các mô hình trung gian này được sử dụng để sinh các ca kiểm thử. Tuy nhiên, các ngôn ngữ được sử dụng để đặc tả trong các nghiên cứu này là các ngôn ngữ không hình thức (informal) (không có cú pháp trừu tượng). Vì vậy, việc đảm bảo tính đúng đắn của các đặc tả cũng như sinh các mô hình trung gian phải sử dụng các kỹ thuật xử lý ngôn ngữ tự nhiên vốn khó và chỉ được áp dụng cho một ngôn ngữ cụ thể. Hơn nữa, các ràng buộc được mô tả trong ngôn ngữ tự nhiên nên muốn sinh được dữ liệu kiểm thử cần phải đặc tả chính xác lại các ràng buộc này. Nhiều nghiên cứu đề xuất sử dụng biểu đồ hoạt động và tuần tự trong UML để đặc tả các thông tin mô tả trong ca sử dụng, sau đó sinh các ca kiểm thử như trong [24, 51, 67]. Tuy nhiên, các nghiên cứu này chủ yếu tập trung đề xuất phương pháp để đặc tả phân biệt được hành động của tác nhân và hệ thống bằng các biểu đồ trong UML cho mục đích sinh các ca kiểm thử trừu tượng (kịch bản kiểm thử) mà không đề cập đến sinh tự động dữ liệu cụ thể cho các ca kiểm thử. Một số nghiên cứu khác đã đề xuất cách tiếp cận sinh tự động các ca kiểm thử chức năng từ các mô hình ca sử dụng được đặc tả trong các ngôn ngữ chuyên biệt miền (Domain-Specific Language - DSL). Như nghiên cứu trong [23], các mô tả của ca sử dụng được đặc tả trong ngôn ngữ chuyên biệt miền tên là NDT (Navigational Development Techniques) được đề xuất trong [16]. Tuy nhiên, nghiên cứu không đề cập đến phương pháp xác định các giá trị kiểm thử cho các kịch bản kiểm thử. Trong nghiên cứu [65], các mô tả ca sử dụng được đặc tả trong ngôn ngữ RSL (Requirements Specification Language) đã được đề xuất trong [63] để sinh các ca kiểm thử chức năng. Các ca kiểm thử được sinh cũng được đặc tả rõ ràng trong ngôn ngữ đặc tả kiểm thử tên là TSL (Test Specification Language). Tuy nhiên trong nghiên cứu này, dữ liệu kiểm thử được xác định như các mô tả về điều kiện thay vì là các giá trị cụ thể. Như đã phân tích ở trên để sinh tự động các ca kiểm thử chức năng từ mô hình ca sử dụng, đầu tiên các nghiên cứu đề xuất sử dụng một ngôn ngữ đặc tả để đặc tả các thông tin mô tả trong ca sử dụng. Sau đó, các nghiên cứu sử dụng các đặc tả này để sinh tự động các ca kiểm thử. Trong quá trình khảo sát các phương pháp đặc tả các thông tin mô tả trong ca Mở đầu 4 sử dụng, luận án nhận thấy rằng mô hình ca sử dụng là chế tác (artifact) trung tâm trong phát triển phần mềm. Các mô hình ca sử dụng không chỉ là đầu vào để xây dựng các ca kiểm thử chức năng mà còn là đầu vào để xây dựng các mô hình cấu trúc (biểu đồ lớp, biểu đồ trạng thái, v.v.), các mô hình hành vi (biểu đồ tuần tự, biểu đồ hoạt động, v.v.), và làm tài liệu cho hệ thống. Để tăng tính tự động hóa trong phát triển phần mềm, các mô hình ca sử dụng không chỉ cần được tích hợp vào phương pháp kiểm thử hướng mô hình mà cũng cần được tích hợp vào trong phương pháp phát triển hướng mô hình (Model-Driven Development - MDD). MDD cho phép sử dụng mô hình ca sử dụng là mô hình trung tâm để sinh tự động các ca kiểm thử, các mô hình cấu trúc, các mô hình hành vi. Vì vậy, các ca sử dụng cần được đặc tả rõ ràng và đủ các thông tin cần thiết để sinh tự động các chế tác khác nhau trong phát triển phần mềm. Trong các nghiên cứu mà luận án đã khảo sát, có hai nghiên cứu đã đề xuất các ngôn ngữ đặc tả RSL [63] và SelabReq [59] với mục đích cho phép tích hợp đặc tả ca sử dụng vào trong phương pháp phát triển hướng mô hình. Tuy nhiên, thông tin mô tả trong các ca sử dụng được đặc tả trong RSL không đủ chi tiết để sinh được dữ liệu kiểm thử cụ thể như trong nghiên cứu [65] đã đề cập ở trên. Ngôn ngữ SelabReq chỉ đề cập đến khả năng sinh các mô hình cấu trúc và mô hình hành vi mà không đề cập đến việc sinh các ca kiểm thử. Mặc dù đã có nhiều nghiên cứu quan tâm giải quyết bài toán sinh các ca kiểm thử chức năng từ mô hình ca sử dụng, cũng như bài toán đặc tả thông tin mô tả trong ca sử dụng để tích hợp vào trong phương pháp phát triển hướng mô hình. Tuy nhiên, bài toán này vẫn còn một số thách thức đặt ra như sau: thách thức thứ nhất là một ngôn ngữ đặc tả chuyên biệt miền cho phép đặc tả các thông tin trong ca sử dụng rõ ràng và đủ chi tiết để có thể tích hợp mô hình ca sử dụng vào trong phương pháp phát triển hướng mô hình. Việc tích hợp mô hình ca sử dụng vào trong phương pháp phát triển hướng mô hình cho phép sinh tự động các ca kiểm thử, mô hình cấu trúc, mô hình hành vi, và làm tài liệu. Cụ thể trong luận án này, chúng tôi tập trung vào hiện thực hóa khả năng sinh tự động các ca kiểm thử. Thách thức thứ hai là một phương pháp sinh tự động các ca kiểm thử có chứa các thông tin cần thiết để có thể sinh và thực thi tự động các tập lệnh thực thi kiểm thử bằng các công cụ thực thi kiểm thử tự động. Thách thức thứ ba là một ngôn ngữ đặc tả chuyên biệt miền để đặc tả rõ ràng và đầy 5 Mở đầu đủ các thông tin của các ca kiểm thử được sinh. Thách thức cuối cùng là một công cụ đủ tốt cho phép tích hợp ca sử dụng vào trong phương pháp phát triển phần mềm hướng mô hình cho mục đích sinh tự động các chế tác phần mềm khác nhau từ mô hình ca sử dụng, trong đó có sinh tự động các ca kiểm thử chức năng. Để giải quyết các thách thức ở trên, luận án hướng đến giải quyết bài toán trong ngữ cảnh phát triển hướng mô hình và tập trung vào sinh tự động các ca kiểm thử chức năng từ các ca sử dụng theo phương pháp kiểm thử dựa trên mô hình. Đầu tiên, luận án đề xuất phương pháp đặc tả rõ ràng các thông tin mô tả trong ca sử dụng và các ca kiểm thử bằng cách tiếp cận mô hình hóa chuyên biệt miền (Domain-Specific Modeling - DSM ). Sau đó, luận án đề xuất phương pháp sinh tự động các ca kiểm thử từ ca sử dụng. Cuối cùng, luận án xây dựng các công cụ hỗ trợ cho các phương pháp đã đề xuất để cho phép tích hợp ca sử dụng vào trong phương pháp phát triển hướng mô hình và đánh giá các phương pháp đã đề xuất với các phương pháp hiện tại khác. Đối tượng nghiên cứu của luận án là các mô hình ca sử dụng, các ca kiểm thử chức năng, và phương pháp xác định các ca kiểm thử chức năng từ ca sử dụng, phương pháp tự động hóa trong kiểm thử phần mềm áp dụng cho kiểm thử chức năng. Để thực hiện mục tiêu sinh tự động các ca kiểm thử chức năng từ các ca sử dụng, luận án sử dụng phương pháp kiểm thử dựa trên mô hình với hướng tiếp cận mô hình hóa chuyên biệt miền. 1.2 Mục tiêu nghiên cứu và các đóng góp chính của luận án Mục tiêu của luận án là đặt ca sử dụng vào trong ngữ cảnh của quy trình kiểm thử dựa trên mô hình. Điều này cho phép tự động hóa hoạt động kiểm thử chức năng mà đầu vào là các yêu cầu chức năng của phần mềm. Hình 1.1 minh họa tổng quan nghiên cứu của luận án. Trong đó, các Bước (1) mô hình hóa, Bước (2) sinh các ca kiểm thử, Bước (3) sinh các tập lệnh thực thi kiểm thử, Bước (4) thực thi kiểm thử, và Bước 5 phân tích các ca kiểm thử là năm bước chính trong quy trình kiểm thử dựa trên mô hình. Luận án tập trung vào hai bước đầu tiên còn nhiều thách thức trong quy Mở đầu 6 trình kiểm thử dựa trên mô hình cho bài toán kiểm thử chức năng từ các ca sử dụng là Bước (1) mô hình hóa các yêu cầu và Bước (2) sinh các ca kiểm thử tự động. Các Bước (3), (4), (5) đã được cung cấp đầy đủ bởi các công cụ thực thi kiểm thử tự động được triển khai rộng rãi trong thực tế. Để đạt được mục đích tự động hóa hoàn toàn, các ca kiểm thử được sinh trong Bước (2) cần chứa đầy đủ các thông tin cần thiết để là đầu vào cho Bước (3) sinh và Bước (4) thực thi tự động các tập lệnh thực thi kiểm thử bằng các công cụ thực thi kiểm thử tự động. Ngoài ra mục tiêu hướng tới của luận án là không chỉ đặt ca sử dụng vào trong ngữ cảnh của quy trình kiểm thử dựa trên mô hình mà còn đặt ca sử dụng trong ngữ cảnh phát triển hướng mô hình nói chung. Mục đích này cho phép sinh tự động các đầu ra khác nhau từ mô hình ca sử dụng như các ca kiểm thử, các mô hình cấu trúc, các mô hình hành vi, cũng như sử dụng làm tài liệu đặc tả yêu cầu phần mềm. Để giải quyết bài toán này, luận án đã đạt được bốn đóng góp chính như được thể hiện trong phần phía trên của Hình 1.1. Hình 1.1: Ngữ cảnh nghiên cứu, phương pháp thực hiện, và các đóng góp của luận án.
- Xem thêm -