• Thirty-Thirty
      Thirty-Thirty 9

      断言是编程术语,表示为一些布尔表达。编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。断言表示为一些布尔表达式,程序员相信在程序中的某个特定点该表达式值为真,可以在任何时候启用和禁用断言验证,因此可以在测试时启用断言而在部署时禁用断言。——来自百科

      自动化测试本质是 (用于测试目的的) 编程,断言不区分同步或异步接口。你是指异步库请求接口?轮询,加一个轮询阈值个人理解,异步接口一般是由于执行耗时长,所以调用方不用等待执行完毕,而是发送完即可。

      根据业务场景,有可能发完就啥都不管,也可能会配套有被调用方回调调用方返回数据,以及调用方定时轮询查询数据最新状态避免被调用方回调失败这类操作形成闭环。类似下图(图里是带回调但不带主动查询补偿的场景):

      所以怎么做断言,取决于你要校验的是这里面的什么。

      要校验异步请求本身是否成功——就直接看发送请求后被调用方有没有响应、响应有没有报错(比如格式校验这类耗时很短的可能会直接返回失败响应)、响应时内部处理(如格式校验、记录到内部任务队列中)是否正确。
      要校验异步请求后被调用方内部处理是否成功——查被调用方的内部数据状态(如查数据库)
      要校验异步请求后被调用方是否正常回调——在调用方这边查内部数据状态
      要校验主动补偿是否正常——断言看被调用方的查询接口查询结果,是否和库内最新结果一致;同时关掉被调用方的回调能力,看调用方是否能自己触发主动查询。
      4 楼回答得很棒,我做个精简版:

      异步请求发起时 —— 响应方立即的接口反馈是否符合预期,比如最基本的异步消息入队是否成功
      异步请求发起后 —— 验证中间态数据,着手点一般有:流量染色(服务调用链)、中间日志、数据库数据
      异步请求结束后 —— 最终数据状态一致性,如请求结束各方是否工作完毕并正常

    匿名

    发表评论

    匿名网友
    确定

    拖动滑块以完成验证