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

图:用例系统整体架构

原文发布于微信公众号 - 腾讯移动品质中心TMQ(gh_2052d3e8c27d)

原文发表时间:2018-02-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木头编程 - moTzxx

微信公众平台开发[5] —— 微信扫码支付介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

993
来自专栏微服务生态

NRedis-Proxy 高性能Redis 中间件服务原理解析

受飞凡电商技术负责人刘兵先生的独家授权,在csdn博客我原创发表《NRedis-Proxy 高性能Redis 中间件服务》的架构原理,以及项目开源介绍。 一、...

2304
来自专栏java思维导图

架构师眼中的高并发架构

高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。

5292
来自专栏程序你好

消息通知子系统用户需求

2084
来自专栏魏艾斯博客www.vpsss.net

使用腾讯云 CDN 登录 WordPress 管理员后台显示:连接已重置

4414
来自专栏java一日一条

Java并发教程(Oracle官方资料)

计算机的使用者一直以为他们的计算机可以同时做很多事情。他们认为当其他的 应用程序在下载文件,管理打印队列或者缓冲音频的时候他们可以继续在文字处理程序上工作。甚至...

912
来自专栏腾讯大数据的专栏

分布式系统场景注入测试

前言 大数据浪潮下,海量数据处理能力的提升是推动大数据不断前行的基础,海量数据处理的分布式系统应运而生,hdfs、hadoop、spark、storm、MQ等...

2708
来自专栏FreeBuf

WebUSB:一个网页是如何从你的手机中盗窃数据的(含PoC)

介绍 今年9月15日,Chrome61发布,它启用了WebUSB作为其默认功能。而WebUSB是一个Javascript API,可以允许网页访问已连接的USB...

3475
来自专栏瓜大三哥

伪路径

1.什么是伪路径? 存在于设计之中,之所以叫伪路径,是因为这样的路径并未发挥真正的功能,在时序分析时不需要我们去分析。 2.为什么设置伪路径? 去除无效的时序...

2508
来自专栏性能与架构

MongoDB 即将支持跨文档事务

1822

扫码关注云+社区

领取腾讯云代金券