What We Do:
利用成熟的基础架构动态获取产品代码,一键搭建整个系统的被测模块
依照优先级同时在千台测试机二维互斥、加锁、周 期、定时并发搭建环境和调度测试
一句命令自动同步线上数据,高效完成任务
BackGround:
目前自动化测试多指采用一定的自动化框架和自动化测试脚本来单机运行自动化Case完成测试。自动化测试用例(Case)隶属于按照模块、功能划分的Suite,运行时可以执行单个Case或是执行整个Suite,这些Case没有直接的逻辑关系,即使是执行整个Suite时,其中每个用例也仅反映出该用例的执行结果。这种方式的自动化难以解决模块复杂交互时的自动化化问题,往往会将自动化测试中断在接口数据获取阶段,需要人工check数据在继续。
系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方,从而提出更加完善的方案。系统测试中由于整个软件系统通常有多个模块组成,分布式的部署在多个服务器或是服务器集群上,在验证基本功能点的同时需要完成大量的数据和接口交互的确认测试,并发测试等。
Solutions:
百度结合内部基础架构模型,结合服务和机器监控,完成一套系统测试自动化方案-Prophet。系统测试自动化方案由一套包含有机器、模块运行数据获取,通过获取到的数据派生新的测试分支并完成测试,系统结构如下图:
用户通过系统提供的数据API(由百度底层监控服务提供)获取到模块\机器的运行数据后,在测试脚本中嵌入执行逻辑,自动根据当前数据情况分布式的在不同服务器上派生出新的测试分支完成系统测试。
该测试系统分布式部署在百度的QA集群中,全面支持由千台以上服务器支撑的软件系统的系统自动化测试工作,帮助用户节省超过80%的时间。
原来:易实现的多次回归case自动化->让qa能够投入精力到更深层次的逻辑测试中并提高测试效率。
现在:易实现+深层次回归的case自动化->让qa可以投入到复杂的系统交互、代码优化等领域的工作中、更加保证质量和效率
Implementation:
图中的方块代表机器,同一行的Suite部署在同一台机器上,Suite4,7用于测试模块A部署在机器AM上,Suite29,48用于测试模块B部署在机器BM上,Suite109,58用于测试模块C部署在机器CM上。依赖和数据获取关系由图表中的箭头表示。
步骤一:Suite4于指定时间开始执行,执行成功转步骤二,执行失败转步骤五
步骤二:Suite7接到上游Suite4的成功结束通知和执行数据后开始执行, Suite7成功执行后会为机器BM上测试模块B的Suite48提供数据,执行成功转步骤三,执行失败转步骤五
步骤三:Suite29接到机器AM上Suite7成功完成的通知和执行数据后开始执行,Suite29执行成功转步骤四,执行失败转步骤五;同时Suite48接到Suite7成功完成的通知后从A机器上获取Suite7的数据并执行,执行成功转步骤四,执行失败转步骤五
步骤四:Suite109接到BM机器上Suite29成功完成通知开始执行,Suite109执行完成转步骤五;同时Suite58判断如果同时收到了BM机器上测试B模块的Suite29和Suite48的成功通知和数据则开始执行,执行完成转步骤五
步骤五:结束,通知用户结果。
每个Suite都可以包含有时间属性,即使得到了上游机器的Suite的运行结果和数据也会等待到达指定时间才运行。系统会汇报Suite执行的结果,数据,通过率,覆盖率等同时还包括各项软件件资源的趋势图。
Earnings:
20+ Modules Monitored By Prophet
20+ SystemTest Logical Suites DailyRun On Prophet
150+ ModuleTest Suites DailyRun On Prophet
(作者:laoyong)