其实大部分类型的测试都须要去准备测试数据。面试
- 手工测试:一些基础数据,好比配置数据等等是须要去准备的;
- 自动化测试:基础须要准备,现有数据,动态运行时产生的数据是须要准备的;
- 性能测试:跟自动化测试差很少;
这里就牵扯到了一些关于数据的概念了。sql
测试数据的分类
咱们能够给测试数据分一些种类数据库
- 基础数据,好比一些内容管理系统会配置站点的标题,友情连接之类的基础配置数据
- 存量数据,也就是现有数据。好比在测试一些电商站点的时候会提早插入一些商品信息,类目信息物流信息等
- 动态数据,也能够叫作session数据。好比在测试电商站点的发布商品功能的时候,每每会去建立一些新的商品
咱们能够想象到,基础数据其实能够比较容易的跟生产环境保持一致。测试环境的存量数据会比线上环境要少,测试环境的动态数据可能不会像线上环境那样真实。json
这里就须要讨论测试数据的量级和真实性的问题了。session
测试数据的量级
大部分状况下,测试数据的量级是没有产生环境多的。因此测试数据能够是真实数据的子集。性能
若是有类生产环境或预发布环境的话,能够尽可能保持跟线上数据至关的量级。这样一些测试环境很差测出来的因为数据量致使的问题能够在预发布环境测出来。测试
测试数据的真实性
咱们测试环境的数据每每跟真实用户产生的数据是有差别的。好比测试论坛系统时,咱们在帖子里的贴图可能每每就那么几张,尺寸也是恰到好处,而线上用户的贴图多是五花八门,从而致使意想不到的问题。excel
如何准备基础和存量数据
基础和存量数据与线上环境越一致,测试中发现问题的几率可能就越高。通常来讲,能够有下面的策略xml
- 全量+脱敏策略。直接按期把线上的数据作脱敏,导入到测试环境。这里脱敏是必选,数据泄漏致使的问题严重程度每每比普通的线上bug要严重得多。
- 定量+脱敏策略。只上一些线上数据,好比只在线上拉1000个商品,1000个用户信息,而后作脱敏。这里技术实现难度会比较高,毕竟要把关联表理顺。
- 爬虫策略。若是是新项目/产品的话,线上没有存量数据能够导,那么可能要去友商那里爬一些数据,导到测环境作测试。好比作一个旅游站点,开始的时候是没有用户的游记的,这时候就要去相似站点爬一点来测试了。
- 生成动态数据。若是线上没有数据,友商也没有的爬,那么就要人肉或者自动化的方式去产生一些数据了。系统简单的话能够用sql去跑,复杂点的话可能要调用接口或者用自动化的方式去生成。实在没辙的时候也能够手动去造一些数据。
关于动态数据
你们在作自动化或者接口测试后每每会大量的去产生动态数据。那么问题就来了。接口
这些数据存在哪里?什么意思呢?若是咱们须要用自动化的方式去建立一个商品,那么商品的信息,图片地址该放在哪里呢?其实这是个持久化的问题了。
- 放文件里。文件格式有不少能够选的,好比xml/csv/json/yaml等。不过不推荐excel,毕竟是私有格式,没有太强的扩展性。并且excel一升级,你的解析代码和库也可能要跟着改一次,嗯,强烈不推荐了。
- 放数据库里。爬一些商品的信息存到数据库里,而后读数据库也是很好的办法,还能熟悉一下sql的用法,面试常常问到,另外能够用数据库的事务机制来清理测试数据
- 在代码里动态生成。好比动态随机生成用户的姓名啊性别和年龄之类的
数据生成以后就面临着一个清理的问题。清理问题实际上数据生命周期的问题,测试数据应该有下面一些生命周期吧
- 短时间数据。用例完了就删掉的数据,通常线上作性能测试的数据都是这样的短时间数据
- 长期数据。用例跑出来的数据放在那里也没事,能够一直存在。这种数据太多有时候会影响测试环境的性能
自动化测试跑出的数据建议作短时间数据,跑出来想办法清掉,由于自动化跑的频率其实能够很高,每次都产生一堆数据的话数据的量级可能会在短时间变得很大,对测试环境的性能形成影响。
以上的一些见解是我的的浅显的粗鄙的见解,确定有不少不成熟的地方,欢迎你们斧正。