接口测试平台的公共流程组件<等待执行>在while循环中出现超时错误。原因是前面的接口组件提取了变量名为data的值,导致while循环判断data时陷入死循环。错误定位是后续getPercent请求返回响应体为空,导致超时。解决方案是修改接口组件的变量data。
接口测试平台的公共流程组件<等待执行>出现while循环超时错误。
本案例分析错误原因:因前面的接口组件提取了变量名为data的值,导致while循环内部判断data值时,使用此数据而导致死循环。
错误定位:前一个getPercent请求正常返回响应体,后一个getPercent请求返回的响应体为空,后续getPercent请求均返回为空,导致超时错误,如下图。
图1 执行结束后仍然执行循环,返回响应体为空 | 图2 后续循环均返回空的响应体,导致超时错误 |
错误分析:
(1)结合自动化用例while循环最后有响应体的data数据,分析公共流程组件<等待执行>,退出循环的条件,如下图;
图3 while循环结束条件之一:data包含download.do | 图4 while循环的最后一个存在响应值的data存在download.do |
循环结束条件有三条:响应体包含非空的pagerows值、响应体包含download.do、响应体包含ShowNotificationMsg。本用例满足第二条,但是未正常退出循环。
(2)对比公共流程组件<等待执行>的使用,发现存在用例执行成功,排除组件问题;
(3)分析自动化用例,发现自动化用例中存在提取data值的接口组件,如下图;
图5 存在提取变量名为data的自定义接口组件
错误原因:因<等待执行>组件前面存在接口组件提取data的值,因此while循环内部判断data是否存在download.do时,被此data替换而不存在download.do,从而导致死循环,出现while循环超时。
解决方案:修改接口组件的变量data(非必要,不自行设置变量data,以免和已有组件冲突)。
推荐阅读