异步API接口自动化测试如何开展
更新时间:2022-03-07 11:54:07 作者:多测师 浏览:296
实际项目中,往往会存在按时序的API调用以及异步API调用,这类API接口自动化测试要如何开展?
在开发测试用例的过程中需要特别关注前后两个API调用之间的数据传递,这类接口在很多系统中是很常见的,说的通俗一些就是A接口的入参中有几个是临时数据或不固定数据,需要从B接口、C接口响应中获取。
解决方式主要有以下几种:每次调用A之前,先调用B、C获取响应数据。那么反复的调用B、C必然会增加编写成本,那么可以考虑将BC编写成基础模板。比如SoapUI在测试WS类型的接口时使用的就是这种方式。
第二种方式,B、C接口在运行时,将响应中的数据解析存储到全局环境变量中,A接口需要使用的时候根据key获取value即可,如果值变更,覆盖全局变量即可。Postman、Jmeter解决关联接口调用都是用的这种方式。
第三种方式,当我们使用一些自研发类的接口或性能测试工具时,可以将关联数据写入redis或一些时序性数据库中存储,基本原理与上一种方式类型,只不过更换了存储介质。
第二个小问题是关于异步API的测试。对于异步API测试的场景,我们往往先会采取“只验证其是否发起了正确的调用,而不直接验证操作结果”的方式。比如,你的被测API是一个异步操作的API,那么我只会去验证这个API是否按照预期发起了正确的异步调用请求,而不会直接去验证异步操作的结果。如果这类测试全部通过后,我们才会考虑真正验证异步操作结果的测试用例。
举个实际的例子,假设你的被测APIA完成的是下订单的操作。这个APIA完成下订单操作要通过调用另外一个APIB将订单信息写入到消息队列中去。而真正下订单成功指的是消息队列中的消息被后续服务正确处理并且成功了。此时,这里的后续消息处理就是异步的操作了。
如果我们这么做往往是不够的,在面试中也不能让面试官满意。A接口返回了一个状态给用户,比如支付成功。但是究竟是否成功预订,成功扣款就要检查回调函数是否被调用,订单状态是否更新。如果在测试环境中,我们可以将回调函数换成我们自己的Mock接口,这样方便查询。如果不能Mock,我们在第一个请求成功返回之后,可以去轮询订单状态接口。等待订单更新完毕后,测试用例才是Pass状态,但是这样就会有延时问题,导致测试结果无法同步产出。关于非异步接口或异步接口第一个响应的测试校验部分可以先行返回,对于等待验证回调的校验部分可以设置超时时间后,稍后返回。
以上内容为大家介绍了异步API接口自动化测试如何开展,本文由多测师亲自撰写,希望对大家有所帮助。了解更多接口自动化测试相关知识:https://www.aichudan.com/xwzx/