Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công Nghệ Thông Tin, it, phầm mềm, website, web, mobile app, trí tuệ nhân tạo, blockchain, AI, machine learning - Công nghệ thông tin ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN HÒA PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘ NG TỪ BIỂU ĐỒ TUẦN TỰ UML, BIỂU ĐỒ LỚP VÀ RÀNG BUỘC OCL LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM HÀ NỘI – 2016 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ NGUYỄN VĂN HÒA PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘ NG TỪ BIỂU ĐỒ TUẦN TỰ UML, BIỂU ĐỒ LỚP VÀ RÀNG BUỘC OCL Ngành: Công nghệ thông tin Chuyên ngành: Kỹ thuật phần mềm Mã số: 60480103 LUẬN VĂN THẠC SĨ KỸ THUẬT PHẦN MỀM CÁN BỘ HƯỚNG DẪN KHOA HỌC: PGS. TS. PHẠM NGỌC HÙNG HÀ NỘI – 2016 VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING TECHNOLOGY NGUYEN VAN HOA A METHOD AND TOOL SUPPORTING FOR AUTOMATED TESTING FROM UML SEQUENCE DIAGRAMS, CLASS DIAGRAMS AND OCL CONSTRAINS THE MS. THESIS INFORMATION TECHNOLOGY Supervisor: Assoc. Prof., PHAM NGOC HUNG, PhD HÀ NỘI – 2016 i LỜI CẢM ƠN Đầu tiên, tôi xin gửi lời cảm ơn chân thành và sâu sắc tới thầy Phạm Ngọc Hùng – Người đã trực tiếp hướng dẫn nhiệt tình, giúp đỡ và động viên tôi rất nhiều, cho tôi có cơ hội được tiếp xúc với các tài liệu tham khảo quý giá, góp ý cho tôi những lờ i khuyên chân thành trong quá trình nghiên cứu để hoàn thành đề tài này. Tiếp theo tôi xin gửi lời cảm ơn đến các thầy cô giảng viên Trường Đại họ c Công Nghệ - Đại học Quốc Gia Hà Nội – những người đã tận tâm truyền đạt những kiến thứ c quý báu làm nền tảng cho tôi suốt 2 năm học. Cuối cùng, tôi xin gửi lời biết ơn sâu sắc tới gia đình vì đã luôn ở bên cạ nh tôi, mang lại cho tôi nguồn động viên tinh thần to lớn và tạo mọi điều kiện thuận lợ i cho tôi trong quá trình học tập và hoàn thành luận văn này. Với luận văn này tôi rất mong nhận được ý kiến đóng góp từ Thầy, Cô giáo và các bạn quan tâm để hoàn thiện và phát triển nhiều hơn về các phương pháp mới trong kiểm thử phần mềm. Xin trân trọng cảm ơn Hà Nội, ngày 10 tháng 10 năm 2016 Học viên Nguyễn Văn Hòa ii TÓM TẮT Luận văn này trình bày một phương pháp nghiên cứu tự động hóa quá trình kiể m thử dự án phần mềm từ biểu đồ tuần tự UML 2.0. Hướng nghiên cứu dựa trên lý thuyế t kiểm thử dựa trên mô hình. Mục tiêu đề ra là tự động hóa quá trình kiểm thử , nâng cao hiệu quả kiểm thử, tiết kiệm chi phí và thời gian phát triển dự án. Phương pháp được đề xuất với nội dung chính như sau. Đầu vào là biểu đồ tuần tự UML 2.0 lưu giữ dưới dạ ng tệp xmi. Chương trình kiểm thử biến đổi tệp xmi bằng cách bóc tách các thông điệ p, toán tử và các ràng buộc được đưa vào trong thiết kế, từ đó vẽ đồ thị dòng điều khi ển tương ứng. Từ đồ thị dòng điều khiển sử dụng thuật toán dò tìm, thuật toán sinh ca kiểm thử cho các toán tử song song có các điểm chia sẻ dữ liệu tìm ra các đường đi từ điểm bắt đầ u cho tới điểm kết thúc gọi là các đường kiểm thử. Tập các đường kiểm thử được chia tương ứng thành 3 cấp độ kiểm thử khác nhau. Các ràng buộc trên mỗi đường đi được thu thậ p và giải lấy kết quả dựa trên công cụ SMT solver kết hợp phương pháp sinh ngẫ u nhiên. Kết quả thu được sau khi giải hệ chính là đầu vào cho các ca kiểm thử tương ứng. Cuố i cùng trích xuất ra tệp excel là các ca kiểm thử theo từng độ bao phủ dùng cho kiểm thử thiết kế. Để kiểm nghiệm mức độ khả thi của phương pháp, một công cụ hỗ trợ đã được cài đặt và thử nghiệm với một số ví dụ đơn giản nhằm minh chứng cho tính đúng đắn và hiệu quả của phương pháp trên. Kết quả thực nghiệm cho thấy hiệu quả của các ca kiểm thử cũng là khả quan để áp dụng cho các công ty phát triển phần mềm. Từ khóa: Kiểm thử dựa trên mô hình, kiểm thử tự động, biểu đồ tuần tự, đồ thị dòng điều khiển, kiểm thử luồng song song, kiểm thử có chia sẻ dữ liệu luồng song song. iii ABSTRACT The content of this thesis is research and propose a method to generate a set of test cases from the UML 2.0 Sequence diagrams. Based on model-based testing in order to automate the testing process, increase effectiveness, reduce cost and time of testing. The method follows the following steps. At first, in order to have the input model for testing, it analyzes and divides the input diagram into fragments. These fragments can be Sequential or nested based on their relationship. After that, it generates the corresponding control flow graph for the input Sequence diagram. The final control flow graph is analyzed to generate a set of testing paths. Symbolic Execution (SE) technique is used to create reStrictions associated with that set of testing paths. Finally, the method uses SMT solver to solve the set of reStrictions to find solution and then to generate a set of test cases. A tool is also implemented and tested with some simple examples in order to show the correctness and effectiveness of the method. The experimental results give us the potential application of the tool in automation testing in companies. Keywords: Model base testing, automated testing, Sequence diagram, control flow testing, Parallel threading testing, threading testing with data shared. iv LỜI CAM ĐOAN Tôi xin cam đoan rằng những nghiên cứu về sinh tự động bộ kiểm thử từ biểu đồ tuần tự được trình bày trong luận văn này dưới sự hướng dẫn của thầy Phạm Ngọ c Hùng là của tôi. Những gì tôi viết ra không sao chép từ các tài liệu, không sử dụng các kết quả của người khác mà không trích dẫn cụ thể. Tôi xin cam đoan công cụ kiểm thử tự động tôi trình bày trong luận văn là do tôi tự phát triển, không sao chép mã nguồn của người khác. Nếu sai tôi hoàn toàn chị u trách nhiệm theo quy định của Trường Đại học Công Nghệ - Đại học Quốc Gia Hà Nội. Hà nội, ngày 10 tháng 10 năm 2016 Học viên: Nguyễn Văn Hòa v MỤC LỤC LỜI CẢM ƠN........................................................................................................................ i TÓM TẮT ............................................................................................................................ii ABSTRACT ........................................................................................................................iii LỜI CAM ĐOAN ................................................................................................................ iv MỤC LỤC ............................................................................................................................ v DANH SÁCH BẢNG BIỂU .............................................................................................. vii DANH SÁCH HÌNH VẼ...................................................................................................viii BẢNG THUẬT NGỮ VIẾT TẮT ...................................................................................... ix Chương 1: GIỚI THIỆU....................................................................................................... 1 Chương 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰA TRÊN MÔ HÌNH . 3 2.1 Quy trình chung của kiểm thử dựa trên mô hình...................................................... 3 2.2 Đồ thị dòng điều khiển ............................................................................................. 4 2.3 Các độ đo kiểm thử ................................................................................................... 5 Chương 3: PHƯƠNG PHÁP SINH ĐỒ THỊ DÒNG ĐIỀU KHIỂN TỪ BIỂU ĐỒ TUẦ N TỰ......................................................................................................................................... 7 3.1 Thuật toán biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển ............................ 7 3.1.1. Thuật toán sinh đồ thị dòng điều khiển ................................................................ 7 3.1.2. Đồ thị dòng điều khiển tương ứng với các phân đoạn ....................................... 13 3.2 Kỹ thuật sinh kịch bản kiểm thử............................................................................. 21 3.2.1. Kịch bản kiểm thử cho các toán từ thông thường .............................................. 21 3.2.2. Kịch bản kiểm thử cho các phân đoạn song song (Par, Seq) ............................. 26 3.3 Xây dựng hệ ràng buộc ........................................................................................... 28 3.4 Giải hệ sử dụng SMT-Solver .................................................................................. 29 Chương 4: CÔNG CỤ VÀ THỰC NGHIỆM .................................................................... 31 4.1 Giới thiệu công cụ và môi trường thực nghiệm ..................................................... 31 4.2 Thực nghiệm ........................................................................................................... 33 vi 4.3 Ý nghĩa thực nghiệm .............................................................................................. 37 Chương 5: KẾT LUẬN ................................................................................................ 39 TÀI LIỆU THAM KHẢO .................................................................................................. 41 vii DANH SÁCH BẢNG BIỂU ảng 2.1 Ca kiểm thử độ bao phủ yếu ................................................................................. 6 ảng 2.2 Ca kiểm thử độ bao phủ trung bình....................................................................... 6 ảng 2.3 Ca kiểm thử độ bao phủ mạnh .............................................................................. 6 ảng 3.1 Các khóa cơ bản và ý nghĩa trong tệp xmi ............................................................ 7 ảng 3.2 Dữ liệu thu thập tương ứng theo các nốt được nối với nhau .............................. 23 ảng 4.1 Môi trường thử nghiệm công cụ sinh ca kiểm thử từ thiết kế............................. 32 viii DANH SÁCH HÌNH VẼ Hình 2.1 Qui trình kiểm thử dựa trên mô hình. .................................................................... 3 Hình 2.2 Đồ thị dòng điều khiển tương ứng của phân đoạn Par. ......................................... 5 Hình 3.1 Đồ thị CFG tương ứng cho phân đoạn Alt. ......................................................... 15 Hình 3.2 Đồ thị CFG tương ứng cho phân đoạn Opt. ........................................................ 15 Hình 3.3 Đồ thị CFG tương ứng cho phân đoạn Loop. ...................................................... 16 Hình 3.4 Đồ thị CFG tương ứng cho phân đoạn Break. ..................................................... 16 Hình 3.5 Đồ thị CFG tương ứng cho phân đoạn Par. ......................................................... 16 Hình 3.6 Đồ thị CFG tương ứng cho phân đoạn Seq. ........................................................ 17 Hình 3.7 Đồ thị CFG tương ứng cho phân đoạn Ignore. .................................................... 18 Hình 3.8 Đồ thị CFG tương ứng cho phân đoạn Consider. ................................................ 18 Hình 3.9 Đồ thị CFG tương ứng cho phân đoạn Neg......................................................... 19 Hình 3.10 Đồ thị CFG tương ứng cho phân đoạn Assert. .................................................. 20 Hình 3.11 Đồ thị CFG tương ứng cho phân đoạn Strict..................................................... 20 Hình 3.12 Ví dụ cây đồ thị cần duyệt. ................................................................................ 22 Hình 3.13 Đồ thị dòng điều khiển. ..................................................................................... 23 Hình 3.14 Ví dụ về ràng buộc OCL được khai báo trong thiết kế. .................................... 29 Hình 3.15 Mô tả công cụ SMT Solver ............................................................................... 30 Hình 4.1 Cấu trúc công cụ thực nghiệm. ............................................................................ 31 Hình 4.2 Đầu vào của ví dụ 1. ............................................................................................ 34 Hình 4.3 Đầu ra đồ thị CFG cho ví dụ 1. ........................................................................... 35 Hình 4.4 Ca kiểm thử độ bao phủ yếu cho ví dụ 1. ............................................................ 35 Hình 4.5 Ca kiểm thử độ bao phủ trung bình cho ví dụ 1. ................................................. 36 Hình 4.6 Ca kiểm thử độ bao phủ mạnh cho ví dụ 1. ......................................................... 36 Hình 4.7 Đường đi tương ứng của một ca kiểm thử độ bao phủ mạnh của ví dụ 1. .......... 37 ix BẢNG THUẬT NGỮ VIẾT TẮT STT Từ viết tắt Tên đầy đủ Ý nghĩa 1 BN Block Node Nốt đơn 2 CFG Control Flow Graph Đồ thị dòng điều khiển 3 DC Decision Node Nốt quyết định 4 FN Fork Node Nốt rẽ nhánh 5 IDE Integrated Development Environment Môi trường phát triể n tích hợp 6 JN Join Node Nốt nối 7 MN Merge Node Nốt sáp nhập 8 OCL Object Constraint Language Ngôn ngữ ràng buộc trên đối tượng 9 SUT Software Under Testing Phần mềm đang được kiể m thử 10 UML Unified Modeling Language Ngôn ngữ mô hình hóa thống nhất 1 Chương 1: GIỚI THIỆU Công nghệ phần mềm đang ngày càng phát triển và chi phối cuộc sống của con người. Ngược lại, con người luôn không ngừng sáng tạo để tạo ra những công nghệ mớ i, phần mềm và dịch vụ mới. Trong quá trình phát triển đó, cần phải có một qui trình song song để phát hiện và kiểm soát những sai lầm mà con người có thể vô tình hoặc cố tình tạo ra, đó chính là kiểm thử. Theo ước tính, quá trình kiểm thử chiếm khoảng 50 thờ i gian và 40 - 60 tổng chi phí trong toàn bộ quá trình phát triển phần mề m 1. Quá trình kiểm thử cũng quyết định sự thành công, mức độ đảm bảo của dự án phần mềm đặ c biệt là trong các lĩnh vực đòi hỏi độ chính xác cao như hàng không, quân sự, khoa học, vũ trụ.. Vì vậy, để rút ngắn thời gian phát triển và nâng cao chất lượng dự án phần mề m, quá trình sinh ca kiểm thử tự động và nâng cao chất lượng ca kiểm thử trở nên thực sự cầ n thiết, nhất là đối với những phần mềm lớn và phức tạp. Kiểm thử tự động đang đượ c xem là giải pháp chính nhằm giảm chi phí và thời gian mà vẫn đảm bảo chất lượ ng trong quá trình phát triển phần mềm. Để giải quyết vấn đề này, nhiều công trình nghiên cứu đã được đề xuất nhằm giải quyết, tối ưu và tự động hóa quá trình kiểm thử. Mỗ i công trình nghiên cứu mang lại một kết quả khác nhau và áp dụng cho từng mục đích kiểm thử khác nhau. Một số nghiên cứu có thể kể đến như: phương pháp sinh ca kiểm thử tự động từ biểu đồ tuần tự trong UML bởi A.V.K. Shanthi và G. Mohan Kumar 5. Sinh dữ liệu kiểm thử tự động từ biểu đồ tuần tự UML và ràng buộc OCL bở i Ashalatha Nayak và Debasis Samanta 4. Sinh ca kiểm thử từ biểu đồ tuần tự và hệ thống chuyển đổi được gắ n nhãn bởi Emanuela G. Cartaxo 7. Sinh ca kiểm thử tự động từ biểu đồ tuần tự UML và ràng buộc OCL bởi Li Bao-Lin, Li Zhi-shu, Li Qing và Chen Yan Hong 10, v.v. Trong đó một số nghiên cứu mới chỉ dừng lại ở dạng đề xuất, nhiều nghiên cứu khác chưa giả i quyết trọn vẹn bài toán kiểm thử trực tiếp từ biểu đồ tuần tự từ một phần mềm cụ thể. Mỗi phương pháp hướng tới một mục đích kiểm thử khác nhau. Để hiểu rõ hơn mộ t vài nghiên cứu trên sẽ được trình bày chi tiết hơn ở chương ba của luận văn. Bài nghiên cứu này tôi sẽ trình bày một phương pháp khác sinh ca kiểm thử tự động và cải tiến một công đoạn sinh ca kiểm thử tự động để nâng cao chất lượng kiể m thử. Cũng như các phương pháp kiểm thử dựa trên mô hình khác, phương pháp này đòi hỏi phải có các mô hình toán học đặc tả chính xác hành vi của hệ thống và có sẵ n trong thực tế. Các mô hình này thường được biểu diễn bằng các máy hữu hạn tr ạng thái đơn định. Tuy nhiên, xây dựng mô hình cho các phần mềm là một công việc khó khăn và tiềm ẩn nhiều lỗi đối với các công ty. Thay vào đó việc phân tích và thiết kế dựa trên các biểu đồ tuần tự UML là một công việc dễ dàng và trở nên phổ biến hơn. Do đó việc kiểm thử tính đúng đắn cho thiết kế dựa trên mô hình đang được nghiên cứu và áp dụng thực tế cho kiểm thử dự án phần mềm. Không những tự động hóa được qui trình kiểm thử mà thời 2 gian bắt đầu kiểm thử cũng được tiến hành sớm hơn giúp rút ngắn thời gian phát triể n phần mềm. Giai đoạn kiểm thử thiết kế (kiểm thử dựa trên mô hình) chủ yếu tậ p trung vào các ca kiểm thử được sinh ra từ các đường kiểm thử dựa trên đồ thị hoạt động và sinh ra dữ liệu kiểm thử từ dữ liệu đầu vào là các bản thiết kế từ đặc tả chương trình. Với mục tiêu kiểm thử phần mềm dựa trên thiết kế của biểu đồ tuần tự, mục tiêu nâng cao chất lượng kiểm thử cũng như khả năng phát hiện lỗi của các kịch bản kiểm thử trong thiết kế và khi chương trình được thực thi. Nội dung bài nghiên cứu này được trình bày trong 4 chương và phần kết luận. Chương 1 giới thiệu đề tài, lý do chọn đề tài, trình bày tổng quan nộ i dung nghiên cứu và bố cục luận văn. Chương 2 trình bày các khái niệm cơ bản phục vụ cho đề tài bao gồm các vấn đề liên quan trong kiểm thử dựa trên mô hình, phương pháp đặc tả mô hình bằng máy trạ ng thái UML. Các khái niệm về biểu đồ tuần tự và các phân đoạn trong thiết kế. Cuố i cùng là giới thiệu đồ thị dòng điều khiển và đề xuất ba độ đo kiểm thử áp dụ ng cho bài nghiên cứu. Chương 3 nghiên cứu đề xuất cách biến đổi từ biểu đồ tuần tự sang đồ thị dòng điều khiển và các thuật toán biến đổi. Phương pháp sinh ca kiểm thử sau khi hoàn thành độ thị dòng điều khiển trong đó chia ra 2 kịch bản kiểm thử. Một cho các phân đoạn thông thường (các phân đoạn không chứa luồng song song) và một kịch bản kiểm thử cho các phân đoạn chứa luồng song song (Par, Seq). Phần cuối chương 3 trình bày phương pháp sinh dữ liệu kiểm thử từ đồ thị dòng điều khiển, một số nghiên cứu liên quan để thấy được ưu nhược điểm của bài nghiên cứu so với các phương pháp khác. Chương 4 giới thiệu công cụ thực nghiệm, các ví dụ thể hiện tính đúng đắn và khả thi của phương pháp đề xuất. Kết quả thu được thực tế từ chương trình và rút ra ý nghĩa của phương pháp đề xuất. Cuối cùng là kết luận, định hướng mở rộng và tài liệu tham khảo. 3 Chương 2: CÁC KHÁI NIỆM VÀ TỔNG QUAN KIỂM THỬ DỰ A TRÊN MÔ HÌNH 2.1 Quy trình chung của kiểm thử dựa trên mô hình Mô hình UML được thiết kế từ các đặc tả yêu cầu của hệ thống. Mô hình có thể được biểu diễn bằng các loại mô hình và biểu đồ khác nhau. Việc xây dự ng mô hình còn phải dựa trên các yếu tố dữ liệu đầu vào và đầu ra. Mô hình này được sử dụng để sinh đầ u vào cho các ca kiểm thử. Tiếp đến, chúng ta sẽ sinh giá trị đầu ra mong muốn ứng với mỗ i bộ đầu vào. Khi kết thúc bước này, chúng ta đã có các ca kiểm thử. Sau khi thự c thi các ca kiểm thử tương ứng theo từng giai đoạn hoặc phương pháp tiếp cận, kết quả thu đượ c sẽ được so sánh với kết quả mong đợi. Từ đó quyết định hành động tiếp theo như sửa đổ i mô hình hoặc dừng kiểm thử, v.v.Các bản đặc tả yêu cầu Mô hình Các chuỗi kiểm thử Kiểm thử dự đoán Kết luận: Pass Fail Thực thi Thiết kế Tạo tự động Điều khiển Theo dõi Phản hồi Phản hồi Phản hồi Hình 2.1 Qui trình kiểm thử dựa trên mô hình. Hình 2.1 mô tả về quy trình chung của kiểm thử tự động dự a trên mô hình 6. Kiểm thử tự động dựa trên mô hình gồm các giai đoạn sau: Sinh mô hình dựa trên các yêu cầu và chức năng của hệ thống. Sinh các ca kiểm thử (bộ đầu vào và giá trị đầu ra mong đợi cho mỗi ca kiểm thử). Chạy các kịch bản kiểm thử để phát hiện các lỗikhiếm khuyết của sản phẩm. So sánh kết quả đầu ra thực tế với kết quả đầu ra dự kiến. Quyết định hành động tiếp theo (sửa đổi mô hình, tạo thêm ca kiểm thử, dừng kiể m thử, đánh giá chất lượng của phần mềm) 1. 4 2.2 Đồ thị dòng điều khiển Đồ thị dòng điều khiển (Control Flow Graph - CFG) là đồ thị được sinh ra từ biểu đồ tuần tự bởi một thuật toán hồi qui, với các ràng buộc và thông số trong thiết kế biểu đồ tuần tự thì sẽ được bóc tách, biến đổi để sinh dữ liệu kiểm thử. Đồ thị dòng điều khiển là một đồ thị biểu diễn trực tiếp của biểu đồ tuần tự và được tạo nên từ bảy loại nốt nối với nhau bởi các đường. Bảy loại nốt đó là 4: Nốt bắt đầu (Start node): là nốt khởi đầu của đồ thị. Nốt đơn vị (BN – Block node): là nốt biểu thị cho một thông điệp hoặc một tuầ n tự của của các thông điệp. Mỗi thông điệp m(i) bao gồm thông tin của lớp gử i và lớp nhận và có cấu trúc ( m(i), ParameterList, returnValue ). Mỗi thông số của một thông điệp có thể là một thuộc tính của ràng buộc OCL. Nốt quyết định (DC – Decision node): là nốt biểu thị cho một hàm điều ki ện như điều kiện đúng (hoặc sai) cần được thỏa mãn để lựa chọn các toán hạng tương ứ ng trong một phân đoạn. Nốt sáp nhập (MN – Merge node): là nốt biểu thị cho sự sáp nhập các nhánh ra từ một hành vi lựa chọn (chẳng hạn như lối ra từ một phân đoạn ALT hoặc OPT). Nốt rẽ nhánh (FN – Fork node): là nốt biểu thị đầu vào của phân đoạn PAR hoặ c SEQ. Nốt kết hợp (JN – Join node): là nốt đầu ra (hay kết thúc) của phân đoạ n PAR hoặc SEQ. Nốt kết thúc (End node): là nốt kết thúc của tất cả các chu trình trong đồ thị. Một đồ thị dòng điều khiển G được biểu diễn như sau: G với: o ‘in’ là nốt khởi tạo (nốt bắt đầu). o F là tập các nốt hay trạng thái cuối cùng của đồ thị. o A là tập các nốt bao gồm (BN CN) với BN là nốt đơn vị (Block node), CN = (DN MN FN JN) được gọi là tập các nốt điều khiển. o E là tập các cạnh nối giữa các nốt. E = {f (x; y) x, y A F} Cấu trúc mỗi nốt A được đề xuất như sau: < nodeId, nodeType, nodeDetails, outEdge > với: nodeId: là nhãn duy nhất được đính kèm vào mỗi nốt. nodeType = {decision, merge, fork, join} với mỗi và nodeType = {block, initial, final} cho tất cả các nốt còn lại. nodeDetails = { ,..., q là số của một tin nhắn trong BN}. Mỗi nodeDetails được định nghĩa là một bộ ba < m, s, r > với mỗi bản tin xác định 5 được đối tượng gửi s, đối tượng nhận r và tên của mỗi bản tin m cho tất cả các nốt đơn vị BN. Mỗi thông điệp bao gồm các thông tin bên gửi từ biểu đồ lớ p và có cấu trúc < m, ParamList, rValue >. Các thông tin này sẽ được đính kèm vào cả các bộ thông số ParamList = { } và trả về giá trị rValue. Ngoài ra, mộ t thông số của một phương thức còn có thể được cung cấp từ các thuộ c tính, ràng buộc các lớp. Một thông số hay một giá trị trả về đượ c tách riêng và các thông tin ràng buộc từ biểu đồ lớp và có cấu trúc < name, type, value, constraint > với name là tên của bộ thông số hoặc thuộc tính, type là dạng dữ liệu, value là giá trị được gán. Còn constraint được lấy từ ràng buộc OLC được khai báo từ các thuộ c tính biểu đồ lớp hoặc đã được đính kèm vào biểu đồ tuần tự. outEdge = { ,…, q là số cạnh nối}. Mỗi được xác đị nh bằng < sourceNode, targetNode > 13. 2.3 Các độ đo kiểm thử Độ đo kiểm thử là một công cụ giúp ta đo mức độ bao phủ chương trình của mộ t tập ca kiểm thử cho trước. Mức độ bao phủ của một bộ kiểm thử (tập các ca kiểm thử) được đo bằng tỷ lệ các thành phần thực sự được kiểm thử so với tổng thể sau khi đã thự c hiện các ca kiểm thử. Bài nghiên cứu này chia ra 3 tiêu chuẩn bao phủ, để dễ hình dung hơn về 3 tiêu chuẩn bao phủ này chúng ta sẽ bám theo ví dụ về kiểm thử phân đoạn Par đã được biến đổi sang đồ thị dòng điều khiển như Hình 2.16.I1 I3I2 m1 par m2 m3 m5 Bi B1 B2 Bk Bi B1 B2 Bk m4 FN1 JN1 Hình 2.2 Đồ thị dòng điều khiển tương ứng của phân đoạn Par. 6 C1: Độ bao phủ yếu: Đường kiểm thử đi qua tất cả các nốt rẽ nhánh (các nốt quyết đị nh) của đồ thị dòng điều khiển. Đối với ví dụ Hình 2.16 ta có bảng các ca kiểm thử như sau: ng 2.1 Ca kiểm thử độ bao phủ yếu ID Input EO RO Note tc1 Bi-FN1-B1-JN1-Bk C2: Độ bao phủ trung bình: Đường kiểm thử đi qua tất cả các nhánh của đồ thị dòng điề u khiển. Bảng các ca kiểm thử tương ứng cho ví dụ Hình 2.16 như sau: ng 2.2 Ca kiểm thử độ bao phủ trung bình ID Input EO RO Note tc1 Bi-FN1-B1-JN1-Bk tc2 Bi-FN1-B2-JN1-Bk C3: Độ bao phủ mạnh: Được áp dụng cho các thiết kế có sử dụng các phân đoạ n song song có các luồng chạy song song như Par, Seq. Khi đó các nốt chạy song song có chia sẻ dữ liệu với nhau sẽ được hoán đổi vị trí để tạo ra các đường kiểm thử phủ được nhiều trường hợp hơn. ng 2.3 Ca kiểm thử độ bao phủ mạnh ID Input EO RO Note tc1 Bi-FN1-B1-JN1-Bk tc2 Bi-FN1-B2-JN1-Bk tc3 Bi-FN1-B1-B2-JN1-Bk Với ví dụ Hình 2.16, ngoài các ca kiểm thử thông thường không xét đến trường hợp các thông điệp song song có điểm chia sẻ dữ liệu ta thu được hai ca kiểm thử ct1 và ct2 như ảng 2.3. Ngoài ra, vì hai thông điệp B1 và B2 nằm trong phân đoạn Par nên chúng có thể được thực hiện song song hoặc đảo trật theo một thứ tự bất kì. Trong trường hợp này ta thu được một ca kiểm thử khác là tc3 (Bi-FN1-B1-B2-JN1-Bk) như ảng 2.3. 7 Chương 3: PHƯƠNG PHÁP SINH ĐỒ THỊ DÒNG ĐIỀU KHIỂN TỪ BIỂU ĐỒ TUẦN TỰ 3.1 Thuật toán biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển Biểu đồ tuần tự biểu diễn thiết kế theo trình tự thời gian. Bên trong bao gồm nhiề u thành phần và các thông tin đính kèm. Mỗi thành phần, cấu trúc biểu diễn một hoạt độ ng khác nhau trong ca sử dụng. Biến đổi biểu đồ tuần tự sang đồ thị dòng điều khiển là mộ t công việc khó khăn vì chúng không tuân theo một qui luật nào cả. Để làm được điề u này chúng ta phải liệt kê tất cả các thành phần, khối toán tử bên trong biểu đồ tuần tự và dùng thuật toán tương ứng biến đổi cho từng toán tử và thành phần đó. Thuậ t toán này không những phải hoạt động đúng mà còn phải đảm bảo tính đúng đắn khi các thành phầ n và toán tử lồng ghép vào nhau trong thiết kế. 3.1.1. Thuật toán sinh đồ thị dòng điều khiển Đầu vào của thuật toán 1 sinh đồ thị dòng điều khiển là tệp xmi là lưu trữ dạ ng kí tự của biểu đồ tuần tự. Vì vậy, để biến đổi được từ biểu đồ tuần tự sang đồ thị dòng điề u khiển thì bên trong thuật toán 1 sử dụng các thư viện đọc tệp xmi, từ đó bóc tách dữ liệ u theo các từ khóa tương ứng với từng phần tử thiết kế trong biểu đồ tuần tự. Bả ng 3.1 miêu tả một số từ khóa cơ bản dùng để nhận biết và đọc dữ liệu trong tệp xmi. ảng 3.1 Các khóa cơ bản và ý nghĩa trong tệp xmi Khóa Ý nghĩa ắt đầu khai báo các ràng buộc (OCL) trong biểu đồ Kết thúc khai báo các ràng buộc trong biểu đồ