行业资讯

首页-红旗娱乐-「再一次,改变生活」

2022-11-16 09:33:07 yqs888 0

首页-红旗娱乐-「再一次,改变生活」报道,在接口自动化测试过程中,构造测试数据是必不可少的一个环节,但如何恢复测试数据也同样值得关注。业内常见的做法有:

  1. 不恢复:如果是没什么影响的数据,不恢复也无所谓,缺点就是会造成大量数据冗余;另外如果每次构造的都是重复数据且接口存在重复性校验,那么势必会造成接口报错、数据构造失败,从而影响到测试流程;

  2. 备份/恢复整个数据库:这种做法最简单粗暴,前提是要先备份数据库,然后在执行完测试后恢复数据库;这种对环境有要求,比如最好是一套独立的、可供自动化测试随便折腾的环境,如果在测试的环境还有其他人在用,那么这种做法显然不可取;

  3. 手动删除数据:可以是页面上手动删除,或者是调用单独的删除接口删除,也可以是手动删除各个数据表中的数据;

  4. 调用删除接口,形成闭环:这也是目前最常见的做法,即调用新增接口-->查询接口-->修改接口-->删除接口,从而形成一个完整的闭环,既达到了接口业务流程验证的目的,也避免了手动删除测试数据的麻烦;

以上几种方法中,最后一种是最便捷、也是应用最为广泛的。

红旗娱乐


但现实中,可能部分接口的业务流程并不存在完全闭环的情况,比如我们某个项目有个新增企业的业务,如果按照方式4,那么调用顺序就是新增企业-->修改企业信息-->查询企业信息并断言修改字段是否生效-->删除企业。但实际项目中只有增、查、改接口,并没有删除接口(设计如此)。尤其是新增接口,先会调用一个查询接口,获取第三方数据库视图中的企业列表,拿到添加企业信息的相关字段,再调用新增接口添加到我们系统中来,新增时会校验该企业信息是否已存在,不存在则新增,存在则返回错误码。而在没有提供删除接口的情况下,自动化测试过程中就要确保:

  • 要么每次新增的企业数据都不一致(这样就可以不用删除数据,前提是第三方视图中的数据量够大,可以保证一直新增下去);

  • 要么每次新增完数据再执行SQL语句一一删除相关数据表中新增企业时产生的数据(这样就相当于曲线救国式地完成了业务闭环,因为即使是提供了删除接口,其背后也是执行相关SQL进行删除各个数据表数据的操作)。注意这里不能是手动删除数据,无论是手动从页面删除还是手动从数据库删除。因为如果运行一次就删除一次,那运行一百次就要手动删除一百次,显然不切实际,这样也与我们自动化的理念背道而驰。

之前我们组小伙伴所写的自动化测试用例中,使用的是上述第一种方式,即每次新增不一样的企业数据,新增后不删除(原因是开发没有提供删除接口,SQL语句涉及的表较多,且表与表之间存在诸多关联,刚好视图中的数据够多,可以一直添加下去,只要保证每次添加的数据不一致就可以了)。这样的实现方式也不是不可以,只是会带来诸多弊端,而今天文章所表述的内容,就是对该实现方式进行优缺点分析,并基于第二种执行SQL删除数据的实现方式进行改造。

一、分析利弊

1.原实现方式

上述背景中已经提到视图中的数据够多,可以一直添加下去,只需保证每次添加的数据不一致即可。添加企业数据前会先调用查询接口,读取第三方企业数据列表,那么就需要设计一种方式使每次读取到的企业数据不一致。原实现方式如下: