ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHAN THỊ THU HÀ PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG CHO CÁC ỨNG DỤNG JAVA LUẬN VĂN THẠC SĨ Ngàn

Tài liệu tương tự
9-KiemThu

MỞ ĐẦU

Chương trình dịch

Microsoft Word - Kiem dinh chat luong phan mem

ỦY BAN NHÂN DÂN TỈNH TRÀ VINH TRƯỜNG ĐẠI HỌC TRÀ VINH ISO 9001:2008 NGUYỄN THÚY AN GIẢI PHÁP PHÁT TRIỂN NGUỒN NHÂN LỰC NGÀNH TÀI NGUYÊN VÀ MÔI TRƯỜNG

TCVN 11391:2016 MỤC LỤC 1 Phạm vi áp dụng Tài liệu viện dẫn Thuật ngữ, định nghĩa và các từ viết tắt Thuật ngữ và định nghĩa...

(Microsoft Word - 8. Nguy?n Th? Phuong Hoa T\320_chu?n.doc)

(Microsoft Word - 4. \320\340o Thanh Tru?ng doc)

Microsoft Word - 03-GD-HO THI THU HO(18-24)

Phân tích Thiết kế Hướng đối tượng - OOAD

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỞ TP. HỒ CHÍ MINH ĐỀ CƯƠNG MÔN HỌC 1. THÔNG TIN VỀ MÔN HỌC 1.1. Tên môn học: CÔNG NGHỆ PHẦN MỀM Mã MH: ITEC4409

Khoa hoïc Xaõ hoäi vaø Nhaân vaên 37 PHÂN TÍCH CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN KHẢ NĂNG TIẾP CẬN VỐN TÍN DỤNG CỦA CÁC DOANH NGHIỆP VỪA VÀ NHỎ TRÊN ĐỊA BÀN T

TẠP CHÍ KHOA HỌC - ĐẠI HỌC ĐỒNG NAI, SỐ ISSN DẠY KỸ NĂNG MỀM CHO SINH VIÊN TIẾP CẬN DƯỚI GÓC ĐỘ HỌC THUYẾT HÀNH VI Nguyễn Hữu Long 1

TrÝch yÕu luËn ¸n

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG LÝ LỊCH KHOA HỌC 1. THÔNG TIN CÁ NHÂN Họ và tên: Vũ Vinh Quang Ngày sinh: 26/09

BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC ĐÀ NẴNG LÊ THỊ PHƢƠNG THANH THÀNH NGỮ, TỤC NGỮ TRONG TRUYỆN NGẮN MA VĂN KHÁNG Chuyên ngành: Ngôn ngữ học Mã số:

Khoa hoc - Cong nghe - Thuy san.indd

THùC TR¹NG TI£U THô RAU AN TOµN T¹I MéT Sè C¥ Së

Screen Test (Placement)

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG LÝ LỊCH KHOA HỌC 1. THÔNG TIN CÁ NHÂN Họ và tên: Nguyễn Văn Tảo Ngày sinh: 05/1

Mau ban thao TCKHDHDL

NHẬP MÔN CÔNG NGHỆ PHẦN MỀM Giảng viên: Đỗ Thị Thanh Tuyền

Thực hành trên Rose Thực hành trên Rose Bởi: Đoàn Văn Ban Xây dựng biểu đồ thành phần + Tạo lập mới hoặc mở một biểu đồ thành phần đã được tạo lập trư

4. Kết luận Đề tài nghiên cứu Phát triển hệ thống nâng hạ tàu bằng đường triền dọc có hai đoạn cong quá độ, kết hợp sử dụng xe chở tàu thông minh đã t

FAQs Những câu hỏi thường gặp 1. What is the Spend Based Rewards program for Visa Vietnam? The Spend Based Rewards program for Visa Vietnam is a servi

Khoa hoïc Xaõ hoäi vaø Nhaân vaên 49 CÁC NHÂN TỐ ẢNH HƯỞNG ĐẾN QUYẾT ĐỊNH ĐỔI MỚI CÔNG NGHỆ CỦA CÁC DOANH NGHIỆP NHỎ VÀ VỪA Ở THÀNH PHỐ CẦN THƠ Factor

PHẦN III. NỘI DUNG CHƯƠNG TRÌNH ĐÀO TẠO 1. Tóm tắt yêu cầu chương trình đào tạo Tổng số tín chỉ của chương trình đào tạo: Khối kiến thức chung 158 tín

ỨNG DỤNG INTERNET OF THINGS XÂY DỰNG NGÔI NHÀ THÔNG MINH APPLICATION OF INTERNET OF THINGS TO SMARTHOME NGUYỄN VĂN THẮNG (1), PHẠM TRUNG MINH (1), NGU

PowerPoint Template

Đề cương môn học

TÊN CHƯƠNG

CHƯƠNG 1 : MỞ ĐẦU

LOGISTICS VIỆT NAM TRONG CÁCH MẠNG CÔNG NGHIỆP 4.0: C ơ HỘI VÀ THÁCH THỨC LOGISTICS IN VIETNAM IN INDUSTRIAL REVOLUTION 4.0: OPPORTUNITIES AND CHALLEN

Microsoft Word - Bai 3. Quach Manh Hao.doc

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM MÔN HỌC CÔNG NGHỆ PHẦN MỀM Chương 8 Kiểm thử phần mềm CNPM/NN 1

Chủ đề :

Nội dung chương 3 IT1110 Tin học đại cương Phần I: Tin học căn bản Chương 3: Hệ thống máy tính 3.1. Giới thiệu 3.2. Chức năng và các thành phần của má

KHOA HỌC CÔNG NGHÊ TÓM TẮT NGHIÊN CỨU CÔNG NGHÊ SẢN XUÂ T RƯỢU TỪ HỘT MÍT ThS. Phan Vĩnh Hưng, Nguyễn Thu Trang Trường Đại học Công nghiệp Thực phẩm T

Trại hè Toán Mô hình PiMA Projects in Mathematics in Applications ĐÁNH GIÁ THIẾT BỊ Y SINH Mentor Vũ Đức Tài Đại học Khoa học Tự nhiên Hà Nội Phạm Ngu

Tạp chí KHOA HỌC ĐHSP TPHCM Số 54 năm 2014 PHƯƠNG PHÁP SỬ DỤNG TRÒ CHƠI TRONG DẠY HỌC NGUYỄN THỊ BÍCH HỒNG * TÓM TẮT Bài viết trình bày phương pháp sử

Microsoft Word - Van pháp ti?ng Vi?t.doc

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG LÝ LỊCH KHOA HỌC 1. THÔNG TIN CÁ NHÂN Họ và tên: Nguyễn Văn Huân Ngày sinh: 10/

TRƯỜNG ĐẠI HỌC NGÂN HÀNG TP. HCM KHOA TÀI CHÍNH Mã môn học: ITS301 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập Tự do Hạnh phúc TP. Hồ Chí Minh, ngày 19

Microsoft Word - 03-KTXH-NGUYEN QUOC NGHI( )027

Khoa hoc - Cong nghe - Thuy san.indd

J. Sci. & Devel. 2014, Vol. 12, No. 8: Tạp chí Khoa học và Phát triển 2014, tập 12, số 8: THỰC TRẠNG CÔNG TÁC GIÁO

TẠP CHÍ PHÁT TRIỂN KH & CN, TẬP 20, SỐ Q Về thẩm quyền của Hội đồng xét xử theo quy định của pháp luật tố tụng hình sự Việt Nam Lê Ngọc Thạnh

ĐÊ CƯƠNG CHI TIẾT HỌC PHẦN

TCVN T I Ê U C H U Ẩ N Q U Ố C G I A TCVN :2014 ISO/IEC :2013 Xuất bản lần 1 KỸ THUẬT PHẦN MỀM VÀ HỆ THỐNG ĐẢM BẢO PHẦN MỀM VÀ HỆ THỐNG

58 KINH TẾ MỘT SỐ GIẢI PHÁP NHẰM HOÀN THIỆN HOẠT ĐỘNG QUẢN TRỊ QUAN HỆ KHÁCH HÀNG TẠI CÁC NGÂN HÀNG THƯƠNG MẠI VIỆT NAM Ngày nhận bài: 23/07/2015 Bùi

Khoa hoc - Cong nghe - Thuy san.indd

TẠP CHÍ KHOA HỌC - ĐẠI HỌC ĐỒNG NAI, SỐ ISSN NHU CẦU HỌC TẬP KỸ NĂNG SỐNG CỦA HỌC SINH TRUNG HỌC PHỔ THÔNG TẠI THÀNH PHỐ BIÊN HÒA, T

Blood pool and Hemangioma - Khoang chứa máu và U máu gan Hoàng Văn Trung Normally when we look at lesions filling with contrast, the density of these

Các chuyên đề bồi dưỡng học sinh giỏi môn Toán lớp 4

Slide 1

Tóm tắt ngữ pháp tiếng Anh Tổng hợp và biên soạn: Thầy Tâm - Anh Văn ( TÓM TẮT NGỮ PHÁP TIẾNG ANH Mục lục Tóm tắt

说明书 86x191mm

MD Paper-Based Test ELA Vietnamese Script for Administrating PARCC TAM

JOURNAL OF SCIENCE OF HNUE DOI: / Educational Sci., 2015, Vol. 60, No. 8B, pp This paper is available online at ht

Journal of Science 2015, Vol. 5 (1), An Giang University KỸ NĂNG SỐNG CỦA SINH VIÊN KHOA SƯ PHẠM, TRƯỜNG ĐẠI HỌC AN GIANG Hoàng Thế Nhật 1 1 ThS

Microsoft Word - bai 16 pdf

1 Überschrift 1

Lập trình cấu trúc trong Visual Basic Lập trình cấu trúc trong Visual Basic Bởi: Nguyễn Sơn Học xong chương này, sinh viên phải nắm bắt được các vấn đ

EAMCET MATHEMATICS DOWNLOAD

Lập trình và ngôn ngữ lập trình

Tạp chí Khoa học Đại học Huế:Kinh tế và Phát triển; ISSN Tập 126, Số 5D, 2017, Tr ; DOI: /hueuni-jed.v126i5D.4578 GIẢI PHÁP

Microsoft Word - mot_so_tool_trong_android.docx

Hệ điều hành Bài tập tuần 6 1 Quản lý bộ nhớ Bài tập 1 : Xem thông tin bộ nhớ 1. Sử dụng top, ps đọc thông tin về kích thước vùng nhớ của 1 tiến trình

BỘ GIÁO DỤC VÀ ĐÀO TẠO

Slide 1

Microsoft Word - ICT-rda08HBQuoc.doc

Microsoft Word - 7_ Ly_8tr _ _.doc

Microsoft Word - bia.doc

PHÂN LỚP DỮ LIỆU MẤT CÂN BẰNG VỚI THUẬT TOÁN HBU 1. GIỚI THIỆU NGUYỄN THỊ LAN ANH Khoa Tin học, Trường Đại học Sư phạm, Đại học Huế Tóm tắt: Dữ liệu m

Microsoft Word - 10-KT-NGUYEN THOAI MY(94-102)

BỘ GIÁO DỤC VÀ ĐÀO TẠO

Microsoft Word - 15-KTXH-VO HONG TU( )

Microsoft Word - TT HV_NguyenThiThom_K18.doc

THÔNG TIN TRƯỜNG HÈ TOÁN HỌC SINH VIÊN 2019 I. MỤC ĐÍCH: Mục đích của Trường hè là hỗ trợ các sinh viên giỏi toán phát huy được khả năng học tập và tậ

Tìm hiểu ngôn ngữ lập trình Visual Basic Tìm hiểu ngôn ngữ lập trình Visual Basic Bởi: Khuyet Danh Tìm hiểu ngôn ngữ lập trình Visual Basic Tổng quan

Kiến trúc tập lệnh1

Nghiên cứu kiến trúc hệ thống Media - LBS

27_7193.pdf

Untitled

NGHIÊN CỨU TIÊN LƯỢNG TỬ VONG BẰNG THANG ĐIỂM FOUR Ở BỆNH NHÂN HÔN MÊ Võ Thanh Dinh 1, Vũ Anh Nhị 2 TÓM TẮT Mở đầu: Năm 2005, Wijdicks và cộng sự đề x

Lkgjlfjq?etyuiiofjkfjlsfjkslddghdgertt

Microsoft Word - 06-CN-TRAN HUU DANH(43-51)

Translation and Cross-Cultural Adaptation of the Vietnamese Version of the Hip Dysfunction and Osteoarthritis Outcome Score (HOOS) Adams CL 1, Leung A

Microsoft Word - phuong phap nghien cuu dich te phan tich.doc

CHUYÊN ĐỀ KHOA HỌC VÀ GIÁO DỤC - 09 (4-2018) ĐÁNH GIÁ THỰC TRẠNG SỬ DỤNG KÊNH YOUTUBE CỦA TỔNG CỤC DU LỊCH TRONG VIỆC HỖ TRỢ TRUYỀN THÔNG THƯƠNG HIỆU

Toán Ứng Dụng Biên tập bởi: PGS.TS. Nguyễn Hải Thanh

TẠP CHÍ KHOA HỌC, Đại học Huế, tập 72B, số 3, năm 2012 NGHIÊN CỨU TÌNH HÌNH SỬ DỤNG DỊCH VỤ QUẢNG CÁO CỦA DOANH NGHIỆP VỪA VÀ NHỎ Ở THỪA THIÊN HUẾ Lê

(Microsoft Word \320? TH? MINH TH?O _thu binh__T\320_.doc)

Tạp chí Khoa học và Công nghệ Biển; Tập 15, Số 1; 2015: DOI: / /15/1/ NGHIÊN CỨU THỰC N

ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG LÝ LỊCH KHOA HỌC 1. THÔNG TIN CÁ NHÂN Họ và tên: Nguyễn Thị Hằng Ngày sinh: 10/

NGÔN NGỮ THỐNG KÊ R

Bài 7. Con trỏ Mục tiêu: 1. Luyện tập sử dụng con trỏ và địa chỉ của các biến 2. Sử dụng con trỏ khi thao tác với mảng. Giới hạn: không dùng các thư v

Bản ghi:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHAN THỊ THU HÀ PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG CHO CÁC ỨNG DỤNG JAVA LUẬN VĂN THẠC SĨ Ngành: Công nghệ thông tin Hà Nội -2015

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ PHAN THỊ THU HÀ PHƯƠNG PHÁP SINH DỮ LIỆU KIỂM THỬ TỰ ĐỘNG CHO CÁC ỨNG DỤNG JAVA Ngành: Công nghệ thông tin Chuyên ngành: Kỹthuật phần mềm Mã Số:60.48.01.03 LUẬN VĂN THẠC SĨ NGƯỜI HƯỚNG DẪN KHOA HỌC: TS. PHẠM NGỌC HÙNG Hà Nội -2015 2

MỤC LỤC MỤC LỤC... i LỜI CẢM ƠN... iii TÓM TẮT... iv ABSTRACT... v LỜI CAM ĐOAN... vi DANH MỤC THUẬT NGỮ VIẾT TẮT... vii DANH MỤC HÌNH VẼ... viii DANH MỤC BẢNG... x CHƯƠNG 1: GIỚI THIỆU... 1 CHƯƠNG 2: CÁC KỸ THUẬT KIỂM THỬ DÒNG ĐIỀU KHIỂN... 4 2.1. Tổng quan về kiểm thử hộp trắng... 4 2.2. Kỹ thuật kiểm thử dòng điều khiển... 10 2.2.1. Kiểm thử hộp trắng dòng điều khiển theo hướng động... 10 2.2.2. Kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh... 12 2.3. Quy trình kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh... 7 2.3.1. Đồ thị dòng điều khiển... 7 2.3.2. Các tiêu chí phủ kiểm thử... 9 2.3.3. Đường kiểm thử... 10 2.4. So sánh kĩ thuật kiểm thử hộp trắng dòng điều khiển theo hướng tĩnh và động... 10 2.5. Tầm quan trọng của tự động hóa quy trình kiểm thử hộp trắng dòng điều khiểnerror! Book CHƯƠNG 3: PHƯƠNG PHÁP KIỂM THỬ DÒNG ĐIỀU KHIỂN HƯỚNG TĨNH CHO CÁC HÀM JAVA... 15 3.1. Ý tưởng... 15 3.2. Xây dựng đồ thị dòng điều khiển từ mã nguồn... 16 3.3. Xây dựng tập đường kiểm thử... 20 3.3.1. Xây dựng tập đường đi độc lập... 20 3.3.2. Xây dựng đường kiểm thử vòng lặp... 22 i

3.4. Xây dựng hệ ràng buộc... 25 3.5. Sinh tập dữ liệu kiểm thử dựa trên giải nghiệm hệ ràng buộc... 27 3.5.1. Giải hệ sử dụng kỹ thuật sinh ngẫu nhiên... 27 3.5.2. Giải hệ sử dụng SMT-Solver... 27 CHƯƠNG 4: GIỚI THIỆU CÔNG CỤ... 32 4.1. Kiến trúc công cụ... 32 4.2. Nền tảng chương trình... 33 4.2.1. Thư viện JDT... 33 4.2.2. Bộ giải hệ Z3 Prover... 34 4.3. Cài đặt công cụ... 36 4.3.1. Tổng quan... 36 4.2.2. Đầu vào công cụ JavaUnitCFT... 36 4.2.3. Đầu ra công cụ... 37 CHƯƠNG 5: THỰC NGHIỆM... 42 5.1. Sinh bộ dữ liệu kiểm thử cho hàm đầu vào chứa biến số nguyên... 42 5.1.1. Input... 42 5.1.2. Output:... 43 5.2. Sinh bộ dữ liệu kiểm thử cho hàm đầu vào chứa biến số thực... 44 5.2.1. Input... 44 5.2.2. Output... 44 5.3. Sinh bộ dữ liệu kiểm thử cho hàm đầu vào chứa vòng lặp... 47 5.3.1. Input... 47 5.3.2. Output... 47 CHƯƠNG 6: KẾT LUẬN... 49 TÀI LIỆU THAM KHẢO... 50 ii

LỜI CẢM ƠN Trước tiên tôi xin gửi lời cảm ơn chân thành và sâu sắc đến thầy giáo, TS. Phạm Ngọc Hùng - người đã trực tiếp hướng dẫn, chỉ bảo, động viên, luôn tạo cho tôi những điều kiện tốt nhấtvà truyền cho tôi cảm hứng nghiên cứu khoa học từ khi tôi bắt đầu lựa chọn đề tài, trong suốt quá trình nghiên cứu, và cho đến bây giờ - khi tôiđã hoàn thành luận văn này. Tôi xin chân thành cảm ơn các thầy, cô giáo khoa Công Nghệ Thông Tin, Trường Đại học Công nghệ, Đại học Quốc Gia Hà Nội - những người đầy tâm huyết, đã tận tình đào tạo,cung cấp cho tôi những kiến thức chuyên môn vô cùng quý giá.những kiến thức ấy không chỉ tạo cho tôi một nền tảng tốt trong quá trình học tập, nghiên cứu tại trường, mà sẽ còn là những bài học bổ ích, những kỹ năng và kinh nghiệm đáng quý cho tôi trong suốt quá trình làm việc và nghiên cứu chuyên môn sau này. Cuối cùng, tôi xin chân thành cảm ơn những người thân trong gia đình và bạn bè, đồng nghiệp đã luôn giúp đỡ, động viên tôi đặc biệt là những khi tôi gặp phải khó khăn trong việc học tập và nghiên cứu, đã tiếp thêm động lực để tôi vững tâm hoàn thành luận văn này. iii

TÓM TẮT Kiểm thử đơn vị là bước đầu tiên trong quy trình kiểm thử phần mềm. Hiện nay, trong các công ty phần mềm, kiểm thử đơn vị thường được thực hiện bởi các lập trình viên sau khi hoàn thành việc phát triễn mã nguồn sản phẩm, và trước khi bàn giao cho bộ phận kiểm thử để tiến hành kiểm thử tích hợp. Do hạn chế về mặt thời gian, chi phí và nguồn nhân lực, các lập trình viên thường chỉ sử dụng kỹ thuật kiểm thử hộp đen mà không áp dụng các kỹ thuật kiểm thử hộp trắng khi tiến hành kiểm thử đơn vị. Kết quả là các lỗi tiềm tàng trong mã nguồn sản phẩm hầu như không được phát hiện trước khi việc kiểm thử tích hợp được thực hiện. Luận văn này tập trung nghiên cứu phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng Java dựa trên kỹ thuật kiểm thử hộp trắng dòng điều khiển hướng tĩnh, đồng thời cài đặt một công cụ(javaunitcft)hỗ trợ cho phương pháp này. Phương pháp được mô tả thành một quy trình với các bước chính như sau: Bước đầu tiên, từ mã nguồn được cung cấp, ta sẽ phân tích để sinh đồ thị dòng điều khiển thỏa mãn tiêu chí phủ kiểm thử. Sau đó, đồ thị dòng điều khiển được phân tích để xây dựng tập đường kiểm thử. Bước tiếp theo, các đường kiểm thử chứa vòng lặp được cấu trúc lại để sinh thêm các đường kiểm thử mới dùng kiểm thử tính đúng đắn vòng lặp. Dựa trên tập các đường kiểm thử, ta xây dựng các hệ ràng buộc tương ứng. Cuối cùng, ta thực hiện giải hệ ràng buộc thu được để sinh tập dữ liệu cho bộ cácca kiểm thử bằng cách sử dụng thế mạnh của các công cụ SMT-Solver. Một công cụ hỗ trợ phương pháp này cũng được cài đặt bằng ngôn ngữ lập trình Java để chứng minh tính đúng đắn và khả năng ứng dụng trong thực tế của phương pháp. Kết quả thực nghiệm cho thấy, tậpdữ liệu cho bộ ca kiểm thử sinh ra một cách tự động với số lượng tối thiểu nhưng vẫn đảm bảo đạt độ bao phủ cao, đạt độ tin cậy cao trong kiểm chứng tính đúng đắn của mã nguồn. Từ khóa:kiểm thử tự động, kiểm thử hộp trắng dòng điều khiển, đồ thị dòng điều khiển,kiểm thử vòng lặp, độ phủ,ca kiểm thử iv

ABSTRACT Testingphase has lot of significance in Software Development Life Cycle (SDLC) due to it is the most important part in executing and fault rectification. Because of high demand in quality, testing phase is performed quite thoroughly and strictly. As a result, the cost of the testing phase can be up to 40% - 60% the total cost of application development process. To reduce the cost of the testing phase, not only the testing execution phase but also the test case generation process should be automated as much as possible. However, some automation testing tools just focus on executing test cases and return the testing report instead of generating test cases automatically. The Thesis researches a method of generating a set of test cases automatically for Java applications based on the static white-box technique. Input by source code of the application under test and coverage criteria, the output of this method is a minimal set of test cases which can satisfy the provided criteria and reach the maximum coverage level. The proposed method processes as following: Firstly, the source code is required to be analysed in order to generate corresponding Control Flow Graph (CFG). Based on the CFG, independent paths will be built. After that, paths containing loop is reconstructed to generatesome new paths used to test the loop. Then, each path is analysed by using symbolic execution technique to create corresponding constraints. Finally, the constraints aresolved to find solutions by SMT-Solver tools. A set of test data for the test cases is generated automatically. The experimental result shows the effectiveness of the approach with the set of test data for the minimum number of test cases but ensures the high quality of source code. Keywords:Automated testing, white-box testing technique, control flow testing, test case, coverage criteria v

LỜI CAM ĐOAN Tôi xin cam đoan rằng luận văn thạc sĩ công nghệ thông tin Phương pháp sinh dữ liệu kiểm thử tự động cho các ứng dụng Java là nghiên cứu của riêng tôi, không sao chép lại của người khác. Trong toàn bộ nội dung của luận văn, những điều đã được trình bày hoặc là của chính cá nhân tôi hoặc là được tổng hợp từ nhiều nguồn tài liệu. Tất cả các nguồn tài liệu tham khảo đều có xuất xứ rõ ràng và hợp pháp. Tôi xin hoàn toàn chịu trách nhiệm và chịu mọi hình thức kỷ luật theo quy định cho lời cam đoan này. Hà Nội, ngàythángnăm 2015 Phan Thị Thu Hà vi

DANH MỤC THUẬT NGỮ VIẾT TẮT STT Từ viết tắt Từ đầy đủ Ý nghĩa 1 AST Abstract Syntax Tree Cây cú pháp trừu tượng 2 CFG Control Flow Graph Đồ thị dòng điều khiển 3 JDT Java Development Tools Bộ công cụ lập trình của ngôn ngữ lập trình Java 4 CVC Cooperating Validity Checker 5 DIMACS Center for Discrete Mathematics and Theoretical Computer Science 6 SMT-Solver Satisfiability Modulo Theories Solver vii

DANH MỤC HÌNH VẼ Hình 1.1. Top 10 ngôn ngữ lập trình phổ biến giai đoạn 2002-2015... 3 Hình 2.1. Đảm bảo chất lượng phần mềm theo từng pha... 6 Hình 2.2. Chi phí cho việc tìm và sửa lỗi... 7 Hình 2.3. Các thành phần cơ bản của đồ thị dòng điều khiển... 8 Hình 2.4. Các cấu trúc điều khiển phổ biến... 9 Hình 2.5. Kiểm thử hộp trắng dòng điều khiển theo hướng động.... 11 Hình 2.6. Ví dụ một luật chèn mã nguồn trong DMS/SRT... 12 Hình 2.7. Mã nguồn hàm triangle sau khi thêm khối mã nguồn mới... 12 Hình 2.8. Kiểm thử hộp trắngdòng điều khiển theo hướng tĩnh... 13 Hình 3.1. Quy trình kiểm thử một hàm Java theo phương pháp nghiên cứu... 15 Hình 3.2. Thuật toán sinh CFG từ mã nguồn.... 17 Hình 3.3. Mã nguồn hàm kiemtranamnhuan.... 18 Hình 3.4. CFG hàm kiemtranamnhuan tiêu chuẩn phủ câu lệnh, phủ nhánh... 18 Hình 3.5. CFG hàm kiemtranamnhuan tiêu chuẩn phủ điều kiện con... 19 Hình 3.6. CFG điều kiện kép (a>=0 ((b>=0 && c>=0) b+c>=0) a+b+c>=0)... 20 Hình 3.7. Thuật toán sinh tập đường đi độc lập từ CFG... 21 Hình 3.8. Thuật toán sinh đường kiểm thử vòng lặp.... 23 Hình 3.9. Thuật toán sinh đường kiểm thử vòng lặp trong.... 24 Hình 3.10. Thuật toán sinh đường kiểm thử vòng lặp ngoài.... 25 Hình 3.11. Ví dụ một hệ ràng buộc.... 25 Hình 3.12. Thuật toán sinh hệ ràng buộc từ đường kiểm thử... 26 Hình 3.13. Quá trình rút gọn câu lệnh.... 27 Hình 3.14. Mô tả đầu vào, đầu ra SMT-Solver.... 29 Hình 3.15. Ví dụ hệ ràng buộc tuân theo chuẩn SMT-Lib.... 30 Hình 3.16. Quá trình chuyển một biểu thức trung tố về chuẩn SMT-Lib.... 31 Hình 4.1. Kiến trúc chương trình JavaUnitCFT... 32 Hình 4.2. Ví dụ minh họa AST... 33 Hình 4.3. Sử dụng ASTView trong Eclipse trên đoạn mã nguồn test... 34 Hình 4.4. Cây AST của mã nguồn class test... 35 viii

TÀ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] Nguyễn Đức Anh (2015), Xây dựng công cụ kiểm thử tự động cho các chương trình C, 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 [3] Manish Mishra, Shashi Mishra and Rabins Porwal (2012), Basic Principle for testcase Generation Automatically, VSRD-IJCSIT, Vol. 2 (9), pp.772-781 [4] Dorothy Graham, Erik van Veenendaal, Isabel Evans, Rex Black (2012), Foundations Of Software Testing, ISTQB Certification, 3 rd Edition [5] Danila Piatov, Andrea Janes, Alberto Sillitti and Giancarlo Succi (2012), Using the Eclipse C/C++ Development Tooling as a Robust, Fully Functional, Actively Maintained, Open Source C++ Parser,IFIP Advances in Information and Communication Technology, Vol. 378, pp. 399-406 [6] Arthur H. Watson and Thomas J. McCabe, Structured Testing: A Testing Methodology Using the Cyclomatic Complexity Metric, NIST Special Publication 500-235 [7] J. C. King (1976), Symbolic execution and program testing, Communciations of the ACM, vol. 19, no. 7, pp. 385 394 50