BÁO CÁO;XÂY DỰNG HỆ THỐNG KIỂM THỬ PHẦN MỀM TỰ ĐỘNG
Trang 1TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
KHOA C N N T N T N
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGH CẤP TRƯỜNG
XÂY DỰNG H THỐNG KIỂM THỬ PHẦN MỀM
TỰ ĐỘNG
Chủ nhiệm đề tài: Ks Đào Anh iển
ưng Yên, 11/2012
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
K OA C N N T N T N
BÁO CÁO TỔNG KẾT
ĐỀ TÀI KHOA HỌC VÀ CÔNG NGH CẤP TRƯỜNG
XÂY DỰNG H THỐNG KIỂM THỬ PHẦN MỀM
TỰ ĐỘNG
Xác nhận của đơn vị chủ trì đề tài Chủ nhiệm đề tài
(ký, họ tên) (ký, họ tên)
Đào Anh Hiển
ưng Yên, 11/2012
Trang 3DAN S C T N V N T AM A N N C U ĐỀ T
STT ọ và tên Ch c vụ ọc hàm/học vị
1 Đào Anh Hiển Gi ng vi n Kỹ s
2 Lê Thị Thu H ơng Gi ng viên Kỹ s
3 Hoàng Quốc Việt Gi ng viên Cử nhân
DAN S C Đ N V P Ố P C N T ỰC N ĐỀ T STT Tên đơn vị Địa điểm
Trang 4MỤC LỤC
THÔNG TIN KẾT QUẢ NGHIÊN C U 1
I Tổng quan tình hình nghiên c u thuộc lĩnh vực của đề tài ở trong và ngoài nước 3
1 Tình hình nghiên cứu ngoài n ớc 3
2 Tình hình nghiên cứu trong n ớc 3
II Tính cấp thiết của đề tài 3
III Mục tiêu của đề tài 3
IV Cách tiếp cận và phương pháp nghiên c u 4
1 Cách tiếp cận 4
2 Ph ơng pháp nghi n cứu 4
V Đối tượng và phạm vi nghiên c u 4
1 Đối t ợng nghiên cứu 4
2 Phạm vi nghiên cứu 4
VI Nội dung nghiên c u 4
PHẦN II: KẾT QUẢ N N C U 5
C Ư N : TỔN QUAN K ỂM THỬ PHẦN MỀM, KIỂM THỬ TỰ ĐỘNG PHẦN MỀM 5
1.1 Tổng quan về kiểm thử phần mềm 5
1.1.1 Các khái niệm cơ b n về kiểm thử phần mềm 5
1.1.1.1 Định nghĩa kiểm thử phần mềm 5
1.1.1.2 Lý do kiểm thử phần mềm 5
1.1.1.3 Vai trò của kiểm thử phần mềm 5
1.1.1.4 Mục tiêu của kiểm thử phần mềm 5
1.1.2 Tiến trình thực hiện kiểm thử 6
1.1.3 Các ph ơng pháp kiểm thử phần mềm 6
1.1.3.1 Kiểm thử hộp trắng 6
1.1.3.2 Kiểm thử hộp đen 6
1.1.4 Các cấp độ kiểm thử phần mềm 7
1.1.4.1 Kiểm thử đơn vị 7
1.1.4.2 Kiểm thử tích hợp 7
1.1.4.3 Kiểm thử hệ thống 8
1.1.4.4 Kiểm thử chấp nhận sản phẩm 8
1.2 Tổng quan về kiểm thử tự động phần mềm 8
1.2.1 Khái niệm kiểm thử tự động 8
1.2.2 Mục tiêu của kiểm thử tự động 8
Trang 51.2.3 Quy trình kiểm thử tự động 8
1.2.4 Kiểm thử tự động chức năng phần mềm 9
1.2.4.1 Khái niệm kiểm thử chức năng 9
1.2.4.2 Làm thế nào để kiểm thử tự động chức năng 9
1.2.5 Kiểm thử tự động giao diện phần mềm 9
1.2.5.1 Khái niệm kiểm thử giao diện 9
1.2.5.2 Làm thế nào để kiểm thử tự động giao diện 9
1.2.5.3 Các thành phần GUI của ứng dụng cần kiểm thử: 9
C Ư N S N CA K ỂM THỬ TỰ ĐỘNG VỚI REFLECTION 10
2.1 Kỹ thuật Reflection 10
2.2 Lớp System.Type 10
2.3 Sử dụng Reflection 10
C Ư N : KỸ THUẬT SINH K CH BẢN TỰ ĐỘNG SỬ DỤNG CODEDOM TRONG NET 11
3.1 Kỹ thuật CodeDom của NET 11
3.2 Mô hình các khái niệm dùng trong CodeDom 11
3.3 Các lớp trong namespace System.CodeDOM 11
3.3 Sử dụng CodeDOM 12
C Ư N V: KỸ THUẬT API CHO KIỂM THỬ GIAO DI N13 4.1 API là gì? 13
4.2 Các thành phần của Windows API 13
4.3 Các hàm API lấy thông tin về các thành phần GUI 13
C Ư N V: XÂY DỰNG NG DỤNG KIỂM THỬ TỰ ĐỘNG13 5.1 Giải pháp 13
5.2 Kiến trúc của công cụ 14
5.3 Thử nghiệm chương trình 14
PHẦN : KẾT LUẬN V K UYẾN N 15
1 Kết luận 15
2 Khuyến nghị 15
Trang 61
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
K OA C N N T N T N
T N T N KẾT QUẢ N N C U
1 Thông tin chung:
- T n đề tài: Xây dựng hệ thống kiểm thử phần mềm tự động
- Chủ nhiệm: Ks Đào Anh Hiển
- Đơn vị chủ trì: Khoa CNTT - Tr ờng Đại học S phạm Kỹ thuật H ng Y n
- Thời gian thực hiện: 10 tháng
2 Mục tiêu:
Nghiên cứu kỹ thuật kiểm thử phần mềm tự động
Nghiên cứu kỹ thuật phân tích tự động thông tin của phần mềm cần kiểm thử
Nghiên cứu kỹ thuật sinh kịch b n kiểm thử tự động
Nghiên cứu kỹ thuật sinh ca kiểm thử, thực thi ca kiểm thử, đánh giá kết qu kiểm thử tự động
Xây dựng hệ thống kiểm thử phần mềm tự động
3 Tính mới và sáng tạo:
- Nghiên cứu kỹ thuật sinh ca kiểm thử tự động từ phần mềm cần kiểm thử
- Nghiên cứu kỹ thuật sinh kịch b n kiểm thử dựa trên dữ liệu
4 Kết quả nghiên c u:
Trình bày đ ợc các kiến thức kiểm thử phần mềm, kiểm thử tự động phần mềm
Trình bày đ ợc kỹ thuật thu thập tự động thông tin của phần mềm cần kiểm thử
Trình bày đ ợc kỹ thuật sinh ca kiểm thử tự động từ thông tin thu thập đ ợc
Trình bày đ ợc kỹ thuật sinh kịch b n kiểm thử tự động từ dữ liệu
Xây dựng đ ợc hệ thống kiểm thử phần mềm tự động hỗ trợ kiểm thử tự động phần mềm về mặt chức năng và giao diện
Viết b n báo cáo đầy đủ về những kiến thức đã tìm hiểu
Công bố đ ợc một bài báo trong kỷ yếu hội th o quốc gia lần thứ 1
“Những tiến bộ của Kỹ thuật máy tính, Điện – Điện tử và Công nghệ thông tin trong cuộc sống”
Trang 72
5 Sản phẩm:
- Cuốn báo cáo về thuyết và hệ thống kiểm thử phần mềm tự động
6 Hiệu quả, phương th c chuyển giao kết quả nghiên c u và khả năng áp dụng:
- Sử dụng làm công cụ thực hành và học tập trong môn đ o b o chất ợng phần mềm
Ngày tháng năm 2012
Đơn vị chủ trì Chủ nhiệm đề tài
Đào Anh iển
Trang 83
PHẦN 1: M ĐẦU
I Tổng quan tình hình nghiên c u thuộc lĩnh vực của đề tài ở trong và ngoài nước
1 Tình hình nghiên c u ngoài nước
Để gi m chi phí cho công đoạn kiểm thử, kiểm thử tự động phần mềm đ ợc chú trọng nghiên cứu đặc biệt trong việc xây dựng các công cụ kiểm thử Một trong số các cách tiếp cận của các nhà nghiên cứu trên thế giới
là xây dựng các công cụ tự động giúp cho kiểm thử đ ợc tự động hóa nhiều nhất có thể nhằm gi m chi phí và công sức cho kiểm thử phần mềm nh việc: sinh Test Case (TC) tự động để gi m chi phí và thời gian cho kiểm thử viên, nâng cao chất ợng của TC; sinh ca kiểm thử tự động; thực thi ca kiểm thử
tự động và tự động đánh giá kết qu của ca kiểm thử
2 Tình hình nghiên c u trong nước
Hiện nay trong n ớc cũng có nhiều đơn vị nghi n cứu về kiểm thử phần mềm nh ng ĩnh vực nghi n cứu về kiểm thử tự động còn ít Đã xuất hiện một số công cụ cho phép kiểm thử vi n tự động sinh TC nh ng ch a thực hiện và đánh giá đ ợc TC tự động, hơn nữa cách tiếp cận sinh TC này là
từ kịch b n, từ mô hình thiết kế Chúng tôi tập trung nghi n cứu cách sinh TC
từ ch ơng trình đã đ ợc xây dựng, thực thi và đánh giá nó một cách tự động
Tính cấp thiết của đề tài
Kiểm thử đóng vai trò quan trọng trong việc đ m b o chất ợng phần mềm Quá trình kiểm thử một phần mềm ti u tốn nhiều nguồn ực,
nh ng hiện nay công việc kiểm thử th ờng đ ợc tiến hành thủ công bởi các kiểm thử vi n, điều này dẫn đến hiệu qu không cao Hiện nay nhiều công ty
tr n thế giới đã xây dựng và có s n phẩm th ơng mại giúp tự động hóa quá trình kiểm thử này, nh ng các s n phẩm này có giá thành cao, n n rất khó tiếp cận đối sinh vi n và giáo vi n trong quá trình học tập và thực hành Trong n ớc cũng nh ở tr ờng hiện tại ch a có phần mềm nào àm đ ợc điều này Chính vì những do tr n nhóm nghi n cứu muốn xây dựng một hệ thống kiểm thử phần mềm tự động, nhằm đ a ra một ph ớng pháp và kỹ thuật để xây dựng một hệ thống kiểm thử phần mềm tự động
III Mục tiêu của đề tài
- Nghiên cứu kỹ thuật kiểm thử phần mềm tự động
- Nghiên cứu kỹ thuật phân tích tự động thông tin của phần mềm cần kiểm thử
Trang 94
- Nghiên cứu kỹ thuật sinh TestCase, thực hiện TestCase, đánh giá TestCase tự động
- Xây dựng hệ thống kiểm thử phần mềm tự động
IV Cách tiếp cận và phương pháp nghiên c u
1 Cách tiếp cận
Để kiểm thử một chức năng của phần mềm công việc của kiểm thử
vi n à thiết kế TC, chạy ch ơng trình cần kiểm thử, thực hiện chức năng cần kiểm th và ghi nhận kết qu Vì vậy nhóm nghi n cứu tiến hành nghi n cứu cách thức thu thập thông tin tự động về ch ơng trình cần kiểm thử bằng cách phân tích metadata của các ch ơng trình này d ới các dạng tệp tin *.d ,
*.exe từ đó sinh ra các TC tự động Để thực thi và đánh giá các TC tự động nhóm tập trung nghi n cứu kỹ thuật bi n dịch thực thi ch ơng trình tự động cho phép tạo các kịch b n kiểm thử (TestScript) và đánh giá kết qu tự động
2 Ph ơng pháp nghi n cứu
- Ph ơng pháp đọc tài liệu
- Ph ơng pháp thực nghiệm
- Ph ơng pháp phân tích mẫu
- Ph ơng pháp àm mẫu
V Đối tượng và phạm vi nghiên c u
1 Đối tượng nghiên c u
Đối t ợng nghi n cứu của đề tài à kỹ thuật kiểm thử phần mềm tự động và kỹ thuật xây dựng hệ thống kiểm thử phần mềm tự động
2 Phạm vi nghiên c u
Đề tài tập trung vào nghi n cứu thuyết kỹ thuật kiểm thử phần mềm tự động và xây dựng hệ thống kiểm thử phần mềm tự động, cho phép kiểm thử tự động chức năng và giao diện của phần mềm đ ợc xây dựng bằng công nghệ NET
VI Nội dung nghiên c u
+ Nghiên cứu về kiểm thử phần mềm
+ Nghiên cứu về kiểm thử phần mềm tự động
+ Nghiên cứu cách thu thập thông tin về phần mềm cần kiểm thử
+ Nghiên cứu cách sinh TestCase tự động
+ Nghiên cứu cách thực thi TestCase và đánh giá kết qu test tự động
+ Xây dựng hệ thống kiểm thử phần mềm tự động
Trang 105
P ẦN : KẾT QUẢ N N C U
C Ư N : TỔN QUAN K ỂM T Ử P ẦN MỀM, K ỂM
T Ử TỰ ĐỘN P ẦN MỀM 1.1 Tổng quan về kiểm thử phần mềm
1.1.1 Các khái niệm cơ bản về kiểm thử phần mềm
1.1.1.1 Định nghĩa kiểm thử phần mềm
Kiểm thử phần mềm là quá trình kh o sát một hệ thống hay thành phần d ới những điều kiện xác định, quan sát và ghi lại các kết qu , và đánh
giá một khía cạnh nào đó của hệ thống hay thành phần đó (Theo Bảng chú giải thuật ngữ chuẩn IEEE của Thuật ngữ kỹ nghệ phần mềm- IEEE Standard Glossary of Software Engineering Terminology) [7]
1.1.1.2 Lý do kiểm thử phần mềm
L do thứ nhất, về khía cạnh xem xét s n phẩm, ng ời phát triển muốn kiểm tra phần mềm nh một phần tử của hệ thống hoạt động thì cần ph i thực hiện thông qua hoạt động kiểm thử phẩn mềm
L do quan trọng thứ hai à khi thực hiện tốt hoạt động kiểm thử, chúng ta sẽ hạn chế đ ợc chi phí cho các thất bại do ỗi gây ra sau này Đây chính à hiệu qu của hoạt động kiểm thử mang ại và cũng chính à mục ti u của ng ời phát triển hệ thống khi thực hiện hoạt động kiểm thử phần mềm Ngoài ra còn có một do i n quan đến gi i pháp phát triển, khi thực hiện hoạt động kiểm thử, đội phát triển sẽ có kế hoạch tốt nâng cao chất ợng suốt quá trình phát triển phần mềm [1]
1.1.1.3 Vai trò của kiểm thử phần mềm
Thực tế đã chứng minh hoạt động kiểm thử có vai trò vô cùng quan trọng trong tiến trình phát triển phần mềm Vai trò đó đ ợc thể hiện qua chi phí và hiệu qu của hoạt động kiểm thử mang ại Về mặt chi phí, hoạt động kiểm thử chiếm kho ng 40% tổng công sức phát triển phần mềm và chiếm tới hơn 30% tổng thời gian phát triển Vai trò của hoạt động kiểm thử phần mềm còn thể hiện ở hiệu qu mà nó mang ại, khi việc kiểm thử phần mềm đạt kết
qu tốt sẽ có hiệu qu rất ớn trong việc gi m chi phí phát triển và àm tăng
độ tin cậy của s n phẩm phần mềm
1.1.1.4 Mục tiêu của kiểm thử phần mềm
Có thể nói mục ti u của hoạt động kiểm thử phần mềm à thiết kế đ ợc những tr ờng hợp kiểm thử để có thể phát hiện một cách có hệ thống những oại ỗi khác nhau và thực hiện công việc đó với ợng thời gian và tài
Trang 116
nguy n tối u nhất Mục ti u đầu ti n và tr ớc mắt của hoạt động kiểm thử phần mềm à tạo ra các ca kiểm thử để tìm ra ỗi của phần mềm Mục ti u cuối cùng và cũng à mục ti u mà ng ời phát triển h ớng tới à kiểm thử phần mềm sẽ giúp cho ng ời phát triển có một ch ơng trình tốt, chi phí thấp
nh ng vẫn đ m b o đ ợc chất ợng phần mềm [1]
1.1.2 Tiến trình thực hiện kiểm thử
Tiến trình thực hiện kiểm thử nh mô t trong hình 1.1 [1]
Hình 1.1 Tiến trình thực hiện kiểm thử
1.1.3 Các phương pháp kiểm thử phần mềm
1.1.3.1 Kiểm thử hộp trắng
Kiểm thử hộp trắng (white box testing) là loại kiểm thử h ớng logic nhằm mục đích kh o sát cấu trúc bên trong của ch ơng trình.
Đối t ợng của kiểm thử hộp trắng là mã nguồn ch ơng trình, cụ thể
à các mô đun đơn vị Kiểm thử hộp trắng tập trung vào việc kiểm tra các chi tiết thủ tục (logic xử lý, thuật toán), các con đ ờng logic (luồng điều khiển)
và các trạng thái của ch ơng trình (dữ liệu cục bộ) [1] Hiện nay, có một số
kỹ thuật hay đ ợc sử dụng trong kiểm thử hộp trắng nh : đồ thị dòng (do Tom McCabe đ a ra đầu tiên), ma trận kiểm thử (số đ ờng đi, trọng số trên từng cạnh), điều khiển theo dòng dữ liệu, các cấu trúc chu trình – giá trị đặc
tr ng
1.1.3.2 Kiểm thử hộp đen
Kiểm thử hộp đen (b ack box testing) à một trong những ph ơng pháp kiểm thử quan trọng nhất trong tiến trình kiểm thử phần mềm Ph ơng pháp này xem ch ơng trình nh à một “hộp đen”, kiểm thử vi n chỉ quan tâm đến đầu vào và đầu ra của ch ơng trình mà không hề biết cấu trúc nội tại b n
Trang 127
trong hệ thống và các thành phần của nó hoạt động ra sao
Ph ơng pháp này tập trung kiểm thử về mặt y u cầu chức năng của s n phẩm
Một số ph ơng pháp kiểm thử hộp đen thông dụng hiện nay
Phân ớp t ơng đ ơng – Equivalence partitioning
Phân tích giá trị bi n – Boundary value analysis
Kiểm thử mọi cặp – All-pairs testing
Kiểm thử fuzz – Fuzz testing
Kiểm thử dựa tr n mô hình – Model-based testing
Ma trận dấu vết – Traceability matrix
Kiểm thử thăm dò – Exploratory testing
Kiểm thử dựa tr n đặc t – Specification-base testing [1]
1.1.4 Các cấp độ kiểm thử phần mềm
Theo mô hình thác n ớc trình bày trong hình 1.2 thì kiểm thử phần mềm gồm có các cấp độ: kiểm thử đơn vị, kiểm thử tích hợp, kiểm thử hệ thống và kiểm thử chấp nhận s n phẩm
Hình 1.2 Sơ đồ các cấp độ kiểm thử
1.1.4.1 Kiểm thử đơn vị
Kiểm thử đơn vị hay còn gọi à unit testing (UT), à cấp độ kiểm thử cho phép bạn kiểm tra, tìm kiếm ỗi b n trong chức năng của ch ơng trình phần mềm (ví dụ modu e, đối t ợng, ớp, ) Thông th ờng việc kiểm thử mức modu e đơn vị sẽ do ập trình vi n thực hiện tr ớc khi nó đ ợc chuyển giao sang giai đoạn tích hợp với các modu e khác Công đoạn này cần đ ợc thực hiện càng sớm càng tốt trong giai đoạn viết mã nguồn và xuy n suốt chu
kỳ phát triển phần mềm
1.1.4.2 Kiểm thử tích hợp
Kiểm thử tích hợp - intergration test à sự kết hợp các thành phần của
Trang 138
một ứng dụng và kiểm thử chúng nh một ứng dụng đã hoàn thành
Mục ti u chính của kiểm thử tích hợp à phát hiện ỗi giao tiếp x y ra giữa các đơn vị, tích hợp các thành phần đơn vị đơn ẻ thành các hệ thống nhỏ và cuối cùng à tích hợp thành một hệ thống hoàn chỉnh chuẩn bị cho kiểm thử ở mức hệ thống
Trong kiểm thử ở mức tích hợp, có 02 chiến ợc cơ b n à kiểm thử
từ d ới n và kiểm thử từ tr n xuống
1.1.4.3 Kiểm thử hệ thống
Kiểm thử hệ thống hay còn gọi à system test (ST) à cấp độ thực hiện việc kiểm thử toàn bộ các chức năng của hệ thống có phù hợp với y u cầu đặc t hay không.
Kiểm thử hệ thống àm nhiệm vụ kiểm tra các hành vi chức năng của phần mềm và các y u cầu về chất ợng nh độ tin cậy, tính tiện ợi khi sử dụng, hiệu năng và b o mật
1.1.4.4 Kiểm thử chấp nhận sản phẩm
Thông th ờng sau giai đoạn kiểm thử hệ thống à giai đoạn kiểm thử chấp nhận s n phẩm - acceptance test (AT), đ ợc khách hàng thực hiện hoặc
ủy quyền cho một nhóm thứ ba kiểm thử Mục đích của AT à để chứng minh phần mềm thỏa mãn tất c các y u cầu của khách hàng và khách hàng chấp nhận s n phẩm
1.2 Tổng quan về kiểm thử tự động phần mềm
1.2.1 Khái niệm kiểm thử tự động
Kiểm thử tự động là quá trình thực hiện một cách tự động các b ớc trong một TC Nó sử dụng một công cụ kiểm thử tự động nào đó để rút ngắn thời gian kiểm thử[1].
1.2.2 Mục tiêu của kiểm thử tự động
Gi m bớt công sức và thời gian thực hiện
Tăng độ tin cậy
Gi m sự nhàm chán
Gi m chi phí cho tổng quá trình kiểm thử
1.2.3 Quy trình kiểm thử tự động
Quy trình kiểm thử tự động phần mềm cũng giống nh quy trình thực hiện kiểm thử phần mềm thông th ờng