专栏名称: 京东成都研究院
京东商城成都研究院信息平台
目录
相关文章推荐
51好读  ›  专栏  ›  京东成都研究院

畅谈自动化测试

京东成都研究院  · 公众号  · 成都  · 2018-09-03 18:18

正文






本次分享我将从自动化测试简介, B2B接口自动化测试方案和B2B自动化测试工具这3个方面来介绍自动化测试相关。






一 自动化测试简介

什么是自动化测试?

通过编写或者记录脚本来模拟手工测试执行,然后回放或者执行脚本代替人工执行的过程就叫自动化测试

那又为什么要做自动化测试呢?

从个人方面来说:目前各个公司对手工测试人员的需求锐减,而对于高技术测试人员的需求速增,掌握一定的自动化技术能更有竞争力,这也并不是说手工测试要被完全替代,手工测试目前看来还不能完全被替代,但是入职几年就会遇到瓶颈,测试人员突破瓶颈,提升自身的技能,自动化是一个很好地方向。

从项目维度来说:项目的快速迭代,对测试时间要求的越来越紧,但是对质量却一如既往的高要求,自动化测试是解决时间与质量冲突的一个好的办法,特别是针对一些重复性特别高的工作,自动化测试更加省时省力可靠性高,因为机器不像人一样存在肉眼识别,你告诉他应该是什么,他就会做出相应的判断,可靠性相对较高

既然自动化测试这么好,是不是所有项目都适合做自动化测试呢?答案当然是否定的

什么项目适合做自动化测试?

首先是否适合做自动化测试最重要的衡量标准就是投入和产出比,简单来说就是投入做自动化的时间和自动化执行为你节省的时间的一个比例,如果你投入1个月去做自动化,发现他只能帮你节省1个星期的测试时间,这种就是亏本的买卖做不得。

举个例子,如果一个一次性项目,项目周期短,他是不适合做自动化的,首先它的复用性不和要求,再次由于自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试均需要相当长的时间来完成。这样的过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。

还有像那种前端系统UI频繁变更,不适合UI自动化测试,维护成本太高,远远超过了手工执行的成本,这种自动化毫无意义。

自动化测试脚本必须要可重复使用,如果编写了大批量的不易维护的自动化测试脚本,在项目架构升级后,这些脚本就全部变成了无用的垃圾脚本,耗时耗力,得不偿失。

个人认为接口相比UI更合适做自动化测试,而且较为契合目前中台的定位。


二 B2B接口自动化测试方案


这是我们目前的一个自动化测试流程,代码的编译打包部署执行全部与jenkins持续集成打通,我们拿到开发的代码git地址和分支后,自动实现编译打包,打包完成之后由jenkins调度编写好的shell部署脚本,实现代码包往应用服务器的分发和部署,开发代码部署完成之后可以使用构建触发器调用自动化的JOB任务,只需要配置Jenkins构建触发器,Build after other projects are built,实现自动执行测试脚本自动测试,然后自动发送测试报告,这一整套的自动化测试流程。

下面就是jenkins的一些配置图

Shell脚本的具体实现如下:

下面我就为大家详细介绍下我们的HTTP接口自动化测试框架:

xml实现数据与方法的抽离,xml中存放3种数据,接口入参,接口期望返回,数据库字段期望值,从xml中获取这些数据由解析模块进行解析,解析后的入参调用执行模块去相应的接口获取返回,返回值与解析出来的期望结果做对比,如果对比成功,就进入数据库层面的字段对比,调用数据库查询相应字段的值与期望值进行对比,全部校验成功,该条测试用例通过,否则失败。为减少人工介入成本,目前自动化构建已经接入持续集成,实现每日的定时触发。

这里我要重点讲的就是引入了数据库对比验证方案,刚开始我们做这套框架的时候是没有引入数据库对比的,但是在测试过程中发现了一个问题,接口的返回值正确并不

代表数据库写入的值正确,当时我们调用了一个确认订单的接口,发现接口返回true,但是去看数据库的值却发现确认状态为0代表false,为了数据库写入的正确性引入接口自动化+数据库校验的自动化测试方案,不同于只断言了接口返回的自动化脚本,实现自动化脚本深入断言到数据库层面,做数据库字段值对比,把繁琐而重复的数据库对比也交给自动化来完成,既能保证质量,又能提高人效。

接口入参的配置如下:

Info用来存储用例名称和其他备注信息,url就是请求的接口地址,param父节点中存放的是请求接口需要的所有的入参,循环取出这些参数放入map,每个节点的key都是节点名称,value就是文本内容,取到所有的入参字段之后,然后做拼装,得到最终的接口入参,如下:

订单有区域限制

http://bizapi.jd.com/api/order/submitOrder

vopyf0

${uuid}

朱媛

31

2652

36684

52684

限制住

100000

18602815522

[email protected]

zyy

2

1

4

1

5

0

0

调用解析模块解析XML然后拼装请求,拼装后的请求参数如下:

selectedInvoiceTitle=4&zip=610000&phone=&invoiceState=1&remark=zyy&paymentType=1&invoiceType=1&submitState=0&sku=[{"skuId":1636735376,"num":1},{"skuId":237553,"num":1}]&city=1930&thirdOrder=1534856582584&[email protected]&token=Gxg3S2Txg7vvn7oMAWlppwoWL&county=50947&address=西部智谷D区&name=朱媛&province=22&town=52198&isUseBalance=0&invoiceContent=1&mobile=18602815522


调用执行模块,请求地址:http://bizapi.jd.com/api/order/submitOrder

最终得到返回结果

{
"success":true,
"resultMessage":"下单成功!",
"resultCode":"0001",
"result":{
"jdOrderId":78605597550,
"freight":0,
"orderPrice":2417.5,
"orderNakedPrice":2084.05,
"sku":[
{
"skuId":1636735376,
"num":1,
"category":9435,
"price":2400,
"name":"红花郎十(10)郎酒 53度 整箱 500ml*6 白酒 非10年单支",
"tax":16,
"taxPrice":331.04,
"nakedPrice":2068.96,
"type":0,
"oid":0
}],
"orderTaxPrice":333.45
}
}







请到「今天看啥」查看全文