即插即用式多项目自动化测试平台设计与实现——架构设计

  公司为了提高各部门工作效率,主张小团队作战。直接结果就是测试团队的自动化项目支离破碎,无法跟踪,无法统计,随意性很强。项目组决定统一标准并且写一套统一的架构解决这样的问题。虽然比较山寨,但是还算有效果。

大背景下的需求有:

  1. 涉及到的自动化任务类型较多,不同产品,功能性能,安全性,驱动,病毒等等都有,并且不断的增加;
  2. 不同项目测试参数不同,需要给出相同的提交方式和结果查询方式;
  3. 测试机以虚拟机为主,某些项目需要实体机;
  4. 由于安全性,不同项目需要在不同的域内执行,互相不能互访;
  5. 项目随时添加随时使用,即服务不能停止;
  6. 任务分发——3种常见分发方式,并支持用户扩展;
  7. 其他小需求:报告通知,结果分析,图表统计,错误截图和执行项目查看等;

  事实上,不管什么样的测试架构,主要的元素都是那几大部分,无论如何拆分,基本逻辑都不变化。好一点的是,由于是写自动化测试的平台架构,并不是某一个项目的测试framework,所以很顺利,不存在某一个单一项目的自动化无法突破的困境。

 

  简单调研后,各部分的策略如下:

  语言:python

  测试架构:pyut

  虚机调度/实机调度:VMWare接口/Socket开发

  Case编写:xml

  Web site:web.py

  即插即用方式:配置文件

 

  总体架构如下图所示,其中:

  1. 核心调度读取公共配置,控制测试机的实例队列和项目的实例队列,将各种状态信息写出到日志中;
  2. 当接收到提交页面传来的消息后,按照页面form中提交的参数,使用对应的测试机实例去执行指定的测试项目实例;
  3. 页面提交的每个任务作为一次执行作业,相应数据入库;
  4. 按照用户指定策略将任务中的case分发到不同测试机中,执行明细直接由测试机入库,server只负责测试的驱动和执行通信;
  5. 所有测试项目以zip包格式放到固定目录下,做即插式管理;
  6. 所有测试项目的提交页面配置和开发环境放入web site固定目录下,统一的提交页面模板会读取相关配置,并按照不同项目显示其参数,动态调用各自的dopost的方法执行post请求,同样即插即用式;提交页面支持默认case.xml查询;
  7. 历史查询页面提供任务查询和用例明细查询,支持按照不同条件查询任务,和任务的结果明细;每个任务的最终结果查询中,按不同测试机进行统计和显示,同一页面内支持错误用例定位导航和失败截图查询;

  架构的部分,并没有多少新鲜的东西,主要是组合,并通过xml和动态执行实现即插即用的方式。下一次会继续讨论各个部分的实现。

 

即插即用式多项目自动化测试平台设计与实现——架构设计

 

 

你可能感兴趣的:(自动化测试)