UI自动化测试主要是通过一系列的测试框架和代码包对web UI(比如:Selenium)、app UI(比如selenium、appium)、桌面应用UI(比如Autoit)模拟手工操作的步骤完成自动化测试用例的创建。通常可以通过录制和脚本开发两种方式编写测试用例。现在有很多自动化测试框架可以将录制的步骤脚本化以实现维护性高的目的。针对某些UI控件定位不准确的难题,也运用了图像识别(比如Airtest)等新技术。UI自动化投入了人力、物力、财力,但往往收获颇微,位于自动化分层金字塔的最上一层,这其中的因素有很多,包括UI的迭代性强、使用不同的JS框架导致控件定位不准等等。但如果app开发项目需要适配多个品牌的不同型号的手机(特别是安卓这个大家族),如果遇到后台重构,难道我们要去挨个机型点一遍吗?想想都头大。如果这个时候我们有一批测试核心功能的UI自动化用例,拿来跑跑不是很爽吗?即便是有些用例需要修改甚至需要写新用例,我相信也比我们去挨个点点点快很多。UI自动化测试工具遵循结合本身或团队的条件选择接口自动化测试工具原则选择UI自动化测试工具。
业界主要使用appium实现appui自动化,使用Selenium IDE实现webui自动化;部分APP使用KIF和uiautomator实现iOS UI自动化,使用espresso实现Android UI自动化,未形成平台,维护成本高。调研了市场已有工具,Webui自动化测试:Selenium+RobotFrameWork、selenium+unittest(python),Appui自动化测试:KIF和uiautomator(ios)/espresso(java,android)、SoloΠ(Soapui ,Android)、appium、robotium(java、android)具体如下:
工具 对比 |
Selenium 1 Webdriver(Selenium 2) Selenium IDE |
UiAutomator |
Appium |
AirTest |
TestCafe/TestCafe Studio |
puppeteer |
RobotFramework |
|||||
UI元素提取方式 |
代码实现 ide界面录制 |
代码实现 |
界面录制+代码实现 |
代码实现+界面录制+sikuli图像识别 |
界面录制+代码实现 |
代码实现 |
关键字实现 |
|||||
浏览器支持 |
Firefox、chrome、ie Firefox、chrome |
-- |
-- |
Firefox、chrome、ie主流 |
Firefox、chrome、ie主流 |
Chrome |
Firefox、chrome、ie |
|||||
浏览器兼容性 |
不兼容,需要webdriver驱动 Ide不兼容,不同插件 |
-- |
-- |
不兼容、代码设定 |
兼容 |
不兼容 |
不兼容 |
|||||
操作系统/平台 |
Windows、linux、android、ios Ide(Windows) |
android |
Windows、linux、android、ios |
Windows、android、ios |
Windows、linux、ios |
Windows、linux |
Windows、linux、android、ios |
|||||
开发语言 |
Python、java、js、php、ruby… ide录制脚本可转换成其他语言 |
Js |
python、java、php、ruby… |
Python |
Javascript |
Javascript |
Python、java |
|||||
持续集成工具 |
支持(ide不支持) |
支持 |
支持 |
支持 |
支持 |
支持 |
支持 |
|||||
是否支持headless |
支持(ide需要runner) |
支持 |
-- |
支持 |
支持:testcafe”chrome:he |
支持 |
支持 |
|||||
是否支持录制 |
不支持(ide支持) |
支持 |
支持 |
支持 |
支持 |
不支持 |
不支持 |
|||||
是否开源 |
是 |
是 |
是 |
是 |
是 |
是 |
是 |
|||||
测试报告 |
无(ide支持) |
支持 |
支持 |
详细 |
详细 |
无 |
详细 |
|||||
入门难度 |
难(ide入门级) |
中 |
中 |
中 |
入门级 |
难 |
中 |
|||||
优势 |
1、多语言支持 2、Devops友好接入 3、插件众多 4、社区支持 5、跨多平台 Ide:1、操作简单,入门容易 2、执行速度快 3、代码转换功能易用,易生成其他编程语言的测试用例代码 |
1、支持跨应用测试 |
1、支持Native App、Hybird App、Web App 2、支持Android、iOS、Firefox OS |
1、框架基于推形识别和UI,控件识别,操作简单 2、对代码能力要求低,可录制脚本一键生成报告,支持python进行个性化编程 |
1、操作简单,不需专业知识 2、可兼容浏览器,无需各种浏览器插件 3、完整测试框架 |
1、chrome团队开发维护node库,支持headless |
1、关键字驱动 2、可随意加载多个三方库 3、可适用于逻辑复杂场景 4、框架功能较全面 |
|||||
劣势 |
1、学习曲线陡峭 2、没有报告功能,需融入testng、pytest等测试框架 3、浏览器兼容问题较多 Ide:1、浏览器不兼容 2、无法完成复杂逻辑校验 3、借助selenium-side-runner可实现命令行执行,但兼容性不好 4、无数据准备 5、录制稳定性不好 |
1、不支持webview |
1、不支持H5 2、不支持跨应用 |
1、控件定位不够精确,当控件位置变更或控件图案修改时,会出现找不到控件的情况 2、平台覆盖比价有限 3、更适合游戏软件测试 4、不支持断点续传 5、不兼容浏览器 |
1、启动速度慢 2、不具备丰富的社区帮助 3、开发语言单一 |
1、只支持chrome,门槛较低,适合前端开发写用例 |
1、元素提取需一定的知识 2、不能录制 3、不兼容浏览器 |
调研结果:针对不同项目考虑用多种工具实现UI自动化,然后持续集成。