热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我都把“自动化测试框架”解释成这样了,还不懂就别学了....

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。之前学习自动化测试的过程中,一直对“框架”这个词知其然不知其所以然。最近看了很多自动化相关的资料,加上自己的一些实践,



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

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


1、什么是框架

—— 百度百科

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

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

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

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


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

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

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

—— 知乎

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

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

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


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


  • 特定问题:什么问题?——自动化测试
  • 约束边界:为什么约束?——明确测试范围和目的
  • 解决方案:用什么方案解决问题?——编程语言+工具+其他
  • 构成工具的组件:哪些组件?——用例、脚本、数据、日志、报告、通知
  • 工具:特点是什么?—— 灵活性、可扩展性、高内聚低耦合


2、自动化测试

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

黑盒测试回归效率低

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

回归的覆盖率不足

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

系统越复杂,问题越多

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

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

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

降低回归成本

提高回归覆盖率

提高回归效率

提高回归的稳定性

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

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

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

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

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


3、自动化测试框架

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


  • Log:日志记录和管理功能,针对不同的情况,设置不同的日志级别,方便定位问题;

  • Report:测试报告生成和管理以及即时通知,测试结果快速响应;

  • Source:配置文件、静态资源的管理,遵循高内聚低耦合原则;

  • Common:公共函数、方法以及通用操作的管理,遵循高内聚低耦合原则;

  • TestCase:测试用例管理功能,一个功能点对应一个或者多个case,尽可能的提高覆盖率;

  • TestData:测试数据管理功能,数据与脚本分离,降低维护成本,提高可移植性;

  • TestSuite:测试组件管理功能,针对不同场景不同需求,组装构建不同的测试框架,遵循框架的灵活性和扩展性;

  • Statistics:测试结果统计管理功能,每次执行测试的结果统计、分析、对比以及反馈,数据驱动,为软件优化和流程改进,提供参考;

  • Continuous:持续集成环境,即CI环境,包括测试文件提交、扫描编译、执行测试、生成报告及时通知等功能,持续集成是自动化测试的核心!


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

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


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

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


  • 编程语言:编写测试脚本、日志记录和输出;

  • 单元测试框架:提供测试脚本运行、异常校验等一些列的配置;

-扫描编译工具:测试文件扫描编译,一般配合持续集成工具使用效果更佳;

-持续集成工具:Jenkins,经典的持续集成工具;


  • 数据库:测试数据管理;

  • 项目管理工具:测试结果统计管理;

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


软件测试资源分享:



  • 软件测试零基础必学

  • 功能测试+接口测试

  • 自动化测试+性能专项链接

  • 安全测试+测试开发平台


有需要的小伙伴可以加群:642830685,获取资料验证码!


精彩推荐:

在职阿里6年,一个29岁女软件测试工程师的心声

公司新来的阿里p8,看了我做的APP和接口测试,甩给了我这份文档…

腾讯二面:web测试问题被虐哭了,直到学长给了我这些知识点…



推荐阅读
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • 应用链时代,详解 Avalanche 与 Cosmos 的差异 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • 本文介绍了如何使用Flume从Linux文件系统收集日志并存储到HDFS,然后通过MapReduce清洗数据,使用Hive进行数据分析,并最终通过Sqoop将结果导出到MySQL数据库。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • 用阿里云的免费 SSL 证书让网站从 HTTP 换成 HTTPS
    HTTP协议是不加密传输数据的,也就是用户跟你的网站之间传递数据有可能在途中被截获,破解传递的真实内容,所以使用不加密的HTTP的网站是不 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 本文通过思维导图的形式,深入解析了大型网站技术架构的核心原理与实际案例。首先,探讨了大型网站架构的演化过程,从单体应用到分布式系统的转变,以及各阶段的关键技术和挑战。接着,详细分析了常见的大型网站架构模式,包括负载均衡、缓存机制、数据库设计等,并结合具体案例进行说明。这些内容不仅有助于理解大型网站的技术实现,还能为实际项目提供宝贵的参考。 ... [详细]
  • Juval Löwy主张,每个类都应被视为服务,这并非是为了让服务无处不在,而是因为微服务是经过深思熟虑后系统分解的自然结果。在他的设计和构建的系统中,这种理念有助于提高模块化、可维护性和扩展性。通过将每个类视为独立的服务,系统能够更好地应对复杂性,实现更灵活的部署和更高的性能。 ... [详细]
  • PHP 各版本对比:标准版与最新顶级版的详细分析 ... [详细]
  • 在使用 Cacti 进行监控时,发现已运行的转码机未产生流量,导致 Cacti 监控界面显示该转码机处于宕机状态。进一步检查 Cacti 日志,发现数据库中存在 SQL 查询失败的问题,错误代码为 145。此问题可能是由于数据库表损坏或索引失效所致,建议对相关表进行修复操作以恢复监控功能。 ... [详细]
author-avatar
我的爱来了2012_800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有