无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。
最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”有了一些理解,这篇文就聊聊自动化框架的一些事吧。
01
什么是框架
框架(framework)是一个框子—指其约束性,也是一个架子—指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。
在软件工程中,框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;
另一种定义认为,框架是可被应用开发者定制的应用骨架,前者是从应用方面而后者是从目的方面给出的定义。
—— 百度百科
上面的概念比较抽象,换另一个角度解释:
约束性:针对解决特定问题的软件框架会首先定义问题的边界,进而将相关的软件组件约束在这个边界内,保持框架在解决问题方面上的内聚性。
支撑性:框架本身不解决什么问题,但给了解决问题的相关组件一个组合底子,这个底子的科学性和易用性直接影响在此之上进一步开发的科学性和方便性。
—— 知乎
上面的2个对框架的解释和定义,看起来也并没有很简单直白的说清楚什么是框架,下面是我的一些理解:
定义:为解决某些特定问题而约束边界,支撑整个问题解决方案,配套了一些解决问题的组件而构成的工具。特定问题:什么问题?——自动化测试约束边界:为什么约束?——明确测试范围和目的解决方案:用什么方案解决问题?——编程语言+工具+其他构成工具的组件:哪些组件?—— 用例、脚本、数据、日志、报告、通知工具:特点是什么?—— 灵活性、可扩展性、高内聚低耦合 |
---|
02
自动化测试
1、为什么要进行自动化测试?
2、自动化测试能解决什么问题?
3、自动化测试的不足有哪些?
03
自动化测试框架
构成框架的组件,最起码应该具备以下的功能:
04
常见的自动化测试框架
1、接口自动化框架:
① java+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine② python+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine③ python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine④ jmeter+Maven/Ant+Jenkins+MySQL+testlink/redmine |
---|
2、UI自动化测试框架
① java+selenium/appium+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine② python+selenium/appium+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine③ python+rebot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine |
---|
通过上面的一些常见框架,你发现了什么?
它们都拥有共同特性:编程语言+单元测试框架+扫描编译工具+持续集成工具+数据库+项目管理工具。
PS:自动化测试工具太多,上面只是列举了使用率较高以及我个人还算了解的一些开源工具,具体的框架选型,需要根据具体项目特点和团队、个人技术特点来决定!