markexin / markexin.github.io

Keep learning......
4 stars 0 forks source link

UI 自动化测试 #1

Open markexin opened 1 year ago

markexin commented 1 year ago

image

知识梳理

软件测试分类

按测试阶段分类

按是否查看源代码划分

按是否运行划分

按是否自动化

展开说明

自动化测试意义

自动化测试

自动化测试工具

名称 简介 应用解读
Selenium Selenium 是最受欢迎的UI自动化测试框架之一,支持多种编程语言,如Java、Python和C#。它可以模拟用户在网页上的操作,执行各种测试任务。 Appium 目标的一个子集,Selenium 与各个 Web 浏览器供应商和W3C 标准组织合作,将其 API 变成了官方的 Web 浏览器标准,称为WebDriver 规范。
Appium Appium是一个开源的UI自动化测试框架,专门用于移动应用程序的测试。它支持多种移动平台,如iOS和Android,并提供跨平台的测试能力。 基于WebDriver 规范打造统一平台化能力,不仅仅支持iOS 和 Android,Appium 希望支持用户交互从 Web 到移动设备或从 Web 到电视不同的情况,提供了驱动的概念。
Cypress Cypress是一个现代化的JavaScript前端测试框架,旨在对Web应用程序进行端到端的自动化测试。它具有简单易用的API和强大的调试功能。 Cypress 不是基于 WebDriver 开发的,Cypress 使用自己的架构和协议来直接与浏览器交互,而不是通过 WebDriver 接口,Cypress 更适合用于前端端到端测试,而 WebDriver/Selenium WebDriver 更适合用于跨浏览器和跨平台的 Web 应用程序测试。

下图来源于 Appium,Appium 集大成者,提供了多媒体终端不同场景下的测试套件(Driver)。

image

UI Automator

包名: androidx.test.uiautomator(基于JAVA) UI Automator 测试框架提供了一组 API,用于构建在用户应用和系统应用上执行交互的界面测试。 UI Automator 测试框架的主要功能包括:

当安装安卓 SDK tools 之后,会自动下载 uiautomator。UiAutomator 是Google提供的用来做安卓自动化测试的一个Java库,功能很强,可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。但有两个缺点:

  1. 测试脚本只能使用Java语言;
  2. 测试脚本要打包成 jar 或者 apk 包上传到设备上才能运行;

那么改进的方案就是在手机上运行了一个 HTTP PRC 服务,将uiautomator中的功能开放出来,然后再将这些http接口封装成Python库。

image

uiautomator2 测试框架的主要功能包括:

Weditor

该框架的原理底层实现基于 uiautomator 的能力,打造一个web端 uiautomatorviewer。基于 uiautomator dump_hierarchy 将安卓xml获取后递归转换成JSON,然后提供接口服务给web页面。前端接收到请求后,如下图所示:

image

通用ADB链接手机后,该框架会对手机进行截屏,然后将截图以canvas的形式填充到页面上,在通用上图二中所示,同样以canvas描边的形式,将框体描绘出来。虽然和真正的 uiautomatorviewer 并不是一个东西,但是所展示的效果,和渲染后用户选择时的xpath id,是一致的。