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

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 ra 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-

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

Dưới đây là một số lý do chính để sử dụng độ phủ 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

Báo cáo phạm vi là một kỹ thuật kiểm thử 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 để xác định kịch bản dựa trên cấu trúc của mã được kiểm tra.

Trong Kiểm tra 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 mỗi kịch bản.

Mã nguồn:

 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 

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 của 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 câu lệnh đều được bao hàm bởi 2NSkịch bản đã đượ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

Phạm vi quyết định 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. Vì vậy, rất khó để đạt được độ che phủ 100%. Đó là lý do tại sao có nhiều phương pháp khác nhau để báo cáo số liệu này. 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 vùng bao phủ 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) { If (a> 5) a=a*3 Print (a) } 

Cảnh 1:

Giá trị của a là 2

Mã được đánh dấu 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.

Mức độ phù hợp quyết định = 50%

Tình huống 2:

Giá trị của a là 6

Mã được đánh dấu 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.

Mức độ phù hợp quyết định = 50%

Trường hợp thử nghiệmGiá trị của AĐầu raPhạm vi quyết định
122năm mươi%
2618năm mươi%

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 số 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) { If (a> 5) a=a*3 Print (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ệmGiá trị của AĐầu raPhạm vi quyết địnhBảo hiểm chi nhánh
122năm mươi% 33%
2618năm mươi% 67%

Ưu điểm của phạm vi chi nhánh:

Vùng phủ chi nhánh Thử nghiệm mang lại những ưu điểm 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

Điều kiện bảo hiểm hay phạm vi 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 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

Xem xét đầu vào sau

X = 3

Y = 4

(NS

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

Bao phủ máy trạng thái hữu hạn chắc chắn là loại phương pháp bao 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ã nào để lựa 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 phủ sóng, 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, 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 một đặ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ệnThự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ả
Phủ sóng 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ộ kiểm tra 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.
Mơ ước 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ế, vùng phủ mã vẫn báo cáo vùng 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 tính năng 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ộ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 phải 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 độ phù hợp của mã cho bạn biết mã nguồn đã được thực hiện tốt như thế nào bởi băng ghế 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