Hướng dẫn sử dụng mã: Chi nhánh, Tuyên bố, Quyết định, FSM

Mục lục:

Anonim

Phạm vi bảo hiểm của Code là gì?

Độ phủ của mã là thước đo mô tả mức độ mã nguồn của chương trình đã được kiểm tra. Đây là một dạng kiểm thử hộp trắng tìm các vùng của chương trình không được thực hiện bởi một tập hợp các trường hợp kiểm thử. Nó cũng tạo ra một số trường hợp thử nghiệm để tăng độ phủ và xác định một thước đo định lượng về độ phủ của mã.

Trong hầu hết các trường hợp, hệ thống bao phủ mã thu thập thông tin về chương trình đang chạy. Nó cũng kết hợp thông tin đó với thông tin mã nguồn để tạo một báo cáo về mức độ bao phủ mã của bộ thử nghiệm.

Trong hướng dẫn này, bạn sẽ học-

  • Phạm vi bảo hiểm của Code là gì?
  • Tại sao sử dụng Code Coverage?
  • Phương thức bảo hiểm mã
  • Báo cáo phạm vi
  • Phạm vi quyết định
  • Bảo hiểm chi nhánh
  • Điều kiện bảo hiểm
  • Bảo hiểm máy trạng thái hữu hạn
  • Loại mã bảo hiểm nào để chọn
  • Phạm vi mã so với phạm vi chức năng
  • Công cụ bảo hiểm mã
  • Ưu điểm và nhược điểm của việc sử dụng Code Coverage

Tại sao sử dụng Code Coverage?

Dưới đây là một số lý do chính để sử dụng mức độ phù hợp của mã:

  • Nó giúp bạn đo lường hiệu quả của việc triển khai thử nghiệm
  • Nó cung cấp một phép đo định lượng.
  • Nó xác định mức độ mã nguồn đã được kiểm tra.

Phương thức bảo hiểm mã

Sau đây là các phương pháp bao phủ mã chính

  • Báo cáo phạm vi
  • Phạm vi quyết định
  • Bảo hiểm chi nhánh
  • Chuyển đổi phạm vi bảo hiểm
  • Phạm vi FSM

Báo cáo phạm vi

Statement Coverage là một kỹ thuật kiểm tra hộp trắng trong đó tất cả các câu lệnh thực thi trong mã nguồn đượ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 Statement Coverage là bao gồm tất cả các đường dẫn, dòng và câu lệnh có thể có trong mã nguồn.

Mức độ bao phủ của câu lệnh được sử dụng để tạo ra kịch bản dựa trên cấu trúc của mã đang được kiểm tra.

Trong Kiểm thử hộp trắng, người kiểm tra đang tập trung vào cách phần mềm hoạt động. Nói cách khác, người kiểm tra sẽ tập trung vào hoạt động nội bộ của mã nguồn liên quan đến biểu đồ luồng điều khiển hoặc biểu đồ luồng.

Nói chung trong bất kỳ phần mềm nào, nếu chúng ta nhìn vào mã nguồn, sẽ có rất nhiều phần tử như toán tử, hàm, vòng lặp, trình xử lý đặc biệt, v.v. Dựa trên đầu vào của chương trình, một số câu lệnh mã có thể không được thực thi. . Mục tiêu của phạm vi Statement là bao gồm tất cả các đường dẫn, dòng và câu lệnh có thể có trong mã.

Hãy hiểu điều này với một ví dụ, cách tính toán phạm vi của câu lệnh.

Kịch bản để tính toán Mức độ phù hợp của Báo cáo cho mã nguồn đã cho. Ở đây, chúng tôi đang sử dụng hai kịch bản khác nhau để kiểm tra tỷ lệ phần trăm mức độ phù hợp của câu lệnh cho từng tình huống.

Mã nguồn:

Prints (int a, int b) {------------ Printsum là một hàmint result = a + b;Nếu (kết quả> 0)In ("Dương tính", kết quả)KhácIn ("Âm bản", kết quả)} ----------- Cuối mã nguồn

Cảnh 1:

Nếu A = 3, B = 9

Các câu lệnh được đánh dấu bằng màu vàng là những câu lệnh được thực thi theo tình huống

Số câu lệnh đã thực thi = 5, Tổng số câu lệnh = 7

Mức độ phù hợp sao kê: 5/7 = 71%

Tương tự như vậy, chúng ta sẽ thấy kịch bản 2,

Tình huống 2:

Nếu A = -3, B = -9

Các câu lệnh được đánh dấu bằng 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 đã thực thi = 6

Tổng số câu lệnh = 7

Mức độ phù hợp của sao kê: 6/7 = 85%

Nhưng nhìn chung, nếu bạn thấy, tất cả các báo cáo đang được bao hàm bởi kịch bản thứ 2 được xem xét. Vì vậy, chúng tôi có thể kết luận rằng phạm vi báo cáo tổng thể là 100%.

Những gì được bảo hiểm bởi Statement Coverage?

  1. Tuyên bố không sử dụng
  2. Mã chết
  3. Các nhánh không được sử dụng
  4. Thiếu các câu lệnh

Phạm vi quyết định

Quyết định bao phủ là một kỹ thuật kiểm tra hộp trắng báo cáo kết quả đúng hoặc sai của mỗi biểu thức boolean của mã nguồn. Mục tiêu của kiểm tra phạm vi quyết định là bao gồm và xác thực tất cả mã nguồn có thể truy cập được 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 phạm vi bảo hiểm này, các biểu thức đôi khi có thể trở nên phức tạp. Do đó, rất khó để đạt được độ che phủ 100%. Đó là lý do tại sao có nhiều phương pháp báo cáo số liệu này khác nhau. Tất cả các phương pháp này tập trung vào việc bao gồm các kết hợp quan trọng nhất. Nó rất giống với phạm vi quyết định, nhưng nó cung cấp độ nhạy tốt hơn để kiểm soát dòng chảy.

Ví dụ về phạm vi quyết định

Hãy xem xét đoạn mã sau-

Demo (int a) {Nếu (a> 5)a = a * 3In (a)}

Cảnh 1:

Giá trị của a là 2

Mã được đánh dấu bằng màu vàng sẽ được thực thi. Ở đây, kết quả "Không" của quyết định Nếu (a> 5) được chọn.

Phạm vi quyết định = 50%

Tình huống 2:

Giá trị của a là 6

Mã được đánh dấu bằng màu vàng sẽ được thực thi. Ở đây, kết quả "Có" của quyết định Nếu (a> 5) được chọn.

Phạm vi 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%

Bảo hiểm chi nhánh

Bảo hiểm Chi nhánh là một phương pháp kiểm tra hộp trắng trong đó mọi kết quả từ mô-đun mã (câu lệnh hoặc vòng lặp) đều được kiểm tra. Mục đích của phạm vi chi nhánh là để đảm bảo rằng mỗi điều kiện quyết định từ mọi chi nhánh được thực thi ít nhất một lần. Nó giúp đo lường các phân đoạn của các đoạn mã độc lập và tìm ra các đoạ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 phạm vi bảo hiểm chi nhánh:

Ví dụ về phạm vi chi nhánh

Để tìm hiểu phạm vi chi nhánh, chúng ta hãy xem xét cùng một ví dụ được sử dụng trước đó

Hãy xem xét đoạn mã sau

Demo (int a) {Nếu (a> 5)a = a * 3In (a)}

Bảo hiểm chi nhánh cũng sẽ xem xét chi nhánh vô đ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 chi nhánh:

Kiểm tra phạm vi chi nhánh mang lại những lợi thế sau:

  • 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
  • Phương pháp phạm vi nhánh loại bỏ các vấn đề xảy ra do kiểm tra phạm vi báo cáo
  • Cho phép bạn tìm những khu vực không được kiểm tra bằng các phương pháp kiểm tra khác
  • Nó cho phép bạn tìm một thước đo định lượng về độ phủ của mã
  • Phạm vi nhánh bỏ qua các nhánh bên trong biểu thức Boolean

Điều kiện bảo hiểm

Độ phủ điều kiện hay vùng phủ biểu thức là một phương pháp kiểm tra được sử dụng để kiểm tra và đánh giá các biến hoặc biểu thức con trong câu lệnh điều kiện. Mục tiêu của phạm vi điều kiện là kiểm tra các kết quả riêng lẻ cho từng điều kiện logic. Phạm vi đ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 phạm vi quyết định. Trong phạm vi bảo hiểm này, các biểu thức có toán hạng logic chỉ đượ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, XOR, cho biết tổng số khả năng.

Bảo hiểm tình trạng không cung cấp bảo đảm về bảo hiểm toàn bộ quyết định.

Công thức để tính Bảo hiểm Điều kiện:

Thí dụ:

Đối với biểu thức trên, chúng ta có 4 kết hợp có thể

  • TT
  • FF
  • TF
  • FT

Hãy xem xét đầu vào sau

X = 3

Y = 4

(x

THẬT

Bảo hiểm tình trạng là ¼ = 25%

A = 3

B = 4

(a> b)

SAI

Bảo hiểm máy trạng thái hữu hạn

Vùng phủ máy trạng thái hữu hạn chắc chắn là loại phương pháp phủ mã phức tạp nhất. Điều này là do nó hoạt động dựa trên hành vi của thiết kế. Trong phương pháp bảo hiểm này, bạn cần tìm xem có bao nhiêu trạng thái theo thời gian cụ thể được truy cập, chuyển tiếp. Nó cũng kiểm tra xem có bao nhiêu trình tự được đưa vào một máy trạng thái hữu hạn.

Loại mã bảo hiểm nào để chọn

Đây chắc chắn là câu trả lời khó đưa ra nhất. Để chọn một phương pháp bao phủ, người thử nghiệm cần kiểm tra xem

  • mã được kiểm tra có một hoặc nhiều khiếm khuyết chưa được phát hiện
  • chi phí của hình phạt tiềm năng
  • chi phí của danh tiếng bị mất
  • chi phí bán hàng bị mất, v.v.

Xác suất các lỗi gây ra hỏng hóc 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.

Phạm vi mã so với phạm vi chức năng

Mã số bảo hiểm Bảo hiểm chức năng
Mức độ phù hợp của mã cho bạn biết mã nguồn đã được thực thi tốt như thế nào đối với bộ phận thử nghiệm của bạn. Phạm vi chức năng đo lường mức độ chức năng của thiết kế đã được bao phủ bởi băng ghế thử nghiệm của bạn.
Không bao giờ sử dụng đặc điểm kỹ thuật thiết kế Sử dụng đặc điểm kỹ thuật thiết kế
Do các nhà phát triển thực hiện Thực hiện bởi Người kiểm tra

Công cụ bảo hiểm mã

Đây là danh sách các Công cụ bảo hiểm mã quan trọng:

Tên công cụ Sự miêu tả
Cobertura Nó là một công cụ bao phủ mã nguồn mở. Nó đo lường phạm vi kiểm tra bằng cách thiết lập một cơ sở mã và phân tích dòng mã nào đang thực thi và dòng nào không được thực thi khi bộ thử nghiệm chạy.
cỏ ba lá Clover cũng giảm thời gian testng bằng cách chỉ chạy các bài kiểm tra bao gồm mã ứng dụng đã được sửa đổi từ bản dựng trước.
DevPartner DevPartner cho phép các nhà phát triển phân tích mã Java về Chất lượng và Độ phức tạp của mã.
Emma EMMA hỗ trợ mức độ bao phủ của lớp, phương thức, dòng và khối cơ sở, tệp nguồn tổng hợp, lớp và mức phương thức.
Kalistick Kalistick là một ứng dụng của bên thứ ba phân tích các mã với các quan điểm khác nhau.
CoView và CoAnt Phần mềm mã hóa là một công cụ bao phủ mã cho các số liệu, tạo đối tượng giả, khả năng kiểm tra mã, phạm vi đường dẫn và chi nhánh, v.v.
Bullseye cho C ++ BulseyeCoverage là một công cụ bao phủ mã cho C ++ và C.
Sonar Sonar là một công cụ bao phủ mã mở giúp bạn quản lý chất lượng mã.

Ưu điểm của việc sử dụng bảo hiểm mã

  • Hữu ích để đánh giá một thước đo định lượng về độ bao phủ của mã
  • Nó cho phép bạn tạo thêm các trường hợp thử nghiệm để tăng mức độ phù hợp
  • Nó cho phép bạn tìm các khu vực của một chương trình không được thực hiện bởi một tập hợp các trường hợp thử nghiệm

Nhược điểm của việc Sử dụng Bảo hiểm Mã

  • Ngay cả khi bất kỳ tính năng cụ thể nào không được triển khai trong thiết kế, độ phủ mã vẫn báo cáo độ phủ 100%.
  • Không thể xác định liệu chúng tôi đã kiểm tra tất cả các giá trị có thể có của một đối tượng địa lý với sự trợ giúp của phạm vi mã hay không
  • Mức độ bao phủ của mã cũng không cho biết bạn đã bao phủ logic của mình bao nhiêu và tốt như thế nào
  • Trong trường hợp khi chức năng được chỉ định không được triển khai hoặc không được bao gồm trong đặc tả, thì các kỹ thuật dựa trên cấu trúc không thể tìm thấy vấn đề đó.

Tóm lược

  • Độ phủ của mã là thước đo mô tả mức độ mã nguồn của chương trình đã được kiểm tra
  • Nó giúp bạn đo lường hiệu quả của việc triển khai thử nghiệm
  • Năm phương pháp Bảo hiểm Mã là 1.) Phạm vi Báo cáo 2.) Bảo hiểm Tình trạng 3) Bảo hiểm Chi nhánh 4) Bảo hiểm Chuyển đổi 5) Phạm vi FSM
  • Phạm vi câu lệnh liên quan đến việc thực thi tất cả các câu lệnh thực thi trong mã nguồn ít nhất một lần
  • Phạm vi quyết định báo cáo kết quả đúng hoặc sai của mỗi biểu thức Boolean
  • Trong phạm vi chi nhánh, mọi kết quả từ mô-đun mã đều được kiểm tra
  • Điều kiện sẽ tiết lộ cách các biến hoặc biểu thức con trong câu lệnh điều kiện được đánh giá
  • Vùng phủ máy trạng thái hữu hạn chắc chắn là loại phương pháp phủ mã phức tạp nhất
  • Để chọn một phương pháp bảo hiểm, người kiểm tra cần kiểm tra chi phí của hình phạt tiềm ẩn, danh tiếng bị mất, bán hàng bị mất, v.v.
  • Mức độ bao phủ của mã cho bạn biết mã nguồn đã được thực thi tốt như thế nào bởi băng kiểm tra của bạn trong khi Mức độ phù hợp chức năng đo lường mức độ chức năng của thiết kế đã được bao phủ
  • Cobertura, JTest, Clover, Emma, ​​Kalistick là một vài công cụ bảo vệ mã quan trọng
  • Code Coverage cho phép bạn tạo thêm các trường hợp thử nghiệm để tăng mức độ phù hợp
  • Mức độ phù hợp của mã không giúp bạn xác định liệu chúng tôi đã kiểm tra tất cả các giá trị có thể có của một tính năng hay không