今天小编来介绍下自动化测试~
那么何为自动化测试呢?
概念:
自动化测试是指利用软件工具或脚本、自动化执行测试用例、比较实际结果与预期结果,并生成测试报告的过程。其核心目标是替代或辅助人工执行重复性高、易出错或耗时的测试任务,从而提升测试效率、覆盖率和产品质量。
核心要素:
-
测试脚本(Test Scripts) 用编程语言(如 Python、Java、JavaScript 等)或专用测试工具编写的代码,模拟用户行为或调用系统接口。
-
测试框架(Test Framework) 提供结构化支持,如用例管理、断言、日志、报告生成等(例如 pytest、selenium、JUnit、TestNG、Cypress)。
-
执行环境(Execution Environment) 包括浏览器、设备、操作系统、数据库等,测试脚本在其中运行并验证系统行为。
-
断言与验证(Assertions) 自动判断测试结果是否符合预期,比如"响应状态码是否为 200""页面是否包含某文本"。
-
持续集成/持续交付(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
二、按照测试层级分类
这是最基础也是最常用的分类方式:
-
单元测试(Unit Testing)
-
针对代码中最小可测试单元(如函数、方法)进行验证。
-
通常由开发人员编写,使用框架如 JUnit(Java)、pytest(Python)、NUnit(.NET)等。
-
执行速度快、反馈及时,是测试金字塔的底层基础。
-
-
集成测试(Integration Testing)
-
验证多个模块或服务之间的交互是否正常。
-
可以是模块间集成、服务间集成(如微服务调用)、数据库集成等。
-
常结合接口自动化进行。
-
-
端到端测试(End-to-End Testing, E2E)
-
模拟真实用户操作,从用户界面到后端服务全流程验证。
-
通常对应 UI 自动化测试,但也可以包含 API 调用链。
-
执行慢、维护成本高,应控制比例。
-
三、测试目的/特性分类
-
回归测试(Regression Testing)
- 确保新代码未破坏已有功能。自动化回归测试是核心应用场景。
-
冒烟测试(Smoke Testing)
- 快速验证主干功能是否正常,常作为构建后的第一道关卡。
-
性能自动化测试
-
自动化执行压力测试、负载测试、稳定性测试等。
-
工具:JMeter、Gatling、Locust、k6 等。
-
-
安全自动化测试(DAST/IAST/SAST)
- 自动化扫描漏洞,如 OWASP ZAP、Burp Suite(部分自动化)、SonarQube(静态分析)。
-
兼容性测试自动化
- 自动在不同浏览器、设备、操作系统上运行测试(常结合云测试平台如 BrowserStack、Sauce Labs)。
-
数据驱动测试 / 关键字驱动测试
- 这是自动化测试的设计模式,也可视为一种分类维度。
那么众多方向中 ,哪种方式较好,哪种方式收益较佳
这就不得不提到测试中,经典的金字塔模型

理想的金字塔情况表明,需要利用较少的时间和精力在单元测试中就能发现更多有效的问题
所以它的核心思想是:
用最快、最便宜的方式尽早发现问题
因为越早、越底层发现问题、修复成本越低
然后实际情况是,是反过来的

而这个图则说明了,企业有时候为了产出,所以不得不和其原有的核心思想相违背。
那么接下来,小编将会以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,那么对于自动化一些概念,小编分享到这里