如何利用TestNG做接口自动化测试?

发表于:2019-4-19 08:27

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小鱼儿    来源:51Testing软件测试网原创

  摘要:
  本文主要依据之前测试经验,涉及接口自动化测试文章旨在帮助小公司想开展自己独立的接口自动化测试环境,主要从接口自动化测试是什么,接口自动化测试适应哪些公司哪些项目,接口自动化环境怎么搭建以及怎么进行接口自动化测试展开,最终达到帮助测试人员写成一条接口自动化测试用例的目的。
  测试按照不同的测试标准有不同的测试划分,按照测试阶段,可以划分为:单元测试,集成测试,系统测试,验收测试;按照测试升入层次,可以划分为:黑盒测试白盒测试,灰盒测试;按照测试对象,可以划分为:性能测试安全测试,兼容性测试,文档测试,易用性测试(用户体验测试),业务测试,界面测试,安装测试;按照测试方法,可以划分为:自动化测试,功能测试;不知道大家目前在做什么类型的测试工作呢? 可能大部分测试人员日常测试工作都是涉及上面的多个方面,今天我主要讨论下接口测试,涉及的是接口自动化测试,接口测试涉及程序的输入输出,接口自动化测试是利用TestNG测试框架,对程序的输入输出进行校验的测试工作。
  那么接口自动化测试可以为哪些公司提供测试服务呢?接口自动化测试其实和手工测试本质上测试内容是一致的,一般自动化测试都是针对比较稳定的程序,对于不经常进行变动的程序开展测试工作,接口自动化测试工作也是如此,主要是对已经完成大部分程序开发和测试的模块,对其中的部分改造的存量功能开展的测试工作,主要适用于接口类的测试工作,测试用例主要从手工测试用例中挑选,从中选择可以进行接口自动化测试的用例开展接口自动化测试工作。如果你们公司项目相对比较稳定,大部分项目主要是二次开发那可能就比较适用,最好是一个项目可以拆分为一个一个的相互之间相互独立又相互影响的应用,因为接口自动化测试大部分是涉及程序之间的接口应用;但是对于一个版本的改动导致程序改的面目全非,或者自动化主要是为了界面类服务的就不适用这套框架。
  搭建这套自动化测试环境复杂吗?搭建这套自动化测试环境主要分为以下三个方面,主要为:
  一.主环境,公司层面搭建的测试环境,主自动化测试环境;
  二.被测系统,主要是之前进行手工测试需要的系统环境,最好能有专门进行自动化测试的环境,如果资源有限也可以使用目前在用的被测环境;
  三.本地测试人员测试需要安装的软件;JDK,Eclipse等,具体可以参照以下图解:
  如果你们公司的系统适应这套自动化测试环境,并且测试人员已经按照要求把自动化测试环境搭建好了,现在怎么写接口自动化测试用例呢?接下来会讲到一条自动化测试用例怎么编写,以及怎么将自动化测试用例提交到环境上让自动化牵头人统计到,首先写自动化的时候可以首先完成下面材料的准备工作:接口文档(类名,方法名),jar包文件;接口文档可以问开发人员要,也可以自己去触发程序检查日志获得;Jar包文件可以直接让开发人员打包发给你,这个自己不太好获得,写完自动化测试用例之后自己上传到测试环境中。这里首先需要说明几点注意事项,第一:虽然我们是自动化测试,也会用到开发人员使用到的Eclipse,Jdk等工具,但是这里面并不会涉及到很复杂的代码要求,并不需要测试人员和开发人员那样了解代码,代码要求其实不高,甚至也可以说没有代码要求,所以测试人员不需要担心自己没有大码底子,写不了这套框架的自动化测试用例,担心到时候写自动化的时候无从开展;第二:对数据库要求比较高,如果数据库基本薄弱这块相对会有点问题,所以写自动化之前前提是你是位比较了解数据库的测试人员;
  写自动化测试用例涉及哪些步骤呢?编写这套自动化测试用例测试人员需要准备什么呢?步骤有哪些呢?主要有以下操作步骤:
  第一:自动化测试环境:
  如果在上面你已经把自动化测试环境搭建好了,其实节省了我们很多时间,然后需要确定好准备写哪个功能,哪个模块,最好能确定写哪个类下面的哪个方法,计划写什么用例,校验哪些点,对应前台的界面是哪些等,问开发人员要到对应功能的Jar包和接口文档等;
  第二:下载自动化测试工程(project):
  这个工程是我们的环境基础,我们在对应自己应用下面新增本次测试用例;
  第三:自动化编写涉及哪些文件:
  3.1.JAVA文件(主程序,调用入参和数据准备文件);
  3.2.XLS文件(数据池文件);
  3.3.Dubbo文件(配置文件,配置自动化调度);
  3.4.Jar包(上面提到的问开发要的自动化Jar包,打包的程序,主要是一些类和方法);
  3.5.调度文件(自动化统计配置文档,包括每日新增自动化数量,新增模块,谁新增的以及失败自动化整改情况);3.6.接口定义文件(定义请求通讯区和应答通讯区);
  第四:自动化编写
  步骤一:将工程下载下来之后将Jar包上传,然后进行加载;
  自动化编写步骤二:可以复制和自己模块差不多功能点的JAVA文件,修改里面的ID,类名,方法名;其实除了类名,方法名,其他的代码调用公共方法,引用相同的包这些都是一样了,为了减少工作量,其他的复制就可以;
  第五:自动化工作流程
  XLS文件(数据池文件)里面主要是进行自动化编写的数据准备,包括请求通讯区和应答通讯区,因为我们的自动化工作流程主要为以下图示工作流程图,所以会涉及到请求通讯区和应答通讯区的数据和文件,数据池文件主要包括一些自动化案例执行前的Before class数据准备和自动化用例执行后的After class数据清理,是一系列的SQL代码,这里要求对数据库的SQL语句比较熟悉:
  接口自动化测试工作流程:
  通过JAVA文件调用JAR包文件-->通过接口定义文件和数据池文件-->拼成一个报文(也可以叫map文件)-->往服务器(被测系统)发送-->等待服务器响应-->
  -->如果上送的内容与远程服务器一致,断言通过,测试用例执行通过;
  -->如果上送的内容与远程服务器不一致,断言不通过,测试用例执行不通过;
  第六:断言:
  这里面有个概念:断言,可能写过自动化测试用例的同行比较熟悉这个概念,没有接触过的可能就比较生疏了,这里统一解释下,断言其实对于我们这套接口自动化测试来说就是一个个独立的程序分支,可以借助于以下场景去帮助理解:业务场景:一个新增界面,要求新增用户,约束规则:已经注销的用户不能新增,新增过的用户不能重复新增;那么这个用例你会怎么设计呢?思路:写的类:1.针对重复用户,Before class:首先在用户信息表里面先数据库插入一条用户数据,需要先清理,怕插入时报主键冲突等错误,保证环境是干净的,清理是请求通讯区的数据准备操作Before class,然后执行插入操作,最后在应答通讯区在对应字段里面写入和插入数据完全一致的记录,这样在调用程序的时候就会报错:“该用户已经存在”,error code和error message会依据之前已经定义的接口文档抛出对应的错误,这条用例就是我们的一个断言,也就是一条接口自动化测试用例,执行完这条自动化之后我们需要对插入数据库的代码执行清理操作,这也是一个比较好的编写自动化测试用例的习惯,主要也是怕给数据库造成太多的脏数据,导致测试环境混乱,不利于后面测试。同理我们对注销的操作也是一样的,只是数据准备存在差异,涉及的表不同,这里面的话程序的判断接口是注销,则我们需要在注销涉及的表里面插入一条记录,然后前台在新增的时候会有对应的error message:“已经注销的用户不能新增”。
  第七:自动化测试用例统计:
  已经写好的自动化测试用例我们需要进行提交,提交之前必须确保本地执行通过,没有失败的测试用例提交到环境上面,如果有失败的测试用例需要按照console的输出提示进行调试,调试完成没有问题提交GIT,这里面还是得说下这个git是个很好的东西,它只会出现那些你新增的内容在提交界面,然后你选择你刚刚编辑过的新增和有改动的代码提交到环境上面,这样后续就可以让自动化统计工具自动统计到,因为我们之前是每月有自动化编写要求的,所以必须在规定的时间将自动化测试用例提交到环境上去,至此我们的自动化测试用例算新增完成,后期的工作主要是维护,后期如果测试环境部署新的代码也是需要定期更新我们的自动化测试脚本。
  上面已经简单介绍了接口自动化测试用例是什么,接口自动化测试用例适合哪些公司的什么类型系统,接口自动化测试环境怎么搭建,怎么开展接口自动化测试,以及怎么编写一条接口自动化测试用例,希望本次介绍的接口自动化接口测试-TEST-NG框架可以帮助你们顺利完成自动化测试框架选择和搭建,可以对大家后期的自动化测试工作有所帮助,也希望大家可以分享自己公司目前在使用的自动化测试框架,最终我希望每家公司每个产品都可以找到一个适合自己本公司本产品的自动化测试框架,进而最终解放人力成本,让人力资源去做更多更有意义和更有价值的工作。

......
查看更多精彩内容,请点击下载:
版权声明:本文出自《51测试天地》第五十三期。51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号