2024年软件测试工具总结——单元测试工具_单元测试自动生成工具

图片

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。

lc****ov是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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值