testng dataprovider注解_自动化测试提速之利剑——TestNG

0e6b0edcb4378dbe52b90ba750cf0b84.png

本文作者:兴业数金 伍君

为优化系统功能和性能,提高系统代码质量,程序员需要不断对系统进行测试。但看似简单的需求变更或Bug修复实则是一个巨大的工程,需要耗费大量的人力物力。如若采用自动化测试框架,可大幅度提高系统开发效率。本文将详细介绍自动化测试框架TestNG在具体场景中的应用。

在程序员的日常工作中,最让程序员揪心的莫过于需求变更或系统出现Bug。需求变更要求程序员调整或是新增功能,系统出现Bug则要求程序员Debug,修复缺陷。

65c5af21be5642e2a81636c0a5c5d77d.png

而这些变动的背后,还存在着一轮又一轮的单元测试、组件测试、集成测试、发布测试、用户测试等。荷兰计算机科学家E.W.Dijkstra曾说:“程序测试只能证明错误的存在,但不能证明错误的不存在。”所以在系统上线前,程序员们只能不断测试发现新的Bug来达到优化系统的目的。

因此,看似简单的需求变更或Bug修复实则是一个巨大的工程,需要花费大量的人力物力。于是程序员们开始思考,是否能够将这一轮又一轮的测试自动化?老子曰:“君子性非异也,善假于物也。“当需求改变或出现Bug时,使用例如TestNG这样的测试框架就可以一键自动测试系统功能和性能,提高系统代码质量并加快系统上线。

208159877ae8441e5caeee8f828478ea.png

本文将详细介绍TestNG在具体场景中的应用。在介绍TestNG之前,我们首先来回顾一下软件测试相关概念。

软件测试

软件测试目标

fbd9f46200fc454118ee8debe78e8332.png

任何运行的系统都会存在系统缺陷,软件测试不仅可以向开发者和用户展示软件能够满足的需求,而且能够发现软件中存在的缺陷和不足。

软件测试分为有效性测试和缺陷测试。有效性测试指向待测试的单元、组件或系统输入测试数据,能够得到预期的结果。有效性测试能够证明软件满足用户的需求。缺陷测试指输入导致异常行为的数据,能够发现系统隐藏的缺陷。缺陷测试能够发现软件存在的缺陷和不足,为后期的系统完善提供依据。

软件测试阶段

软件测试大体可以分为开发测试、发布测试和用户测试三个阶段。在开发测试阶段,对系统进行测试来发现故障和缺陷。 在发布测试阶段,对系统的一个完整版本进行测试,然后发布给客户。在用户测试阶段,系统的用户或是潜在的用户,在他们自己的环境中测试交付的系统。

本段参考《软件工程(原书第9版)》[英] 萨默维尔 著,程成 等 译

794b1cef1a840d49d8a91e76bf09188a.png

就开发测试阶段而言,又可分为单元测试、组件测试和系统测试。单元测试对单独的程序单元或对象类进行测试。单元测试应该着重测试对象或方法的功能。 组件测试将多个程序单元组合创建一个合成的组件。组件测试应该着重测试组件的接口。系统测试集成系统中的一些或所有的组件作为一个整体进行测试。系统测试应该着重测试组件的交互。

0aaddcababbdac1253e85812b06e8fc8.png

软件测试流程

软件测试流程是一个复杂的过程,每个软件测试阶段都对应着一个测试流程。大体上,测试流程按照测试进度可以分为设计测试用例、准备测试数据、用测试数据运行测试程序和将结果与测试用例进行比较四个过程。

42aa6749221619a4c446def5814abe3b.png

每个测试过程,都对应着输出产物。如图所示,设计测试用例的产物为测试用例,准备测试数据的产物为测试数据。正因为测试工作如此繁琐和重复, 我们急切需要通过运用测试工具,达到提高测试效率的目的。

采用TestNG自动化测试,事先编写好TestNG测试用例,当需求变化或是代码变动时,执行TestNG测试用例,能够迅速检验出系统的缺陷。同时,TestNG能够自动化生成测试报告,通过程序稍加处理优化,便可生成符合用户需求的测试报告,极大的降低了项目的整体时耗。让测试人员从测试工作中解脱出来,专心从事有意义的测试设计等活动。

TestNG概念

TestNG,全称为Testing, Next Generation,即下一代测试技术。

TestNG脱胎于业界标杆的JUnit,但比JUnit更加强大和易于使用。TestNG涵盖几乎所有类型的测试:单元、组件、集成和前端(Selenium+TestNG)等。

TestNG的特点:

• 支持注解

• 支持多线程和线程安全

• 数据驱动( @DataProvider )

• 灵活的运行时配置

• 支持分组

• 支持依赖测试方法,并行测试,负载测试,局部故障

• 灵活的插件API( Eclipse, IDEA, Maven等)

TestNG语法

TestNG基本注解介绍:

822e876644b50bf970e016a70d6b29d8.png

TestNG基础语法

编写TestNG测试用例包含两部分,业务逻辑测试类和编写xml格式的测试套件:

1. 业务逻辑测试类,该类继承TestNG抽象类(AbstractTestNGSpringContextTests)并在类中加入TestNG注解。如类中需要测试的方法前要添加注解@Test,需要在当前类第一个测试方法之前执行的代码要添加注解@BeforeTest,需要接收suite套件的参数要添加注解@Parameters

24d1a61b7391a614e88d7c37f31747ac.png

2. 编写xml格式的测试套件suite,用<suite>标签来定义。一个suite能够包含一个或者多个测试,用 <test> 标签来表示一个测试,并且可以包含一个或者多个TestNG类。所谓TestNG类,是一个Java类,它至少包含一个TestNG注解,它由<class> 标签表示,并且可以包含一个或多个测试方法。在套件中可以定义传递给业务逻辑代码类的参数,如<parameter name="contry" value="China" />

a8fab779a44143f1a3a5bf6d667ff374.png

TestNG其他语法

Group分组

在TestNG业务逻辑代码类,通过@Test(groups = "group1")方式来指明方法所属的组。

162e66bd98dd4ead64e7c7efd1f736fd.png

Group分组测试的xml套件,通过标签<groups>定义分组区间,通过标签<define>在套件中定义分组。

1e49e1f5ee07e709e0c03bb78370a0e6.png

参考文献

https://testng.org/doc/index.html

https://testng.org/doc/documentation-main.html

详细语法可以参考TestNG官网。

TestNG实战

本文基于Eclipse开发平台、Spring Boot框架和Maven项目管理工具演示TestNG案列。演示案例包含步骤:Eclipse TestNG插件安装、添加maven依赖、编写TestNG test方法和编写TestNG XML用例。

1036153e56674116e20683d394438e90.png

Eclipse插件安装

可以通过在线安装和离线安装两种方法安装Eclipse TestNG插件。

1. 在线安装

(1)启动Eclipse,点击Help>Eclipse Markerplace...

(2)在find输入框中输入testng查找到 TestNG for eclipse,然后点击install,按照提示安装

bdd8e2a55fb6ad57ce212d7665aa41e2.png

2. 离线安装

  1. 解压org.testng.eclipse.updatesite.zip文件
  2. 将解压文件所在目录plugins下的jar文件copy到eclipse安装目录的plugins目录下
  3. 重启eclipse

添加maven依赖

在maven库中添加TestNG jar包

68097432d3e7a007aa3a024831dfb13a.png

编写TestNG方法

TestNG测试方法和JUnit测试类相同,只要继承AbstractTestNGSpringContextTests,如:

5197ca6dd1a05479f8672a1eb1738cd6.png

编写TestNG XML用例

1.参照TestNG语法编写TestNG XML用例。

1b4ba6f801a9d08410455d5b4a6abcb3.png

2.右击编写好的TestNG xml文件,Run As-TestNG Suite

1bb5f52017e1ae76c6e7e48fa1065469.png

3. 从Console和Results of running suite中查阅TestNG case运行的结果

513b78625f56f65d7971c32497efec07.png

f8d23b8d9f582f3ec057f23b98fb6acb.png

执剑人TestNG应用

TestNG自动化测试在执剑人项目组已全面普及,并结合Jacoco自动检测代码覆盖率,执剑人目前代码覆盖率已经达到70%。 在系统迭代过程中,通过TestNG的自动化测试,执剑人软件测试效果事半功倍。

最后,可联系本文作者获取项目DEMO源码。

f869db82227e8be402dc2f80ba2da232.png

伍君

兴业数金/创新事业群/开放平台

电话:13917873617

邮箱:wujun@cibfintech.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值