国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

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

qingshanli1988 / 3778人閱讀

摘要:?jiǎn)卧獪y(cè)試框架作為的標(biāo)準(zhǔn)庫(kù),是其他單元測(cè)試框架的基礎(chǔ)。可以和和配合使用編寫(xiě)單元測(cè)試。官網(wǎng)地址單元測(cè)試覆蓋率工具單元測(cè)試中還需要用到代碼覆蓋率工具。代碼覆蓋率統(tǒng)計(jì)工具用來(lái)發(fā)現(xiàn)沒(méi)有被測(cè)試覆蓋的代碼,完善單元測(cè)試的覆蓋率。

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

要進(jìn)行單元測(cè)試,開(kāi)發(fā)人員需要編寫(xiě)測(cè)試代碼。單元測(cè)試有手動(dòng)和自動(dòng)化測(cè)試兩種類(lèi)型,自動(dòng)化通常是首選的方法,可以為開(kāi)發(fā)人員節(jié)省大量的時(shí)間和精力。

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

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

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

  • 模塊集成變得更容易

  • 減少缺陷率和時(shí)間成本

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

  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

單元測(cè)試框架

當(dāng)前成熟的單元測(cè)試框架包括:JUnit、TestNG、gtest、pytest、unittest。

1)JUnit

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

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

2)TestNG

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

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

  • 提供注釋支持;

  • 支持?jǐn)?shù)據(jù)驅(qū)動(dòng)測(cè)試(使用@DataProvider);

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

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

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

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

  • 用于運(yùn)行時(shí)和日志記錄的默認(rèn)JDK函數(shù)(沒(méi)有依賴(lài)關(guān)系)。

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

3)GoogleTest

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

  • 測(cè)試用例本身就是一個(gè)exe工程,編譯之后可以直接運(yùn)行,非常的方便。

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

  • ?提供了強(qiáng)大豐富的斷言的宏,用于對(duì)各種不同檢查點(diǎn)的檢查。

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

代碼開(kāi)源地址:https://github.com/google/googletest

4)pytest

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

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

5)unittest

unittest 是 Python 自帶的一個(gè)單元測(cè)試框架,無(wú)需安裝,使用簡(jiǎn)便,引入包 import unittest 即可使用。unittest單元測(cè)試框架作為python的標(biāo)準(zhǔn)庫(kù),是其他單元測(cè)試框架的基礎(chǔ)。

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

單元測(cè)試Mock工具

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

6)JMockit

JMockit是一個(gè)用于Java語(yǔ)言單元測(cè)試的開(kāi)源Mock工具,包含了工具和API集合。Jmockit可以和junit和TestNG配合使用編寫(xiě)單元測(cè)試。

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

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

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

單元測(cè)試覆蓋率工具

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

7)JCoCo

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

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

  • 指令級(jí)覆蓋(Instructions,C0coverage)

  • 分支(Branches,C1coverage)

  • 圈復(fù)雜度(CyclomaticComplexity)

  • 行覆蓋(Lines)

  • 方法覆蓋(non-abstract methods)

  • 類(lèi)覆蓋(classes)

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

8)gcov、lcov、gcovr

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

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

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

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

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

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

9)Coverage.py

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

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

智能化的單元測(cè)試用例自動(dòng)生成工具

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

10)EvoSuite

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

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

開(kāi)源代碼地址:https://github.com/EvoSuite/evosuite

11)DiffBlue?Cover

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/125022.html

相關(guān)文章

  • PHPUnit實(shí)踐一(初識(shí))

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

    weapon 評(píng)論0 收藏0
  • PHPUnit實(shí)踐一(初識(shí))

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

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

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

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

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

    Codeing_ls 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<