在应用程序中,单元是具有一个或多个输入和单个输出的软件中最小可测试部分。单元测试是一种测试软件代码单元的方法,通常包括一个或两个输入,产生一个输出。单元测试主要关注独立模块的功能正确性,目的是确保每个单元都按照预期的方式运行。

要进行单元测试,开发人员需要编写测试代码。单元测试有手动和自动化测试两种类型,自动化通常是首选的方法,可以为开发人员节省大量的时间和精力。

单元测试是自动化测试金字塔模型中占比最大的测试类型,做好单元测试对于保证软件产品的质量非常重要,单元测试可以:

  • 及早发现软件中的缺陷并及早修复

  • 修复单元测试发现的缺陷时,代码更改不会影响其他模块

  • 模块集成变得更容易

  • 减少缺陷率和时间成本

现在让我们来总结一下针对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编程语言设计的开源单元测试框架,由 Kent Beck 和 Erich Gamma建立,它是单元测试框架家族中的一个,这些框架被统称为xUnit,JUnit是xUnit 家族中最为成功的一个。JUnit 有它自己的 Junit 扩展生态圈,多数 Java 的开发环境都已经集成了 JUnit 作为单元测试的工具。JUnit 的最新版本是JUnit 5,它不再是一个单一的JAR 包,而是由JUnit platform(平台)、JUnit Jupiter 和JUnit Vintage 这3 部分组成。

官网地址:https://junit.org/junit5/

2)TestNG

TestNG 是另一个为Java编程语言设计的开源单元测试框架,是一个受JUnit和NUnit启发而来的测试框架,但它引入了一些新功能,使其更强大、更容易使用,例如:

  • 核心特性是多线程测试执行,测试代码是否是多线程安全的;

  • 提供注释支持;

  • 支持数据驱动测试(使用@DataProvider);

  • 支持参数化测试;

  • 强大的执行模型(不再有TestSuite);

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

  • 嵌入BeanShell以获得更多的灵活性;

  • 用于运行时和日志记录的默认JDK函数(没有依赖关系)。

官网地址:https://testng.org/

3)GoogleTest

GoogleTest是一个跨平台的(Liunx、Mac OS X、Windows 、Cygwin 、Windows CE and Symbian ) C++单元测试框架,由google公司发布,为在不同平台上为编写C++测试而开发的。它提供了丰富的断言、致命和非致命判断、参数化、”死亡测试”等等。例如:

  • 测试用例本身就是一个exe工程,编译之后可以直接运行,非常的方便。

  • 编写测试案例变的非常简单(使用一些简单的宏如TEST),让我们将更多精力花在测试用例设计上。

  • 提供了强大丰富的断言的宏,用于对各种不同检查点的检查。

  • 提高了丰富的命令行参数对脚本运行进行一系列的设置。

代码开源地址:https://github.com/google/googletest

4)pytest

pytest是一个非常成熟的全功能的支持Python语言的单元自动化测试框架。简单灵活,容易上手,支持参数化;能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试,以及接口自动化测试(pytest集成requests)。

官网地址:http://pytest.org/

5)unittest

unittest 是 Python 自带的一个单元测试框架,无需安装,使用简便,引入包 import unittest 即可使用。unittest单元测试框架作为python的标准库,是其他单元测试框架的基础。

官网地址:http://docs.python.org/zh-cn/3/library/unittest.html

单元测试Mock工具

在进行单元测试时,需要测试的类有很多依赖,这些依赖的类或者资源又会有依赖,导致在单元测试代码里无法完成构建。因此,我们需要采用Mock 技术隔离依赖对象,即模拟这些需要构建的类或者资源,提供给需要测试的对象使用。

6)JMockit

JMockit是一个用于Java语言单元测试的开源Mock工具,包含了工具和API集合。Jmockit可以和junit和TestNG配合使用编写单元测试。

JMockit支持类级别整体mock和部分方法重写,以及实例级别整体mock和部分mock,可以mock静态方法、私有变量及局部方法。

这个工具还具有统计单元测试代码覆盖率的功能,提供了三种类型的代码覆盖率,如行覆盖率、路径覆盖率和数据覆盖率。

官网地址:http://jmockit.org/

单元测试覆盖率工具

单元测试中还需要用到代码覆盖率工具。代码覆盖率是用来度量在单元测试过程中被覆盖代码的指标。代码覆盖率统计工具用来发现没有被测试覆盖的代码,完善单元测试的覆盖率。另外,这类工具还可以用来构建代码调用关系,精准的确定回归测试范围,避免全量回归造成测试资源的浪费。

7)JCoCo

Jacoco是一个开源的免费Java代码覆盖工具,由EclEmma创建,其使用方法很灵活,可以嵌入到Ant、Maven中;可以作为Eclipse插件,可以使用其Java Agent技术监控Java程序等等。很多第三方的工具提供了对JaCoCo的集成,如sonar、Jenkins等。

JaCoCo包含了多种尺度的覆盖率计数器

  • 指令级覆盖(Instructions,C0coverage)

  • 分支(Branches,C1coverage)

  • 圈复杂度(CyclomaticComplexity)

  • 行覆盖(Lines)

  • 方法覆盖(non-abstract methods)

  • 类覆盖(classes)

官网地址:https://www.jacoco.org/jacoco/

8)gcov、lcov、gcovr

gcov、lcov、gcovr都是支持C/C++语言代码覆盖率的工具。

gcov是由gcc内建的代码覆盖率生成工具,可以很方便的和GCC编译器配合使用,通常情况下,直接安装gcc工具链,也就同时包含了gcov命令行工具。gcov得到的结果是文本形式的,而且不同的源码文件需要一一执行gcov命令,对于大工程是不方便的,这时就需要lcov。

lcov是gcov工具的图形前端,收集多个源文件的gcov数据,生成描述覆盖率的HTML页面。生成的结果中会包含概述页面,方便浏览

一般场景下使用gcov和lcov能满足代码覆盖率的获取和展示工作,lcov和genhtml配合生成的HTML报告内容详尽,简洁直观,行覆盖率、分支覆盖率都有,但是HTML文件在常用的持续集成工具(比如Jenkins、gitlab-ci)中均无法集成,因此我们需要其他的工具用于覆盖率结果的持续集成展示。gcovr是一款针对C/C++代码覆盖率并支持以多种方式(包括列表方式、XML文件方式、HTML网页方式等)展示出来的工具,而XML文件刚好是可以被持续集成工具解析的。

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

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

9)Coverage.py

Coverage.py是一个度量Python语言代码覆盖率的工具。Coverage.py可以指定要通过配置文件分析哪些源文件,通过分析源代码,发现没有被测试覆盖的代码。

官网地址:https://coverage.readthedocs.io

智能化的单元测试用例自动生成工具

单元测试的重要性毋庸置疑,但是在很多企业推行的并不好,一个非常重要的原因是开发人员不愿意把时间花费在编写单元测试代码上。如今,有两个值得推荐的智能化工具可以自动生成单元测试用例,帮助提高单元测试的覆盖率,提高企业的研发效能。

10)EvoSuite

EvoSuite是由英国Sheffield(谢菲尔德)等大学联合开发的一种开源工具,用于自动生成测试用例集,生成的测试用例均符合Junit的标准,可直接在Junit中运行,并得到了Google和Yourkit的支持。通过使用此自动测试工具能够在保证代码覆盖率的前提下极大地提高测试人员的开发效率。但是只能辅助测试,并不能完全取代人工,测试用例的正确与否还需人工判断。

官网地址:https://www.evosuite.org/

开源代码地址:https://github.com/EvoSuite/evosuite

11)DiffBlue Cover

Diffblue Cover是一个自动化的单元测试编写工具,通过分析Java应用程序编写反映当前行为的单元测试,提高测试覆盖率,并帮助开发人员在将来的代码更改中发现回归缺陷。

插件开源社区版地址:https://plugins.jetbrains.com/plugin/14946-diffblue-cover--community-edition/versions

2021年软件测试工具总结——单元测试工具相关推荐

  1. 【软件测试】2021年软件测试领域常用工具总结(1)-抓包工具与单元测试工具篇

    前言 大家好,我是洋子,作为一名测试开发/软件测试工程师, 在进行软件测试的过程中,会用到测试工具去辅助测试,以提高测试工作的效率.今天就给大家介绍一下2021年软件测试领域当中的最流行,最实用的工具 ...

  2. python 单元测试 工具_Django单元测试工具test client使用详解

    The test client test client是一个python类,来模拟一个简单的"哑"浏览器,允许你来测试你的view函数.你可以使用test client完成下列事情 ...

  3. 【软件测试】2021年软件测试领域常用工具总结(2)-接口测试,UI测试工具篇

    文章目录 前言 接口测试工具 Postman JMeter Robot Framework SoapUI REST-Assured Apifox Katalon Studio Karate 接口Moc ...

  4. 软件测试都需要哪些工具呢?一文带你看清

    先说软件测试行业的划分,一是黑盒测试或者叫功能测试.手动测试. 二是白盒测试或者测试开发等. 黑盒测试,含金量低,测试人员学的测试工具较少. 白盒测试,现在软件行业越来越重视白盒测试,白盒测试要求会写 ...

  5. 开源单元测试工具汇总

    开源单元测试工具/框架汇总 作为开源软件的爱好者,了解了单元测试这概念后,自然忍不住去找找有什么开源单元测试工具. 下面列出了30款1,不分先后顺序. 1. NoSQL的单元测试工具 NoSQLUni ...

  6. 2021年软件测试工具趋势

    2021年软件测试工具趋势 1.前言 2.Selenium(自动化测试) 3.Appium(自动化测试) 4.Cypress(自动化测试) 5.Robot Framework(自动化测试) 6.Air ...

  7. 2021年软件测试工具大全(自动化、接口、性能、安全、测试管理)

    目录 前言 Selenium(自动化测试) Appium(自动化测试) Cypress(自动化测试) Robot Framework(自动化测试) Airtest(自动化测试) Macaca(自动化测 ...

  8. 软件测试优秀的测试工具,会用三款工作效率能提升一半

    我们将常用的测试工具分为10类. 1. 测试管理工具 2. 接口测试工具 3. 性能测试工具 4. C/S自动化工具 5.白盒测试工具 6.代码扫描工具 7.持续集成工具 8.网络测试工具 9.app ...

  9. 软件测试——常用的测试工具

    在软件测试的过程中,多多少少都是会接触到一些测试工具,作为辅助测试用的,以提高测试工作的效率,使用好了测试工具,能对测试起到一个很好的作用,同时,有些公司,也会要求掌握一些测试工具,或者,是在面试时, ...

  10. 常见的软件测试内容及使用工具

    作为软件测试你需要知道的一些工具和下载地址 一.单元测试与集成测试 1.单元测试(基本是程序员的编码时就进行了单元测试) 一个对象或是一个类,也可能是一个函数也可以是一个组件或模块. 在单元测试或集成 ...

最新文章

  1. 26个Jquery使用小技巧
  2. UML中类图与对象图的区别
  3. 05-密码学基础-RSA的介绍
  4. 鼠标放到控件上 DIV悬浮提示效果(四种)
  5. win10系统配置服务器地址,win10系统配置服务器地址
  6. Netty工作笔记0011---Channel应用案例2
  7. CCF认证2014-9-2 画图
  8. 关于oracle数据库的导出导出
  9. android开发实战-记账本APP(二)
  10. 易打卡模板微信签到打卡小程序源码
  11. 【JY】No.7.2力学架构迈达斯使用教程
  12. Web3D软件WebMax正式版发布
  13. HTTP代理,正向反向,代理的作用
  14. 用ps制作android日历步骤,PS设计制作日历
  15. 【播放器】媒体播放器三大架构
  16. 一个案例教会你:全面的数据分析应该怎么做?
  17. 融云 CEO 董晗:国产化进程加速,助推政企数智办公平台深化发展
  18. WiFi慢不一定是信号不好,这几招让你上网更顺畅
  19. U3d引擎崩溃、异常、警告、BUG与提示总结及解决方法
  20. Unity3d中XML的解析

热门文章

  1. 可以免费领取卡巴斯基激活码的活动
  2. 谷歌怎么保存网页为图片?
  3. 带你揭秘网络工程师群体!
  4. 交通流预测爬坑记(三):使用pytorch实现LSTM预测交通流
  5. B端产品经理是一种什么样的存在?
  6. 情人节程序员用HTML网页表白【我永远属于你】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  7. java学生奖学金管理系统_java毕业设计_springboot框架的高校学生奖学金评定系统...
  8. 沧州中考计算机考试时间,2019年沧州中考考试时间安排,沧州中考考试科目时间安排表...
  9. v6使用手册 天正电气t20_电气工程设计软件-T20天正电气软件下载 v6.0官方版--pc6下载站...
  10. 中国城市生活节奏排行榜