Bài viết đưa ra một số khái niệm cơ bản, định nghĩa về độ bao phủ và một số độ bao phủ liên quan, cách tiếp cận và phương pháp đưa ra để sinh các ca kiểm thử từ các mô hình thiết kế UML và OCL.
Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số 11 (31), tháng 6/2014 Phương pháp sinh ca kiểm thử tự động từ mô hình thiết kế UML ngơn ngữ ràng buộc đối tượng OCL An Approach for Automated Test Case Generation from UML Models and OCL Vũ Thị Đào, Tô Văn Khánh Nguyễn Việt Hà Abstract: In software development, testing is the crucial and integral process to produce a reliable and high quality system Automated test case generation plays a significant role in practice and a lot of researches on it has been investigated in recent years The paper proposes an automated test case generation approach based on UML sequence diagrams, class diagrams and Object Constraint Language (OCL) Comparing with other test case generation, the approaches [7,8,9] have achieved message paths coverage, pre- and postcondition coverage while our approach also gain extra boundary coverage and association-end multiplicity coverage In addition, the UML sequence diagrams can contain other nested sequence diagrams and apply to interactive operators such as alternative, option, break, sequence, negative, strict, and ignore Our approach is aimed at high coverage of testing and reducing the number of test cases for generation Keyword: Test case, pre- and post-condition, Unified Modelling Language, UML sequence diagram, class diagram, Object Contraint Language, Finite state machine, predicate I MỞ ĐẦU Trong phát triển dự án phần mềm, kiểm thử phần mềm giai đoạn quan trọng thực cần thiết để tạo hệ thống phần mềm có độ tin cậy cao, có chất lượng tốt [1,2] Cơng việc thiết kế ca kiểm thử bước khó thách thức giai đoạn kiểm thử, đặc biệt hệ thống lớn vốn phức tạp để kiểm thử mà đòi hỏi số lượng lớn ca kiểm thử tạo Kiểm thử viên tốn nhiều thời gian công sức để thiết kế ca kiểm thử có độ bao phủ tốt tìm nhiều lỗi hệ thống Vì vậy, trình sinh ca kiểm thử tự động trở nên thực cần thiết, phần mềm lớn phức tạp Quá trình làm giảm giá thành phát triển phần mềm, tiết kiệm thời gian, nâng cao chất lượng phần mềm, tăng độ tin cậy, độ bao phủ yêu cầu phần mềm [3] Trong cách tiếp cận kiểm thử dựa mơ hình có ba hướng: kiểm thử từ máy hữu hạn trạng thái, kiểm thử từ mơ hình đặc tả (như Z,B,Spec# ) kiểm thử từ mơ hình UML [4] • Kiểm thử dựa máy hữu hạn trạng thái loại kiểm thử dựa mơ hình nút máy trạng thái tương ứng với trạng thái cụ thể hệ thống cạnh tương ứng hành động, trình sinh ca kiểm thử dựa vào việc duyệt máy hữu hạn trạng thái Hạn chế mơ hình chọn trạng thái hệ thống cho thích hợp dễ bùng nổ khơng gian trang thái Để khắc phục trường hợp bùng nổ không gian trạng thái, mở rộng máy hữu hạn trạng thái cách biểu diễn trạng thái dạng trạng thái tượng trưng (symbolic state) điều kiện chuyển đổi - 70 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT trạng thái [4] Hướng tiếp cận thường thích hợp với dự án vừa nhỏ • Trong hướng tiếp cận thứ hai, giai đoạn chọn ngôn ngữ đặc tả tiêu chuẩn bao phủ chẳng hạn bao phủ điều kiện (condition coverage), sau ca kiểm thử sinh dựa độ bao phủ Một công cụ thành công theo hướng tiếp cận Spec Explorer Microsoft, cơng cụ tích hợp với kiến trúc Microsoft.net sử dụng phiên mở rộng C#, gọi Spec# [4] Hạn chế theo hướng kiểm thử viên phải biết thành thạo ngôn ngữ đặc tả sử dụng • Hướng tiếp cận cuối kiểm thử dựa mơ hình UML UML ngơn ngữ mơ hình hóa chuẩn để thiết kế phần mềm hướng đối tượng [5] Mô hình trạng thái UML mở rộng từ mơ hình hữu hạn trạng thái với trường hợp máy trạng thái lồng máy trạng thái song song [4] Hơn nữa, UML phản ánh khía cạnh khác hệ thống loại biểu đồ khác nhau, sử dụng với ngôn ngữ ràng buộc đối tượng OCL [6] OCL ngôn ngữ chuẩn, chấp nhận rộng rãi để viết ràng buộc mơ hình UML; ví dụ: viết ràng buộc cho thuộc tính biểu đồ lớp, bất biến (invariants) trạng thái, bảo vệ (guards) chuyển đổi trạng thái, ràng buộc biểu đồ tuần tự, tiền hậu điều kiện phương thức OCL giúp khắc phục thiếu sót hạn chế biểu đồ, giúp biểu diễn đặc tả, ràng buộc mà nhiều biểu đồ biểu diễn hết Do vậy, chọn theo hướng tiếp cận Hiện nay, hướng tiếp cận dựa vào mơ hình UML ngơn ngữ ràng buộc đối tượng OCL quan tâm nghiên cứu rộng rãi Theo [7, 8, 9] từ biểu đồ chuyển đổi sang mơ hình trung gian kịch [7], đồ thị xoắn [9] đồ thị tham số biến [8]; sau áp dụng thuật tốn tìm kiếm theo chiều sâu chiều rộng [7, 9] giải pháp ràng buộc thực thi tượng trưng [8] để sinh ca kiểm Tập V-1, Số 11 (31), tháng 6/2014 thử đạt độ bao phủ luồng thông điệp (message) điều kiện Một hướng khác theo [10] [11] xây dựng mơ hình trung gian hệ thống chuyển đổi nhãn trạng thái [10] đồ thị điều khiển cấu trúc[11] độ bao phủ tất luồng thông điệp Từ phương pháp tại, báo đề xuất phương pháp sinh ca kiểm thử việc đạt độ bao phủ luồng thơng điệp điều kiện mà cịn tạo liệu kiểm thử làm tăng độ bao phủ ca kiểm thử Chúng áp dụng phương pháp biến thay vị từ (predicates) để sinh liệu kiểm thử kết hợp với biểu đồ lớp OCL để làm tăng độ bao phủ chúng Phương pháp áp dụng cho biểu đồ lồng cho toán tử tương tác như: thay thế, lựa chọn, ngắt, tuần tự, phủ định, chặt chẽ bỏ qua Trong báo đưa phương pháp sinh ca kiểm thử tự động dựa biểu đồ UML, biểu đồ lớp ngôn ngữ ràng buộc đối tượng OCL Từ biểu đồ UML, xây dựng đồ thị tuần tự, sau duyệt đồ thị dựa vào thuật tốn tìm kiếm theo chiều sâu tìm kiếm theo chiều rộng để lựa chọn vị từ (predicates) sinh kịch khác Các vị từ chuyển đổi thành hàm vị từ áp dụng kỹ thuật hàm nhỏ [17] để sinh liệu kiểm thử cho kịch tương ứng Chúng kiểm tra với ràng buộc tiền hậu điều kiện phương thức Vì kịch kiểm thử thỏa mãn độ bao phủ luồng thông điệp, bao phủ biên bao phủ tiền hậu điều kiện Theo kịch sinh ra, chọn lớp liên quan, từ xây dựng biểu đồ lớp có mối quan hệ số quan hệ lớp Sau đó, sử dụng cơng cụ USE (UML Specification Environment) để kiểm tra thỏa mãn bất biến viết OCL kịch Do vậy, ca kiểm thử sinh thỏa mãn độ bao phủ cao: độ bao phủ luồng thông điệp, ràng buộc tiền hậu điều kiện, bao phủ biên bao phủ số mối quan hệ thực thể biểu đồ lớp - 71 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số 11 (31), tháng 6/2014 Bài báo bao gồm phần sau: phần II đưa số khái niệm bản, định nghĩa độ bao phủ số độ bao phủ liên quan Phần III trình bày cách tiếp cận phương pháp đưa để sinh ca kiểm thử từ mơ hình thiết kế UML OCL Minh họa ví dụ việc áp dụng phương pháp đưa trình bày phần IV, cuối kết luận II CƠ SỞ LÝ THUYẾT Sau số khái niệm liên quan đến trình sinh ca kiểm thử từ mơ hình UML (biểu đồ tuần tự, biểu đồ lớp) OCL, sau định nghĩa độ bao phủ kiểm thử đưa độ bao phủ liên quan II.1 Một vài khái niệm Ca kiểm thử: Một ca kiểm thử (test case) [I,D,O] I trạng thái ban đầu hệ thống nơi mà liệu kiểm thử đưa vào, D liệu kiểm thử O kết mong đợi hệ thống [2,12] Với ca kiểm thử cụ thể, kết mong đợi so sánh với kết thực tế kịch thực thi phần mềm Đồ thị tuần tự: Một đồ thị G= (V,E) V tập hợp đỉnh đồ thị G E tập hợp cạnh Trong G, đỉnh biểu diễn thông điệp tương tác hai đối tượng điều kiện (nếu có) biểu đồ tuần tự, cạnh nối hai đỉnh tồn có thơng điệp tương ứng xảy sau thơng điệp khác theo trình tự thời gian, ví dụ: từ biểu đồ Hình chuyển sang đồ thị Hình Đỉnh thông điệp khởi tạo kịch gọi gốc đồ thị, đỉnh tương ứng kết thúc thông điệp [7] Trong biểu đồ lồng biểu đồ khác, biểu đồ chuyển đổi thành đồ thị con, thông điệp hay đỉnh đồ thị đỉnh đỉnh vào đồ thị gọi đỉnh phức hay đỉnh cha đồ thị Hình Biểu đồ Hình Đồ thị Luồng (path): Một luồng P từ đỉnh si đến sk chuỗi đỉnh si, si+1, ,sk cặp đỉnh liền kề (si+j, si+j+1) tương ứng với cạnh đồ thị G với ≤ j< k-i Miền luồng (path domain): Xem xét luồng P đồ thị tuần tự, điều kiện luồng P tập hợp tất vị từ gắn với đỉnh đồ thị P Ví dụ, Hình 2, c ≤ đỉnh s2 Miền luồng P tập hợp tất giá trị liệu đưa vào cho luồng P mà thỏa mãn tất điều kiện vị từ P Biên: Miền luồng giới hạn đường biên Một đường biên xác định tập hợp điểm biên mà điểm làm cho điều kiện vị từ chuyển từ giá trị sang giá trị sai ngược lại [13] Trong Hình 2, điểm biên điểm liệu làm cho vị từ c ≤ chuyển từ giá trị sang sai ngược lại II.2 Các tiêu chuẩn bao phủ Một tiêu chuẩn thích hợp kiểm thử sử dụng để xác định tính hiệu phương pháp sinh ca kiểm thử đưa Nó giúp việc - 72 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT xem xét liệu tập ca kiểm thử chất lượng đủ số lượng chưa cho giai đoạn kiểm thử phần mềm Một tiêu chuẩn kiểm thử quy tắc tập quy tắc để tập các ca kiểm thử sinh thỏa mãn yêu cầu phần mềm bao phủ mơ hình đưa [4] Sau vài tiêu chuẩn bao phủ liên quan đạt phương pháp đưa II.2.1 Tiêu chuẩn luồng thông điệp Một luồng thông điệp biểu diễn hành vi kiểm thử mô tả tương tác đối tượng cần thiết tương ứng với chức hệ thống [14] Tiêu chuẩn đưa tập ca kiểm thử cho ca kiểm thử tạo luồng thơng điệp có xảy biểu đồ thực thi lần [15] Một luồng thông điệp đỉnh vào kết thúc đỉnh cuối luồng đồ thị II.2.2 Tiêu chuẩn kiểm thử biên xác định theo [13] Một tiêu chuẩn kiểm thử biên thỏa mãn cho vùng ranh giới không nhau, vùng b lựa chọn để kiểm thử hai điểm (ON-OFF) miền giá trị đầu vào, điểm cho kết vị từ q chọn đúng, điểm cho kết q sai Do vậy, điểm thỏa mãn luồng P xác định kết hợp với b điểm miền giá trị đầu vào phải gần điểm khác gần ranh giới Tiêu chuẩn kiểm thử biên tiêu chuẩn để chắn vùng biên kiểm thử tương xứng phù hợp Thay việc phát sinh loạt giá trị liệu kiểm thử, kiểm thử ranh giới xác định vị từ đơn giản Các ca kiểm thử sinh đạt chuẩn bao phủ cao [16] II.2.3 Tiêu chuẩn thỏa mãn số liên kết thực thể biểu đồ lớp [4] Sự kết hợp (association) mối quan hệ cấu trúc mô tả tập mối liên kết đối tượng số thể số đối tượng tham gia liên kết Tiêu chuẩn đòi hỏi thể cặp số phải tạo kiểm thử Ví dụ, Tập V-1, Số 11 (31), tháng 6/2014 lớp A có quan hệ với lớp khác B với số 1 phía lớp A phía lớp B cặp kết hợp số lớp A lớp B kiểm thử là: (1,0),(1,1),(1,4) II.2.4 Tiêu chuẩn tiền hậu điều kiện Xem xét các bất biến lớp, liên quan việc thực thi luồng thông điệp biểu đồ Ràng buộc nhấn mạnh vào bất biến lớp, tiền hậu điều kiện phương thức viết OCL Để thỏa mãn tiêu chuẩn kiểm thử phải đưa tập hợp ca kiểm thử từ biểu đồ mà ràng buộc thực thi lần III PHƯƠNG PHÁP SINH CÁC CA KIỂM THỬ DỰA TRÊN CÁC MƠ HÌNH THIẾT KẾ UML VÀ NGÔN NGỮ RÀNG BUỘC ĐỐI TƯỢNG OCL Kế thừa từ phương pháp sinh tự động ca kiểm thử từ mơ hình UML đạt độ bao phủ luồng thông điệp, điều kiện phương thức Chúng kết hợp với biểu đồ lớp để đạt độ bao phủ ràng buộc số mối quan hệ biểu đồ này, dùng phương pháp biến thay sinh tự động liệu kiểm thử để đạt độ bao phủ biên ca kiểm thử Thêm vào đó, kết hợp với OCL nhằm biểu diễn đặc tả mà mơ hình khơng thể biểu diễn được, với mục đích kiểm tra bất biến, điều kiện ràng buộc đối tượng Phương pháp áp dụng cho biểu đồ lồng cho toán tử tương tác như: thay thế, lựa chọn, ngắt, tuần tự, phủ định, chặt chẽ bỏ qua Trong phần này, đề xuất phương pháp để sinh ca kiểm thử từ biểu đồ tuần tự, biểu đồ lớp OCL Hình bước để sinh ca kiểm thử Phương pháp chia làm bước: • Bước chuyển đổi biểu đồ thành đồ thị • Sau duyệt qua đồ thị để chọn vị từ, vị từ chọn chuyển thành hàm vị từ • Sinh liệu kiểm thử ca kiểm thử từ hàm vị từ - 73 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT • Từ đồ thị kết hợp với tiền hậu điều kiện kiểm tra kịch • Sử dụng cơng cụ USE để kiểm tra bất biến viết OCL theo kịch sinh ràng buộc số biểu đồ lớp Phương thức sinh ca kiểm thử đạt độ bao phủ cao: độ bao phủ luồng thông điệp, ràng buộc tiền hậu điều kiện, bao phủ biên bao phủ số mối quan hệ thực thể biểu đồ lớp Tập V-1, Số 11 (31), tháng 6/2014 Một kiện MessageSet biểu diễn ba: {messageName; fromObject; toObject [/guard]} đó, messageName tên thơng điệp với ký hiệu nó, fromObject đối tượng gửi thơng điệp đi, toObject đối tượng nhận thơng điệp có điều kiện bảo vệ (guard) điều kiện để kiện xảy Vì chuyển đổi, đỉnh đồ thị tương ứng với ba trên, kiện xảy sau kiện khác tạo hai đỉnh liên tiếp thành cạnh đồ thị Các đỉnh có khơng có điều kiện bảo vệ vị từ đối tượng nhận gửi thông qua thông điệp Thông tin cần thiết lưu đỉnh tương ứng đồ thị Khi biểu đồ lồng đỉnh điểm vào đồ thị con, đỉnh gọi đỉnh phức (đỉnh cha), đỉnh đồ thị gọi đỉnh III.2 Chọn vị từ chuyển thành hàm vị từ Hình Các bước sinh ca kiểm thử III.1 Chuyển đổi biểu đồ thành đồ thị Sau có biểu đồ tuần tự, biểu diễn phương thức chuyển đổi từ biểu đồ sang đồ thị Để cơng thức hóa phương thức chuyển đổi, ta định nghĩa kịch bốn gồm có: {ScID; StartState; MessageSet; EndState} ScID số xác định kịch bản, StartState điểm bắt đầu kịch ScID, MessageSet tập kiện xảy kịch bản, EndState trạng thái mà hệ thống đến sau hoàn thành kịch trạng thái kết thúc Trong đồ thị có trạng thái bắt đầu có nhiều trạng thái kết thúc phụ thuộc vào kịch khác Để chọn vị từ, thực duyệt đồ thị Thuật toán duyệt đồ thị dùng thuật tốn tìm kiếm theo chiều rộng tìm kiếm theo chiều sâu để chắn đỉnh qua để chọn vị từ đồ thị Trong cách tiếp cận sử dụng thuật tốn tìm kiếm theo chiều sâu, duyệt từ đỉnh bắt đầu phát triển xa theo nhánh đồ thị, tạo đường từ điểm bắt đầu đến đỉnh kết thúc đồ thị nên kịch sinh dễ dàng thỏa mãn độ bao phủ luồng thông điệp Tất đỉnh xem đỉnh đơn trình duyệt Nếu có gặp đỉnh phức, việc duyệt đỉnh khởi tạo đỉnh vào đồ thị Trong suốt trình duyệt đồ thị, tìm kiếm vị từ đỉnh, từ vị từ chọn để sinh liệu kiểm thử tương ứng Trước sinh liệu kiểm thử, phải thực chuyển đổi vị từ thành hàm vị từ Xem xét tập liệu khởi tạo I0 , I0 bao gồm tất giá trị biến mà ảnh hưởng đến vị từ q luồng P đồ thị Như đề cập trên, chia hai điểm ON OFF cho ranh giới đưa thỏa mãn - 74 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT tiêu chuẩn kiểm thử biên Thực chuyển đổi biểu thức quan hệ vị từ thành hàm F (gọi hàm vị từ) Mục đích chuyển vị từ thành hàm F: để hàm phụ thuộc vào biến (chính liệu kiểm thử), phương pháp thay đổi giá trị biến để tìm giá trị liệu vùng biên gần vùng biên (để thỏa mãn tiêu chuẩn kiểm thử biên) Nếu vị từ q có dạng: (E1 op E2), E1, E2 biểu thức tốn học (với phép toán +, -, *, / mod) op tốn tử quan hệ F = (E1-E2) (E2-E1) phụ thuộc vào liệu hàm F có giá trị dương thỏa mãn liệu I0 Các toán tử quan hệ hàm F theo Bảng (Hàm abs hàm tính giá trị tuyệt đối) Bảng Toán tử quan hệ hàm F Vị từ Hàm vị từ F E1> E2 E1 - E2 E1 ≥ E2 E1 - E2 E1 < E2 E2 – E1 E1 ≤ E2 E2 – E1 E1 = E2 E1 - E2 E1 ≠ E2 abs(E1 - E2) Việc thay đổi liệu đầu vào I0 để hàm F giảm dần cuối đạt giá trị âm Khi hàm F đạt giá trị âm, tương ứng thay kết vị từ Do đó, kết việc chuyển đổi này, tìm điểm liệu làm cho kết vị từ thay đổi, tương ứng với vấn đề tìm giá trị nhỏ hàm F tương ứng Giá trị nhỏ đạt thơng qua việc thay đổi giá trị liệu đầu vào Việc xác định giá trị hàm F luồng thông điệp tạo liệu kiểm thử để ca kiểm thử đạt độ bao phủ biên III.3 Sinh liệu kiểm thử Tập V-1, Số 11 (31), tháng 6/2014 Các liệu kiểm thử sinh từ vị từ tương ứng với giá trị sai vị từ thỏa mãn luồng P đồ thị Thủ tục tìm kiếm mà sử dụng cho trình tìm kiếm giá trị nhỏ hàm vị từ phương thức thay giá trị biến[13] Phương thức dựa việc làm giá trị hàm F nhỏ với thay đổi giá trị đầu vào Giá trị liệu đầu vào ban đầu chọn ngẫu nhiên, bước giá trị liệu tăng giảm giá trị liệu khác giữ nguyên Giả sử có hai giá trị liệu Iin (trong miền biên giới hạn) Iout (ngoài miền biên giới hạn) sinh cách sử dụng cách tìm kiếm sau: • Hai điểm liệu nằm hai phía khác đường biên giới hạn • Để tìm kiếm hai điểm liệu này, loạt bước di chuyển tạo chiều xác định thủ tục tìm kiếm giá trị hàm F tính tốn lại sau lần di chuyển • Kích thước bước di chuyển tăng gấp đôi sau di chuyển thành công, việc nhằm cho phương thức tìm kiếm liệu kiểm thử nhanh Mỗi lần di chuyển thành cơng giá trị hàm vị từ giảm xuống Khi hàm F đạt giá trị âm (hoặc 0) giá trị liệu đưa Iin Iout ghi lại Các điểm lọc để tạo liệu kiểm thử, tương ứng với việc làm giá trị hàm vị từ nhỏ Việc lọc thực việc giảm kích thước bước so sánh giá trị hàm F với giá trị trước Do vậy, khoảng cách điểm liệu nhỏ việc giảm kích thước Với vị từ luồng kịch đồ thị tuần tự, sinh liệu kiểm thử tương ứng Phương pháp lặp lại với vị từ khác Kịch liệu tương ứng lưu vào tệp III.4 Thuật toán để sinh ca kiểm thử Trong mục chúng tơi trình bày thuật tốn để sinh ca kiểm thử từ đồ thị Input: Đồ thị (SDG) - 75 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT SDG = { S, //neu khong co dieu kien tuong ung If c no guard condition then t = {preC,I(a1,a2,…,a1),O(d1,d2,…,dm), postC} //preC:la tien dieu kien cua phuong thuc m // I(a1,a2,…,a1):tap cac gia tri dau vao cua m() tu //doi tuong gui //O(d1,d2,…,dm):tap cac ket qua đối tượng // nhận phuong thuc m() duoc thuc thi //postC: la hau dieu kien cua phuong thuc m() End If If c has guard condition then //tap hop cac dieu kien tren duong Pi c(v) = (c1,c2,…,cl) t = {preC,I(a1,a2,…,al),O(d1,d2,…,dm), c(v), postC} EndIf ti =ti ∪ t End For ∑ , q0 , F } Trong đó, S tập tất đỉnh đồ thị ∑ tập tất cạnh, cạnh biểu diễn chuyển trạng thái từ đỉnh sang đỉnh khác q0 đỉnh bắt đầu đồ thị F tập tất đỉnh kết thúc đồ thị Trong đỉnh ni ∈ S đồ thị kiện ei gồm : {messageName; fromObject; toObject [/guard]} messageName (m) thơng điệp, có đối tượng gửi fromObject đối tượng nhận toObject điều kiện guard c (nếu có) Với message mi đỉnh SDG có tiền hậu điều kiện (preCi postCi) Output: Các ca kiểm thử T, độ bao phủ thông điệp, độ bao phủ luồng thông điệp độ bao phủ tiền hậu điều kiện Giải thích: Từ đồ thị sinh ca kiểm thử (kịch bản) tức sinh tất đường từ đỉnh bắt đầu đến đỉnh kết thúc mà thỏa mãn tiền hậu điều kiện thông điệp ràng buộc Thuật tốn chi tiết mơ tả giả mã sau: Begin // liet ke tat ca cac duong tu dinh bat dau den dinh ket thuc //trong thi P= EnumerateAllPaths (SDG) // voi moi duong di thi For each path Pi ∈ P //bat dau tu dinh nx va nj la dinh hien tai nj = nx // preCi la tien dieu kien cua kich ban Sci chua // dinh nx preCi = FindPreCond (nx) //Ca kiem thu tuong ung kich ban Sci khoi tao rong ti ←φ For each node nj of path Pi //Su kien ej tuong ung voi nut nj va duoc dua //thong diep m tu doi tuong gui a den doi tuong //nhan b va dieu kien c ej = (m,a,b,c) Tập V-1, Số 11 (31), tháng 6/2014 T ← T ∪ ti End For Return (T) End Tập T luồng thông điệp (kịch bản) thỏa mãn tiền hậu điều kiện, bao gồm tập I O khái niệm ca kiểm thử Thêm vào đó, theo III.2 III.3 sinh liệu kiểm thử ca kiểm thử này, tập D Do đó, sinh I, O D (theo khái niệm ca kiểm thử II.1) III.5 Kiểm tra kịch thỏa mãn bất biến viết OCL Theo luồng thông điệp, chọn lớp thuộc tính liên quan, từ xây dựng biểu đồ lớp ràng buộc đối tượng viết OCL Biểu đồ lớp có mối quan hệ số mối quan hệ thực thể Sử dụng công cụ USE để tạo snapshot tương ứng với kịch thỏa mãn độ bao phủ số mối quan hệ biểu đồ lớp Từ kiểm tra theo kịch tạo có thỏa mãn bất biến viết OCL , tức ca kiểm thử có thỏa mãn bất biến đưa Như vậy, ca kiểm thử sinh đạt độ bao phủ cao: độ bao phủ luồng thông điệp, thỏa mãn ràng buộc tiền hậu điều kiện, bao phủ biên - 76 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số 11 (31), tháng 6/2014 bao phủ số liên kết thực thể biểu đồ lớp dịch Khi lựa chọn xong loại sản phẩm số lượng yêu cầu khách hàng phải cho đồng xu vào máy Phương pháp sinh ca kiểm thử áp dụng cho biểu đồ mà biểu đồ có tốn tử tương tác: thay thế, lựa chọn, ngắt, tuần tự, phủ định, chặt chẽ bỏ qua Trong toán tử có tốn hạng, biểu thức logic điều kiện cho biểu thức logic biểu đồ bên tốn hạng thực thi Trong biểu đồ có nhiều loại tốn tử tương tác khác nhau, biểu đồ lồng biểu diễn nên biểu đồ có cấu trúc phức tạp Do đó, chuyển sang đồ thị tương ứng tạo nên đồ thị lồng nhiều mức, điều kiện gắn với đỉnh (có thể đỉnh đỉnh cha) tương ứng IV.1 Chuyển biểu đồ máy bán hàng tự động thành đồ thị sinh kịch Theo phương thức trình bày mục III.1 Việc chuyển đổi biểu đồ sang đồ thị máy bán hàng tự động minh họa Hình Hình 4(a) đưa biểu đồ máy bán hàng tự động đồ thị chuyển đổi Hình 4(b) Hình 4(c) minh họa năm kịch sinh từ đồ thị Như vậy, so với kết đạt từ báo [7,8,9] ca kiểm thử sinh phương pháp đưa thỏa mãn thêm độ bao phủ biên (khi tạo liệu kiểm thử) độ bao phủ số biểu đồ lớp IV VÍ DỤ ÁP DỤNG Trong phần chúng tơi minh họa phương pháp thuật tốn đề xuất ví dụ với máy bán hàng tự động Trong máy bán hàng tự động bán loại nước uống khách hàng cho đồng xu vào máy Hình 4(a) minh họa biểu đồ UML máy bán hàng tự động Khi máy bán hàng tự động bật lên, khách hàng bắt đầu thực giao dịch, thơng tin loại sản phẩm khác có sẵn hiển thị hình máy, giả sử có hai loại nước uống nước cafe Khi khách hàng chọn loại hình chi tiết sản phẩm giá thành, số lượng tối đa mua giao dịch hiển thị Khách hàng chọn loại sản phẩm số lượng sản phẩm cần mua Giả sử điều kiện số lượng sản phẩm lần mua không 10 sản phẩm (NoOfPro ≤ 10), máy không phân phối nhiều 10 sản phẩm loại giao Hình 4(a) Biểu đồ máy bán hàng tự động Hình 4(b) Đồ thị máy bán hàng tự động - 77 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Hình 4(c) Năm kịch sinh ra, biểu diễn dạng bốn IV.2 Sinh liệu kiểm thử từ vị từ chọn từ đồ thị Từ đồ thị chuyển đổi, thực thuật toán tìm kiếm theo chiều sâu đồ thị để chọn vị từ gắn với đỉnh đồ thị Giả sử từ đồ thị chọn điều kiện c2 nghĩa ReturnMoney ≥ 0, ReturnMoney số tiền máy tự động trả lại cho khách hàng số tiền khách hàng cho vào máy bán hàng(amount) nhiều số tiền mua sản phẩm ReturnMoney = amount – totalMoney,trong totalMoney = NoOfPro1*Price1 + NoOfPro2*Price2 với NoOfPro1 số lượng loại sản phẩm thứ khách hàng yêu cầu; NoOfPro2 số lượng loại sản phẩm thứ khách hàng yêu cầu; Price1: giá sản phẩm loại thứ 1; Price2: giá sản phẩm loại thứ Xem xét đường biên kết hợp với vị từ (ReturnMoney ≥ 0) Giả sử I0 liệu khởi tạo: I0 = [(5,5), 200], (NoOfPro1=NoOfPro2=5 Tiếp tục tăng gấp đôi bước dịch chuyển NoOfPro + 2x2 =11, bị vi phạm ràng buộc NoOfPro ≤ 10 loại sản phẩm chọn giao dịch Vì vậy, theo thuật tốn lại giảm kích thước di chuyển xuống Bây thay NoOfPro = 11, NoOfPro=9, [(NoOfPro1, NoOfPro2),amount] = [(9,9),400] Hàm F tính là: ReturnMoney = 400- 2x(9x15) = 130, giá trị hàm F dương Ta lại tiếp tục giảm kích thước bước dịch chuyển xuống nửa giá trị giảm Vì vậy, NoOfPro = 9+1= 10 F = 4002x(15x10) = 100 Nhưng hàm F ≠ 0, hàm chưa đạt giá trị nhỏ [17] Tiếp tục xét biến hàm F lại tăng giảm bước dịch chuyển để thực giảm hàm F Bây giá trị NoOfPro giữ nguyên không đổi 10 số lượng tiền cho vào máy bán hàng thực giảm theo bước sau Với [(NoOfPro1, oOfPro2),amount)=[(10,10),399], F có giá trị là: F= (399- 2x(10x15)= 99 Sau đó, tiếp tục lặp lại để giảm số tiền amount sau: [(10,10),397], [(10,10),393], [(10,10),385], [(10,10),369], [(10,10),337], [(10,10),273], kích thước bước dịch chuyển tăng gấp đôi lần lặp, liệu [(10,10),273] hàm F = 273 – x (10x15) = -27, tức hàm F có giá trị âm điểm liệu [(10,10),273] Khi hàm F có giá trị âm với kích thước bước dịch chuyển 64; lấy hai điểm liệu khởi tạo Iin: [(10,10),337] and Iout: [(10,10),273] Sau đó, tiếp tục giảm kích thước dịch chuyển xuống nửa từ 64 chuyển xuống 32 Vì vậy, amount = 337 – 32 = 305, với điểm liệu [(10,10),305] F có giá trị 5, giá trị - 78 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT dương Do đó, thay Iin [(10,10),305] cho giá trị [(10,10),337] Quá trình lại lặp lại, giảm kích thước dịch chuyển từ 32 xuống 16 305-16 = 289 hàm F = 289- 2x( 10x15) = -11 Hàm F chuyển sang giá trị âm, lại thay Iout [(10,10),289] cho giá trị liệu [(10,10),273] Giá trị liệu Iin Iout có nhờ việc giảm giá trị cho bước dịch chuyển Hàm F = 0, liệu là[(10,10),300]; F = 300 – 2x(10x15) =0 Trong trường hợp này, ta có liệu kiểm thử Iin: [(10,10),305], Iout: [(10,10),289] Bboundary: [(10,10),300] Từ kịch hình (c) với liệu kiểm thử sinh tương ứng với vị từ (ReturnMoney ≥ 0) là: : (stateX, s1, s6, s7, s8, s9,s12,stateY, [(10,10),289]) : (stateX, s1, s6, s7, s8, s9,s10,s11,s12,stateY, [(10,10),305]) : (stateX, s1, s6, s7, s8, s9,s10,s11,stateY, [(10,10),300]) Chỉ có hai điểm liệu kiểm thử Iin Iout , chúng điểm liệu nhỏ để thỏa mãn vị từ (ReturnMoney ≥ 0) Tương tự liệu kiểm thử sinh thỏa mãn tất vị từ gắn với đỉnh duyệt đồ thị Do đó, điểm liệu tương ứng với giá trị logic khác thỏa mãn điều kiện Thủ tục sinh liệu kiểm thử lặp lại cho tất vị từ tương ứng với kịch đồ thị Khi sinh kịch kiểm thử điều kiện tiền hậu điều kiện phương thức kiểm tra Vì vậy, ca kiểm thử sinh có độ bao phủ luồng thơng điệp, độ bao phủ biên độ bao phủ tiền hậu điều kiện IV.3 Kiểm tra kịch sinh thỏa mãn bất biến viết OCL Theo luồng thông điệp chọn lớp thuộc tính liên quan, từ xây dựng biểu đồ lớp ràng buộc viết OCL Giả sử chọn kịch máy bán hàng tự động: Tập V-1, Số 11 (31), tháng 6/2014 Chọn lớp liên quan đến kịch gồm có: Controller, Product CoinController Từ xây dựng biểu đồ lớp có số mối quan hệ Hình Hình Biểu đồ lớp liên quan với đối tượng luồng thông điệp chọn Sử dụng công cụ USE để tạo biểu đồ đối tượng theo kịch (xem Hình 6) số mối quan hệ lớp thỏa mãn Từ kiểm tra bất biến, giả sử kiểm tra ràng buộc: số lượng sản phẩm bán giao dịch không vượt 20 số lượng coinController có 1, viết OCL sau: Controller.allInstances.forAll(d| d.product → size()