问答 【接口自动化】异步接口如何做断言?2022-07-14 10:28:32。 。订阅者关注私信258文章0粉丝 测试交流1 273字数 9阅读0分1秒阅读模式异步接口如何做断言?相关阅读AI时代测试工程师的核心竞争力:从执行用例到可解释的质量判断从零搭建AI测试用例工作流:需求文档自动转思维导图AI+Skills如何让测试工程师效率提升10倍?三步实现智能生成测试用例宝塔面板的BUG新建网站时新建了文件再建文件夹时提示错误宝塔面板无法安装扩展的BUG解决方案PHP安装扩展下载链接错误测试反模式的思考 回复 1 Thirty-Thirty 9 2022-07-14 09:53:22 1F 回复 断言是编程术语,表示为一些布尔表达。编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。——来自百科自动化测试本质是 (用于测试目的的) 编程,断言不区分同步或异步接口。你是指异步库请求接口?轮询,加一个轮询阈值个人理解,异步接口一般是由于执行耗时长,所以调用方不用等待执行完毕,而是发送完即可。根据业务场景,有可能发完就啥都不管,也可能会配套有被调用方回调调用方返回数据,以及调用方定时轮询查询数据最新状态避免被调用方回调失败这类操作形成闭环。类似下图(图里是带回调但不带主动查询补偿的场景):所以怎么做断言,取决于你要校验的是这里面的什么。要校验异步请求本身是否成功——就直接看发送请求后被调用方有没有响应、响应有没有报错(比如格式校验这类耗时很短的可能会直接返回失败响应)、响应时内部处理(如格式校验、记录到内部任务队列中)是否正确。 要校验异步请求后被调用方内部处理是否成功——查被调用方的内部数据状态(如查数据库) 要校验异步请求后被调用方是否正常回调——在调用方这边查内部数据状态 要校验主动补偿是否正常——断言看被调用方的查询接口查询结果,是否和库内最新结果一致;同时关掉被调用方的回调能力,看调用方是否能自己触发主动查询。 4 楼回答得很棒,我做个精简版:异步请求发起时 —— 响应方立即的接口反馈是否符合预期,比如最基本的异步消息入队是否成功 异步请求发起后 —— 验证中间态数据,着手点一般有:流量染色(服务调用链)、中间日志、数据库数据 异步请求结束后 —— 最终数据状态一致性,如请求结束各方是否工作完毕并正常 回复问题 匿名网友 确定 昵称 邮箱 网址 Address 提交 取消 拖动滑块以完成验证 您可能喜欢 AI时代测试工程师的核心竞争力:从执行用例到可解释的质量判断 从零搭建AI测试用例工作流:需求文档自动转思维导图 AI+Skills如何让测试工程师效率提升10倍?三步实现智能生成测试用例 宝塔面板的BUG新建网站时新建了文件再建文件夹时提示错误 宝塔面板无法安装扩展的BUG解决方案PHP安装扩展下载链接错误 测试反模式的思考 使用 cookie 绕过验证码,换一个系统就无法通过验证 MeterSphere测试平台UI 自动化窗口切换方法 5000 块买的 python 自动化课程难道就这? 在 Linux 上搭建 Jenkins,自动构建接口测试
1F
断言是编程术语,表示为一些布尔表达。编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。——来自百科
自动化测试本质是 (用于测试目的的) 编程,断言不区分同步或异步接口。你是指异步库请求接口?轮询,加一个轮询阈值个人理解,异步接口一般是由于执行耗时长,所以调用方不用等待执行完毕,而是发送完即可。
根据业务场景,有可能发完就啥都不管,也可能会配套有被调用方回调调用方返回数据,以及调用方定时轮询查询数据最新状态避免被调用方回调失败这类操作形成闭环。类似下图(图里是带回调但不带主动查询补偿的场景):
所以怎么做断言,取决于你要校验的是这里面的什么。
要校验异步请求本身是否成功——就直接看发送请求后被调用方有没有响应、响应有没有报错(比如格式校验这类耗时很短的可能会直接返回失败响应)、响应时内部处理(如格式校验、记录到内部任务队列中)是否正确。
要校验异步请求后被调用方内部处理是否成功——查被调用方的内部数据状态(如查数据库)
要校验异步请求后被调用方是否正常回调——在调用方这边查内部数据状态
要校验主动补偿是否正常——断言看被调用方的查询接口查询结果,是否和库内最新结果一致;同时关掉被调用方的回调能力,看调用方是否能自己触发主动查询。
4 楼回答得很棒,我做个精简版:
异步请求发起时 —— 响应方立即的接口反馈是否符合预期,比如最基本的异步消息入队是否成功
异步请求发起后 —— 验证中间态数据,着手点一般有:流量染色(服务调用链)、中间日志、数据库数据
异步请求结束后 —— 最终数据状态一致性,如请求结束各方是否工作完毕并正常