这是我在2014年根据项目需求,需要一个支持跨操作系统的分布式UI自动化测试框架。当时市面上没有这样的产品,只能自己设计并开发。
测试对象是一个分布式的C/S架构的地铁综合监视控制系统,用来显示和控制地铁各个站点及列车的所有设备。操作系统是Solaris和Windows,服务端是用C++开发的,客户端主要是用可视化工具和MFC开发。端到端的测试用例涉及多台客户端,模拟器和服务器之间交互。
该框架能够执行串联多台机器执行整个链路的UI自动化测试。先在各台受控机器上开启RPC服务,然后在启动测试后,会自动按照批量测试的配置文件,在各台机器中按照顺序或者并发执行测试步骤;最后把各台机器的测试报告,logs,截图等收集到控制端,生成汇总测试报告。
对于非标准的可视化控件,我使用了Sikuli来识别控制;对于标准的MFC控件,使用了Microsoft UIAutomation来识别。