Luận án tiến sĩ công nghệ thông tin 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ĩ nghiên cứu phương pháp kiểm thử dựa trên mô hình với tiếp cận mô hình hóa chuyên biệt miền, ứng dụng hiệu quả trong công nghệ phần mềm.

Trường đại học

Đại học Công nghệ

Chuyên ngành

Công nghệ phần mềm

Người đăng

Ẩn danh

Thể loại

luận án tiến sĩ
159
0
0

Phí lưu trữ

45 Point

Mục lục chi tiết

LỜI CAM ĐOAN

LỜI CẢM ƠN

TÓM TẮT

MỤC LỤC

DANH MỤC CÁC TỪ VIẾT TẮT

DANH MỤC CÁC BẢNG

DANH MỤC CÁC HÌNH VẼ

DANH MỤC CÁC THUẬT TOÁN

DANH MỤC CÁC ĐẶC TẢ

1. CHƯƠNG 1: MỞ ĐẦU

1.1. Đặt vấn đề

2. 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

2.3.2. Chuyển đổi mô hình sang văn bản

2.3.3. Ngôn ngữ ràng buộc đối tượng OCL

2.3.3.1. Cơ bản về OCL
2.3.3.2. Công cụ hỗ trợ OCL

2.4. Tổng kết chương

3. 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. Các nghiên cứu liên quan

3.2. Xác định miền cho ngữ cảnh đặc tả ca sử dụng

3.3. Cú pháp của USL

3.3.1. Cú pháp trừu tượng của USL

3.3.2. Các luật hợp lệ trên siêu mô hình của USL

3.3.3. Cú pháp cụ thể của USL

3.4. Ngữ nghĩa hình thức của mô hình USL

3.5. Chuyển đổi mô hình USL

3.5.1. Sinh các ca kiểm thử

3.5.2. Sinh các mô hình cấu trúc và mô hình hành vi

3.6. Tổng kết chương

4. 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

4.1. Các nghiên cứu liên quan

4.2. Tổng quan phương pháp đề xuất

4.3. Ngôn ngữ đặc tả các ca kiểm thử TCSL

4.3.1. Xác định miền cho ngữ cảnh đặc tả ca kiểm thử chức năng

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 các kịch bản ca sử dụng và các ràng buộc

4.4.3. Sinh các bộ dữ liệu đầu vào kiểm thử

4.4.4. Sinh mô hình TCSL

4.5. Tổng kết chương

5. CHƯƠNG 5: THỰC NGHIỆM VÀ ĐÁNH GIÁ

5.1. Công cụ hỗ trợ USL

5.2. Ví dụ minh họa

5.2.1. Đánh giá ngôn ngữ USL

5.2.2. Đánh giá phương pháp sinh các ca kiểm thử USLTG

5.3. Tổng kết chương

6. CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

6.1. Các đóng góp của luận án

6.2. Hướng phát triển

DANH MỤC CÁC CÔNG TRÌNH KHOA HỌC

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Giới thiệu và bối cảnh nghiên cứu

Luận án tiến sĩ này tập trung vào kiểm thử dựa trên mô hình với tiếp cận mô hình hóa chuyên biệt miền. Mục tiêu chính là sinh tự động các ca kiểm thử chức nă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ìnhmô hình hóa chuyên biệt miền. Luận án đề xuất các phương pháp đặc tả rõ ràng các ca sử dụng và ca kiểm thử bằng các ngôn ngữ mô hình hóa chuyên biệt, đồng thời chuyển đổi tự động các mô hình ca sử dụng sang mô hình ca kiểm thử. Các đóng góp chính bao gồm việc xây dựng ngôn ngữ USLTCSL, cùng với phương pháp USLTG để sinh tự động ca kiểm thử.

1.1. Bối cảnh và thách thức

Trong bối cảnh phát triển phần mềm hiện đại, kiểm thử phần mềm đóng vai trò quan trọng trong việc đảm bảo chất lượng. Tuy nhiên, việc sinh và thực thi các ca kiểm thử thường tốn nhiều thời gian và chi phí. Kiểm thử dựa trên mô hình (MBT) được xem là giải pháp tối ưu để tăng tính tự động hóa, giảm chi phí và nâng cao chất lượng. Thách thức chính là việc sinh tự động các ca kiểm thử từ các mô hình ca sử dụng, đặc biệt khi các yêu cầu thay đổi liên tục.

1.2. Mục tiêu nghiên cứu

Luận án hướng đến việc giải quyết các thách thức trong kiểm thử dựa trên mô hình bằng cách đề xuất các phương pháp mô hình hóa chuyên biệt miền để đặc tả ca sử dụng và ca kiểm thử. Mục tiêu cụ thể là xây dựng các ngôn ngữ USLTCSL, cùng với phương pháp USLTG để sinh tự động ca kiểm thử từ ca sử dụng.

II. Phương pháp và công cụ đề xuất

Luận án đề xuất các phương pháp và công cụ để thực hiện kiểm thử dựa trên mô hình với tiếp cận mô hình hóa chuyên biệt miền. Cụ thể, ngôn ngữ USL được xây dựng để đặc tả rõ ràng các ca sử dụng, trong khi TCSL được sử dụng để đặc tả các ca kiểm thử. Phương pháp USLTG được đề xuất để chuyển đổi tự động các mô hình USL sang TCSL, từ đó sinh ra các ca kiểm thử tự động. Bộ công cụ hỗ trợ USL được xây dựng để tích hợp các phương pháp này vào quy trình phát triển phần mềm.

2.1. Ngôn ngữ USL và TCSL

Ngôn ngữ USL (Use Case Specification Language) được thiết kế để đặ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 khác nhau. TCSL (Test Case Specification Language) được sử dụng để đặc tả các ca kiểm thử, đảm bảo tính rõ ràng và đầy đủ thông tin cần thiết cho việc thực thi kiểm thử tự động.

2.2. Phương pháp USLTG

Phương pháp USLTG (USL-based Test Generation) được đề xuất để sinh tự động các ca kiểm thử từ ca sử dụng. Phương pháp này chuyển đổi tự động các mô hình USL sang TCSL, từ đó sinh ra các ca kiểm thử chức năng. Quá trình này bao gồm việc xác định các kịch bản ca sử dụng, sinh dữ liệu đầu vào kiểm thử, và tạo mô hình TCSL.

III. Thực nghiệm và đánh giá

Luận án tiến hành các thực nghiệm để đánh giá hiệu quả của các phương pháp và công cụ đề xuất. Các ví dụ nghiên cứu được áp dụng để minh họa quy trình sinh tự động ca kiểm thử từ ca sử dụng. Kết quả thực nghiệm cho thấy khả năng tích hợp kiểm thử dựa trên mô hình vào quy trình phát triển phần mềm, đồng thời đánh giá tính hiệu quả của ngôn ngữ USL và phương pháp USLTG.

3.1. Ví dụ minh họa

Các ví dụ nghiên cứu được sử dụng để minh họa quy trình sinh tự động ca kiểm thử từ ca sử dụng. Các mô hình USL được tạo ra để đặc tả ca sử dụng, sau đó chuyển đổi sang TCSL để sinh ca kiểm thử. Kết quả cho thấy tính khả thi và hiệu quả của phương pháp đề xuất.

3.2. Đánh giá kết quả

Kết quả thực nghiệm được đánh giá dựa trên khả năng sinh tự động ca kiểm thử và tính chính xác của các ca kiểm thử được sinh. So sánh với các phương pháp khác, phương pháp USLTG cho thấy ưu điểm trong việc tích hợp mô hình hóa chuyên biệt miền vào quy trình kiểm thử dựa trên mô hình.

IV. Kết luận và hướng phát triển

Luận án đã đề xuất các phương pháp và công cụ để thực hiện kiểm thử dựa trên mô hình với tiếp cận mô hình hóa chuyên biệt miền. Các kết quả thực nghiệm cho thấy tính khả thi và hiệu quả của các phương pháp đề xuất. Hướng phát triển trong tương lai bao gồm việc mở rộng ứng dụng của các phương pháp này trong các lĩnh vực khác nhau, cải tiến các công cụ hỗ trợ, và tích hợp sâu hơn vào quy trình phát triển phần mềm.

4.1. Đóng góp chính

Luận án đã đóng góp vào lĩnh vực kiểm thử phần mềm bằng cách đề xuất các phương pháp mô hình hóa chuyên biệt miềnkiểm thử dựa trên mô hình. Các ngôn ngữ USLTCSL, cùng với phương pháp USLTG, đã được xây dựng và thử nghiệm thành công.

4.2. Hướng phát triển

Hướng phát triển trong tương lai bao gồm việc mở rộng ứng dụng của các phương pháp này trong các lĩnh vực khác nhau, cải tiến các công cụ hỗ trợ, và tích hợp sâu hơn vào quy trình phát triển phần mềm. Ngoài ra, việc nghiên cứu thêm về khả năng sinh tự động các mô hình cấu trúc và hành vi từ ca sử dụng cũng là một hướng đi tiềm năng.

01/03/2025
Luận án tiến sĩ công nghệ thông tin 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

Trích đoạn nội dung tài liệu

Mở đầu, Mục 2.1 sẽ làm rõ các khái niệm trong kiểm thử phần mềm, ca sử dụng, và phương pháp xác định các ca kiểm thử từ các ca sử dụng. Các mục tiếp theo, luận án sẽ lần lượt mô tả về mô hình hóa chuyên biệt miền (Domain-Specific Modeling - DSM ), ngôn ngữ chuyển mô hình (model transformation language), và ngôn ngữ ràng buộc đối tượng OCL.1 Kiểm thử dựa trên ca sử dụng Phần này, luận án sẽ trình bày các kiến thức nền trong kiểm thử phần mềm, ca sử dụng, và kiểm thử dựa trên ca sử dụng. Các kiến thức này được luận án tìm hiểu khi nghiên cứu bài toán kiểm thử chức năng từ ca sử dụng.1 Kiểm thử phần mềm 2.1 Các khái niệm cơ bản Lỗi phần mềm là một khiếm khuyết trong một thành phần hoặc hệ thống mà nó có thể làm cho thành phần hoặc hệ thống này không thực hiện đúng chức năng yêu cầu của nó, ví dụ như thông báo sai hoặc định nghĩa dữ liệu không đúng [5]. Kiến thức cơ sở 12 Kiểm thử (Testing) là một quy trình thực hiện một chương trình với ý định tìm kiếm các lỗi.

Kiểm thử phần mềm bao gồm việc kiểm chứng động các hành vi của một chương trình trên một tập hữu hạn các ca kiểm thử (test case). Các ca kiểm thử được lựa chọn phù hợp từ các miền thực thi thường là vô hạn để có được hành vi được mong đợi [49]. Kiểm thử tĩnh (Static Testing) là hoạt động kiểm tra mà không thực hiện chương trình. Hoạt động này bao gồm kiểm tra phần mềm và một số dạng của phân tích [5].

Kiểm thử động (Dynamic Testing) là thực hiện chương trình với các giá trị đầu vào xác định để tìm các lỗi trong các hành vi của chương trình [5]. Hầu hết các tài liệu sử dụng thuật ngữ kiểm thử để chỉ kiểm thử động và kiểm thử tĩnh được gọi là hoạt động xác minh. Khi thực thi kiểm thử, việc kiểm thử toàn diện chương trình thực tế là không thể thực hiện được. Bởi vì, mỗi hoạt động trong chương trình thường có một số lượng lớn các dữ liệu đầu vào thỏa mãn.

Vì vậy khi kiểm thử, kiểm thử viên cần chọn một số lượng các ca kiểm thử đủ nhỏ để có thể thực thi các kiểm thử trong thời gian giới hạn. Vậy làm thế nào để chọn được các ca kiểm thử có nhiều khả năng để lộ thất bại trong hệ thống. Khi đó, một số chiến lược sẽ được áp dụng để xác định tập các đầu vào cho ca kiểm thử như phân lớp tương đương, kiểm thử giá trị biên. Sau mỗi lần thực hiện kiểm thử, chúng ta phải quyết định hành vi được quan sát của hệ thống là một thất bại hay không.

Vấn đề này được gọi là một lời tiên tri (oracle). Vấn đề oracle thường được giải quyết thông qua kiểm tra thủ công đầu ra thực tế. Nhưng để kiểm thử lặp lại và hiệu quả, oracle cần được tự động hóa. Ca kiểm thử (Test case) là tập của các dữ liệu kiểm thử (test data), các điều kiện thực hiện (pre-condition), các bước kiểm thử (test steps), và các kết quả đầu ra mong đợi (expected output) được phát triển cho một kịch bản kiểm thử (test scenario) cụ thể để kiểm chứng sự tuân thủ một yêu cầu kiểm thử xác định.

Một ca kiểm thử định nghĩa một thử nghiệm đơn lẻ sẽ được thực hiện để đạt được mục tiêu kiểm thử phần mềm cụ thể, chẳng hạn như đi qua một đường thực thi của chương trình cụ thể hoặc kiểm chứng tuân thủ một yêu cầu cụ thể [5]. Dữ liệu kiểm thử là tập các giá trị thực (thỏa mãn tiêu chí bao phủ dữ Chương 2. Kiến thức cơ sở 13 liệu đã chọn) được xác định chỉ rõ là đầu vào để thực hiện các ca kiểm thử trong quá trình kiểm thử [5]. Đầu ra mong đợi là các kết quả dự kiến sẽ được tạo ra khi thực hiện kiểm thử.

Chương trình thỏa mãn khi và chỉ khi đầu ra thực tế thỏa mãn đầu ra mong đợi của kiểm thử [5]. Các bước kiểm thử mô tả các bước thực hiện và kiểm tra kết quả đầu ra của hệ thống [5]. Các điều kiện thực hiện là các điều kiện cần thỏa mãn để ca kiểm thử được thực hiện [5]. Kịch bản kiểm thử (Test scenario) là một ca kiểm thử trừu tượng và nó thường bao gồm nhiều ca kiểm thử liên quan nhau.

Một kịch bản kiểm thử mô tả một thủ tục thực hiện kiểm thử bao gồm một tập các bước kiểm thử (test step). Mục đích của kịch bản kiểm thử là kiểm tra việc thực hiện chức năng từ đầu đến cuối của một chức năng phần mềm và đảm bảo luồng logic đang hoạt động là đúng. Với mỗi kịch bản kiểm thử, kiểm thử viên có thể xác định được một hoặc nhiều bộ dữ liệu kiểm thử thỏa mãn kịch bản kiểm thử. Một ca kiểm thử là sự kết hợp của một kịch bản kiểm thử với một bộ dữ liệu kiểm thử thỏa mãn kịch bản [5].2 Kỹ thuật kiểm thử Một hoạt động quan trọng trong kiểm thử phần mềm là thiết kế các ca kiểm thử.

Một quy trình phát triển phần mềm tạo ra một lượng lớn thông tin như đặc tả yêu cầu, tài liệu thiết kế và mã nguồn. Để tạo các ca kiểm thử hiệu quả với chi phí thấp, các nhà thiết kế kiểm thử sẽ phân tích một số nguồn thông tin như các đặc tả yêu cầu và đặc tả chức năng (requirements and functional specifications), mã nguồn, các miền đầu vào và đầu ra (input and output domains), hồ sơ hoạt động (operational profile), và mô hình lỗi. Tất cả các nguồn thông tin này cung cấp các thông tin bổ sung cho các nhà thiết kế kiểm thử. Dựa trên nguồn thông tin cho thiết kế kiểm thử, kỹ thuật kiểm thử được chia thành hai kỹ thuật chính là kiểm thử hộp trắng (white box testing) và kiểm thử hộp đen (black box testing) như được định nghĩa trong [5].

Kiến thức cơ sở 14 Kiểm thử hộp đen là kỹ thuật kiểm thử mà các ca kiểm thử được xác định từ các mô tả bên ngoài của phần mềm, bao gồm các đặc tả, các yêu cầu, và thiết kế. Kiểm thử hộp trắng là kỹ thuật kiểm thử mà các ca kiểm thử được xác định từ mã nguồn bên trong của phần mềm, đặc biệt bao gồm các nhánh, các điều kiện riêng, và các câu lệnh.3 Các mức trong kiểm thử phần mềm Kiểm thử được thực hiện tại các mức khác nhau liên quan tới các hoạt động phát triển phần mềm.1 là mô hình chữ V (V model), mô hình minh họa các mức kiểm thử và các hoạt động phát triển phần mềm. Các mức kiểm thử được trình bày trong [50, 64] gồm có kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống, và kiểm thử chấp nhận. Các ca kiểm thử của các mức kiểm thử này sẽ được thiết kế dựa vào các chế tác tương ứng trong các quy trình khác nhau trong phát triển phần mềm.

Sau khi có mã chương trình, các mức kiểm thử khác nhau sẽ lần lượt được thực hiện. Trong kiểm thử đơn vị (Unit testing), các lập trình viên kiểm thử riêng lẻ các đơn vị chương trình như các hàm, thủ tục, phương thức, hoặc lớp một cách độc lập. Sau khi chắc chắn các đơn vị riêng lẻ làm việc thỏa mãn, các mô-đun được lắp ráp để xây dựng các hệ thống con lớn hơn bằng cách thực hiện các kỹ thuật kiểm tra tích hợp.1: Các pha kiểm thử và phát triển trong mô hình chữ V [50]. Kiến thức cơ sở 15 Kiểm thử tích hợp (Integration testing) được thực hiện bởi các nhà phát triển phần mềm và các kỹ sư kiểm thử tích hợp.

Mục tiêu của kiểm thử tích hợp là để xây dựng một hệ thống thỏa mãn ổn định có thể chịu được sự nghiêm ngặt của việc kiểm thử mức hệ thống. Kiểm thử mức hệ thống (System testing) gồm một phổ rộng các kiểm thử như kiểm thử chức năng (functionality testing), kiểm thử độ bền (ro- buntness), kiểm thử bảo mật (security testing), kiểm thử tải (load testing), kiểm thử hiệu năng (performamce testing), kiểm thử độ tin cậy (reliability testing), kiểm thử ổn đinh (stability), kiểm thử quá tải (stress testing). Kiểm thử mức hệ thống là một pha quan trọng trong quy trình phát triển phần mềm vì cần phải đáp ứng một kế hoạch chặt chẽ gần ngày chuyển giao, để khám phá hầu hết các lỗi, và kiểm chứng sản phẩm đang làm việc và không dẫn đến các lỗi mới. Kiểm thử hệ thống gồm các hoạt động phân biệt như tạo một kế hoạch kiểm thử (test plan), thiết kế một bộ kiểm thử (test suite), chuẩn bị môi trường kiểm thử, thực hiện các kiểm thử theo một chiến lược rõ ràng và giám sát quy trình thực hiện kiểm thử.

Sau khi hoàn thành việc kiểm thử mức hệ thống, sản phẩm sẽ được chuyển giao đến khách hàng. Khách hàng sẽ thực hiện một loạt các kiểm thử của họ, thường biết đến như là kiểm thử chấp nhận (acceptance testing).4 Kiểm thử dựa trên mô hình Kiểm thử dựa trên mô hình (Model-Based Testing - MBT) là một kỹ thuật kiểm thử với mục đích để sinh các ca kiểm thử tự động từ mô hình đặc tả các khía cạnh liên quan của hành vi hệ thống cần kiểm thử (System Under Testing - SUT ). Mô hình mô tả hệ thống cần kiểm thử từ góc nhìn của những vấn đề cần được kiểm thử. Ví dụ, một mô hình luồng điều khiển (control flow) của một phương thức sẽ mô hình khía cạnh luồng điều khiển đi qua các câu lệnh thực hiện của phương thức [56].

Cụ thể, thay vì thiết kế hàng trăm ca kiểm thử thủ công thì người thiết kế kiểm thử xây dựng mô hình trừu tượng của SUT, sau đó công cụ kiểm thử dựa trên mô hình sinh ra một tập các ca kiểm thử từ mô hình đó. Toàn bộ thời gian thiết kế kiểm thử được giảm xuống, và ưu điểm nữa là có thể sinh ra một loạt các tập ca kiểm thử khác nhau từ cùng một mô hình bằng việc sử dụng các tiêu Chương 2. Kiến thức cơ sở 16 chí lựa chọn kiểm thử khác nhau [9].2 thể hiện năm bước chính của quy trình kiểm thử dựa trên mô hình.2: Quy trình kiểm thử dựa trên mô hình [9]. Bước 1 Mô hình hóa: Người tạo mô hình sẽ tạo ra các mô hình cho hệ thống cần kiểm thử hoặc môi trường của hệ thống cần kiểm thử.

Sau khi mô hình được tạo ra, các mô hình cần được kiểm tra để đảm bảo tính nhất quán và có được các hành vi mong muốn.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Luận Án Tiến Sĩ: Kiểm Thử Dựa Trên Mô Hình Với Tiếp Cận Mô Hình Hóa Chuyên Biệt Miền là một nghiên cứu chuyên sâu về phương pháp kiểm thử phần mềm dựa trên mô hình, tập trung vào việc áp dụng mô hình hóa chuyên biệt cho từng lĩnh vực cụ thể. Luận án này không chỉ cung cấp cái nhìn tổng quan về các kỹ thuật kiểm thử hiện đại mà còn đề xuất các giải pháp tối ưu hóa quy trình kiểm thử, giúp nâng cao độ chính xác và hiệu quả trong phát triển phần mềm. Đây là tài liệu hữu ích cho các nhà nghiên cứu, kỹ sư phần mềm và sinh viên đam mê lĩnh vực kiểm thử và đảm bảo chất lượng phần mềm.

Để mở rộng kiến thức về các phương pháp kiểm thử phần mềm, bạn có thể tham khảo Luận văn thạc sĩ kiểm định phần mềm bằng kỹ thuật hộp đen, nghiên cứu về các kỹ thuật kiểm thử không cần hiểu biết về mã nguồn. Ngoài ra, Luận văn thạc sĩ nghiên cứu một số giải pháp kiểm thử giao diện tự động sử dụng Ranorex cung cấp cái nhìn chi tiết về kiểm thử giao diện tự động, một khía cạnh quan trọng trong phát triển phần mềm. Cuối cùng, Luận án tiến sĩ công nghệ thông tin đặc tả và kiểm chứng từng phần cho phần mềm dựa trên biểu đồ tuần tự là tài liệu chuyên sâu về kiểm chứng phần mềm, giúp bạn hiểu rõ hơn về các phương pháp đảm bảo chất lượng phần mềm.