数据持久化的定义
百度百科给出的定义如下:
数据持久化就是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。cmp和Hibernate只是对象模型到关系模型之间转换的不同实现。
从软件测试角度,通俗地说,数据持久化就是将测试数据有组织的永久存储的过程;狭义地说,一般是指把数据存储在数据库;广义地说,数据也可以是文件数据、报表等其他形式。
前期推文提到过,测试数据包括测试请求数据和测试结果数据,这两部分数据都应该进行持久化。
数据持久化的优点
为什么要进行数据持久化呢?即:数据持久化有哪些优点呢?以下将从四个方面来解释说明。
1、可以使回归测试的范围更准确
通过对相邻版本测试结果数据的对比(通常是指跑所有测试用例的测试),我们可以清晰地掌握在本次测试及上次测试之间,有哪些测试用例受到影响,从而验证两个版本之间的更改所影响的范围是否与预期一致。
例如:当前版本的改动我们认为只会影响 A 模块,结果却发现 B 模块的一个测试用例运行失败了。则我们在以后更改 A 模块时,应该主动把 B 模块的这个失败用例纳入回归测试中,以及 B 模块的其他测试用例也需要重新执行一遍,避免因 A 模块的更改影响到 B 模块的功能,从而在更早阶段发现潜在 bug。
2、可以发现测试用例本身的问题
如果某个测试用例在多个版本的执行中失败的概率非常大。且失败的原因并不是因为程序 bug 引起的,则说明这个测试用例是不稳定的测试用例,应该仔细分析失败原因并加以改进。
3、可以发现潜在的性能问题
通过对各个版本的测试结果对比,我们可以发现潜在的性能问题。比如在某一段时间内,相同的测试用例集,整个测试的整体运行时间越来越久,则说明某些业务的性能在下降。
4、可以让整个团队都加入质量保障中
通过持久化的保存测试结果数据,并且以报表的形式发送给项目相关负责人。可以使得除开发、测试之外的团队角色对产品的质量有完整且不断更新的认识,可以促进关键负责人对产品质量的关注,从而获得更多的资源倾斜。
如何进行测试数据持久化
测试数据持久化大家首先想到的就是把数据放到 DB 中,但是如果只是单纯的存储,并不能享用到数据持久化的好处。通常情况下,我们的测试请求数据,要跟测试用例进行一一对应。
而测试用例,应该要根据不同的测试目的,放到不同的测试套件里去,最后通过测试套件的执行,形成测试用例、测试脚本、测试数据、测试结果的对应,从而方便后续我们对测试结果数据进行多维度分析。
那么怎么使得测试数据持久化能够实现上述目标呢?当前流行的解决方案有以下几种。
1、国外——JIRA
其实是 JIRA+ Zephyr 或者 JIRA + synapseRT。其中 JIRA 在国外,是公认的市场占有率最高的项目管理和开发管理工具,而 Zephyr 和 synapseRT 均是收费的 JIRA 插件。
Zephyr 的用例管理虽然使用简单,但是无法记录和跟踪需求,管理人员无法直观了解测试进度,所以较难从项目整体角度来管理测试用例;
synapseRT 可以用来记录和跟踪需求,也可以用来创建、组织、计划和执行测试用例,还可以用来批量执行测试用例、链接 Bug,以及生成各种关于需求和测试的报告等等。
2、国内——禅道
禅道作为国内市场占有率第一的,并且是国产、开源的专业研发项目管理软件,可用作缺陷管理、需求管理和任务管理,在功能上与 JIRA 不相上下。
并且禅道有很多专有工具,例如:zendata 测试数据生成器、ztf 自动化测试框架等,可以一站式地完成项目管理,以及测试管理与执行,非常适合中小团队使用。
(1)禅道安装、配置
禅道支持多个平台,每个平台的安装和配置各有不同,你可以参考 https://www.zentao.net/book/zentaopmshelp/64.html 进行安装和配置。
(2)使用禅道进行测试管理
测试管理指对测试需求、计划、用例和实施过程进行管理。因禅道安装指南 https://www.zentao.net/book/zentaopmshelp/64.html 已经有十分全面的解释与说明,这里就不再演示如何使用禅道进行:产品、测试套件、测试用例、测试用例执行与执行结果查看了。
(3)ZTF 自动化测试框架
ZTF 是禅道开发的一款开源自动化测试管理框架,它聚焦于自动化测试的管理功能。ZTF 提供了自动化测试脚本的定义、管理、驱动、执行结果的回传、bug 的创建,以及和其他自动化测框架的集成。
ZTF 是独立安装的,其安装部署可以参考ZTF 安装部署 https://ztf.im/book/ztf/ztf-about-26.html,它的 ZTF 的语法如下:
ZTF 的常用命令如下:
(4) ZTF 框架和禅道的结合使用
ZTF 可以和禅道结合使用,来提高测试的效率。
-
设置 ZTF
ZTF 会弹出提示,根据提示输入即可完成配置。
-
导出禅道的测试用例为测试脚本
通过 ztf 可以将我们在禅道中定义的测试用例导出,具体用法如下:
根据系统提示,我们导出刚才创建的测试套件 1 的测试用例 1,并且导出格式为 python。导出成功后,在文件夹 D:ztfproduct1 下就会有自动生成的 1.py 文件,内容如下: -
运行测试脚本
脚本更新好后,我们来运行下: -
通过 ztf 更新测试用例到禅道
正常情况下,我们的测试脚本是根据测试用例编写的,测试脚本和禅道里的测试用例是一致的。
假设现在需求有变化,我的测试脚本失败了,我发现后先更新了测试脚本。这个时候我的测试脚本和禅道里的测试用例就不一致了,就需要同步。ztf 提供了一个方法来同步我们的测试用例,方法如下:
-
ZenData 测试数据生成器的使用
在前期推文“测试请求数据的准备方式”中讲过了测试数据生成,其中一个办法是测试数据平台。ZenData 即是禅道提供的一款测试数据通用平台,可以方便地生成测试数据。
ZenData 主要有以下两大功能:
数据生成通过一个配置文件,使用 ZenData 生成你想要的各种数据;数据解析对某一个数据文件,指定其数据类型定义的配置文件,完成到结构化数据的解析。
ZenData 生成的测试数据可用于手工测试,也可以用于自动化测试,下面来看下 Zendata 的使用。
Zendata 安装部署请直接参考Zendata 安装部署 https://www.zendata.cn/book/zendata/why-zendata-115.html。
-
ZenData 的语法如下:
-
ZenData 生成数据示例
ZenData 生成测试数据非常简单,首先你使用 yaml 文件来定义你的数据格式,然后使用上述命令即可。
下面的实例, 根据配置文件 demo est est-email.yaml 生成了一组 email:
在上面的代码里,-d 函数后面跟默认的 yaml 文件格式,ZenData 会根据指定的格式来生成数据,你也可以自己定义 yaml 文件。-n 代表生成的数据组数,-o 代表输出的文件名。
注意,每一组生成的数据有多少字段,取决于你 yaml 文件中的定义。如果你想控制输出的个数,可以采用如下方式:
执行成功后打开生成的 hello_world.txt 文件,你将看到有 email 数据生成,此文件直接可用于你的自动化测试中。当前 ZenData 支持 TXT、JSON 、CSV 以及 sql 格式的文件生成。
了解了 ZenData 的用法后,我们来看一个真实用例,生成用于注册的账户,提供两个字段,用户名和密码。
首先,我们创建一个 yaml 文件。为简单起见,我在 ZenData 安装目录下的 demo est 文件夹下创建一个名为 test-user.yaml 的文件,内容如下:
然后,我在命令行执行如下命令:
命令执行完后,查看生成的 hello_world.txt 文件:
可以看到数据文件被正确生成,关于更多数据文件的格式及用法,可以参考 ZenData 官网 https://www.zendata.cn/。
总结
通过禅道一站式的解决方案,你可以完成产品、项目、 需求、测试管理、测试执行,以及测试报告的工作。更多关于禅道的用法和高级使用,请直接参考禅道官方网站https://www.zentao.net/。
数据持久化是个非常简单的动作,但是数据持久化采用什么方式进行,与哪种企业管理工具结合,数据持久化后要实现什么目标,才是更需要关注的部分。通过禅道的一站式解决方案,我们可以轻松把测试数据管理起来,实现测试管理的跃升和测试效率的提高。
欢迎关注【无量测试之道】公众号,回复【领取资源】
Python编程学习资源干货、
Python+Appium框架APP的UI自动化、
Python+Selenium框架Web的UI自动化、
Python+Unittest框架API自动化、
资源和代码 免费送啦~
文章下方有公众号二维码,可直接微信扫一扫关注即可。
备注:我的个人公众号已正式开通,致力于测试技术的分享,包含:大数据测试、功能测试,测试开发,API接口自动化、测试运维、UI自动化测试等,微信搜索公众号:“无量测试之道”,或扫描下方二维码:
添加关注,让我们一起共同成长!