前言 自动化任务有用例执行失败了,打开分析一看,怎么登录状态token过期了,怎么查询的帐号不存在,这是往往自动化用例设计者自己坑了自己。 在设计Go接口自动化测试平台时,自
前言
自动化任务有用例执行失败了,打开分析一看,怎么登录状态token过期了,怎么查询的帐号不存在,这是往往自动化用例设计者自己坑了自己。
在设计Go接口自动化测试平台时,自己在思考:如何可以提高接口自动化用例的稳定性及可用性?
常见问题
经常遇到测试场景不存在,导致用例执行结果非预期或是导致设置的断言点不通过。
解决方案设计
- 请求body参数化:请求参数尽量以参数化赋值,做到动态构建请求报文。如下图所示:登录状态的token值及body参数中的labelid都以参数的形式编写。实际执行用例时会按参数的设定规则获取对应的最新值。 如参数${alitestToken}:其设定的值为[email protected]邮箱,程序逻辑设计为:会先去相应服务器DB中查询是否已有有效的token值,若有直接返回,否则执行登录操作再返回token值,这样就确保了每次用例被调度执行时均是有效的token值。
-
生成场景:举例:登录接口返回登录成功的前提是有一个已存在于DB的帐号及密码,故通过可预设前置用例或是前置sql操作,可以确保预置好一个可用的帐号。
- 断言点参数化:断言点这里也设计为可通过sql从db获取预期值,与实际值作对比。实际值可通过jsonpath灵活取值,尽量使用例中的断言点更像是一个公式,可以动态匹配。