UI自动化测试指南(一):浅解概念

今天小编来介绍下自动化测试~

那么何为自动化测试呢?

概念:

自动化测试是指利用软件工具或脚本、自动化执行测试用例、比较实际结果与预期结果,并生成测试报告的过程。其核心目标是替代或辅助人工执行重复性高、易出错或耗时的测试任务,从而提升测试效率、覆盖率和产品质量。

核心要素:

  1. 测试脚本(Test Scripts) 用编程语言(如 Python、Java、JavaScript 等)或专用测试工具编写的代码,模拟用户行为或调用系统接口。

  2. 测试框架(Test Framework) 提供结构化支持,如用例管理、断言、日志、报告生成等(例如 pytest、selenium、JUnit、TestNG、Cypress)。

  3. 执行环境(Execution Environment) 包括浏览器、设备、操作系统、数据库等,测试脚本在其中运行并验证系统行为。

  4. 断言与验证(Assertions) 自动判断测试结果是否符合预期,比如"响应状态码是否为 200""页面是否包含某文本"。

  5. 持续集成/持续交付(CI/CD)集成 自动化测试通常嵌入到 CI/CD 流水线中(如 Jenkins、GitLab CI、GitHub Actions),实现代码提交后自动触发测试。

那么对于自动化测试而言,它是一个大类,下面是有不同的方向的

分类:

一、测试对象/技术栈分类

  • UI自动化测试

    针对图形用户界面进行自动化操作(如点击、输入)
    下面又细分到三个不同的方向

    • 移动端自动化测试

    针对IOS/Android应用进行自动化测试

    工具:Appium、Espresso(Android)、XCUITest(IOS)、Detox(React Native)等

    • Web自动化测试

      与大类UI自动化测试有些重叠,这里特指Web应用的自动化

      工具:Selenium、Playwright、Cypress、Puppeteer、TestCafe

    • 桌面应用自动化测试

      针对Windows/MacOS/Linux桌面程序(如Electron、WPF、WinForms)

      工具: WinAppDriver、PyAutoGUI、Sikuli、TestComplete

  • 接口自动化测试

针对RESTFUL API 、GraphQL、SOAP等接口进行请求和响应验证

工具:Postman、RestAssured、Requests(Python)、Karate

二、按照测试层级分类

这是最基础也是最常用的分类方式:

  1. 单元测试(Unit Testing)

    1. 针对代码中最小可测试单元(如函数、方法)进行验证。

    2. 通常由开发人员编写,使用框架如 JUnit(Java)、pytest(Python)、NUnit(.NET)等。

    3. 执行速度快、反馈及时,是测试金字塔的底层基础。

  2. 集成测试(Integration Testing)

    1. 验证多个模块或服务之间的交互是否正常。

    2. 可以是模块间集成、服务间集成(如微服务调用)、数据库集成等。

    3. 常结合接口自动化进行。

  3. 端到端测试(End-to-End Testing, E2E)

    1. 模拟真实用户操作,从用户界面到后端服务全流程验证。

    2. 通常对应 UI 自动化测试,但也可以包含 API 调用链。

    3. 执行慢、维护成本高,应控制比例。

三、测试目的/特性分类

  1. 回归测试(Regression Testing)

    1. 确保新代码未破坏已有功能。自动化回归测试是核心应用场景。
  2. 冒烟测试(Smoke Testing)

    1. 快速验证主干功能是否正常,常作为构建后的第一道关卡。
  3. 性能自动化测试

    1. 自动化执行压力测试、负载测试、稳定性测试等。

    2. 工具:JMeter、Gatling、Locust、k6 等。

  4. 安全自动化测试(DAST/IAST/SAST)

    1. 自动化扫描漏洞,如 OWASP ZAP、Burp Suite(部分自动化)、SonarQube(静态分析)。
  5. 兼容性测试自动化

    1. 自动在不同浏览器、设备、操作系统上运行测试(常结合云测试平台如 BrowserStack、Sauce Labs)。
  6. 数据驱动测试 / 关键字驱动测试

    1. 这是自动化测试的设计模式,也可视为一种分类维度。

那么众多方向中 ,哪种方式较好,哪种方式收益较佳

这就不得不提到测试中,经典的金字塔模型

理想的金字塔情况表明,需要利用较少的时间和精力在单元测试中就能发现更多有效的问题

所以它的核心思想是:

用最快、最便宜的方式尽早发现问题

因为越早、越底层发现问题、修复成本越低

然后实际情况是,是反过来的

而这个图则说明了,企业有时候为了产出,所以不得不和其原有的核心思想相违背。

那么接下来,小编将会以Web自动化测试来分享更多内容

Web自动化测试

在手工测试中,测试人员在进行Web测试的时候,需要手动打开浏览器进行操作,那么对于代码而言,它又是如何打开浏览器呢?

那么打开浏览器的操作,就是需要通过驱动来进行的。

那么为什么需要驱动?

现代的浏览器中,处于安全性和稳定性考虑,不允许外部程序直接操作其内容行为(比如点击、输入文本)

于是,W3C制定了WebDriver协议------一个标准化的通信接口,允许测试工具通过HTTP请求与浏览器"交流"

而这个驱动就是这个协议实现的桥梁:

  • 它是一个独立的可执行程序

  • 一端接收自动化脚本(java+selenium)的指令

  • 另一端将这些指令翻译成浏览器能理解的操作,并控制浏览器执行

  • 自动把执行结果返回到测试脚本中

常见的浏览器和驱动:

表格 还在加载中,请等待加载完成后再尝试复制

值得注意的是:浏览器版本要和驱动版本相对应,否则允许程序的时候就会出错

那么到目前为止,浏览器更新频繁,驱动同样也是,那么对于测试人员来说也是一个小小的麻烦,毕竟要手动寻找,还有下载驱动,换了浏览器,还得写另一套代码等等

所以这里,就要引入两个"大人物":selenium、WebDriverManager

selenium:

它是一个web自动化测试一个框架,它提供了一套统一的的API,让使用者使用相同的代码逻辑操作不同的浏览器

这就意味着测试人员不需要为每个浏览器编写一套脚本,测试逻辑与浏览器实现解耦,提升代码复用和可维护性

跨平台、跨语言支持

  • 支持 Windows、macOS、Linux;

  • 不仅支持Java,还支持Python、C#、JavaScript等;

  • Java 生态中,可无缝集成 JUnit、TestNG、Maven、Gradle 等主流工具。

强大的社区与生态

  • 成熟稳定,文档丰富;

  • 大量第三方库和最佳实践(如PageObject Model);

  • 被Jenkins、Docker、Sauce Labs、BrowserStack广泛支持

WebDriverManager:

它是一个专门为Java(及其他语言)设计的驱动自动管理库

优势:

  • 自动下载、缓存、复用驱动;

  • 自动匹配浏览器版本;

  • 支持代理、离线模式、自定义版本等高级配置;

  • 完美适配 CI/CD(如 Jenkins、GitHub Actions)。

ok,那么对于自动化一些概念,小编分享到这里

相关推荐
不能只会打代码2 小时前
力扣--1970. 你能穿过矩阵的最后一天(Java)
java·算法·leetcode·二分查找·力扣·bfs·最后可行时间
少年执笔2 小时前
android新版TTS无法进行语音播报
android·java
咸鱼2.02 小时前
【java入门到放弃】数据结构
java·开发语言·数据结构
啊西:2 小时前
SuperMap iObjects Java地图生成栅格瓦片并保存到mongodb
java·开发语言·mongodb
教练、我想打篮球2 小时前
125 如何运行时实时切换数据库(实时切换影子库)
java·spring·shadow·datasource
毕设源码-赖学姐2 小时前
【开题答辩全过程】以 “实惠”药房管理系统为例,包含答辩的问题和答案
java
共享家95272 小时前
测试常用函数(一)
java·前端·javascript
廋到被风吹走2 小时前
【JAVA】【JDK】java8版本之后各个版本调整
java·开发语言
酸菜牛肉汤面2 小时前
17、什么是脏读?幻读?不可重复读?
java·数据库·mysql