LUẬN VĂN: NGHIÊN CỨU VỀ MỨC BAO PHỦ CỦA KIỂM THỬ ppt

59 488 0
LUẬN VĂN: NGHIÊN CỨU VỀ MỨC BAO PHỦ CỦA KIỂM THỬ ppt

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Vương Thị Quỳnh Dương NGHIÊN CỨU VỀ MỨC BAO PHỦ CỦA KIỂM THỬ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành : Công Nghệ Thông Tin HÀ NỘI - 2009 2 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ Vương Thị Quỳnh Dương NGHIÊN CỨU VỀ MỨC BAO PHỦ CỦA KIỂM THỬ KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY Ngành: Công Nghệ Thông Tin Cán bộ hướng dẫn : TS. Trương Ninh Thuận Cán bộ đồng hướng dẫn: ThS. Tô Văn Khánh HÀ NỘI - 2009 3 LỜI CẢM ƠN Bản thân em đạt được thành quả như ngày hôm nay là nhờ một phần không nhỏ công lao dìu dắt của các thầy cô trong khoa Công Nghệ Thông Tin - Đại Học Công Nghệ - Đại Học Quốc Gia Hà Nội. Em xin ghi nhận công lao của các thầy cô và em xin gửi lời cảm ơn sâu sắc tới thầy cô. Để hoàn thành được khoá luận này em xin gửi lời cảm ơn chân thành tới TS. Trương Ninh Thuận và ThS. Tô Văn Khánh, hai thầy đã hướng dẫn, giúp đỡ, chỉ bảo rất tận tình cho em. Dù đã cố gắng rất nhiều trong quá trình làm khoá luận, nhưng cũng không thể tránh khỏi những thiếu sót, em rất mong nhận được sự góp ý của các thầy, cô giáo để em có thể hoàn thiện hơn. Hà nội, ngày 23 tháng 5 năm 2009 Sinh viên: Vương Thị Quỳnh Dương 4 TÓM TẮT KHOÁ LUẬN Trong thời đại công nghệ thông tin bùng nổ như hiện nay, phần mềm đóng một vai trò cực kỳ quan trọng trong hầu hết các lĩnh vực của đời sống. Phần mềm là một sản phẩm cần phải được đảm bảo về chất lượng. Đảm bảo chất lượng phần mềm (SQA- Software Quality Assuarance) là một nhiệm vụ đặc biệt quan trọng trong phát triển phần mềm và là vấn đề sống còn đối với tất cả các công ty phần mềm. Để đảm bảo chất lượng phần mềm thì trong các dự án phần mềm phải tiến hành xác minh và thẩm định. Một trong các hoạt động xác minh và thẩm định quan trọng là tiến hành kiểm thử phần mềm. Kiểm thử cần được tiến hành ở nhiều mức và phối hợp nhiều kỹ thuật khác nhau. Phần không thể thiếu trong kiểm thử là việc xây dựng các ca kiểm thử. Các ca kiểm thử phải đủ tốt mới có thể phát hiện ra khiếm khuyết của phần mềm. Một vấn đề đặt ra ở đây là làm thế nào để xác định được ca kiểm thử đó là tốt, những tiêu chí nào đánh giá chất lượng của chính ca kiểm thử? Và công việc tiến hành kiểm tra khi nào thì dừng lại? Nội dung của khoá luận sẽ đề cập đến hai phương pháp nhằm mục đích xây dựng các ca kiểm thử tốt đó là kỹ thuật phân tích bao phủ code và kỹ thuật phân tích giá trị điểm biên. Phân tích bao phủ code sẽ phải tiến hành xây dựng các ca kiểm thử tất cả các luồng đường đi có thể qua chương trình, các luồng đường đi từ input tới output được xác định dựa trên các nhánh rẽ của chương trình. Thông thường các lỗi về lập trình thường hay xảy ra tại giá trị biên do vậy tại giá trị biên cần phải thiết kế ca kiểm thử kiểm tra nó. Trong phạm vi của khoá luận chúng tôi sẽ tiến hành cài đặt một chương trình nhằm tìm ra các câu lệnh điều khiển của file nguồn java và chỉ ra giá trị biên trong các biểu thức so sánh nhằm mục đích chỉ ra để xuất các giá trị biên baseline và robust cần được kiểm tra. 5 Mục lục CHƯƠNG 1. MỞ ĐẦU 10 1.1 Bối cảnh nghiên cứu 10 1.2 Nội dung bài toán 11 1.3 Cấu trúc của khoá luận 12 CHƯƠNG 2. GIỚI THIỆU VỀ BAO PHỦ CODE 14 2.1 Bao phủ code là gì ? 14 2.2 Tại sao cần đo lượng code được bao phủ ? 14 2.3 Làm thế nào để xác định lượng code được bao phủ ? 15 2.4. Trong tiến trình test thì bao phủ code hợp với kỹ thuật kiểm thử nào ? 15 2.4.1 Kiểm thử hộp đen 15 2.4.2 Kiểm thử hộp trắng 15 2.4.3 Bao phủ code 16 CHƯƠNG 3. GIỚI THIỆU MỘT SỐ PHƯƠNG PHÁP BAO PHỦ 17 3.1 Bao phủ câu lệnh (Statement coverage) 17 3.2 Bao phủ nhánh (Branch coverage) 17 3.3 Bao phủ đường đi (path coverage) 18 3.4 Bao phủ điều kiện (condition coverage) 18 3.5 Bao phủ nhiều điều kiện (multiple condition coverage) 18 CHƯƠNG 4. PHÂN TÍCH, ĐÁNH GIÁ CÁC PHƯƠNG PHÁP BAO PHỦ 19 4.1 Phân tích phương pháp bao phủ câu lệnh (statement coverage) 19 4.2 Phân tích phương pháp bao phủ nhánh (branch coverage) 23 4.3 Phân tích phương pháp bao phủ đường đi (path coverage) 28 CHƯƠNG 5. PHÂN TÍCH GIÁ TRỊ ĐIỂM BIÊN 33 5.1 Giới thiệu 33 5.2 Phân hoạch tương đương(equivalence partitioning) 33 5.3 Phân tích giá trị biên (boundary value analysis) 34 5.3.1 Tổng quan về phân tích giá trị điểm biên 34 5.3.2 Lựa chọn các ca kiểm thử sử dụng phân tích giá trị điểm biên 34 5.3.3 Phân tích giá trị biên đơn biến (Single-Variable BVA) 35 5.3.4 Phân tích giá trị biên đa biến (Multi – Variable BVA) 36 5.3.5 Kết luận 40 CHƯƠNG 6. THỰC NGHIỆM 41 6.1 Ví dụ một chương trình đơn giản 41 6.1.1 Xây dựng các ca kiểm thử cho chương trình trên 42 6.1.2 Kết luận 46 6.2 Chương trình cài đặt tìm kiếm các câu lệnh rẽ nhánh trong mã nguồn java. 46 6.2.1 Giới thiệu về chương trình 46 6.2.2 Mô tả các chức năng chính 46 6.2.3 Biểu đồ trình tự 47 6.2.4 Thuật toán đã sử dụng 49 6.2.5 Các lớp cài đặt 51 6.2.5 Kết quả thao tác các chức năng giữa người dùng và chương trình như sau 51 6.3 Kết luận 56 6 CHƯƠNG 7: KẾT LUẬN KHOÁ LUẬN 57 7.1 Kết luận về khoá luận 57 7.2 Hướng nghiên cứu phát triển trong tương lai 57 TÀI LIỆU THAM KHẢO 59 7 DANH SÁCH CÁC HÌNH VẼ Hình 1 : Kết quả kiểm tra mã nguồn được thực thi 20 Hình 2 : Kết quả đo bao phủ dòng lệnh 23 Hình 3 : Kết quả thực hiện test case 1 26 Hình 4 : Kết quả đo bao phủ nhánh khi thực hiện test case 1 26 Hình 5 : Kết quả khi thực hiện test case 2 27 Hình 6 : Kết quả đo bao phủ nhánh khi thực hiện test case 2 27 Hình 7: Kết quả thực hiện test case 3 30 Hình 8 : Kết quả đo bao phủ khi thực hiện test case 3 31 Hình 9 : Kết quả thực hiện test case 4 32 Hình 10 : Kết quả đo bao phủ khi thực hiện test case 4 32 Hình 11 : Tập hợp các giá trị biên baseline cho đơn biến trên một khoảng đầu vào 35 Hình 12 : Đường các giá trị baseline và robust cho đơn biến trên một khoảng đầu vào 36 Hình 13 : Tập hợp các giá trị baseline và rubust trường hợp đơn biến trên hai khoảng đầu vào 36 Hình 14 : Tập giá trị baseline và robust của biến N trong trường hợp hai biến đầu vào 37 Hình 15 : Tập hợp giá trị baseline và rubust trên hai khoảng của biến M trong trường hợp hai biến đầu vào 38 Hình 16 : Tổng hợp tất cả các giá trị của hai biến N và M trên hai khoảng đầu vào 38 Hình 17 : Tổng hợp toán bộ giá trị baseline, robust trường hợp đa biến đầu vào trên hai khoảng 39 Hình 18 : Ví dụ cấu trúc một chương trình đơn giản 41 Hình 19 : Các công việc cần thực hiện (tô đậm) 42 Hình 20 : Test case 1 kiểm tra công việc A 42 Hình 21 : Test case 2 kiểm tra công việc B 42 Hình 22 : Test case 3 kiểm tra công việc C 43 Hình 23 : Hai điều kiện một và hai là độc lập nhau 43 Hình 24 : Kiểm tra đồng thời công việc A và công việc C trong cùng 1 test case 44 Test case 2 kiểm tra công việc B và công việc C: 44 Hình 25 : Test case kiểm tra đồng thời công việc B và C 44 Hình 26 : Nhánh không được bao phủ 45 Hình 27. Biểu đồ trình tự 47 Hình 28: Biều đồ trình tự khi tương tác câu lệnh if 48 Hình 29: Biều đồ trình tự khi tương tác câu lệnh while 48 Hình 30: Biểu đồ trình tự khi tương tác câu lệnh for 49 Hình 31: Kiến trúc lớp cài đặt Get_File_Name 51 Hình 32: Kiến trúc lớp ReadContentFile 51 Hình 33: Giao diện yêu cầu nhập tên file cần đọc 52 Hình 34: Nhập tên file không đúng định dạng *.java 52 Hình 35: Nhập vào một tên file đúng để đọc 52 Hình 36 : Nội dung của file TestFile.java 52 Hình 37: Kết quả tìm kiếm câu lệnh điều khiển 53 Hình 38 : Nội dung của file chứa câu lệnh điều khiển được tìm kiếm 53 8 Hình 39 : Kết quả khi người dùng muốn thao tác với câu lệnh if 54 Hình 40 : Kết quả khi người dùng muốn thao tác với câu lệnh while 55 Hình 41 : Kết quả khi người dùng muốn thao tác với câu lệnh for 55 9 DANH MỤC CÁC THUẬT NGỮ Thuật ngữ Khái niệm Statement coverage Bao phủ câu lệnh Branch coverage Bao phủ nhánh Path coverage Bao phủ đường đi Condition coverage Bao phủ điều kiện Boundary value analysis(BVA) Phân tích giá trị biên Single-variable BVA Phân tích giá trị biên đơn biến Multi-variable BVA Phân tích giá trị biên đa biến Equivalence partitioning Phân hoạch tương đương Test case Ca kiểm thử Valication Xác minh Verification Thẩm định Test entropy Kiểm tra độ bất định trong cấu trúc của hệ thống Cyclomatic complextity Số đường độc lập tuyến tính đi qua mã nguồn Baseline đường cơ sở Robust mạnh mẽ Module Mô đun 10 CHƯƠNG 1. MỞ ĐẦU 1.1 Bối cảnh nghiên cứu Trong thời đại công nghệ thông tin bùng nổ như ngày nay, phần mềm đóng vai trò vô cùng quan trọng ở hầu hết các lĩnh vực của cuộc sống. Đặc biệt trong khối ngành doanh nghiệp, dịch vụ, quảng cáo, nó đã trợ giúp đắc lực nhằm làm tăng chất lượng nghiệp vụ. Mỗi bộ phận đều phụ thuộc vào phần mềm để hỗ trợ cho việc phát triển, sản xuất, quảng cáo nhằm tiếp thị các sản phầm và dịch vụ của họ. Phần mềm cũng được xem là một sản phẩm, nhưng là loại hình sản xuất đặc biệt. Trong một quy trình sản xuất phần mềm, giai đoạn phát hiện, xác định và sửa các lỗi phần mềm được xem là phần không thể thiếu nhằm đảm bảo chất lượng phần mềm. Đảm bảo chất lượng phần mềm là một nhiệm vụ đặc biệt quan trọng trong phát triển phầm mềm và là vấn đề sống còn đối với tất cả các công ty phần mềm. Ở mức cao, việc đảm bảo chất lượng liên quan đến một loạt các vấn đề như chuẩn và qui trình quản lý của công ty, môi trường và công cụ phát triển, mô hình phát triển phần mềm được lựa chọn, kỹ năng của nhân viên…Ở mức thấp hơn, chất lượng phần mềm được đảm bảo trên cơ sở hiểu đúng yêu cầu của khách hàng, đặc tả đúng yêu cầu, tạo ra các thiết kết tốt và chuyển tải nó một cách đúng đắn thành mã nguồn của phần mềm. Chi phí bỏ ra cho giai đoạn này thường chiếm không nhỏ trong tổng chi phí mà các tổ chức phát triển phần mềm bỏ ra cho toàn bộ qui trình. Với tốc độ phát triển chóng mặt của lĩnh vực công nghệ thông tin trên cả hệ thống phần cứng và phần mềm, khả năng xảy ra nhiều lỗi, đặc biệt là những lỗi phức tạp là rất cao. Lỗi có thể gây thiệt hại to lớn cả về tiền bạc, thời gian và công sức con người. Chính vì vậy, cần có phương pháp phát hiện ra lỗi sớm nhằm giảm công sức để sửa chúng. Để phát hiện ra những lỗi phần mềm, phần mềm cần phải được thẩm định (Valication) và kiểm chứng (Verification). Xác minh, thẩm định giúp ta phát hiện và sửa lỗi phần mềm từ đó đánh tính dùng được của phần mềm. Con người không thể không mắc sai lầm, và phần mềm mà không được kiểm tra sẽ làm việc không hiểu quả. Thông thường, có từ 20 đến 50 lỗi trên 1000 dòng lệnh được tìm thấy trong suốt quá trình phát triển, và vẫn còn từ 1.5 đến 4 lỗi trên 1000 dòng lệnh sau khi kiểm thử hệ thống [1]. Mỗi lỗi này đều có thể dẫn tới lỗi tổng thể hay không đúng với đặc tả yêu cầu. Mục đích của kiểm thử phần mềm là làm giảm lỗi phần mềm xuống mức có thể chấp nhận được, tuỳ thuộc vào mức độ phức tạp của dự án. Chính vì vậy, kiểm thử phần mềm có vai trò vô cùng quan trọng trong toàn bộ quy trình [...]... của khoá luận được trình bày như sau: Chương 2 giới thiệu về bao phủ code Trong chương này sẽ giới thiệu về kỹ thuật bao phủ code Lý do, tầm quan trọng của bao phủ code Cách tiếp cận để có thể đo code được bao phủ Phân loại bao phủ code vào kỹ thuật kiểm thử hộp trắng Chương 3 giới thiệu về một số phương pháp đo bao phủ code cơ bản nhưng vô cùng mạnh mẽ đó là các phương pháp : bao phủ câu lệnh đo bao. .. thể, bao phủ cậu lệnh cho ta kết quả bao phủ hoặc 1% hoặc là 99 % Bao phủ câu khối lệnh thường lờ đi vấn đề này Trước những hạn chế của bao phủ câu lệnh ta có thể tìm đến một kỹ thuật bao phủ khác tốt hơn đó là bao phủ nhánh 4.2 Phân tích phương pháp bao phủ nhánh (branch coverage) Một nhánh là một kết luận logic của một quyết định, do vậy bao phủ nhánh đơn giản là đo kết luận logic nào đã được kiểm. .. Chương 7 kết luận về khoá luận và hướng nghiên cứu tiếp theo 13 CHƯƠNG 2 GIỚI THIỆU VỀ BAO PHỦ CODE 2.1 Bao phủ code là gì ? Bao phủ code là phần trăm code được phủ bằng cách kiểm tra (test) tự động Đo lượng code bao phủ đơn giản là xác định những câu lệnh nào được thực thi, những câu lệnh nào không được thực thi thông qua việc kiểm tra Nhìn chung, một hệ thống bao phủ code sẽ thu thập thông tin về chương... thông tin bao phủ 2.4 Trong tiến trình test thì bao phủ code hợp với kỹ thuật kiểm thử nào ? 2.4.1 Kiểm thử hộp đen Kiểm thử hộp đen là sự kiểm thử sử dụng các ca kiểm thử được thiết kế dựa trên đặc tả yêu cầu, tài liệu người dùng nhằm mục đích phát hiện ra các khiếm khuyết Kiểm thử hộp đen nhìn nhận mô đun (module) được kiểm tra như là một hộp đen, và chỉ quan tâm đến chức năng (hành vi) của mô đun... lượt phân tích một số đề xuất bao phủ nhằm đưa ra để đánh giá chất lượng của ca kiểm thử: bao phủ câu lệnh (statement coverage), bao phủ nhánh (branch coverage) và bao phủ đường đi (path coverage) 4.1 Phân tích phương pháp bao phủ câu lệnh (statement coverage) Trong thiết kế test case ta luôn cố gắng bao phủ tối đa câu lệnh trong mã nguồn với số test case ít nhất có thể Bao phủ câu lệnh sẽ nhận ra các... tra như thế nào Kiểm thử đệ quy thường là kiểm thử hộp đen do đó có thể không phù hợp với bao phủ code 16 CHƯƠNG 3 GIỚI THIỆU MỘT SỐ PHƯƠNG PHÁP BAO PHỦ 3.1 Bao phủ câu lệnh (Statement coverage) Bao phủ câu lệnh còn được gọi là bao phủ dòng lệnh (line coverage), là một cách đo số câu lệnh được thực thi khi ta áp dụng những ca kiểm thử thích hợp Đối với mỗi câu lệnh không được bao phủ, chúng ta sẽ tìm... đã không tăng theo hàm mũ mà vẫn đảm bảo được yêu cầu bao phủ đầy đủ các nhánh Ta nhận thấy rằng bao phủ đường đi bao gồm cả bao phủ câu lệnh và bao phủ nhánh trong phương thức Nó tác động gộp lên cả bao phủ nhánh và bao phủ câu lệnh Ta luôn nhớ rằng, mục đích kiểm tra của các đường cơ sở là để kiểm tra tất cả các nhánh tác động độc lập với nhau Kiểm tra 4 đường cơ sở nhằm đạt được mục đích này Ta có... câu lệnh mã nguồn, bao phủ nhánh đo bao nhiêu nhánh đã được thực thi trong tổng số các nhánh rẽ của chương trình, bao phủ đường đi đo bao nhiêu luồng đường đi được kiểm tra, bao phủ điều kiện tương tự như bao phủ nhánh nhưng nó có độ nhạy tốt hơn, bao phủ nhiều điều kiện kết hợp các biểu thức điều kiện con trong các câu lệnh rẽ nhánh Chương 4 phân tích, đánh giá các phương pháp bao phủ Trong chương này... pháp kiểm thử hộp trắng, bao phủ code cần phải hiểu về mã nguồn, có thể truy cập vào mã nguồn hơn là đơn giản sử dụng các giao diện được cung cấp Có thế nói bao phủ code là phương pháp hữu ích nhất trong suốt giai đoạn kiểm thử mô đun (module), tuy nhiên nó cũng có những lợi ích trong kiểm thử tích hợp và trong các lần kiểm thử khác nữa, phụ thuộc vào chúng ta kiểm tra cái gì và kiểm tra như thế nào Kiểm. .. chiến lược kiểm thử tối ưu, trong tài liệu này sẽ đề cập đến kỹ thuật phân tích code bao phủ và phân tích các giá trị biên Kỹ thuật phân tích bao phủ sẽ đánh giá độ bao phủ từ đó xác định quá trình kiểm tra có đạt được độ bao phủ yêu cầu hay không, tỷ lệ yêu cầu đã được kiểm tra (tính trên các yêu cầu của phần mềm và số lượng code đã viết) Trong phạm vi tài liệu sẽ phân tích các cách bao phủ cơ bản . định thông tin bao phủ. 2.4. Trong tiến trình test thì bao phủ code hợp với kỹ thuật kiểm thử nào ? 2.4.1 Kiểm thử hộp đen Kiểm thử hộp đen là sự kiểm thử sử dụng các ca kiểm thử được thiết. khoá luận Phần còn lại của khoá luận được trình bày như sau: Chương 2 giới thiệu về bao phủ code. Trong chương này sẽ giới thiệu về kỹ thuật bao phủ code. Lý do, tầm quan trọng của bao phủ. thực nghiệm, đề xuất các ca kiểm thử để đảm bảo kiểm tra code được bao phủ chương trình. Thông thường để xây dựng các ca kiểm thử kiểm tra bao phủ các nhánh và bao phủ đường đi ta phải xác định

Ngày đăng: 28/06/2014, 01:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan