谈到自动化测试,或者说接口测试,大家关注更多的是哪个工具更优秀,更好用。但是很少人关注到接口测试用例的设计问题,也很少人会去写接口用例,都代码化了嘛,还写什么用例,是吧。这样真的是对的么?我们是不是忽略了什么呢?回归测试的时候,成百上千个接口执行下来,没有报错,你就真的对系统放心了么?在接口测试之外,我们还需要补充哪些功能用例来验证那些接口做不了或者不好做的场景呢?
个人认为,除开脚本层面的编写外,接口用例的设计也是一项非常重要的测试活动。通过一定的接口用例设计,让我们编写的脚本更有目的性、更可靠,才能体现接口测试的价值的意义,而不是单纯以量取胜。“测试目的明确,符合接口测试基本原则,断言清晰的接口自动化脚本才是好脚本“
01
某个用例的测试目的是什么
在进行接口测试脚本的编写前,我们应该明确这批脚本的预期目标在哪里,是为了验证什么内容。根据个人的经验,一般会把接口用例分成三类:
02
接口信息的来源
当我们明确好测试目标后,再开始编写测试用例,会有更针对性的去设计测试数据和接口组合。接下来的问题是什么呢?去哪里确认你的接口信息是有效的?基本上有两种路径:
在获取到接口信息后,需要与开发人员多交流,明确参数的意义及来源,以便我们针对性的做测试用例设计,这个环节不要过多的自己猜(很多测试人员经常会自己猜想),直接找开发问就好了。在这个接段,还要梳理并区分接口的重要程度和优先级。这样就可以确认哪些接口优先设计用例,哪些接口可以先放放,在有限制的时间内,做最大价值的事。
03
一些基本原则
拿到接口后,明确了参数说明,结合测试目标,我们就可以开始设计并编写测试用例了。区别于功能测试用例,接口测试用例(脚本)一些原则需要注意:
04
断言那些事
在设计测试用例时,还需要关注的是针对断言的设计,好的断言能够帮助我们发现问题,没有断言的用例(脚本)就是耍流氓,完全没有意义。个人在审核脚本时,会重点关注这个(很多测试人员为了数据好看,或者因为是事后补写,所以断言写的非常简单,这类脚本其实都是在做无用功,纯粹是为了KPI)。从接口层面看,我们至少需要验证两点:
除了以上两点外,还有一些额外的验证点在需要的时候可以进行,如涉及到其它方的数据流转、返回的URL是否可被访问,返回的数据是否真的是必要的(这点很重要,过多的返回会导致很多意外的问题)等等。根据实际情况进行补充。
这样,通过一系列的方法设计出来的接口用例,才会有一定的业务价值,能够真正的帮助到团队,提升测试效率,对于这样的测试脚本,全部PASS的结果才会让人安心(你能想象没有断言的脚本全部PASS,你还放心的么)。
05
脚本的后期维护
测试用例(脚本)编写完成后,并不意味着接口测试的成完。在其它的测试环节中,如果发现因为接口问题而产生的BUG(如响应异常、无数据返回等情况),我们需要适当的补充到接口用例中,避免类似的情况再次发生而我们没有验证到。在积累到一定高质量的用例(脚本)后,可以进一步挖掘这些东西的价值,如转化成线上业务监控的脚本,转换成精准测试的依据等。还有更高端的玩法,是借助混沌测试的思路,独立拉个分支,故意修改一些异常出来,让测试用例验证,能否发现这些BUG,以验证测试用例的有效性。如果不能发现,那就需要我们去思考如何改进测试脚本(业内已经有类似的平台出现了)。
06
关于测试数据的准备
多聊下测试数据准备的事,这其实是接口测试中很重要的一个环节,想要脚本可以在多个环境中运行,那么测试数据就不能写的太死,需要根据环境去自动获取一些数据值。针对测试数据的准备,一般的玩法也有三类:
关于接口测试平台的研发,可以参考我的另一篇文章: