我的测试小伙伴们总是为准备测试数据而烦心,包括我自己也是。下面总结了一下准备测试数据的几种策略,供大家参考。
1. 全部新造,用sql直接插数据库。
这种方式简便直观,可以从工具中拷贝一些数据做修改之后,反复使用。有个问题,就是涉及到一些日期相关的测试数据,由于是写死的,往往灵活性不够,随着时间的推移,需要不断维护。比如,有功能是查询今天创建的列表,那就需要修改字段的CreateDate字段。
2. 利用一部分基础数据,调用接口生成另外一部分测试数据。
这种方式可以从一部分程度上解决上面的问题。但是难度是,必须对接口的参数比较熟悉,还要保证上游数据质量。虽说不容易,但是还是比较推荐的,因为这种方式可以自动生成一些新鲜数据,并且真正测试到这一些接口的逻辑是否正确。
3. 全部调用接口,生成测试数据
这个难度就更大了,现在微服务,从最前端跑到最后端,有时候要经历几十个先系统,太难了。。。所以不推荐这样玩耍。做系统测试还是要有一定的隔断,否则上游的系统出问题,直接影响到下游系统无法测试,这是无法接受的。我们做接口测试的时候,尽量要保证每个测试用例独立运行,不仅不能受上游系统的影响,甚至不能受别的用例的影响。
4. 线上拷贝拉取
这个方式的优点是完美模拟线上发生的情况,如果拉取数据够多够全,并且能够用拉取的数据来跑测试,整个覆盖率会大大的提升!问题是,拉取不容易,有些生产库很大,拉取耗时;有些敏感数据,不应该放到测试环境去使用;还有一些技术方面的制约,比如自增id的不统一,加解密方式的不同,数据库分库分表的策略不一致等等。所以,不建议大批量导入做测试使用。
如果线上发现bug,可以针对单个用户导出该用户相关数据,以便测试环境重现,分析原因,修复并且重测,这种情况下从生产拉取数据的价值就凸显出来了。
写完的第二天,看到了一篇关注类似问题的文章。再加深一下印象!
> https://testerhome.com/topics/4773