继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

自动化测试如何准备测试数据

炎炎设计
关注TA
已关注
手记 305
粉丝 74
获赞 371

其实大部分类型的测试都需要去准备测试数据。

  • 手工测试一些基础数据比如配置数据等等是需要去准备的

  • 自动化测试基础需要准备现有数据动态运行时产生的数据是需要准备的

  • 性能测试跟自动化测试差不多

这里就牵扯到了一些关于数据的概念了。

测试数据的分类

我们可以给测试数据分一些种类

  • 基础数据比如一些内容管理系统会配置站点的标题友情链接之类的基础配置数据

  • 存量数据也就是现有数据。比如在测试一些电商站点的时候会提前插入一些商品信息类目信息物流信息等

  • 动态数据也可以叫做session数据。比如在测试电商站点的发布商品功能的时候往往会去创建一些新的商品

我们可以想象到基础数据其实可以比较容易的跟生产环境保持一致。测试环境的存量数据会比线上环境要少测试环境的动态数据可能不会像线上环境那样真实。

这里就需要讨论测试数据的量级和真实性的问题了。

测试数据的量级

大部分情况下测试数据的量级是没有产生环境多的。所以测试数据可以是真实数据的子集。

如果有类生产环境或预发布环境的话可以尽量保持跟线上数据相当的量级。这样一些测试环境不好测出来的由于数据量导致的问题可以在预发布环境测出来。

测试数据的真实性

我们测试环境的数据往往跟真实用户产生的数据是有差异的。比如测试论坛系统时我们在帖子里的贴图可能往往就那么几张尺寸也是恰到好处而线上用户的贴图可能是五花八门从而导致意想不到的问题。

如何准备基础和存量数据

基础和存量数据与线上环境越一致测试中发现问题的概率可能就越高。一般来说可以有下面的策略

  • 全量+脱敏策略。直接定期把线上的数据做脱敏导入到测试环境。这里脱敏是必选数据泄漏导致的问题严重程度往往比普通的线上bug要严重得多。

  • 定量+脱敏策略。只上一些线上数据比如只在线上拉1000个商品1000个用户信息然后做脱敏。这里技术实现难度会比较高毕竟要把关联表理顺。

  • 爬虫策略。如果是新项目/产品的话线上没有存量数据可以导那么可能要去友商那里爬一些数据导到测环境做测试。比如做一个旅游站点开始的时候是没有用户的游记的这时候就要去类似站点爬一点来测试了。

  • 生成动态数据。如果线上没有数据友商也没有的爬那么就要人肉或者自动化的方式去产生一些数据了。系统简单的话可以用sql去跑复杂点的话可能要调用接口或者用自动化的方式去生成。实在没辙的时候也可以手动去造一些数据。

关于动态数据

大家在做自动化或者接口测试后往往会大量的去产生动态数据。那么问题就来了。

这些数据存在哪里什么意思呢如果我们需要用自动化的方式去创建一个商品那么商品的信息图片地址该放在哪里呢其实这是个持久化的问题了。

  • 放文件里。文件格式有很多可以选的比如xml/csv/json/yaml等。不过不推荐excel毕竟是私有格式没有太强的扩展性。而且excel一升级你的解析代码和库也可能要跟着改一次嗯强烈不推荐了。

  • 放数据库里。爬一些商品的信息存到数据库里然后读数据库也是很好的办法还能熟悉一下sql的用法面试经常问到另外可以用数据库的事务机制来清理测试数据

  • 在代码里动态生成。比如动态随机生成用户的姓名啊性别和年龄之类的

数据生成之后就面临着一个清理的问题。清理问题实际上数据生命周期的问题测试数据应该有下面一些生命周期吧

  • 短期数据。用例完了就删掉的数据一般线上做性能测试的数据都是这样的短期数据

  • 长期数据。用例跑出来的数据放在那里也没事可以一直存在。这种数据太多有时候会影响测试环境的性能

自动化测试跑出的数据建议做短期数据跑出来想办法清掉因为自动化跑的频率其实可以很高每次都产生一堆数据的话数据的量级可能会在短期变得很大对测试环境的性能造成影响。

以上的一些看法是个人的浅显的粗鄙的看法肯定有很多不成熟的地方欢迎大家斧正。

原文出处https://www.cnblogs.com/nbkhic/p/10190582.html  

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP