#软件测试###浅谈几个UI自动化测试工具
一、Selenium
一个web的自动化测试工具,相比QTP而言支持多种语言,QTP只支持VBS,支持多平台,支持分布式测试用例的执行。selenium主要使用的工具是WebDriver。
WebDriver有三个角色:工程师写的自动化测试代码;浏览器的驱动;浏览器。
从技术层面解释:
- WebDriver API(基于Java、Python、C#)等语言,对于python来说就是from selenium import webdriver;
- 浏览器的驱动(browser driver):每个浏览器都有自己的驱动,均已exe文件形式存在,比如谷歌的chromedriver.exe、火狐的geckodriver.exe;
- 浏览器本身:即软件本身。
一条selenium脚本执行时后端发生的事情:
- 对于每一条selenium脚本,一个http请求会被创建并且发送给浏览器的驱动;
- 浏览器驱动中包含了一个HTTP Server,用来接受这些http请求;
- HTTP Server接收到请求后根据请求来具体操控对应的浏览器;
- 浏览器执行具体的测试步骤;
- 浏览器将步骤执行结果返回给HTTP Server;
- HTTP Server又将结果返回给Selenium的脚本,如果是错误的http代码我们就会在控制台看到对应的报错信息。
为什么使用HTTP协议:因为HTTP协议是一个浏览器和Web服务器之间通信的标准协议,几乎每一种变成语言都提供了丰富的http libraries,这样就可以方便的处理客户端Client和服务器Server之间的请求request及响应response,WebDriver的结构中就是典型的C/S结构,WebDriver API相当于是客户端,而小小的浏览器驱动才是服务器端。
WebDriver基于的协议:JSON Wire Protocol,这个协议在http协议基础上,对http请求及响应的body部分的数据进一步规范。http中的body都是以JSON的形式存在并进行传送的,这样的话在Client和Server之间,只要是基于JSON Wire Protocol来传递数据,就与具体的脚本语言无关了,同一个浏览器的驱动既可以处理Java语言的脚本,也可以处理Python语言的脚本。
每个浏览器都有自己自动化测试接口,如打开网页、点击等;每个浏览器自己的webdriver实现,如chromedriver都封装了这些自动化测试接口,然后把这些操作以一个标准web restfull api暴露出来。
二、Appium
Appium:一个开源的,适用于原生或混合移动应用(hybrid mobile apps)的自动化测试工具,Appium应用WebDriver:JSON wire protocol驱动安卓和IOS移动应用。
支持多平台(Android、IOS等)。
支持多语言(python、java、ruby、js、c#等),appium选择了Client/Server的设计模式,只要client能够发送http请求给server,那么client用什么语言来实现都是可以的,这就是支持多语言的原因。
跨平台的,可以在OSX、windows和linux上运行。
appium扩展了WebDriver的协议。
Appium启动时会创建一个http请求,针对4723端口,脚本会告诉服务器我要做什么,服务端再去跟设备打交道,服务端和脚本可以不在一起,只要能访问到127.0.0.1:4723这个地址就可以。服务端和设备默认使用4724端口进行通讯,底层调用uiautomator工具,在测试的时候服务端会给设备扔一个jar包就是appiumbootstrap.jar,会启动这个包,启动之后会在手机上创建一个socket服务,暴露的就是4724的端口,相对于socket服务来说,appium服务端又是一个客户端。服务端的4724端口可以修改,设备上的不可以,服务端收到脚本传递过来的命令之后,通过电脑上的2724端口,向设备上的4724端口发送指令,appiumbootstrap.jar收到指令后回去完成点击、滑动等操作,完成之后再通过服务给服务端一个回应,服务端收到之后再返回给响应脚本。
Bootstrap.jar,监听appium发送过来的相关请求,并将请求转换成UiAutomator可以识别的命令发给UiAutomator进行处理。
Bootstrap是Appium在初始化时推送到Android手机上的一个UiAutomator测试脚本,该脚本的唯一一个测试方式是在手机端开启一个SocketServer(通信模块),监听appium从PC端发过来的命令,并发送给UiAutomator进行处理。
appium工作流程:脚本请求==》4723端口appium server==》解析参数给PC端4724端口==》发送给设备4724端口==》通过设备4724端口发给bootstrap.jar==》Bootstrap.jar把命令发给uiautomator。
三、uiautomator
uiautomator是谷歌在Android4.1版本发布时推出的一款用java编写的ui测试框架,基于accessibility服务,最大的特点是可以跨进程操作,可以使用uiautomator框架提供的一些方便的api来对安卓应用进行一系列的自动化测试操作,如点击、滑动、键盘输入、长按以及常用的断言方法等。
uiautomator是在手机上运行了一个http rpc服务,将uiautomator中的功能开放出来,然后再将这些http接口封装成python库,python脚本执行每个操作都会转换成一个对http rpc服务的请求,http rpc服务接受这些请求,并调用原生uiautomator的api实现在手机上的操作。
android SDK4.3中提供了如下工具来支持UI自动化测试,uiautomatorviewer:一个图形界面工具来扫描和分析应用的ui控件。uiautomator:一个测试的java库,包含了创建UI测试的各种APi和执行自动化测试的引擎。
uiautomator1有两个缺点:测试脚本只能使用Java语言;测试脚本必须每次被上传到设备上运行。
uiautomator2诞生的背景:希望测试能够用更脚本化的语言,如python,每次所见即所得地修改测试、运行测试或者说能够在电脑上运行就能控制手机。
uiautomator2初期是在手机上运行一个http rpc服务,将uiautomator中的功能开放出来,然后再将这些http接口封装成python库。
uiautomator2后期加强版:设备和开发机可以脱离数据线,通过wifi互联,代码重构和精简,扩充了toast,继承了openstf/minicap达到实时屏幕投屏,以及实时截图;集成了openstf/minitouch达到精确实时控制设备。
python-uiautomator2封装了谷歌自带的uiautomator2测试框架,提供便利的python接口,允许测试人员直接在PC上编写python的测试代码。
python-uiautomator2分为两个部分,python客户端,移动设备。
python端:运行脚本,并向移动设备发送HTTP请求。
移动设备:移动设备上运行了封装了uiautomator2的http服务,解析收到的请求,并转化成uiautomator2的代码。
整个过程:
- 在移动设备上安装atx-agent(守护进程),随后atx-agent启动UIautomator服务(默认7912端口)进行监听;
- 在PC上编写测试脚本并执行(相当于发送http请求到移动设备的server端);
- 移动设备通过WIFI或USB接收到PC上发来的HTTP请求,执行指定的操作。
以下是我整理的一些学习资料,需要的朋友可以进群讨论!
#软件测试###浅谈几个UI自动化测试工具相关推荐
- 种草Cypress和TestCafe,QA同学一定想了解的Web UI自动化测试工具
摘要:Cypress和TestCafe这两个工具相比于Selenium都更加的轻量级,且在不同的方面有了改进,比如安装更简单,增加了内置等待机制,调试更加方便等. Cypress.TestCafe.P ...
- 2022浅谈前端八大UI库
之前在3月份的时候做过一个<浅谈前端八大UI库>的公开课,反馈还不错,当时就想着等有时间了,就把公开课讲的东西,组织成一个博客.这一等,就等了两个多月. 先说一下什么样的同学适合看这个博客 ...
- 浅谈eform自定义表单工具和协同办公系统
浅谈eform自定义表单工具和协同办公系统 提起"协同办公",随便在百度或者Google搜索一下,就能让你看到眼花缭乱的信息,国内的各大协同办公软件厂商都在鼓吹着自己对协同的理解和 ...
- UI自动化测试工具Airtest
一.工具介绍 Airtest是网易出的基于图像识别和Poco控件识别的一款UI自动化测试工具. 两个关键点: 1.基于图像识别 Airtest可以通过屏幕截图的方式来获取我们想要操作的区域.例如对一些 ...
- 基于图片识别的 UI 自动化测试工具 SikuliX
简介 SikuliX 是一款开源的 GUI自动化测试工具,它的前身是 Sikuli(上帝之眼).SikuliX 在设计上使用到了图片识别技术,会通过不停的对桌面进行截图,然后与预期图片进行比较来判断交 ...
- UI自动化测试工具一般有哪些作用?
随着不同渠道的应用程序设计以及开发,跨越移动.桌面和云,检测操作界面变得越来越复杂,面对一系列的挑战和漏洞,自动操作UI界面检测也越来越受到重视,UI自动化测试工具就是解决这些问题的专业工具,那你知道 ...
- UI自动化测试工具探索:Airtest
Airtest 简介 Airtest Project是网易游戏内部工具团队开发并开源的一款UI自动化测试工具,据说曾经获得谷歌力挺. AirtestIDE 是一个跨平台.多端(Windows.web. ...
- 通过录屏自动测试web端查询功能_海豚 Web UI自动化测试工具
http://div.io/topic/1339 海豚是什么? 没错,它是一个 Web UI自动化测试工具,专治Web UI的各种疑难杂症,目前只针对移动端Webapp量身定做. 说到 Web UI的 ...
- ui自动化测试框架_浅谈前端(UI)自动化测试
作为一名测试开发从业者,自动化测试好像是绕不开的话题....结合最近接触到的一些测开应聘同学聊到关于前端自动化测试及自己的理解,分享一下自己对UI自动化测试的认识,大概如下. 测试分层的自动化测试思想 ...
最新文章
- rabbitmq代码
- 【机器视觉】 import算子
- elasticsearch 索引_Elasticsearch系列---索引管理
- 斐波那契数java实现_斐波那契数列Java实现[剑指offer]
- mysql utf8mb4 造成慢_mysql使用utf8mb4经验吐血总结
- Android系统的智能指针(轻量级指针、强指针和弱指针)的实现原理分析【转】
- 你会换吗?报告称将有大批iPhone用户升级苹果5G新机
- Python在大部分领域都能胜任,为什么很多企业转向了Golang?
- [开发笔记]-VS2012打开解决方案崩溃或点击项目崩溃
- 《SEM长尾搜索营销策略解密》一一2.9 长尾,寻找蓝海的最好方式
- 用php照片艺术化,不满足简单修图?这些应用能让照片充满艺术感
- Python爬虫入门【8】: 蜂鸟网图片爬取之三
- centos7部署calamari
- 有哪些在成都开了 20 年以上的味道不错的小饭馆
- Excel如何利用时间差操作,求得员工的工龄
- WLAN旁挂组网二层直连
- 深度学习 | MATLAB Deep Learning Toolbox lstmLayer 参数设定
- reference other engineer's code to explain wheather linux terminal can display matplotlib' figure
- 广东 - 012 - 汕头南澳岛
- 如何评价谭浩强(转自知乎)