亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

2021年軟件測試工具總結(jié)——單元測試工具

qingshanli1988 / 3882人閱讀

摘要:單元測試框架作為的標準庫,是其他單元測試框架的基礎(chǔ)。可以和和配合使用編寫單元測試。官網(wǎng)地址單元測試覆蓋率工具單元測試中還需要用到代碼覆蓋率工具。代碼覆蓋率統(tǒng)計工具用來發(fā)現(xiàn)沒有被測試覆蓋的代碼,完善單元測試的覆蓋率。

在應(yīng)用程序中,單元是具有一個或多個輸入和單個輸出的軟件中最小可測試部分。單元測試是一種測試軟件代碼單元的方法,通常包括一個或兩個輸入,產(chǎn)生一個輸出。單元測試主要關(guān)注獨立模塊的功能正確性,目的是確保每個單元都按照預期的方式運行。

要進行單元測試,開發(fā)人員需要編寫測試代碼。單元測試有手動和自動化測試兩種類型,自動化通常是首選的方法,可以為開發(fā)人員節(jié)省大量的時間和精力。

單元測試是自動化測試金字塔模型中占比最大的測試類型,做好單元測試對于保證軟件產(chǎn)品的質(zhì)量非常重要,單元測試可以:

  • 及早發(fā)現(xiàn)軟件中的缺陷并及早修復

  • 修復單元測試發(fā)現(xiàn)的缺陷時,代碼更改不會影響其他模塊

  • 模塊集成變得更容易

  • 減少缺陷率和時間成本

現(xiàn)在讓我們來總結(jié)一下針對Java、C++和Python語言的單元測試中,受歡迎的測試工具,它們不僅包括單元測試框架,還包括了Mock工具、代碼覆蓋率工具,以及兩個智能化的單元測試用例自動生成工具

  1. Junit

  2. TestNG

  3. GoogleTest

  4. pytest

  5. unittest

  6. Jmockit

  7. JaCoCo

  8. gcov、lcov、gcovr

  9. Coverage.py

  10. EvoSuite

  11. Diffblue Cover

單元測試框架

當前成熟的單元測試框架包括:JUnit、TestNG、gtest、pytest、unittest。

1)JUnit

JUnit是一個為Java編程語言設(shè)計的開源單元測試框架,由 Kent Beck 和 Erich Gamma建立,它是單元測試框架家族中的一個,這些框架被統(tǒng)稱為xUnit,JUnit是xUnit 家族中最為成功的一個。JUnit 有它自己的 Junit 擴展生態(tài)圈,多數(shù) Java 的開發(fā)環(huán)境都已經(jīng)集成了 JUnit 作為單元測試的工具。JUnit 的最新版本是JUnit 5,它不再是一個單一的JAR 包,而是由JUnit platform(平臺)、JUnit Jupiter 和JUnit Vintage 這3 部分組成。

官網(wǎng)地址:https://junit.org/junit5/

2)TestNG

TestNG 是另一個為Java編程語言設(shè)計的開源單元測試框架,是一個受JUnit和NUnit啟發(fā)而來的測試框架,但它引入了一些新功能,使其更強大、更容易使用,例如:

  • 核心特性是多線程測試執(zhí)行,測試代碼是否是多線程安全的;

  • 提供注釋支持;

  • 支持數(shù)據(jù)驅(qū)動測試(使用@DataProvider);

  • 支持參數(shù)化測試;

  • 強大的執(zhí)行模型(不再有TestSuite);

  • 支持各種工具和插件(Eclipse, IDEA, Maven等…);

  • 嵌入BeanShell以獲得更多的靈活性;

  • 用于運行時和日志記錄的默認JDK函數(shù)(沒有依賴關(guān)系)。

官網(wǎng)地址:https://testng.org/

3)GoogleTest

GoogleTest是一個跨平臺的(Liunx、Mac OS X、Windows 、Cygwin 、Windows CE and Symbian ) C++單元測試框架,由google公司發(fā)布,為在不同平臺上為編寫C++測試而開發(fā)的。它提供了豐富的斷言、致命和非致命判斷、參數(shù)化、”死亡測試”等等。例如:

  • 測試用例本身就是一個exe工程,編譯之后可以直接運行,非常的方便。

  • 編寫測試案例變的非常簡單(使用一些簡單的宏如TEST),讓我們將更多精力花在測試用例設(shè)計上。

  • ?提供了強大豐富的斷言的宏,用于對各種不同檢查點的檢查。

  • ?提高了豐富的命令行參數(shù)對腳本運行進行一系列的設(shè)置。

代碼開源地址:https://github.com/google/googletest

4)pytest

pytest是一個非常成熟的全功能的支持Python語言的單元自動化測試框架。簡單靈活,容易上手,支持參數(shù)化;能夠支持簡單的單元測試和復雜的功能測試,還可以用來做selenium/appnium等自動化測試,以及接口自動化測試(pytest集成requests)。

官網(wǎng)地址:http://pytest.org/

5)unittest

unittest 是 Python 自帶的一個單元測試框架,無需安裝,使用簡便,引入包 import unittest 即可使用。unittest單元測試框架作為python的標準庫,是其他單元測試框架的基礎(chǔ)。

官網(wǎng)地址:http://docs.python.org/zh-cn/3/library/unittest.html

單元測試Mock工具

在進行單元測試時,需要測試的類有很多依賴,這些依賴的類或者資源又會有依賴,導致在單元測試代碼里無法完成構(gòu)建。因此,我們需要采用Mock 技術(shù)隔離依賴對象,即模擬這些需要構(gòu)建的類或者資源,提供給需要測試的對象使用。

6)JMockit

JMockit是一個用于Java語言單元測試的開源Mock工具,包含了工具和API集合。Jmockit可以和junit和TestNG配合使用編寫單元測試。

JMockit支持類級別整體mock和部分方法重寫,以及實例級別整體mock和部分mock,可以mock靜態(tài)方法、私有變量及局部方法。

這個工具還具有統(tǒng)計單元測試代碼覆蓋率的功能,提供了三種類型的代碼覆蓋率,如行覆蓋率、路徑覆蓋率和數(shù)據(jù)覆蓋率。

官網(wǎng)地址:http://jmockit.org/

單元測試覆蓋率工具

單元測試中還需要用到代碼覆蓋率工具。代碼覆蓋率是用來度量在單元測試過程中被覆蓋代碼的指標。代碼覆蓋率統(tǒng)計工具用來發(fā)現(xiàn)沒有被測試覆蓋的代碼,完善單元測試的覆蓋率。另外,這類工具還可以用來構(gòu)建代碼調(diào)用關(guān)系,精準的確定回歸測試范圍,避免全量回歸造成測試資源的浪費。

7)JCoCo

Jacoco是一個開源的免費Java代碼覆蓋工具,由EclEmma創(chuàng)建,其使用方法很靈活,可以嵌入到Ant、Maven中;可以作為Eclipse插件,可以使用其Java Agent技術(shù)監(jiān)控Java程序等等。很多第三方的工具提供了對JaCoCo的集成,如sonar、Jenkins等。

JaCoCo包含了多種尺度的覆蓋率計數(shù)器

  • 指令級覆蓋(Instructions,C0coverage)

  • 分支(Branches,C1coverage)

  • 圈復雜度(CyclomaticComplexity)

  • 行覆蓋(Lines)

  • 方法覆蓋(non-abstract methods)

  • 類覆蓋(classes)

官網(wǎng)地址:https://www.jacoco.org/jacoco/

8)gcov、lcov、gcovr

gcov、lcov、gcovr都是支持C/C++語言代碼覆蓋率的工具。

gcov是由gcc內(nèi)建的代碼覆蓋率生成工具,可以很方便的和GCC編譯器配合使用,通常情況下,直接安裝gcc工具鏈,也就同時包含了gcov命令行工具。gcov得到的結(jié)果是文本形式的,而且不同的源碼文件需要一一執(zhí)行g(shù)cov命令,對于大工程是不方便的,這時就需要lcov。

lcov是gcov工具的圖形前端,收集多個源文件的gcov數(shù)據(jù),生成描述覆蓋率的HTML頁面。生成的結(jié)果中會包含概述頁面,方便瀏覽

一般場景下使用gcov和lcov能滿足代碼覆蓋率的獲取和展示工作,lcov和genhtml配合生成的HTML報告內(nèi)容詳盡,簡潔直觀,行覆蓋率、分支覆蓋率都有,但是HTML文件在常用的持續(xù)集成工具(比如Jenkins、gitlab-ci)中均無法集成,因此我們需要其他的工具用于覆蓋率結(jié)果的持續(xù)集成展示。gcovr是一款針對C/C++代碼覆蓋率并支持以多種方式(包括列表方式、XML文件方式、HTML網(wǎng)頁方式等)展示出來的工具,而XML文件剛好是可以被持續(xù)集成工具解析的。

lcov下載地址:https://github.com/linux-test-project/lcov

gcovr下載地址:https://github.com/gcovr/gcovr

9)Coverage.py

Coverage.py是一個度量Python語言代碼覆蓋率的工具。Coverage.py可以指定要通過配置文件分析哪些源文件,通過分析源代碼,發(fā)現(xiàn)沒有被測試覆蓋的代碼。

官網(wǎng)地址:https://coverage.readthedocs.io

智能化的單元測試用例自動生成工具

單元測試的重要性毋庸置疑,但是在很多企業(yè)推行的并不好,一個非常重要的原因是開發(fā)人員不愿意把時間花費在編寫單元測試代碼上。如今,有兩個值得推薦的智能化工具可以自動生成單元測試用例,幫助提高單元測試的覆蓋率,提高企業(yè)的研發(fā)效能。

10)EvoSuite

EvoSuite是由英國Sheffield(謝菲爾德)等大學聯(lián)合開發(fā)的一種開源工具,用于自動生成測試用例集,生成的測試用例均符合Junit的標準,可直接在Junit中運行,并得到了Google和Yourkit的支持。通過使用此自動測試工具能夠在保證代碼覆蓋率的前提下極大地提高測試人員的開發(fā)效率。但是只能輔助測試,并不能完全取代人工,測試用例的正確與否還需人工判斷。

官網(wǎng)地址:https://www.evosuite.org/

開源代碼地址:https://github.com/EvoSuite/evosuite

11)DiffBlue?Cover

Diffblue Cover是一個自動化的單元測試編寫工具,通過分析Java應(yīng)用程序編寫反映當前行為的單元測試,提高測試覆蓋率,并幫助開發(fā)人員在將來的代碼更改中發(fā)現(xiàn)回歸缺陷。

插件開源社區(qū)版地址:https://plugins.jetbrains.com/plugin/14946-diffblue-cover--community-edition/versions

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/125022.html

相關(guān)文章

  • PHPUnit實踐一(初識)

    摘要:另外一些單元測試可能會測試負向路徑的場景,保證代碼不僅會產(chǎn)生錯誤,而且是預期的錯誤。是一個面向程序員的測試框架,這是一個的體系結(jié)構(gòu)的單元測試框架。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測試: 代碼直接echo,debug等方法測試 -> 跟蹤細節(jié)斷點型測試 log日志輔助測試 -> 跟蹤細節(jié)斷點型測試 ...

    weapon 評論0 收藏0
  • PHPUnit實踐一(初識)

    摘要:另外一些單元測試可能會測試負向路徑的場景,保證代碼不僅會產(chǎn)生錯誤,而且是預期的錯誤。是一個面向程序員的測試框架,這是一個的體系結(jié)構(gòu)的單元測試框架。 本系列教程所有的PHPUnit測試基于PHPUnit6.5.9版本,Lumen 5.5框架 前置 日常我們的普通用到的測試: 代碼直接echo,debug等方法測試 -> 跟蹤細節(jié)斷點型測試 log日志輔助測試 -> 跟蹤細節(jié)斷點型測試 ...

    hss01248 評論0 收藏0
  • 2021 最新基于 Spring Cloud 的微服務(wù)架構(gòu)分析

    摘要:是一個相對比較新的微服務(wù)框架,年才推出的版本雖然時間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊的方式來進行消息同步和保證高可用。 Spring Cloud 是一個相對比較新的微服務(wù)框架,...

    cikenerd 評論0 收藏0
  • 計劃在2021進行響應(yīng)式開發(fā)?但不確定應(yīng)該選擇哪種技術(shù)來快速且低成本的開發(fā)應(yīng)用程序?一文給你解決問

    摘要:與此同時,因新冠疫情的影響使得用戶對移動應(yīng)用程序的需求激增。調(diào)查報告顯示年移動應(yīng)用程序已經(jīng)產(chǎn)生了億美元的收入,預計到年將產(chǎn)生億美元的收入。 引言 計劃在2021年進...

    Codeing_ls 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<