首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

UTP自动化测试平台系列之三

导语

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用例系统到此的流程已经介绍完毕,最后给大家展示一下用例系统的整体架构图。

图:用例系统整体架构

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180208G0SPKN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券