测试开发:聊一聊自动化测试框架,值得收藏!
01、什么是自动化测试
自动化测试是指在没有任何人干扰的情况下,可以自动执行测试用例并获得测试结果的软件程序。
自动化测试在很大程度上节省了人力和时间,也没有或很少出现测试误差。一旦自动化测试用例编写好,也不会出现漏测的情况,而且可以无限次运行测试。自动化测试最大限度地减少了多余的手动测试工作。
2、什么是框架
框架被认为是一套协议、规则、标准、和指南的组合,这些协议、规则、标准、指南可以作为一个整体纳入或遵循,以便利用框架提供的脚手架的好处。说白了它的作用就是可以帮我们更快更好的完成一件事。
3、自动化测试框架
自动化测试框架是为自动化测试脚本提供执行环境的脚手架。它可以帮助用户高效的开发测试脚本、执行测试脚本和展示测试结果。它是专门为自动化我们的测试工作而创建的系统。
框架应该独立于应用程序,也就是说它可以和任何应用程序一起使用,而不考虑应用程序载测试中的复杂性。它应该是可扩展和可维护的。
自动化测试框架的优势:
1、代码的可复用性
2、覆盖范围大
3、低成本维护
4、极少的人工干预
5、方便、可观的报告
自动化测试框架的组成部分:
4、自动化测试框架的类型
基于模块的测试框架
库架构测试框架
数据驱动测试框架
关键字驱动测试框架
混合测试框架
行为驱动测试框架
01、基于模块的测试框架
这种框架将整个“测试中的应用程序”分为许多逻辑和独立的模块。对每个模块,创建一个独立的测试脚本,这些脚本结合在一起时,会构建成更大的测试脚本,代表多个模块,这些模块被抽象层隔开,这样在应用程序的各个部分所做的更改不会对该模块产生影响。
优点:
框架引入模块化,更容易、高效的维护
模块化使得框架的可扩展性强
修改模块后,只需要修改相应部分的脚本即可
缺点:
- 在为每个模块实现测试脚本的同时,测试数据已经嵌入到测试脚本中,这导致使用不同的测试数据进行测试时需要在测试脚本中进行操作
02、库架构测试框架
库体系结构测试框架是建立在基于模块的测试框架之上,但比后者有一些额外的优势。它没有将测试的应用程序划分为测试脚本,而是划分为函数。因此,为测试中的应用程序创建一个由公共函数组成的公共库,当需要时,可以从测试脚本中调用这些库。
它的基本原理就是确定通用的步骤,并将这些步骤分组到公共库下的函数中,在需要的时候在测试脚本中调用这些函数。
比如,一个登录的步骤,可以把它组合成一个函数,并保存到一个库中,登录时可以直接从库中调用这个函数,而不需要重新再编写代码。
优点:
跟基于模块的框架一样,也具有易于维护和可扩展性
测试脚本中可以使用通用的函数,使得它具有很高的复用性
缺点:
像基于模块的框架一样,测试数据嵌入测试脚本中,改变数据需要修改脚本
随着越来越多的库的引入,可能会使框架越来越复杂
03、数据驱动测试框架
数据驱动测试框架将测试脚本逻辑和测试数据彼此分离。可以把测试数据单独存储起来,存储数据的可以是 xml文件、excel文件、文本文件、csv文件、ODBC数据库等。一般都是以 key-value 格式存储,方便获取使用。
优点:
大大减少了覆盖所有测试场景组合所需的脚本总数
测试数据的修改不会影响测试脚本
增加了灵活性和可维护性
通过更改测试数据,可以实现单个测试流程测试多个场景
缺点:
过程比较复杂,可能需要定制测试数据源格式和读取机制
需要熟练掌握开发测试脚本的编程语言
只有具有相同执行步骤集的相似测试用例才能组合成多组数据。不同的执行步骤集需要不同的测试用例。
04、关键字驱动框架
关键字驱动测试框架是对数据驱动测试框架的扩展,从某种意义上说,它不仅将测试数据从脚本中分离出来,它还将数据测试脚本的特定代码集保存到外部数据文件中。这些代码集被称为关键字,每个关键字都一种操作。关键字和测试数据都是独立于该框架。
优点:
除了具有数据驱动测试框架的优点以外,与数据驱动测试框架不同的是,它不要求用户具有脚本知识。
单个关键字可用于多个测试脚本
缺点:
需要懂得关键字的创建机制,从而可以自己开发关键字
随着越来越多的关键字引入,可能会使框架逐渐变得复杂
测试用例变得更长且复杂,从而影响测试用例的可维护性
05、混合测试框架
混合测试框架就是上述(模块化,数据驱动和关键字驱动)多中类型框架的组合。就是利用各种类型框架的优点,组合起来的混合型测试框架。
在这种框架中,通过将测试用例结合到模块化测试框架中,从模块化脚本中开发测试用例。每个测试用例都使用一个驱动程序脚本,该脚本使用数据驱动框架中的数据文件和关键字驱动框架中的操作文件。
优点:
可以集各种类型测试框架的优点于一身
模块化且易于维护
更少的代码可以处理更多的测试用例
一个测试用例可以用多组数据执行
缺点:
- 会比其他类型的测试框架更为复杂一些,例如阅读、维护等
06、行为驱动测试框架
行为驱动测试框架可以让开发人员、测试人员等以易于阅读和理解的格式实现功能验证的自动化。可通过自然语言来描述测试功能,测试场景,测试步骤,测试结果等
优点:
- 对开发人员和测试人员友好,非常易懂
- 不一定要求用户熟悉编程语言
最后: 可以关注公众号:伤心的辣条 ! 进去有许多资料共享!资料都是面试时面试官必问的知识点,也包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!
好文推荐
转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
面试经:一线城市搬砖!又面软件测试岗,5000就知足了…
面试官:工作三年,还来面初级测试?恐怕你的软件测试工程师的头衔要加双引号…
什么样的人适合从事软件测试工作?
那个准点下班的人,比我先升职了…
测试岗反复跳槽,跳着跳着就跳没了…
测试开发:聊一聊自动化测试框架,值得收藏!相关推荐
- 自动测试如何选择自动化测试框架_机器擅长回归测试,人类善于寻找Bug _Pekka Klärck
Robot Framework作者建议自动测试如何选择自动化测试框架.软件自动化测试,作为手工测试的替代,越来越受到关注.Pekka Klrck,作为Robot Framework的创建者和核心开发者 ...
- 【测试开发】自动化测试selenium篇(一)
[测试开发]自动化测试selenium篇(一) 什么是自动化测试 如何实施自动化 发展方向 什么是selenium 什么是自动化测试 自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预 ...
- 4年手工测试,下一步转测试开发还是自动化测试?
最近后台有个粉丝留言说:静姐我做了4年功能测试,下一步是转测试开发还是自动化测试呢,首先我们讲讲测开的概念 测试开发工程师的概念怎么来的? 这个名词一开始并不叫测试开发,只是说懂技术,懂研发的测试工程 ...
- 2019 Selenium3与Python3实战开发Web自动化测试框架(三)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 接着上一篇博客继续往下写 :2019 Selenium3与Python3实战开发Web自动化测试框架(二)_cdtaogang's ...
- 【测试开发】自动化测试在美团外卖的实践与落地
文章目录 自动化测试在美团外卖的实践与落地 1.项目背景 2.项目目标 3.方案选型 4.实践和探索 4.1 问题和挑战 4.2 前置条件准备 4.3 用例录制与回放的数据一致性 4.4 用例录制与回 ...
- python自动化测试框架开发_webUI自动化测试框架(Python+selenium)
[实例简介] github地址: https://github.com/wuranxu/webTest 基于Python的webUI自动化测试框架,支持多平台~带有自动下载chrome驱动功能 [实例 ...
- acer clear 工具_50个能帮你节省时间的开发工具!(值得收藏)-头条
本文列举出 50 个能够帮你提高开发效率,节省开发时间的 Chrome 扩展和 Web 应用,它们很有可能会在什么时候派上用场.老规矩,先转发.点赞.点再看三连,最后再慢慢阅读,千万别让它在收藏夹里吃 ...
- 2019 Selenium3与Python3实战开发Web自动化测试框架(一)
说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家! 项目源码下载 目录 一丶叙述 二丶环境搭建 三丶项目实战中PO模型的设计与封装 一丶叙述 1.项目介绍 项目分为九部分:基础项目实 ...
- selenium自动化测试框架——建议收藏
前言: 旨在学习使用Python语言调用Selenium WebDriver接口进行自动化测试: 作为一名小白,我们先来看看所需的入门知识和信息: 1.Selenium WebDriver:业界通用的 ...
最新文章
- linux安装中文环境,[Linux]Ubuntu 7.04 中文环境的安装
- Linux下备份系统
- C++ classics
- 批处理命令 / rd 和 del
- Vue.js-Day02-PM【组件化开发(全局注册组件、局部注册组件、案例)、组件的配置选项、轮播图实例(左右切换按钮、底部导航栏、定时器、鼠标移入-图片静止)】
- VMware为全球数字化基础架构提供原生安全
- 例子---PHP实现网页计数器
- [转]Hexo博客添加自定义HTML页面
- celery+rabbitmq+redis 分布任务队列探索(一)
- 【路径规划】基于matlab模拟退火优化遗传算法求解避障路径规划问题【含Matlab源码 889期】
- 容器技术Docker K8s 25 容器服务ACK基础与进阶-监控管理
- Java实战项目,附带源码+视频教程。
- java查询时加上进度条插件,简单的jquery进度条插件LineProgressbar.js
- 仿城通网盘下载页面源码
- 树莓派运行yolo fastest启用bf16加速
- 解决Mac电脑连不上wifi的问题
- 父向子通信(propos基本用法/驼峰命名问题)
- LayoutInflate: Avoid passing null as the view root
- 推荐一个开源U盘启动工具——Ventoy
- 快手Y-tech:GAN在短视频中的AI特效实践
热门文章
- mysql主主同步稳定吗_MySQL主主同步
- linux jar运行监控 mo,linux系统监控利器--monit
- 默认是字典排序法_每日一课 | Python 进阶编程之字典的高级用法
- 【肥朝】从一次问题讨论聊聊我对阅读源码的思考
- word2vec -- 负采样 -- skip-gram
- Centos7 linux 卸载自带安装的jdk 并yum自动安装jdk1.8
- IOS自己主动布局中的浮动布局(6)----MyFloatLayout横空出世
- lynis check log
- JAVA SAX解析XML文件
- 第一步:Spring访问数据库(jdbcTemplate)