Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI 自动化测试 #1

Open
markexin opened this issue Oct 11, 2023 · 0 comments
Open

UI 自动化测试 #1

markexin opened this issue Oct 11, 2023 · 0 comments
Labels
安卓 Something isn't working

Comments

@markexin
Copy link
Owner

markexin commented Oct 11, 2023

image

知识梳理

软件测试分类

按测试阶段分类

  • 单元测试
  • 集成测试
  • 系统测试
  • 验收测试

按是否查看源代码划分

  • 白盒测试
  • 黑盒测试

按是否运行划分

  • 静态测试
  • 动态测试

按是否自动化

  • 人工测试
  • 自动化测试

展开说明

  • 单元测试:单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。(开源框架常用)
  • 集成测试:在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。
  • 验收测试:α测试 === development β测试 === preview γ测试 === production。
  • 白盒测试:又称结构测试、透明盒测试,测试方法有代码检查法、静态结构分析法。(TS、Eslint、Sonar)
  • 黑盒测试:又称功能测试,再不考虑内部结构的前提下测试产品功能。
  • 静态测试:通过分析软件的代码、设计、文档和配置而不执行软件来测试软件的过程。(接口测试)
  • 动态测试:使用各种输入和场景执行软件并检查其行为和输出来测试软件的过程。(UI 测试)

自动化测试意义

自动化测试

  • 它可以帮助我们提高软件质量、减少人工测试的工作量,提高测试效率。
  • 通过自动化测试,我们可以快速、准确地检测软件界面的各种功能和交互,发现潜在的问题和缺陷,确保软件在不同环境下的稳定性和一致性。

UI自动化测试

  • UI自动化测试提供可靠的回归测试,确保软件在不断迭代更新中不会引入新的问题。

自动化测试工具

名称 简介 应用解读
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 测试框架的主要功能包括:

  • UiDevice 类(访问设备状态)
  • UI Automator API
  • uiautomatorviewer 查看器

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

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

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

image

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

  • 设备管理平台,设备多了就会用到 atxserver2
  • 专门与adb进行交互的库 adbutils
  • atx-agent 运行在设备上的驻守程序,go开发,用于保活设备上相关的服务

Weditor

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

image

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

@markexin markexin added the 安卓 Something isn't working label Oct 11, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
安卓 Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant