自动化工具 [腾讯 TMQ][UTP 自动化测试平台系列之三] 用例管理

匿名 · 2018年02月24日 · 最后由 SinDynasty 回复于 2018年02月24日 · 2425 次阅读

导语

UTP 自动化测试平台是 TMQ 的一个联合项目,目的是方便各项目测试人员更好地开展自动化测试建设工作,减少重复平台建设的成本,提高产品的自动化测试效率。

背景

测试用例,是测试的基础原料,没有用例,测试工作无法执行,自动化测试也是一样。实际的自动化测试开发工作,绝大多数时候都是在进行用例的编写/调试。

随着自动化测试工作的深入,测试用例的数量和类型也大幅度上升。不论从业务的角度,还是技术的角度,我们都需要有一套用例管理系统能够把自动化用例管理起来,以提升自动化运行的效率。

技术

对于自动化用例, 用例系统需要实现下面 3 个技术点:

用例的解析:把自动化测试用例转换为结构化的数据, 才能进行存储和管理;

用例的展示:让测试人员可以方便的进行用例管理;

用例的输出:让执行系统能够把用例运行起来。

1 用例的解析

大家有各种各样的测试用例,有 Java 的,有 Python 的,还有 Excel 等。 并且每个组都有自己的规范和习惯。用例系统不可能去一一适配每个组的规范,那样的工作量是无法接受的。所以,在考察了各个组现有的用例和规范后,用例系统规定了一套公共的规范。只要用例实现了这套规范,就能被用例系统管理起来。

对于 Java 语言,用例系统规定了注解规范,如下:

对于 Python 的用例,用例系统规定了注释规范,如下:

用例解析时候,形成结构化的数据,用例系统需要把数据保存到数据库中。但是,用例是存储在 SVN 中,而 UTP 系统是运行在 IDC 的服务器上,IDC 的服务器是无法和 SVN 互通的。所以,我们需要找一台能够访问 SVN,也同时能够访问 IDC 的机器,帮助我们做数据转发。

图:节点网络结构

最终,我们将用例解析的程序部署在转发机上,解析程序定时拉取 SVN 最新代码,如果代码有更新,则解析用例代码生成结构化数据,然后将数据以 json 的格式,通过 HTTP 传递到 UTP 服务器上。

图:脚本代码解析流程

2 用例的展示

服务器收到解析器传递过来的用例数据结构以后,将数据保存在数据库中,同时将用例文件保存在硬盘里。

数据存储,是为了向用户进行展示并使用。平时,用例是在 IDE 中开发的,使用/调试的时候,也有可能是在 IDE 中执行。在 IDE 中,文件是以树状结构进行展示的,所以考虑到习惯,用例系统仍然以树状结构来展示用例。

但是,用例系统和 IDE 展示,还是会有一些不同。IDE 默认是按照文件为单位进行展示,而用例系统是为了管理 “用例” 所以会以 “用例” 为单位进行展示。 一个文件可能包含多个用例,在这种情况下,对于同一个用例工程,用例系统和 IDE 展示的结构就会不一样。

最终,考虑到实际的项目结构,用例系统展示的树状结构如下:

图:用例展示树状结构

3 用例的输出

用例的最终目的是为了进行执行,当用户选择了用例以后,用例系统需要将用户所选择的用例参数及文件传递出去,让执行系统可以执行起来。

为了提高执行效率,UTP 提供了并发执行的能力。为了满足并发,用例系统需要将用户所选择的用例进行拆分。比如,用户选择了 10 个用例,在 5 台机器上进行执行。那么用例系统需要将 10 个用例拆分成 5 份,每份 2 个用例,然后传递到执行系统中。

但是,并不是所有的用例都可以并发,比如用例 B 的执行,依赖于用例 A 的输出结果。这个时候如果将用例 A 和 B 拆分到不同的执行机器,会造成用例 B 无法执行。

同时,一些公共的用例,比如环境准备,文件清理等,也是不能并发的,它们并发没有意义。到底一个用例能否并发,用例系统是不知道的,只有脚本开发人员知道。所以,用例系统提供了一系列注解,用于标示用例的并发属性。

@SetUp : 标示此用例是前置条件, 并发时必须先执行此用例;

@TearDown: 标示此用例是后置条件, 并发执行完时必须执行此用例;

@Independent: 标示此用例没有前后依赖关系 (SetUp,TearDown 除外), 可以被独立并发执行。

用例被标示以后,用例系统就可以把用户所选择的用例进行拆分,目前执行平均拆分原则,也就是尽可能保持每组用例的个数尽可能一致。

具体算法流程如图所示:

图:用例并发拆分流程

举例,用户选择了下面 8 个测试用例:

TC_Setup1,TC_Setup2,TC_TestCase1,TC_TestCase2,TC_TestCase3,TC_TestCase4,TC_TearDown1,TC_TearDown2。
其中,4 个 testcase 均标记@Independent

图:用例拆分例子

总结

UTP 用例系统到此的流程已经介绍完毕,最后给大家展示一下用例系统的整体架构图。

图:用例系统整体架构

版权所属,禁止转载

扫描下方二维码,关注微信公众号:腾讯移动品质中心 TMQ,获取更多测试干货!

共收到 1 条回复 时间 点赞

表示这接口的命名,前面不加个 I 感觉不爽 😆

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册