无论是性能测试还是自动化测试中,要不要设置断言,为什么设置断言,断言的作用是什么,如何设置断言,都是新手容易踩坑犯错的地方。这篇文章,聊聊我对于断言的理解,以及自动化测试如何断言。
先聊聊我对断言的理解。设计测试用例的方法相信大家都深谙于心,最基本的要素有场景、操作步骤、输入和输出值,目的是验证测试用例对应的业务场景或功能是否如预期实现。预期输出值可能有一个也可能有多个,在功能测试场景中,我们可以通过界面返回或渲染的结果,与产品需求描述和UI设计进行对比,如果符合需求描述和UI设计,则判定该测试用例执行通过。
这里的断言方式,可以理解为人工通过对比来判断测试结果的正确性。在接口测试场景中,输入不同的请求参数有不同的返回报文,常见的做法是通过抓包或者观察response body中的返回值来判断程序返回结果是否否和预期。这里的断言方式,可以人工检查也可以通过工具或者编写代码设置断言来对返回结果进行判断。所谓断言,就是一种结果判断的手段,即判断结果是或否的方式。
无论是研发岗还是测试岗位,都要对自己的工作结果进行判断。研发在本地开发完成后需要自测,判断自己编写的代码是否如需求描述一样实现。测试同学需要对研发提交的代码程序进行各种验证,判断程序实现的功能是否符合需求描述和产品要求,以及是否满足流转到下一阶段(验收/发布)的标准。用比较专业的话来说就是准入准出标准,而断言的作用就是尽可能通过机器(工具/代码)来进行判断,避免人工检查可能带来的遗漏等问题。
2.关键数值验证:根据业务场景不同,可以有目的性的验证某些 key-value 的键值对结果是否符合预期,同时辅以查询数据库进行数据落库确认的方式来综合验证。
举例:假设业务场景是创建订单,如果创建成功,则响应报文中除了HTTP状态码需要返回200之外,还需要设置业务状态码(success status=0)。同理,如果创建失败,则业务状态码success status=1。要做到这点,有两个制约因素:1-测试同学对业务的熟悉程度;2-接口设计中需要事先对不同的业务场景结果定义不同的业务状态码。