这些自动化测试框架知识你还不知道?

这些自动化测试框架知识你还不知道?!

  无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。

  最近看了很多自动化相关的资料,加上自己的一些实践,算是对“框架”有了一些理解,这篇博客,就聊聊自动化框架的一些事吧。

一、什么是框架

框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。

在软件工程中,框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;

另一种定义认为,框架是可被应用开发者定制的应用骨架,前者是从应用方面而后者是从目的方面给出的定义。

—— 百度百科

  上面的概念比较抽象,换另一个角度解释:

1、框架本身一般不完整到可以解决特定问题;

2、框架天生就是为扩展而设计的;

3、框架里面可以为后续扩展的组件提供很多辅助性、支撑性的方便易用的工具,也就是说框架是配套了一些帮助解决某类问题的库(libraries)或工具(tools)。

约束性:针对解决特定问题的软件框架会首先定义问题的边界,进而将相关的软件组件约束在这个边界内,保持框架在解决问题方面上的内聚性。

支撑性:框架本身不解决什么问题,但给了解决问题的相关组件一个组合底子,这个底子的科学性和易用性直接影响在此之上进一步开发的科学性和方便性。

—— 知乎

  上面的2个对框架的解释和定义,看起来也并没有很简单直白的说清楚什么是框架,下面是我的一些理解:

定义:为解决某些特定问题而约束边界,支撑整个问题解决方案,配套了一些解决问题的组件而构成的工具。

特定问题:什么问题?——自动化测试

约束边界:为什么约束?——明确测试范围和目的

 解决方案:用什么方案解决问题?——编程语言+工具+其他

 构成工具的组件:哪些组件?——用例、脚本、数据、日志、报告、通知

  工具:特点是什么?——灵活性、可扩展性、高内聚低耦合

二、自动化测试

  1、为什么要进行自动化测试?

  ①、黑盒测试回归效率低

  ②、手动测试的偶然性和不确定性

  ③、回归的覆盖率不足

  ④、交付的产品质量无法保证,全靠评估

  ⑤、系统越复杂,问题越多

  ⑥、上线时间长、构件失败率高导致的蝴蝶效应(迭代快,加班多)

  2、自动化测试能解决什么问题?

  ①、提高出现问题后的响应速率

  ②、降低回归成本

  ③、提高回归覆盖率

  ④、提高回归效率

  ⑤、提高回归的稳定性

  3、自动化测试的不足有哪些?

  ①、无法减少成本投入,而是为了加快测试结果反馈,提升测试质量

  ②、自动化适用于回归和冒烟,而不是发现BUG

  ③、录制回放功能是鸡肋,可视化并不是一个很好的做法

  ④、不是所有所有系统所有功能都适合做自动化测试

三、自动化测试框架

构成框架的组件,最起码应该具备以下的功能:

  • Log:日志记录和管理功能,针对不同的情况,设置不同的日志级别,方便定位问题;
  • Report:测试报告生成和管理以及即时通知,测试结果快速响应;
  • Source:配置文件、静态资源的管理,遵循高内聚低耦合原则;
  • Common:公共函数、方法以及通用操作的管理,遵循高内聚低耦合原则;
  • TestCase:测试用例管理功能,一个功能点对应一个或者多个case,尽可能的提高覆盖率;
  • TestData:测试数据管理功能,数据与脚本分离,降低维护成本,提高可移植性;
  • TestSuite:测试组件管理功能,针对不同场景不同需求,组装构建不同的测试框架,遵循框架的灵活性和扩展性;
  • Statistics:测试结果统计管理功能,每次执行测试的结果统计、分析、对比以及反馈,数据驱动,为软件优化和流程改进,提供参考;
  • Continuous:持续集成环境,即CI环境,包括测试文件提交、扫描编译、执行测试、生成报告及时通知等功能,持续集成是自动化测试的核心!

四、常见的自动化测试框架

1、接口自动化框架:

①java+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine

②python+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine 

③python+rebotframework+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+rebotframework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine

  通过上面的一些常见框架,你发现了什么?

  它们都拥有共同特性:编程语言+单元测试框架+扫描编译工具+持续集成工具+数据库+项目管理工具。

  • 编程语言:编写测试脚本、日志记录和输出;
  • 单元测试框架:提供测试脚本运行、异常校验等一些列的配置;
  • 扫描编译工具:测试文件扫描编译,一般配合持续集成工具使用效果更佳;
  • 持续集成工具:Jenkins,经典的持续集成工具;
  • 数据库:测试数据管理;
  • 项目管理工具:测试结果统计管理;

PS:自动化测试工具太多,上面只是列举了使用率较高以及我个人还算了解的一些开源工具,具体的框架选型,需要根据具体项目特点和团队、个人技术特点来决定!

  关于自动化测试框架的一些理解和思考总结,就是上面这些内容,提到的一些框架组件可能存在不合理的地方,仅供参考,如有更好的建议,请指出,不胜感激。

原文地址:https://www.cnblogs.com/xqh1215/p/10005938.html

时间: 2024-10-11 21:00:03

这些自动化测试框架知识你还不知道?的相关文章

都2017年了,H5这些知识你还不知道?

一. 交互上,慎用横屏展示效果.但是在今年的微信传播中,好的创意也可以尝试使用. 原因:体验上,需要用户设备开启屏幕旋转功能,才能正常观看,用户操作成本高.对不同屏幕的手机,长宽比例不一,难以展示最佳的视觉效果. 例外:一些好的创意也可以使用横屏,不过要从创意到设计就要严格把握,需要有准备牺牲部分Android的用户. 后面附上两个案例: 品客-放开那个姑娘 只要功夫深撩妹100分 二.在H5的设计是必须要考虑的,功能按钮等,远离页面底部(大概128px,这个尺寸不是固定值). H5上线需要适配

Android 自动化测试框架

Android常用的自动化测试工具框架: Monkey,MonkeyRunner,UIAutomator,Robotium,Appium,Monkey Talk 但是这些工具框架都有什么关系呢,先通过一张图来了解一下吧.(图是某博客上借过来的) 是不是一脸懵逼,不知道这是什么鬼.下面详细了解一下. 一.Monkey 是Android SDK自带的测试工具,是一个命令行工具,可以运行在模拟器中或者实际设备中,它向系统发送伪随机的用户事件流(如按键输入,触摸屏输入,手势输入等),实现对正在开发的应用

android常用自动化测试框架

目录: Monkey MonkeyRunner Instrumentation UiAutomator Espresso Selendroid Robotium Athrun Appium Monkey Android SDK自带的测试工具,在测试过程中会向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行压力测试,也有日志输出.实际上该工具只能为程序做一些压力测试,由于测试事件和数据都是随机的,不能自定义,所以有很大的局限性. $~: android

打造轻量级自动化测试框架WebZ

一.什么是WebZ WebZ是我用Python写的“关键字驱动”的自动化测试框架,基于WebDriver. 设计该框架的初衷是:用自动化测试让测试人员从一些简单却重复的测试中解放出来.之所以用“关键字驱动”模式是因为我觉得这样能让测试人员(测试执行人员)快速上手,无需编写代码也能执行自动化测试. 二.为啥开源 WebZ的开发用到了一些现有的开源项目,我很感谢这些开源项目的作者,希望自己也能成为一名开源者,和大家分享自己的成果,一起交流技术.一起成长. 该项目的GitHub地址:https://g

自动化测试框架比较

3.Ant+Selenium+Testng+Jenkins 这是我现在正在研究并使用的框架.(ps:jenkins这...还没用到.原来听说了hudson的强大,这个升级版估计会更有使用价值,未来研究)我这里说的selenium没有区分RC还是webdriver,两者各有千秋又互相补充,兼而用之即可.还是先说优点:第一:它开源不要钱!很多时候这是最关键的一点..当你在研究或推行一套框架的时候,价格是不得不考虑的因素.第二:灵活性,比RFT更加灵活,因为更加入了xpath(当然大型项目的脚本里xp

【python3+request】python3+requests接口自动化测试框架实例详解教程

转自:https://my.oschina.net/u/3041656/blog/820023 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自己写python的接口自动化测试框架,由于本人也是刚学习python,

Web自动化测试理论知识

Web 自动化理论知识 1.自动化测试概述概念:用工具代替/辅助人工完成完成软件测试活动的过程特点:    可以对程序的新版本自动执行回归测试    可以执行一些手工测试困难或不可能进行的测试    可以更好地利用资源    测试具有一致性和可重复性误区:    期望自动化测试发现大量新故障    安全性错觉    自动化测试的维护开销 2.自动化测试的优势重复多次执行测试时节省很多时间提高测试覆盖率和测试精度实现自动化回归测试减少工作量减少手工测试人为产生的错误 提供规范化的过程和一致性更好的

python+requests接口自动化测试框架实例详解教程

转自https://my.oschina.net/u/3041656/blog/820023 摘要: python + requests实现的接口自动化框架详细教程 前段时间由于公司测试方向的转型,由原来的web页面功能测试转变成接口测试,之前大多都是手工进行,利用postman和jmeter进行的接口测试,后来,组内有人讲原先web自动化的测试框架移驾成接口的自动化框架,使用的是java语言,但对于一个学java,却在学python的我来说,觉得python比起java更简单些,所以,我决定自

数据驱动 vs 关键字驱动:对搭建UI自动化测试框架的探索

UI自动化测试用例剖析 让我们先从分析一端自动化测试案例的代码开始我们的旅程.以下是我之前写的一个自动化测试的小Demo.这个Demo基于Selenium与Java.由于现在Selenium在自动化测试的统治地位,并且随着Selenium 4的即将发布,在未来很长的一段时间里这种统治地位应该还会持续,所以我的这篇文章还都是基于Selenium与Java的. 自动化测试小Demo 它要测试的东西其实是要看一下百度搜索能不能返回兴业银行的官网.我们分析一下这段代码都包含些什么东西. 第一,这段代码包