公司实施的测试流程中有一个环节是测试数据的准备,这个环节处于测试设计和测试用例完成后,在测试实施之前。而在一般的小项目中大家都没有太注重数据的准备。而在上次项目做完,紧接着做了一个大日常,而这个日常用到了很多数据,都是项目过后的残留数据,为什么叫残留是因为在项目中用过这些数据后我并没有去有意去收集这些数据,然后作为沉淀带下次用,只是我记忆力比较好,刚好用到,而因此我发现我的测试效率提高很多,测试过程非常愉快。而今现在又有项目和大日常做,我想要真正的完成一次测试数据,测试数据很重要。
那么如何做测试数据呢?
个人认为测试数据的制作也公司的业务有很大关系,所以要具体问题具体分析,这里写下我自己准备数据的方式。
背景就依据我现在工作:一个大日常是在原来的功能上做改动,可以理解为升级一个功能。
首先:分析自己的业务需要什么数据,功能需要升级,那么就一定要有老功能的回归测试,以及老功能过度到新功能的测试,还有新功能的独立测试。
1.老功能回归的数据是可以在代码提交前准备的,因为目前老功能是在使用的,所以数据可以直接跑业务产生。
2.老功能过度到新功能的测试数据是一定要准备的,老功能过度到新功能一般会是在用户操作某个模块的修改或者升级过程完成的,新功能兼容老功能的测试一定不能大意,那么这种老功能到新功能开始前的数据一定要准备,也可以通过跑老功能产生。
3.新功能的数据可以准备一些,比如新功能是会员登录后做的一些操作,而如果不同级别或者权限的会员登录后操作会有所不同,那么这些级别和权限不同的会员都是要准备好的,可以通过跑业务产生。
其次:就以上通过跑业务产生数据的方式可能会觉得如果数据量大的话会烦死,并且没有人愿意不断的跑业务,而我的方式是,用脚本在虚拟机上跑,并且公司本来对稳定的老功能都有做脚本,如果没有就自己做。
当然也可以直接操作数据库,比如insert之类的,但是这要求一个测试工程师的sql能力很强,并且有些数据中有的字段是MD5加密过的,还是唯一性键值,那么这样的数据造起来就需要测试工程师考虑更多,使用更多技术。
而我本人比较担心造数据过程产生数据制造错误,并且本身就有脚本可以跑业务,所以选择在虚拟机上跑脚本。
再其次:因为测试过程分为3轮,而第一轮要跑完所有用例覆盖所有功能,第二轮要验证bug和跑级别高的用例,第三轮就是回归主要流程和功能,可以看出仅仅一套测试数据是不够用的,那么我们就要在第一轮测试后恢复数据以便数据可以再第二轮使用,有必要的话在第二轮测试结束后恢复数据以便第三轮测试用。那么恢复数据的方式是什么:我选择用脚本来加载数据,也就用脚本来编写一个删除数据和插入数据的过程。跑业务产生的数据都很合理,在这里对这些合理的数据进行一个快照,然后使用这些数据跑第一轮测试后,删除被用过的数据,然后加载快照的数据。加载和删除数据的方法很多可以用TestDataBuilder去加载,由于我们的脚本中有加载数据的功能,所以我是借助脚本来加载数据的,其实也就是用ruby语言写的连接数据库,读取excel中的数据操作语句然后直接操作数据库。
最后:是一个数据的整理过程,不属于该次测试数据的准备,但是属于下次测试数据的准备,本次功能测试完成是在新功能都稳定后产出的一些数据,而这些数据有极高的利用价值,整理和分析这些通过新业务功能而产出的数据,然后抓取数据快照,下次再有改动该功能或者升级该功能时就可以直接利用这些数据了
实践过程中,如果实践中有新发现,或者更高效的准备数据的方法再来完善该日志。