Báo cáo phạm vi kiểm tra và báo cáo thực hiện kiểm tra là các chỉ số quan trọng trong việc đánh giá chất lượng mã của bạn. Báo cáo phạm vi thử nghiệm cho bạn biết bao nhiêu phần trăm mã của bạn được bao phủ bởi các trường hợp thử nghiệm của bạn. Báo cáo thực hiện kiểm thử cho bạn biết kiểm thử nào đã được chạy và kết quả của chúng
Bản thân SonarQube không tính toán vùng phủ sóng. Để bao gồm các kết quả về mức độ phù hợp trong phân tích của bạn, bạn phải thiết lập công cụ mức độ phù hợp của bên thứ ba và định cấu hình SonarQube để nhập kết quả do công cụ đó tạo ra
Bên dưới, bạn sẽ tìm thấy các hướng dẫn và tài nguyên, cũng như các tham số phân tích theo ngôn ngữ và công cụ cụ thể
Hướng dẫn chung
Trước khi nhập phạm vi kiểm tra, bạn cần phải định cấu hình SonarScanner thích hợp để thực hiện phân tích mã như một phần của quy trình xây dựng của bạn
Để bật báo cáo phạm vi bảo hiểm, sau đó bạn phải thực hiện các thao tác sau
- Thiết lập công cụ bảo hiểm của bạn để chạy như một phần của quy trình xây dựng của bạn. Công cụ bảo hiểm của bạn phải được thiết lập để chạy trước khi phân tích SonarScanner
- Định cấu hình công cụ bảo hiểm sao cho vị trí và định dạng của tệp báo cáo đầu ra khớp với những gì SonarScanner mong đợi
- Định cấu hình các tham số phân tích của SonarScanner để nó có thể nhập các tệp báo cáo
Bây giờ, trên mỗi bản dựng dự án của bạn, công cụ bảo hiểm của bạn sẽ thực hiện phân tích và xuất kết quả của nó thành một hoặc nhiều tệp [thường là một tệp cho phạm vi kiểm tra và một tệp để thực hiện kiểm tra]. Sau đó, SonarScanner, như một phần của quy trình phân tích, sẽ nhập các tệp đó và gửi kết quả tới SonarQube
hỗ trợ bảo hiểm
SonarQube trực tiếp hỗ trợ nhập dữ liệu vùng phủ sóng ở các định dạng có nguồn gốc từ nhiều công cụ cho nhiều ngôn ngữ. Nó cũng hỗ trợ nhập định dạng chung có thể được sử dụng làm mục tiêu để chuyển đổi báo cáo tùy chỉnh từ các công cụ không được hỗ trợ trực tiếp
Hướng dẫn chi tiết
Hướng dẫn chi tiết cho các ngôn ngữ sau được cung cấp trong phần này
định dạng chung
Xem Dữ liệu thử nghiệm chung để biết thông tin về cách thức hoạt động của định dạng chung
Kiểm tra phạm vi tham số
Xem Tham số phạm vi kiểm tra để tham khảo về tất cả các tham số phân tích liên quan đến phạm vi
Báo cáo thực hiện thử nghiệm
Phần này nói về báo cáo phạm vi thử nghiệm, nghĩa là các báo cáo mô tả tỷ lệ phần trăm mã của bạn được kiểm tra bởi bộ thử nghiệm của bạn trong quá trình xây dựng
Báo cáo thực hiện kiểm tra là một tính năng riêng biệt. Chúng mô tả những thử nghiệm nào trong bộ thử nghiệm của bạn được thực hiện trong quá trình xây dựng. Để biết chi tiết, hãy xem Thông số thực thi thử nghiệm
name: Build
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarqube:
name: SonarQube
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Install tox and any other packages
run: pip install tox
- name: Run tox
run: tox -e py
- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
2, nằm trong thư mục gốc của dự án Tóm lược. trong hướng dẫn này, bạn sẽ học cách sử dụng lệnh bảo hiểm unittest của Python để tạo báo cáo phạm vi kiểm tra
phạm vi kiểm tra là gì
Phạm vi kiểm thử là tỷ lệ giữa số dòng được thực hiện bởi ít nhất một trường hợp kiểm thử và tổng số dòng của cơ sở mã
test coverage = lines of code executed / total number of lines
Phạm vi kiểm tra còn được gọi là phạm vi mã
Phạm vi kiểm tra thường được sử dụng để đánh giá chất lượng của bộ kiểm tra. Nếu phạm vi kiểm tra thấp e. g. , 5%, đó là dấu hiệu cho thấy bạn chưa kiểm tra đủ
Tuy nhiên, điều ngược lại có thể không đúng. Ví dụ: phạm vi kiểm tra 100% không đảm bảo rằng bạn có một bộ kiểm tra tốt. Nói cách khác, một bộ test có độ bao phủ cao vẫn có thể kém chất lượng
Ví dụ về bảo hiểm Unittest
Chúng tôi sẽ sử dụng cấu trúc dự án sau đây để giới thiệu phạm vi bảo hiểm của
2. Lưu ý rằng bạn có thể lấy mã nguồn từ hướng dẫn này
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
Để tạo báo cáo bảo hiểm, bạn cần thực hiện hai bước
Đầu tiên, hãy chạy mô-đun vùng phủ sóng để tạo dữ liệu vùng phủ sóng
python -m coverage run -m unittest
Thứ hai, biến dữ liệu bảo hiểm thành một báo cáo
python -m coverage report
đầu ra
Code language: plaintext [plaintext]
Name Stmts Miss Cover ----------------------------------------- shapes\circle.py 9 0 100% shapes\shape.py 4 0 100% shapes\square.py 9 0 100% test\__init__.py 0 0 100% test\test_circle.py 14 0 100% test\test_square.py 14 0 100% ----------------------------------------- TOTAL 50 0 100%
Để tạo báo cáo mức độ phù hợp ở định dạng HTML, bạn thay đổi tùy chọn của mô-đun mức độ phù hợp thành HTML như thế này
________số 8đầu ra
Code language: CSS [css]
Wrote HTML report to htmlcov\index.html
Đầu ra cho biết vị trí của báo cáo bảo hiểm HTML
3 trong thư mục dự án
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
Nếu bạn mở chỉ mục. html của thư mục
4, nó sẽ giống như sau
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
Kiểm tra báo cáo chi tiết phạm vi bảo hiểm unittest
Đầu tiên, thêm phương thức
5 vào lớp
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
6 như sau
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
name: Build
on:
push:
branches:
- main
pull_request:
types: [opened, synchronize, reopened]
jobs:
sonarqube:
name: SonarQube
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Install tox and any other packages
run: pip install tox
- name: Run tox
run: tox -e py
- name: SonarQube Scan
uses: SonarSource/sonarqube-scan-action@master
env:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
SONAR_HOST_URL: ${{ secrets.SONAR_HOST_URL }}
4Tiếp theo, thu thập dữ liệu vùng phủ sóng bằng cách chạy lệnh sau
python -m coverage run -m unittest
Sau đó, tạo báo cáo bảo hiểm bằng cách thực hiện lệnh sau
python -m coverage report
đầu ra
0
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
Mức độ bao phủ hiện tại là 98% trong tổng số và 91% trong mô-đun
7. Điều này là do phương pháp
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
5 không được thử nghiệm
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
Sau đó, tạo báo cáo bảo hiểm ở định dạng HTML
1
D:\python-unit-testing ├── shapes | ├── circle.py | ├── shape.py | └── square.py └── test ├── test_circle.py ├── test_square.py └── __init__.py
_______39 có 11 câu lệnh. Bài kiểm tra thực hiện 10 trong số chúng và bỏ lỡ một câu lệnh. Do đó, phạm vi kiểm tra là 11/10 ~ 91%.