Skip to content

自动化测试简述

自动化测试介绍和分类,看这一篇就够了 - 三叔测试笔记 - 博客园 (cnblogs.com)

软件测试入门系列之七:自动化测试 - 知乎 (zhihu.com)

什么是自动化测试

  • 软件测试活动中一个重要的分支和组成部分
  • 利用工具或脚本达到测试目的,把以人为驱动的测试行为转化为机器执行的一种过程,是一种没有人工或者极少人工参与的软件测试活动
  • 自动化测试的主要目标是提高测试效率,降低项目成本,而不是完全取消手工测试

为什么要进行自动化测试

  1. 方便进行回归测试,当软件的版本发布比较频繁的时候,自动化的效果很明显
  2. 自动处理原本烦琐、重复的任务,提升效率,提高测试的准确性和测试人员的积极性
  3. 具有复用性和一致性,可以在不同的版本上重复运行,保障测试内容的一致性 P
  4. 发现更多隐藏问题,手工测试无法验证系统的稳定性、可靠性等,需要通过工具等自动化手段,对系统进行压力测试、稳定性测试等

自动化测试适用场景

  • 适用场景
    • 高风险-关键业务测试案例
    • 重复执行的测试用例
    • 非常繁琐或难以手动执行的测试用例
    • 耗时的测试用例
  • 不适用场景
    • 新设计的测试用例,并且至少一次不手动执行
    • 需求经常变化的测试用例
    • 临时执行的测试用例

自动化测试分类

  1. 从软件开发周期的角度分类
    • 测试金字塔
    • 测试金字塔自下而上依次是单元测试、接口测试、UI 测试。越高层影响的范围越大,成本越高
      1. 单元自动化测试:自动化的完成对代码中的类和方法进行测试,主要关注代码实现细节及业务逻辑等方面
      2. 接口自动化测试:测试系统组件间接口的请求和返回,接口测试稳定性高,更适合开展自动化。可以进行的测试工作有接口测试、接口性能测试等
      3. UI 自动化测试:对图形化界面进行流程和功能等方面进行测试
        1. Web 自动化测试:模拟人操作对应系统,验证功能等方面是否正常,能大大提升测试效率,主要应用在一些重复操作的测试中
        2. App 自动化测试:通过工具或者代码命令的方式模拟人工操作,验证功能、性能、兼容性、易用性等方面
    • 在《Google 测试之道》一书,对于 Google 产品,70%的投入为单元测试,20%为集成、接口测试,10%为 UI 层的自动化测试
  2. 从测试目的的角度分类
    • 连接和其他比较稳定而不经常发生变化的元素
    • 性能自动化测试:依托自动化平台自动的执行性能测试、收集测试结果,并分析测试结果的一种接近无人值守的性能测试,具有以下特性:
      1. 对脚本创建和提供类库和其他模块支撑
      2. 可以设定自动化任务(比如每天根据特定的场景执行一轮性能测试)
      3. 自动收集测试结果并存储
      4. 事中监控(比如场景执行过程中的异常错误自动预警邮件功能)
      5. 成熟的平台可以进行自动分析功能(比如哪些事物有问题、哪些资源消耗异常等)
      6. 安全自动化测试

自动化测试流程

  • 自动化测试流程
  1. 选择测试工具
    • 取决于被测应用程序所基于的技术。例如 Postman 不能用于 UI 自动化,只能适用于接口测试
  2. 确定自动化范围,可以参考以下方面
    1. 对业务很重要的功能
    2. 有大量数据的方案
    3. 跨应用程序的通用功能
    4. 技术可行性
    5. 业务组件的重用程度
    6. 测试用例的复杂性
    7. 能够使用相同的测试用例进行跨浏览器测试
  3. 规划,设计和开发
    1. 选择自动化工具
    2. 框架设计及其功能
    3. 自动化项目
    4. 自动化测试环境准备
    5. 脚本和执行的时间表
    6. 自动化测试的交付物
  4. 测试执行
    • 输入测试数据,输出测试报告
  5. 维护

为什么选择自动化测试框架

  • 保持测试的一致性
  • 改善测试结构
  • 最少使用代码
  • 减少代码维护
  • 提高可重用性
  • 非技术测试人员可以参与代码
  • 可以减少使用该工具的培训时间

如何挑选适合的自动化测试框架

  1. 相对快速和方便设置(或开箱即用的解决方案)
  2. 支持社区或开发者自己可以为其框架提供支持
  3. 有清晰而全面的文档
  4. 与其他工具充分集成
  5. 有一些很酷的功能,例如代码可重用性支持在多个平台和环境进行测试

常见的自动化测试工具分类

  1. UI 自动化测试
    1. Selenium

      Selenium

      • WEB 自动化测试框架
      1. Selenium 是一个涵盖几种工具的生态系统,主要包括:Selenium WebDriver、Selenium IDE 和 Selenium Grid。
      2. Selenium 的核心是  WebDriver,这是一个编写指令集的接口,可以在许多浏览器中运行。
      3. Selenium 也成为了其他开源自动化测试工具比如 Katalon Studio,Watir,Protractor 和 Robot Framework 的核心框架。
      4. Selenium 的核心特性是跨平台和跨浏览器测试,支持多种测试语言(Python、Java、C#等),高度可调整的开源代码,并行运行测试等。
    2. Appium

      Appium: Mobile App Automation Made Awesome.

      • App 自动化测试框架
      1. Appium 是一个开源工具,用于在 iOS、Android 和 Windows 桌面平台上自动化测试原生、web 浏览器或者相混合的应用程序
      2. Appium 是“跨平台”的:它允许您使用相同的 API 针对多个平台(iOS、Android、Windows)编写测试。这允许在 iOS、Android 和 Windows 测试套件之间重用代码。
    3. Cypress

      https://www.cypress.io/

      • WEB 自动化测试框架
      1. Cypress 是基于 web 的下一代前后端测试工具,基于 NodeJS 运行
      2. 与 Selenium 相比,Cypress 底层协议不采用 WebDriver,这使得它能够实现快速、简单、可靠的测试
      3. Cypress 支持端到端测试、集成测试、单元测试。
    4. Robot Framework

      Robot Framework

      • UI 自动化测试集成框架
      1. Robot Framework 是一个通用的开源自动化框架。它实现了用于验收测试和验收测试驱动开发(ATDD)的关键字驱动方法
      2. Robot Framework 通过使用 Python 或 Java 等语言实现其他测试库,可以进一步扩展其测试功能,并几乎可以与任何其他工具集成,以创建强大而灵活的自动化解决方案,Selenium WebDriver 是 Robot Framework 中常用的外部库
      3. 可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。
    5. Airtest

      Airtest Project (netease.com)

      • UI 自动化测试框架
      1. Airtest 是由网易游戏推出的 UI 自动化测试解决方案,包括 Airtest、Poco、AirtestIDE 等部分
      2. Airtest 是一个基于 Python 语言的、跨平台的、基于图像识别的 UI 自动化测试框架,适用于游戏和 App,支持平台有 Windows、Android 和 iOS
      3. Poco 是一款 基于 UI 控件识别 的自动化测试框架,目前支持 Android 原生、iOS 原生、Unity3D、cocos2dx、UE4 和 Egret 等平台
  2. 接口自动化测试
    1. Jemeter

      Apache JMeter - Apache JMeter™

      1. Apache JMeter 是一个 100%纯 Java 应用程序,旨在加载测试功能行为和度量性能。设计用于测试 Web 应用程序,还支持单元测试和有限的功能测试。
      2. 它可用于模拟服务器、服务器组、网络或对象上的重负载,以测试其强度或分析不同负载类型下的整体性能。
      3. 有很多好的特性,比如动态报告、可移植性、强大的测试 IDE 等,并且支持不同类型的应用程序、协议、shell 脚本、Java 对象和数据库。
    2. Postman

      Postman API Platform | Sign Up for Free

      1. Postman 是一个用于构建和使用 API 的平台。简化了 API 生命周期的每个步骤,并简化了协作,因此您可以更快地创建更好的 API。
      2. Postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的 HTTP 请求 (GET, POST, PUT, DELETE…),并且能附带任何数量的参数和 Headers。
    3. SoapUI

      The World's Most Popular API Testing Tool | SoapUI

      1. SoapUI 是一个非常流行的用于 SOAP Web 服务和 RESTful Web 服务的开源 API 测试自动化框架。
      2. 它还支持功能测试、性能测试、数据驱动测试和测试报告。
  3. 单元自动化测试
    1. Junit

      JUnit 5

    2. TestNG

      TestNG - Welcome

    3. unittest

      unittest --- 单元测试框架 — Python 3.11.0 文档

    4. pytest

      pytest: helps you write better programs — pytest documentation

    5. NUnit

      NUnit.org

UI 自动化测试框架简单使用

Selenium

The Selenium Browser Automation Project | Selenium

  • 功能强大,支持多种语言实现
  • IDE 支持录制操作,并导出为指定语言的脚本

WebDriver

WebDriver | Selenium

  • 使用语言编写自动化测试脚本

Selenium WebDriver

Selenium IDE

Getting Started · Selenium IDE

  • 安装浏览器插件,并录制操作,导出为自动化脚本
  1. 浏览器安装 Selenium IDE 插件
  2. 创建项目和测试用例
    • 创建项目和测试用例
  3. 录制操作行为
    • 录制操作行为
    • 可以对操作进行修改
  4. 可以导出为脚本
    • 可以导出为脚本

Airtest

欢迎使用 - Airtest Project Docs (netease.com)

  • Web 自动化测试是魔改了 Selenium 库,不好用
  • 亮点在于支持图像识别元素,低代码完成测试效果,对移动端支持比 Appium 好

Airtest Framework

  • Airtest 是一个跨平台的、基于图像识别的 UI 自动化测试框架,适用于游戏和 App,支持平台有 Windows、Android 和 iOS

Airtest 源码 > Airtest API 文档

Poco

  • Poco 是一款基于 UI 控件识别的自动化测试框架,目前支持 Android 原生、iOS 原生、Unity3D、cocos2dx、UE4 和 Egret 等平台,也可以在其他引擎中自行接入 poco-sdk 来使用

Poco 源码 > Poco API 文档

AirtestIDE

  • AirtestIDE 是一款跨平台的 UI 自动化测试编辑器,内置了 Airtest 和 Poco 的相关插件功能,能够使用它快速简单地编写 Airtest 和 Poco 代码

官方下载网址 > AirtestIDE 使用文档