新浪测试研发团队
一、新浪测试平台介绍
新浪测试平台,简称STP(Sina Test Platform),是一站式的测试服务平台。主
要包括以下特性:
良好的用户界面,简单易用
支持主流移动操作系统:如Android、IOS、YunOS
支持多种测试框架,如Appium、Robotium、TestNG、MSTest、JMeter
支持多种编程语言, 如Java、C#、Python
提供丰富功能,如功能测试,接口测试,稳定性测试,源码扫描
支持单次和周期性测试计划,自动执行,自动生成发送Report
与Jenkins和Gitlab集成
二、系统设计
2.1 系统结构
由五个模块组成:
Dashboard:用户交互入口,创建单次和周期性测试计划、管理测试计划、查看测试报告及其它一些管理功能
TestScheduler:轮询测试计划根据触发时间创建Run、为执行完成的Run发送测试报告邮件 、修复状态异常的测试计划
TestProxy:部署在服务器上,负责与Jenkins交互定时打包、与Gitlab交互定时更新测试用例、为Run准备产品包测试包
TestAgent:控制测试设备执行Run的模块,部署在不同用户的电脑上面,且Test Agent可自定义化(比如只能执行AndroidRobotium的Run),Test Agent所在电脑连接一台或者多台手机,Test Agent负责监控上报这些手机的状态、控制手机准备测试环境和执行Run、收集Log并生成测试报告
DataCenter:存放平台数据,保证数据一致性,供其它组件间接交互
【图:系统架构图】
2.2平台流程
【图:系统整体流程图】
整个系统中,为降低系统耦合,各个模块只能从数据中心来获取其任务,避免某个模块出现问题,就影响整个平台的使用。
主体流程:
用户在Dashboard上创建单次和周期性测试计划,自动保存至Data Center
2. TestScheduler定期检测测试计划,如果接近触发时间,则创建Run和Task,如果用户指定了N台测试手机,那么测试计划就生成N个Run,保证手机和Run一一对应,如下图数据库中生成的Run
3.Test Proxy轮询Run,一旦检测到Test Scheduler新生成的Run,则为其准备产品包和测试包,并更新Run状态
4. 每个Test Agent也都不停的轮询其所连接的手机和数据库,查看是否有机器可以执行待执行的Run,具体过程如下:
a)获取当前Test Agent所连接的手机,然后对所有手机进行遍历,看手机是否空闲
b)若手机处于空闲状态,则查询数据库,检查是否有待执行的Run分配到该手机
c)若有Run分配到此手机,则新启一个线程负责在当前手机上准备测试环境并执行Run ,然后继续遍历其它手机,执行同样的逻辑
d)新启线程会先锁住测试手机,然后准备测试环境、执行Run、生成报告,最终释放该手机
e)所有手机都遍历结束,此次轮询结束,Test Agent等待触发下次轮询
5. Run在Test Agent执行完成后,用户会收到执行完成的Mail,且可在Dashboard上查看具体测试报告,如下面几图所示:
三、如何支持多种项目
实际测试过程中,由于历史原因或是项目特殊需求,不同的项目往往采用不同测试框架,所以如何完美兼容不同项目也是平台的重点。
Test Proxy和Test Agent在运行过程中都遇到这个问题,采用了执行过程中动态绑定技术来解决这个问题:
两个模块在获取Run之前所有项目步骤一致,待到准备或者执行时候,会根据不同类型的项目,动态生成不同的适配器,下图以Test Agent的执行过程来详细说明:
本文暂时没有评论,来添加一个吧(●'◡'●)