自动化测试框架
在学习自动化测试或者实践自动化测试时,我们一定会对一个名词不陌生,那就是自动化测试框架。
框架特指为解决一个开放性问题而设计的具有一定约束性的支撑结构。在此结构上可以根据具体问题扩展、安插更多的组成部分(升级),从而更迅速和方便地构建完整的解决问题的方案。
python自动化测试:https://www.bilibili.com/video/BV16G411x76E/
根据以上框架的定义引申到自动化测试领域,我们可以定义自动化测试框架包括如下功能:
1、日志组件
记录和管理日志,方便定位问题,如Log4j、logging模块等;
2、测试报告
管理与生成测试报告,快速得到测试结果,如Allure、HtmlReport等;
3、测试静态资源
如配置文件、引用的其他静态资源管理,实现配置与测试脚本分离;
4、测试用例管理与执行
如 Java 语言体系 TestNG、Junit,Python 语言体系 UnitTest、Pytest 等;
5、测试数据管理
保存用例参数化数据,如可采用Excel、yaml、csv格式文件,实现测试脚本与测 试数据分离;
6、公共模块(Common)
保存用例公共方法、通用操作;
7、驱动模块(Driver)
底层执行自动化测试引擎,如Selenium Webdriver网页端测试库、Appium client 移动端测试库、Requests/REST-assured接口测试库。
其他辅助功能:
除了上述自动化测试框架基本组成成分之外,自动化测试框架还可以有更多其他的辅助功能,比如并行执行、失败重试、异常处理以及通过持续集成平台构建(如Jenkins)。
总的来说,一个完善的自动化测试框架应该是具备高扩展性、可维护性、稳定性。如Selenium、Appium只是具备上述框架的部分功能而已,所以我们在选择自动化测试框架时更多的是多个工具/库的组合,比如:Selenium+Pytest+Allure+Jenkins,Appium+Pytest+Allure+Jenkins等等。
自动化测试框架选型
目前常见的自动化测试类型包括接口自动化和UI自动化,目前市面上针对接口、UI层面的自动化测试工具/框架有很多选择。在进行技术选型之前首先要分析项目的架构和类型。
如果项目主要通过接口的形式提供给其他服务使用,我们可以使用接口自动化。对于项目既有后端也有前端,在接口自动化层面的质量保证基础上再采用UI自动化。
接口自动化
目前市面上接口自动化测试技术都已经非常成熟,以下介绍几款比较主流的技术:
(1) Jmeter+Ant/Maven+Jenkins
Jmeter由Java开发并开源,并且提供了可视化界面。通过Jenkins持续集成平台集成Maven或Ant插件,再通过Maven或Ant构建Jmeter脚本可以满足自动化测试持续集成。熟悉Java语言的情况下还可以对Jmeter做二次开发。
(2) Postman+Newman+Jenkins
Postman是非常多测试人员会选择使用的一款接口测试工具,并且很多开发人员也会使用它对接口进行调试,上手简单并且功能强大。通过newman可以支持命令行方式调用Postman测试用例执行,并且还可以通过Jenkins平台结合newman进行持续集成。
(3) Robotframework+RequestsLibrary+Jenkins
Robotframework(简称RF),是一款基于关键字驱动的测试框架,主要通过封装关键字进行调用,使用RequestsLibrary测试库可以进行接口测试,RF不需要懂编程语言也可以编写自动化测试用例。
(4) Java+REST-assured+TestNG+Jenkins
Java语言体系中的REST-assured作为目前最流行的接口测试框架,基于BDD语法风格让编写接口测试用例变得非常简单,内置非常强大的功能如hamcrest断言及Gpath响应解析等,使用TestNG测试框架我们可以管理及执行测试用例。
(5) Python+Requests+Pytest+Jenkins
在Python语言体系中requests模块基于标准库urllib进行封装,支持其几乎所有特性,是目前最火的python语言接口测试库。Pytest同样属于python中的第三方单元测试库,相比标准库Unittest更加强大。
Web自动化
目前应用最主流的的web自动化框架还是Selenium,其内置的Selenium Webdriver组件通过JSON wire protocol协议能够支持多款浏览器的自动化测试,包括Chrome、Firefox、IE、Safari等等。Selenide及Katalon这些自动化测试工具基于Selenium构建封装,其内部核心还是Selenium Webdriver。
Java语言技术栈:
Java+Selenium+TestNG+Jenkins
Python语言技术栈:
Python+Selenium+Pytest+Jenkins
移动端自动化
移动端使用最为广泛的应该就是Appium了,Appium是一个开源的自动化测试框架,支持Android和IOS上的Web App、Native App和Hybrid App的自动化测试。Appium基于Selenium Webdriver并添加了移动端相关的API。
Java语言技术栈:
Java+Appium+TestNG+Jenkins
Python语言技术栈:
Python+Selenium+Pytest+Jenkins
持续集成
自动化测试作为持续集成的重要一环,当开发部署新功能或更新功能时,持续集成平台运行自动化测试能够快速提供质量和定期反馈,目前成熟的持续集成平台非Jenkins莫属。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
失败是什么?没有什么,只是更走近成功一步;成功是什么?就是走过了所有通向失败的路,只剩下一条路,那就是成功的路。
伟人所达到并保持着的高处,并不是一飞就到的,而是他们在同伴们都睡着的时候,一步步艰辛地向上攀爬的。
人生不是游戏,我们没有多少可供选择的机会。选择了就尽量咬牙坚持走下去。人生像一段旅程,一路走来,我们无法预知遇见的风景,只要真心去欣赏,一切都是美不可言。