Những nghiên cứu liên quan

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 51 - 54)

Hiện nay, có nhiều phương pháp theo hướng tiếp cận của bài toán đưa ra của các tác giả khác nhau cùng nghiên cứu về việc sinh tự động các kịch bản và dữ liệu kiểm thử tự động từ các biểu đồ UML. Ta có thể liệt kê các phương pháp sinh kiểm thử tự động từ các biểu đồ UML của các nhóm tác giả được đề cập trong [97, 84]. Nghiên cứu đề xuất trong [97, 84], các tác giả đã xây dựng phương pháp chuyển đổi từ biểu đồ trạng thái [97] hay biểu đồ cộng tác [84] sang một đồ thị hoặc cây trung gian. Cả hai phương pháp này đều duyệt đồ thị và cây trung gian theo thứ tự trên xuống để chọn các vị từ điều kiện. Sau đó, phương pháp của các nhóm tác giả này áp dụng kỹ thuật hàm nhỏ nhất để sinh dữ liệu kiểm thử. Các cách tiếp cận đều sử dụng các biểu thức tại các vùng biên trong việc sinh dữ liệu kiểm thử để đạt được tiêu chuẩn bao phủ biên, vì vậy số lượng các ca kiểm thử sinh ra có thể giảm. Tuy nhiên, trong phương pháp sinh dữ liệu kiểm thử việc xét các vị từ chưa xét đến biến có kiểu dữ liệu khác nhau chẳng hạn như kiểu cấu trúc động. Hơn nữa, hai phương pháp sinh ra các kịch bản kiểm thử tự động trên đều từ hai biểu đồ khác nhau là: biểu đồ trạng thái và biểu đồ cộng tác. Vì biểu đồ tuần tự đặc tả chi tiết hơn và giàu hành vi hơn so với các biểu đồ khác nên tác giả nghiên cứu các phương pháp sinh kịch bản kiểm thử từ biểu đồ tuần tự UML và kết hợp với các ràng buộc từ biểu đồ lớp để sinh ra dữ liệu kiểm thử.

Một hướng tiếp cận khác là việc sử dụng kiểm chứng mơ hình (model checking) và các biểu đồ hoạt động được hỗ trợ của cách tiếp cận được đưa ra

Hình 3.1: Sinh ca kiểm thử sử dụng kiểm chứng mơ hình theo cách tiếp cận [17].

trong [17]. Hình 3.1 mơ tả biểu đồ hoạt động UML được chuyển đổi thành mơ hình hình thức với đầu vào NuSMV [18] (là một cơng cụ kiểm chứng mơ hình dựa trên các biểu đồ nhị phân quyết định). Tiếp theo, các thuộc tính của hệ thống biểu diễn dưới dạng cơng thức logic thời gian tuyến tính (Linear Temporal Logic – LTL) hoặc logic cây tính tốn (Computational Tree Logic – CTL) được sinh ra sử dụng các tiêu chuẩn bao phủ. Cuối cùng, các thuộc tính được áp dụng với đầu vào NuSMV sử dụng kiểm chứng mơ hình để sinh ra các tuần tự kiểm thử theo yêu cầu. Tuy nhiên, việc sinh kiểm thử dựa trên kiểm chứng mơ hình có thể dẫn đến bùng nổ không gian trạng thái khi các biểu đồ thiết kế phức tạp và có nhiều thuộc tính.

Hướng tiếp cận sinh kiểm thử tự động từ biểu đồ tuần tự UML và OCL cũng được quan tâm và nghiên cứu rộng rãi. Theo [65, 115] từ biểu đồ tuần tự chuyển đổi sang mơ hình trung gian là cây kịch bản [65], đồ thị xoắn [115]; sau đó áp dụng thuật tốn tìm kiếm theo chiều sâu hoặc chiều rộng [65, 115] để sinh các ca kiểm thử đạt được độ bao phủ dịng thơng điệp và điều kiện. Phương

pháp trong [115] tập trung việc sinh dữ liệu kiểm thử cho biểu đồ tuần tự để kiểm thử các phương thức đa hình. Một hướng khác theo [16] và [72] xây dựng mơ hình trung gian là hệ thống chuyển đổi nhãn trạng thái [16] hoặc CFG [72] và dựa trên độ bao phủ là tất cả các dịng thơng điệp. Theo các tuần tự kiểm thử sinh ra, dữ liệu kiểm thử được đưa ra từ việc tìm giá trị của biến để thỏa mãn hệ các ràng buộc. Tuy nhiên, các phương pháp cũng chưa xét hết với các loại toán tử và các trường hợp lồng nhau trong biểu đồ tuần tự UML 2.0. Cụ thể, phương pháp trong [72] chỉ giải quyết với năm loại toán tử; các cách tiếp cận [65, 115, 16] cũng nêu chung, chưa xét từng loại riêng biệt.

Trong các hướng tiếp cận sinh dữ liệu kiểm thử từ các ràng buộc OCL trong các biểu đồ UML có nhiều kỹ thuật khác nhau sử dụng chuyển OCL thành các biểu diễn trung gian là đầu vào của các bộ giải như bộ giải SAT [101, 63], bộ giải SMT [20], kiểm thử chia miền (partition testing) [7, 65, 106], và logic hình thức [45]. Trong đó chỉ có hướng tiếp cận trong [63, 45] hỗ trợ ba giá trị logic (true, false và undefined) nhưng không sinh dữ liệu kiểm thử. Giá trị undefined hữu ích trong biểu diễn các tiền điều kiện và hậu điều kiện của các thông điệp bất đồng bộ trong biểu đồ tuần tự. Khi các hậu điều kiện biểu diễn bằng biểu thức bao gồm các tiền điều kiện chưa xác định được giá trị (undefined) tại thời điểm đó. Chính vì vậy, một vấn đề cần xem xét khi sinh dữ liệu kiểm thử từ các ràng buộc OCL trong các biểu đồ UML 2.0 với việc sử dụng cả ba giá trị logic. Trung Dinh–Trong và các đồng sự trong [30] đã đề xuất một phương pháp hệ thống để sinh ra dữ liệu kiểm thử từ các biểu đồ thiết kế UML. Đóng góp chính của nhóm tác giả Trung Dinh–Trong là việc sinh ra đồ thị tham số biến (Variable Assignment Graph – VAG) từ biểu đồ tuần tự UML và biểu đồ lớp mà đồ thị tham số biến bao gồm đủ các thông tin cần thiết cho mục đích sinh dữ liệu kiểm thử. Đồ thị tham số biến là đồ thị trực tiếp vì vậy các phương pháp dựa trên đồ thị để chọn các đường dẫn thực thi (như các phương pháp tiếp cận trong [8, 105, 73] có thể áp dụng cho VAG). Phương pháp chuyển đổi các ràng buộc trên các đường dẫn vào cơng cụ phân tích của Alloy, và việc sinh các đường dẫn ràng buộc được dựa trên quy tắc có hệ thống, do đó có khả năng tự động. Tuy nhiên, cách tiếp cận chưa đưa ra việc giải quyết cho tất cả các toán tử và các trường hợp lồng nhau của biểu đồ tuần tự UML; kiểu dữ liệu trong các ràng buộc của Alloy hỗ trợ kiểu nguyên, thực và các kiểu dữ liệu của các thuộc tính

khác được khai báo thành các ký hiệu, khơng đề cập gì đến kiểu dữ liệu động. Mặc dù có nhiều phương pháp sinh dữ liệu kiểm thử và các kịch bản kiểm thử, để đạt được mục tiêu chúng có độ bao phủ tốt và giải quyết triệt để các đặc trưng của biểu đồ UML được chọn vẫn là một bài tốn mở, chưa có lời giải thỏa đáng. Hơn nữa, việc tìm ra các dữ liệu kiểm thử thỏa mãn các ràng buộc trong trường hợp biến số và cấu trúc động cũng cần được phát triển và cải tiến. Các phương pháp trên chưa lấy các ràng buộc, các bất biến viết bằng OCL trong các biểu đồ lớp để các kịch bản kiểm thử được sinh ra cũng thỏa mãn các ràng buộc tương ứng nhằm mục đích tạo chúng có độ bao phủ tốt hơn và có thể tìm được nhiều lỗi hơn trong các ứng dụng. Việc sinh dữ liệu kiểm thử phụ thuộc vào các kiểu dữ liệu khác nhau trong các loại ràng buộc và thêm giá trị logic undefined trong OCL thì khơng phải phương pháp nào cũng giải quyết được.

Một phần của tài liệu (LUẬN án TIẾN sĩ) các kỹ thuật sinh tự động dữ liệu kiểm thử dựa trên các biểu đồ UML luận án TS máy tính 624801 (Trang 51 - 54)