Code Công cụ kiểm thử độ bao phủ: Kiểm thử câu lệnh, nhánh và quyết định
⚡ Tóm tắt thông minh
Code Độ phủ mã là một phép đo hộp trắng báo cáo mức độ mã nguồn đã được thực thi bởi bộ kiểm thử.ping Các nhóm sẽ xác định các câu lệnh, nhánh, điều kiện và đường dẫn chưa được kiểm thử mà các lỗi tiềm ẩn có thể ẩn chứa.

Là gì Code Phủ sóng?
Code bảo hiểm Đây là một thước đo mô tả mức độ kiểm thử mã nguồn của một chương trình. Nó là một hình thức của... kiểm thử hộp trắng Công cụ này tìm ra các vùng của chương trình chưa được kiểm thử bởi một tập hợp các trường hợp kiểm thử. Nó cũng giúp tạo thêm các trường hợp kiểm thử để tăng độ bao phủ và xác định thước đo định lượng về độ bao phủ mã.
Trong hầu hết các trường hợp, hệ thống đo độ phủ mã thu thập thông tin về chương trình đang chạy. Sau đó, nó kết hợp thông tin đó với thông tin mã nguồn để tạo ra báo cáo về độ phủ mã của bộ kiểm thử.
Tại sao sử dụng Code Kiểm thử độ phủ?
Dưới đây là một số lý do chính cho việc sử dụng phạm vi bảo hiểm mã:
- Nó giúp bạn đo lường hiệu quả của việc triển khai kiểm thử.
- Nó cung cấp một phép đo định lượng về quá trình thử nghiệm.
- Nó xác định mức độ mà mã nguồn đã được kiểm tra.
Code Phương pháp phủ sóng
Dưới đây là các phương pháp đo độ phủ mã chính:
- Bảo hiểm Tuyên bố
- Phạm vi quyết định
- Bảo hiểm chi nhánh
- Toggle Bảo hiểm
- Bảo hiểm FSM
Bảo hiểm Tuyên bố
Bảo hiểm Tuyên bố Kiểm thử hộp trắng là một kỹ thuật kiểm thử trong đó tất cả các câu lệnh có thể thực thi trong mã nguồn đều được thực thi ít nhất một lần. Nó được sử dụng để tính toán số lượng câu lệnh trong mã nguồn đã được thực thi. Mục đích chính của Kiểm thử câu lệnh là bao phủ tất cả các đường dẫn, dòng và câu lệnh có thể có trong mã nguồn.
Độ phủ câu lệnh được sử dụng để xây dựng các kịch bản dựa trên cấu trúc của mã cần kiểm thử.
Trong kiểm thử hộp trắng, người kiểm thử tập trung vào cách phần mềm hoạt động. Nói cách khác, người kiểm thử tập trung vào hoạt động bên trong của mã nguồn liên quan đến biểu đồ luồng điều khiển hoặc sơ đồ khối.
Thông thường trong bất kỳ phần mềm nào, nếu bạn xem mã nguồn, bạn sẽ thấy rất nhiều thành phần khác nhau như toán tử, hàm, v.v.pingCác trình xử lý ngoại lệ, v.v. Tùy thuộc vào dữ liệu đầu vào của chương trình, một số câu lệnh có thể không được thực thi. Mục tiêu của việc kiểm thử bao phủ câu lệnh là bao phủ tất cả các đường dẫn, dòng và câu lệnh có thể có trong mã.
Chúng ta hãy cùng hiểu điều này thông qua một ví dụ về cách tính độ phủ câu lệnh. Ở đây, chúng ta sẽ xem xét hai kịch bản khác nhau để kiểm tra tỷ lệ độ phủ câu lệnh cho mỗi kịch bản.
nguồn Code:
Prints (int a, int b) { ------------ Printsum is a function int result = a + b; If (result > 0) Print ("Positive", result) Else Print ("Negative", result) } ----------- End of the source code
Kịch bản 1: Nếu A = 3, B = 9
Các câu lệnh được đánh dấu màu vàng là những câu lệnh được thực thi theo kịch bản. Số câu lệnh được thực thi = 5, Tổng số câu lệnh = 7, do đó Độ phủ câu lệnh = 5/7 = 71%.
Kịch bản 2: Nếu A = -3, B = -9
Các câu lệnh được đánh dấu màu vàng là những câu lệnh được thực thi theo kịch bản. Số câu lệnh được thực thi = 6, Tổng số câu lệnh = 7, do đó Độ phủ câu lệnh = 6/7 = 85%.
Nhưng nhìn chung, nếu bạn để ý, tất cả các tuyên bố đều được đề cập trong cả hai trường hợp. Vì vậy, chúng ta có thể kết luận rằng phạm vi bao phủ tuyên bố tổng thể là 100%.
Bảo hiểm Tuyên bố bao gồm những gì?
- Báo cáo chưa sử dụng
- Đã chết Code
- Các nhánh không sử dụng
- Thiếu báo cáo
Kiểm tra phạm vi quyết định
Phạm vi quyết định Kiểm thử hộp trắng là một kỹ thuật kiểm thử báo cáo kết quả đúng hoặc sai của mỗi biểu thức boolean trong mã nguồn. Mục tiêu của kiểm thử độ phủ quyết định là bao phủ và xác thực tất cả mã nguồn có thể truy cập bằng cách kiểm tra và đảm bảo rằng mỗi nhánh của mỗi điểm quyết định có thể được thực thi ít nhất một lần.
Trong loại kiểm thử độ phủ này, các biểu thức có thể trở nên phức tạp, khiến việc đạt được độ phủ 100% trở nên khó khăn. Đó là lý do tại sao người ta sử dụng nhiều phương pháp khác nhau để báo cáo chỉ số này. Các phương pháp này ưu tiên các tổ hợp quan trọng nhất. Mặc dù tương tự như độ phủ nhánh, nhưng nó cung cấp độ nhạy cao hơn đối với luồng điều khiển.
Ví dụ về phạm vi bao phủ quyết định
Hãy xem xét đoạn mã sau:
Demo(int a) { If (a > 5) a = a * 3 Print (a) }
Kịch bản 1: Giá trị của a là 2. Kết quả “Không” của quyết định Nếu (a>5) được chọn, thì Độ bao phủ quyết định = 50%.
Kịch bản 2: Giá trị của a là 6. Kết quả “Có” của quyết định nếu (a>5) được chọn, do đó Độ bao phủ quyết định = 50%.
| Trường hợp thử nghiệm | Giá trị của A | Đầu ra | Phạm vi quyết định |
|---|---|---|---|
| 1 | 2 | 2 | 50% |
| 2 | 6 | 18 | 50% |
Kiểm tra phạm vi chi nhánh
Bảo hiểm chi nhánh Đây là phương pháp kiểm thử hộp trắng, trong đó mọi kết quả đầu ra từ một mô-đun mã (câu lệnh hoặc vòng lặp) đều được kiểm tra. Mục đích của việc đo độ phủ nhánh là để đảm bảo rằng mỗi điều kiện quyết định từ mỗi nhánh được thực thi ít nhất một lần. Nó giúp đo lường tỷ lệ các đoạn mã độc lập và tìm ra các phần không có nhánh.
Ví dụ: nếu kết quả là nhị phân, bạn cần kiểm tra cả kết quả Đúng và Sai.
Công thức tính Độ bao phủ Chi nhánh:
Ví dụ về phạm vi chi nhánh
Để tìm hiểu về độ phủ nhánh, hãy xem xét ví dụ đã sử dụng trước đó. Độ phủ nhánh sẽ xem xét cả nhánh không điều kiện.
| Trường hợp thử nghiệm | Giá trị của A | Đầu ra | Phạm vi quyết định | Bảo hiểm chi nhánh |
|---|---|---|---|---|
| 1 | 2 | 2 | 50% | 33% |
| 2 | 6 | 18 | 50% | 67% |
Ưu điểm của phạm vi phủ sóng của Chi nhánh:
- Cho phép bạn xác thực tất cả các nhánh trong mã.
- Giúp bạn đảm bảo rằng không có nhánh nào dẫn đến bất kỳ sự bất thường nào trong hoạt động của chương trình.
- Khắc phục các sự cố phát sinh do kiểm thử độ phủ câu lệnh.
- Cho phép bạn tìm ra những khu vực chưa được kiểm tra bằng các phương pháp kiểm tra khác.
- Cho phép bạn tìm ra thước đo định lượng về độ phủ mã.
- Tính năng bao phủ nhánh bỏ qua các nhánh nằm bên trong các biểu thức boolean.
Kiểm tra phạm vi điều kiện
Bảo hiểm tình trạngKiểm thử điều kiện, hay còn gọi là kiểm thử độ phủ biểu thức, là một phương pháp kiểm thử được sử dụng để kiểm tra và đánh giá các biến hoặc biểu thức con trong một câu lệnh điều kiện. Mục tiêu của kiểm thử độ phủ điều kiện là kiểm tra kết quả riêng lẻ cho mỗi điều kiện logic. Kiểm thử độ phủ điều kiện cung cấp độ nhạy tốt hơn đối với luồng điều khiển so với kiểm thử độ phủ quyết định. Trong kiểm thử độ phủ này, chỉ những biểu thức có toán hạng logic mới được xem xét.
Ví dụ, nếu một biểu thức có các phép toán Boolean như AND, OR hoặc XOR, điều đó cho biết tổng số khả năng. Độ bao phủ điều kiện không đảm bảo độ bao phủ quyết định đầy đủ.
Công thức tính Bao phủ Điều kiện:
Đối với một biểu thức có hai toán hạng, có bốn tổ hợp khả thi: TT, FF, TF và FT. Xét đầu vào X=3, Y=4 (x b) SAI, điều này dẫn đến Tỷ lệ bảo hiểm điều kiện là 1/4 = 25%.
Bảo hiểm máy trạng thái hữu hạn
Kiểm tra độ phủ máy trạng thái hữu hạn chắc chắn là loại kiểm tra độ phủ mã phức tạp nhất. Điều này là do nó hoạt động trên hành vi của thiết kế. Trong phương pháp kiểm tra độ phủ này, bạn cần xem xét số lần các trạng thái cụ thể được truy cập hoặc chuyển đổi. Nó cũng kiểm tra xem có bao nhiêu chuỗi được bao gồm trong một máy trạng thái hữu hạn.
Loại nào của Code Các gói bảo hiểm để lựa chọn
Đây chắc chắn là câu trả lời khó nhất. Để lựa chọn phương pháp đo độ phủ mã, người kiểm thử cần kiểm tra xem:
- Mã đang được kiểm thử có một hoặc nhiều lỗi chưa được phát hiện.
- chi phí của khoản phạt tiềm năng,
- chi phí thiệt hại về danh tiếng,
- chi phí do doanh thu bị mất, v.v.
Khả năng sai sót sẽ gây ra thất bại sản xuất tốn kém càng cao thì mức độ bảo hiểm bạn cần chọn càng nghiêm trọng.
Code Phạm vi bao phủ so với phạm vi bao phủ chức năng
| Code Toàn Diện | Bảo hiểm chức năng |
|---|---|
| Cho biết mã nguồn đã được kiểm thử bởi hệ thống kiểm thử của bạn tốt đến mức nào. | Đo lường mức độ đáp ứng đầy đủ chức năng của thiết kế bởi hệ thống thử nghiệm của bạn. |
| Không bao giờ sử dụng bản đặc tả thiết kế. | Sử dụng bản đặc tả thiết kế. |
| Được thực hiện bởi các nhà phát triển. | Do các chuyên viên kiểm thử thực hiện. |
Code Công cụ phạm vi phủ sóng
Dưới đây là danh sách các công cụ đo độ phủ mã quan trọng:
| Tên công cụ | Mô tả Chi tiết |
|---|---|
| Cobertura | Một công cụ đo độ phủ mã nguồn mở. Nó đo độ phủ kiểm thử bằng cách chèn mã vào cơ sở mã và phân tích xem dòng mã nào được thực thi và dòng nào không khi bộ kiểm thử chạy. |
| Clover | Cỏ ba lá (OpenCloverĐiều này cũng giúp giảm thời gian kiểm thử bằng cách chỉ chạy các bài kiểm thử bao gồm phần mã ứng dụng đã được sửa đổi kể từ bản dựng trước đó. |
| Đối tác phát triển | DevPartner cho phép các nhà phát triển phân tích Java mã hóa cho chất lượng và độ phức tạp của mã. |
| Emma | EMMA hỗ trợ độ phủ mã theo lớp, phương thức, dòng và khối cơ bản, được tổng hợp ở cấp độ tệp nguồn, lớp và phương thức. |
| Kalistick | Kalistick là một ứng dụng bên thứ ba phân tích mã nguồn từ nhiều góc độ khác nhau. |
| CoView và CoAnt | Một công cụ đo độ phủ mã dành cho việc đo lường, tạo đối tượng giả lập, khả năng kiểm thử mã, độ phủ đường dẫn và nhánh, và hơn thế nữa. |
| Bullseye cho C++ | BullseyeCoverage là một công cụ đo độ phủ mã dành cho... C++ và C. |
| Sonar | Sonar là một công cụ mã nguồn mở giúp bạn quản lý chất lượng mã. |
Ưu điểm và nhược điểm của việc sử dụng Code Toàn Diện
| Ưu điểm | Nhược điểm |
|---|---|
| Hữu ích để đánh giá định lượng mức độ bao phủ mã. | Ngay cả khi một tính năng cụ thể không được triển khai trong thiết kế, báo cáo độ phủ mã vẫn cho thấy mức độ phủ 100%. |
| Cho phép bạn tạo thêm các trường hợp kiểm thử để tăng phạm vi bao phủ. | Không thể xác định liệu tất cả các giá trị có thể có của một tính năng đã được kiểm thử hay chưa bằng cách sử dụng độ phủ mã. |
| Cho phép bạn tìm ra các vùng của chương trình chưa được kiểm thử bởi một tập hợp các trường hợp kiểm thử. | Code Mức độ bao phủ không cho biết bạn đã bao quát logic của mình đến mức nào và tốt đến đâu. |






