ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TRẦN THỊ MÙI PHƯƠNG PHÁP SINH BỘ KIỂM THỬ TỪ BIỂU ĐỒ TUẦN TỰ UML 2.0 VÀ ỨNG DỤNG CHO KIỂM THỬ PHẦN MỀM LUẬN VĂN THẠC SĨ Ngành: Hệ th
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN THỊ MÙI
PHƯƠNG PHÁP SINH BỘ KIỂM THỬ TỪ BIỂU ĐỒ TUẦN
TỰ UML 2.0 VÀ ỨNG DỤNG CHO KIỂM THỬ PHẦN MỀM
LUẬN VĂN THẠC SĨ
Ngành: Hệ thống thông tin
HÀ NỘI – 2015
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
TRẦN THỊ MÙI
PHƯƠNG PHÁP SINH BỘ KIỂM THỬ TỪ BIỂU ĐỒ TUẦN TỰ UML 2.0 VÀ ỨNG DỤNG CHO KIỂM THỬ PHẦN MỀM
Ngành: Hệ thống thông tin Chuyên ngành: Hệ thống thông tin
Mã số: 60 48 01 04
LUẬN VĂN THẠC SĨ Ngành: Hệ thống thông tin
NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Phạm Ngọc Hùng
HÀ NỘI – 2015
Trang 3VIETNAM NATIONAL UNIVERSITY, HANOI UNIVERSITY OF ENGINEERING AND TECHNOLOGY
TRAN THI MUI
A METHOD AND TOOL SUPPORTING FOR AUTOMATED
TESTING OF UML 2.0 SEQUENCE DIAGRAMS
THE MS THESIS Major: Information Systems
Supervisor: Dr Pham Ngoc Hung
HANOI - 2015
Trang 4LỜ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
Mặc dù đã rất cố gắng nhưng luận văn sẽ không tránh khỏi những thiếu sót Rất mong nhận được ý kiến đóng góp quý báu của Thầy, Cô giáo và các bạn để luận văn được hoàn thiện hơn
Xin trân trọng cảm ơn!
Hà Nội, ngày 22 tháng 11 năm 2015
Học viên:
Trần Thị Mùi
Trang 5TÓM TẮT
Luận văn này tập trung nghiên cứu phương pháp sinh bộ kiểm thử từ biểu đồ tuần tự UML 2.0 dựa trên lý thuyết kiểm thử mô hình nhằm tự động hóa quá trình kiểm thử, nâng cao hiệu quả, tiết kiệm chi phí và thời gian Phương pháp này được thực hiện thông qua các bước chính sau Đầu tiên, để có được mô hình làm đầu vào cho kiểm thử, phương pháp thực hiện chuyển đổi biểu đồ tuần tự về đồ thị dòng điều khiển bằng cách tiến hành bóc, tách từng khối (fragment) trong biểu đồ tuần tự Các khối này có thể tuần tự hoặc lồng nhau, dựa vào quan hệ của chúng, tiến hành xây dựng đồ thị cho mỗi khối, sau đó lồng chúng lại nhằm sinh ra đồ thị dòng điều khiển tương ứng với biểu đồ tuần tự Kế tiếp, đồ thị dòng điều khiển được phân tích để xây dựng tập đường kiểm thử Vận dụng kỹ thuật thực thi tượng trưng (Symbolic Execution - SE) nhằm xây dựng hệ ràng buộc tương ứng cho tập đường kiểm thử Cuối cùng, sử dụng công cụ SMT solver để giải hệ các ràng buộc nhằm tìm kiếm nghiệm và từ đó sinh ca kiểm thử
Một công cụ hỗ trợ phương pháp này đã đượ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 tiềm năng ứng dụng của công cụ này trong việc kiểm thử tự động ở các công ty
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, ca kiểm thử, độ bao phủ
Trang 6This thesis researches 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 builds the corresponding graph for each of the fragments and merges them together in order
to generate 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, test case
Trang 7LỜ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 TS
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 22 tháng 11 năm 2015
Học viên:
Trần Thị Mùi
Trang 8MỤC LỤC
LỜI CẢM ƠN 4
TÓM TẮT 5
ABSTRACT 6
LỜI CAM ĐOAN 7
DANH SÁCH BẢNG BIỂU 10
DANH SÁCH HÌNH VẼ Error! Bookmark not defined.
BẢNG THUẬT NGỮ Error! Bookmark not defined.
Chương 1 GIỚI THIỆU Error! Bookmark not defined.
2.1 Khái niệm kiểm thử dựa trên mô hình Error! Bookmark not defined.
2.2 Quy trình chung của kiểm thử dựa trên mô hìnhError! Bookmark not defined.
2.3 Phương pháp đặc tả mô hình bằng máy trạng thái UMLError! Bookmark not defined.
2.4 Thuận lợi và khó khăn của kiểm thử tự động dựa trên mô hìnhError! Bookmark not defined.
TUẦN TỰ Error! Bookmark not defined.
3.1 Biểu đồ tuần tự Error! Bookmark not defined.
3.2 Đồ thị dòng điều khiển Error! Bookmark not defined.
3.3 Đường kiểm thử Error! Bookmark not defined.
3.4 Chuyển đổi biểu đồ tuần tự sang đường kiểm thửError! Bookmark not defined.
3.5 Định dạng chuẩn khi viết tệp xmi từ biểu đồ tuần tựError! Bookmark not defined.
3.6 Thuật toán sinh tự động các đường kiểm thửError! Bookmark not defined.
3.6.1 Thuật toán phân tích biểu đồ tuần tự Error! Bookmark not defined.
3.6.2 Thuật toán chuyển cấu trúc dữ liệu biểu đồ tuần tự sang đường kiểm thửError! Bookmark not defined 3.6.3 Thuật toán xác định đường kiểm thử cho khối alt Error! Bookmark not defined.
3.6.4 Thuật toán xác định đường kiểm thử cho khối opt và breakError! Bookmark not defined.
3.6.5 Thuật toán xác định đường kiểm thử cho khối loop Error! Bookmark not defined.
Trang 93.6.6 Thuật toán xác định đường kiểm thử cho khối par và seqError! Bookmark not defined.
3.6.7.Thuật toán xác định đường kiểm thử cho khối weak Error! Bookmark not defined.
3.6.8 Thuật toán xác định đường kiểm thử cho khối strict Error! Bookmark not defined.
3.6.9 Thuật toán xác định đường kiểm thử cho khối ignore Error! Bookmark not defined.
KHIỂN Error! Bookmark not defined.
4.1 Xây dựng hệ ràng buộc Error! Bookmark not defined.
4.2 Tìm nghiệm thỏa mãn hệ ràng buộc Error! Bookmark not defined.
4.2.1 Giải hệ sử dụng kỹ thuật sinh ngẫu nhiên Error! Bookmark not defined.
4.2.2 Giải hệ sử dụng SMT-Solver Error! Bookmark not defined.
4.2.3 Nhận xét ưu điểm, nhược điểm của hai hướng sinh ca kiểm thửError! Bookmark not defined.
5.1 Giới thiệu công cụ Error! Bookmark not defined.
5.2 Thực nghiệm Error! Bookmark not defined.
5.3 Ý nghĩa của thực nghiệm Error! Bookmark not defined.
Chương 6 KẾT LUẬN Error! Bookmark not defined.
TÀI LIỆU THAM KHẢO 11
Trang 10DANH SÁCH BẢNG BIỂU
Bảng 4.1 Độ ưu tiên các toán tử Error! Bookmark not defined Bảng 5.1 Môi trường thử nghiệm công cụ sinh ca kiểm thử từ thiết kế Error! Bookmark
not defined.
Trang 11TÀI LIỆU THAM KHẢO Tiếng Việt
[1] Phạm Ngọc Hùng, Trương Anh Hoàng, Đặng Văn Hưng (2014), ―Giáo trình kiểm thử phần mềm‖, Nhà xuất bản giáo dục Việt Nam
[2] Đỗ Đức Giáo (2011), ―Toán rời rạc ứng dụng trong tin học‖, Nhà xuất bản giáo
dục Việt Nam
[3] Vũ Thị Đào, Tô Văn Khánh, Nguyễn Việt Hà (2014), ―Phương pháp sinh các
ca kiểm thử tự động từ các mô hình thiết kế UML và ngôn ngữ ràngbuộc đối tượng OCL”, Tạp trí ―Các công trình nghiên cứu, phát triển và ứng dụng CNTT-TT Tập
V-1, Số 11 (31)‖
[4] Nguyễn Đức Anh (2015), ―Khóa luận tốt nghiệp”, Trường Đại học Công nghệ,
Đại học Quốc Gia, Hà Nội
Tiếng Anh
[5] Vahid Garousi, Lionel C Briand, and Yvan Labiche (2008), ―Control Flow Analysis of UML 2.0 Sequence Diagrams” - Software Quality Engineering
Laboratory (SQUALL), Department of Systems and Computer Engineering, Carleton University, 1125 Colonel By Drive, Ottawa, ON K1S5B6, Canada {vahid, briand, labiche} @ sce.carleton.ca
[6] R.V Binder (1996), ―Testing object-oriented software: a survey, Software TestingVerification and Reliability”, 6(3/4), 125-252
[7] R Mall (2009), ―Fundamentals of Software Engineering, Prentice Hall, 3th edition”
[8] J C King (1976), ―Symbolic execution and program testing‖, Communciations
of the ACM, vol 19, no 7, , pp 385–394
[9] Manish Mishra, Shashi Mishra and Rabins Porwal (2012), ―Basic Principle for testcase Generation Automatically‖, VSRD-IJCSIT, Vol 2 (9), pp.772-781
[10] Abdurazik Aynur and Offutt Jeff (2000),―Using uml collaboration diagrams for static checking and test generation”, Proceedings of the 3rd international
conference on The unified modeling language: advancing the standard (Berlin, Heidelberg), UML’00, Springer-Verlag, pp 383–395
[11] El-Far I K and Whittaker J.A (2002), ―Model-based software testing”,
Encyclopedia of Software Engineering 825—-837
Trang 12[12] J.C Corb ett, M.B Dwyer, J Hatcliff, S Laubach , C.S Pasareanu, Robby a
nd Hong jun Zheng, "Bandera: extracting finite-state mo dels from Java source co de", Software Engineering, Pro ceedings of the 2000 Internat ional Conference on,
pp 439-448d, 2000
[13] O Tkac huk, M.B Dwyer and C.S Pasareanu, ―Automated environment generati on for software mo del checking―, Automated Software Engineering, Pro c eedings 18th IEEE
International Conference on, pp 116-127, 2003
[14] D Lore nzoli, L Marian i and M Pezzè, ―Automatic generation of software b ehavioral mo dels", ACM, Pro ceedings of the 30th international conference on Software engineering, pp 501-510, 2008
[15] L B Cuong and P N Hung, ―A Metho d for Gene rating Mo dels of Black-b
ox Comp onents ", 4th International Conference on Knowledge and Systems
Engineering (KSE 2012), IEEE Computer So cie ty Press, pp 177-222, 2012
[16] A Gro ce, D Peled, and M Y annak a ki s, ―Black box checking", J Autom Lang Comb., p p 225-246, Nov 2001
[17] A Gro ce, D Peled, and M Y annak a ki s, ―Adaptive Mo del Checking", Logic Journal of the IGPL, vol 14, no 5, pp 729-744, Oct 2006
[18] H.M Duong, L.K Trin h and P N Hung, ―An Assume-Guarantee Mo d el Checker for Comp onent-Based Systems", The 10th IEEE-RIVF International
Conference on Computing and Communication Technologies, 2013
[19] L B Cuong and P N Hung, ―A Method for Generating Models of Black-box Components‖, 4th
International Conference on Knowledge and Systems Engineering (KSE 2012), IEEE Computer Society Press, pp 177-222, 2012
[20] D Lorenzoli, L Mariani and M Pezz` e, ―Automatic generation of software behavioral models‖, ACM, Proceedings of the 30th international conference on Software engineering, pp 501-510, 2008
[21] J.C Corbett, M.B Dwyer, J Hatcliff, S Laubach, C.S Pasareanu, Robby and Hongjun Zheng, ‖Bandera: extracting finite-state models from Java source code‖, Software Engineering, Proceedings of the 2000 International Conference on, pp 439-448d, 2000
[22] O Tkachuk, M.B Dwyer and C.S Pasareanu, ―Automated environment generation for software model checking‖, Automated Software Engineering, Proceedings 18th IEEE International Conference on, pp 116-127, 2003
Trang 13[23] H M Duong, L K Trinh, and P N Hung, ―An Assume-Guarantee Model Checker for Component-Based Systems‖, The 10th IEEE-RIVF International Conference on Computing and Communication Technologies, 2013 (accepted) [24] A Groce, D Peled, and M Y annak akis, ―Black box checking‖, J Autom Lang Comb., pp 225-246, Nov 2001
[25] A Groce, D Peled, and M Y annak akis, ―Adaptive Model Checking‖, Logic Journal of the IGPL, vol 14, no 5, pp 729-744, Oct 2006
[26] OMG document, UML 2.0 Superstructure Specification, 2003
http://www.omg.org/cgi-bin/doc?ptc/03-08-02
[27] UML sequence diagram
http://www.uml-diagrams.org/sequence-diagrams-combined-fragment.html
[28] Interaction operators in sequence diagrams
http://pic.dhe.ibm.com/infocenter/rsarthlp/v8r5/topic/com.ibm.xtools.sequen
ce.doc/topics/rinteracoperate.html
[29] Business and Information System Modelling Solutions
http://www.zicomi.com/combinedFragmentNegative.jsp