当前位置: 首页 > news >正文

测试--自动化测试概念

一.什么是自动化测试?

自动化测试是指:

用程序自动代替人工操作完成测试流程,以减少人力消耗、提高测试质量和效率。

它的主要用途是进行回归测试

  • 软件版本不断更新时需要重复验证历史功能是否受影响;

  • 自动化测试可以高效完成这些重复性的验证工作。

注意点

  • 自动化测试不能完全替代人工测试;

  • 自动化脚本也需要维护和更新;

  • 自动化测试“可以一定程度降低工作量”,不是绝对节省。

二.⾃动化分类

按测试对象分类

类型

说明

单元测试自动化对单个函数、模块进行测试(如使用 GoogleTest、JUnit、pytest 等)

接口自动化测试

针对后端接口(如HTTP API、RPC接口)进行请求响应验证、逻辑校验
UI自动化测试模拟用户在网页或App上的点击、输入、跳转等操作,验证前端行为是否正常
功能/业务流程自动化自动执行复杂业务流程,验证端到端功能是否符合预期
性能/压力测试自动化使用工具(如JMeter、Locust)自动模拟高并发请求,测试系统稳定性
安全测试自动化自动扫描常见安全漏洞(如SQL注入、XSS)

单元测试 接口测试 UI测试
对比项单元测试自动化接口自动化测试UI自动化测试
测试对象函数、类、模块内部逻辑后端接口(如RESTful API)前端页面操作(按钮、输入框、跳转)
依赖环境无需部署,直接运行测试代码需部署后端服务,或接口模拟环境需部署前端页面、浏览器/模拟器环境
执行速度非常快(毫秒级)快(秒级)慢(秒~分钟)
稳定性极高(只测试代码逻辑)较高(不依赖UI)低(易受样式、定位、渲染变化影响)
维护成本
适用场景开发初期验证逻辑,敏捷开发/持续集成服务层逻辑验证、接口兼容性、接口回归测试整体流程验证、冒烟测试、用户行为自动化
编写难度初级中级中~高级(需熟悉定位、操作等)

假设你有一个“用户登录”功能:

  1. 单元测试

    • 测试checkPassword(input, real)函数是否返回正确布尔值;

  2. 接口测试

    • /api/login 提交账号密码,验证响应结构、状态码、登录是否成功;

  3. UI测试

    • 打开网页,模拟输入用户名密码,点击登录按钮,验证页面跳转是否正确。

接口自动化

接口自动化测试是指:

使用程序模拟客户端向后端服务接口(如HTTP、RESTful、RPC)发起请求并自动校验返回数据是否符合预期。

它不依赖于用户界面,直接对服务层进行测试。

目的:

  1. 替代手动请求接口(如用Postman)进行大量重复验证;

  2. 验证后端接口的功能正确性、数据准确性、业务逻辑完整性

  3. 提高测试效率和覆盖率,减少回归测试人力成本;

  4. 支撑CI/CD流水线,实现自动构建 → 自动部署 → 自动测试

问题类别示例
✅ 功能验证登录接口是否正确校验账号密码,返回token是否正确
✅ 参数验证缺少字段、字段类型错误、越界值时接口是否报错
✅ 逻辑回归问题修改后端代码后是否影响了旧接口
✅ 性能瓶颈定位大量并发时响应是否超时,能否支撑业务压力
✅ 安全性验证接口是否能防止未授权访问、参数注入等

接口自动化的核心流程

以HTTP API为例,接口自动化主要包括以下步骤:

  1. 定义测试用例

    • 请求方式(GET/POST/PUT/DELETE)

    • URL、Headers、请求参数、期望响应

  2. 发送请求

    • 使用代码工具(如 Python + requests 或 Java + RestAssured)构造HTTP请求

  3. 断言响应

    • 校验状态码(200、400、401、500…)

    • 校验响应内容(字段存在、值是否正确)

  4. 生成报告

    • 自动输出测试通过/失败统计、错误详情(如allure报告)

  5. 集成CI/CD

    • 每次代码提交后,自动触发接口测试,回归验证

UI自动化

UI测试也称为界⾯测试,常⻅的UI⾃动化测试包含web⾃动化测试、移动端⾃动化测试等等。

类型简介
Web自动化测试针对网页应用(浏览器)中的界面进行自动化测试
移动端自动化测试针对移动设备(安卓/iOS)上的 App 界面进行自动化测试

移动端测试:

移动端测试通常不是将程序部署在移动端上进⾏测试,⽽是需要安装模拟器,在电脑上编写⾃动化测试脚本代码对模拟器上的软件进⾏操作
移动端测试难度相对较⼤,移动端测试的稳定性要⽐接⼝⾃动化测试和web⾃动化测试的稳定性要差很多,原因主要是移动端测试收到的环境影响⽐较多

Web自动化测试

一、什么是 Web 自动化测试?

Web自动化测试是指使用编程脚本模拟人在浏览器中的操作,自动执行对网页应用的功能验证流程。

目标:

  • 自动完成登录、搜索、下单、表单提交、跳转等常规网页操作;

  • 验证页面行为、内容是否符合预期;

  • 提高测试效率,减少手工点击与重复验证。


二、为什么要做 Web 自动化测试?

目的说明
✅ 提升效率执行一遍自动化脚本可节省大量人工测试时间
✅ 支持持续集成(CI/CD)每次部署后可自动测试核心流程,防止回归 Bug
✅ 减少人为遗漏与误操作模拟流程标准稳定,不会漏点
✅ 高频业务稳定验证登录、下单等常用功能更新频繁,需要反复验证


三、Web自动化测试的核心流程

[脚本编写] → [执行操作] → [查找元素] → [断言结果] → [生成报告]

示例场景:自动测试“百度搜索”

  1. 打开浏览器 → 访问百度首页;

  2. 输入关键词“迪丽热巴”;

  3. 点击“百度一下”;

  4. 断言页面是否跳转、是否有搜索结果;

  5. 关闭浏览器。


四、常用工具

工具说明
Selenium最主流、跨语言(Python/Java/C#等)
WebDriver浏览器驱动程序(如ChromeDriver 打开浏览器
WebDriver Manager自动安装匹配浏览器驱动(解决浏览器驱动和浏览器不匹配的问题)
Pytest + AllurePython中常用的自动化测试框架 + 报告系统

六、工作原理(Selenium + WebDriver)

Selenium 脚本 → 浏览器驱动(WebDriver) → 浏览器执行操作 → 返回结果 → 脚本判断 → 报告输出

说明:

  • Selenium 脚本通过 WebDriver 发起 HTTP 请求;

  • 浏览器驱动解析这些请求并在浏览器中执行点击、输入等动作;

  • 执行结果再返回给脚本进行断言处理。


七、一个完整示例(Python + Selenium)

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager# 初始化驱动
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))# 打开百度
driver.get("https://www.baidu.com")# 输入关键词
driver.find_element(By.ID, "kw").send_keys("迪丽热巴")# 点击按钮
driver.find_element(By.ID, "su").click()# 断言页面包含关键词
assert "迪丽热巴" in driver.page_source# 关闭浏览器
driver.quit()

八、优缺点总结

优点缺点
自动化重复性高、回归效率高对页面结构改动较敏感,脚本易失效
真实模拟用户行为,发现界面Bug浏览器环境依赖强,占用资源
可与CI工具集成(Jenkins)执行速度相对接口测试慢

http://www.xdnf.cn/news/574075.html

相关文章:

  • java21
  • BISS0001:高性能热释电红外感应IC的详细介绍
  • 学习STC51单片机10(芯片为STC89C52RC)
  • 近场探头阵列技术解析
  • (eNSP)主备接口备份配置
  • BitsAndBytesConfig参数描述
  • redisson-spring-boot-starter 版本选择
  • MySQL备份恢复:数据安全的终极指南
  • 基于Matlab建立不同信道模型
  • 苍穹外卖05 Redis常用命令在Java中操作Redis_Spring Data Redis使用方式店铺营业状态设置
  • 本特利内华达125768-01 RIM i/o模块规范
  • ESP.wdtFeed();的作用与功能,以及使用方法
  • 「AR智慧应急」新时代:当AR眼镜遇上智能监控,打造立体化应急指挥系统
  • AskTable 集成 Databend:结构化数据的 AI 查询新体验
  • 项目自启动文件配置
  • quickbi实现关联度分析(复刻PowerBI展示)
  • 【深度学习:理论篇】--Pytorch之nn.Module详解
  • 嵌入式开发学习日志(linux系统编程--文件读写函数(2))Day25
  • 算法——数组代码
  • RECCV检测人脸伪造项目尝试与扩展
  • 深度学习实战108-基于通义千问Qwen2.5-Omni的智能数字人实时对话系统实现
  • 免费使用GPU的探索笔记
  • 采用排除法进行EMC问题定位
  • 采用线性优化改进评估配电网的灵活性范围
  • Linux服务器SOS Report完全指南:收集方法、作用解析与最佳实践
  • git checkout HEAD
  • C++11语言级别的多线程
  • 5月21日
  • 云渲染技术解析与渲酷平台深度测评:如何实现高效3D创作?
  • 为什么可以不重写m1方法