软件测试常用设计模式

设计模式的重要原则就是:高内聚、低耦合;通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。

数据驱动测试:Data Driven Testing,简称DDT;

数据驱动指的是从数据文件(如数据库、Excel文件、Csv文件等)中读取输入数据并将数据以参数的形式输入脚本测试,这些变量被用作传递(输入/输出)用来验证应用程序的测试数据。不同的测试用例使用不同类型的数据文件。数据驱动模式实现了数据和脚本分离,相对于录制与回放测试技术,数据驱动测试极大地提高了脚本利用率和可维护性,但是对于界面变化较大的情景不适合数据驱动测试。

数据驱动的设计步骤:

编写测试脚本,脚本需要支持程序对象、文件或数据库读入测试数据

将测试脚本使用的测试数据存入程序对象、文件或者数据库等外部介质中

运行脚本,循环调用存储在外部介质的测试数据。

验证所有的测试结果是否符合期望结果

 如:pytest 测试框架快速搭建 的 搜索接口测试实例,就是数据驱动设计模式。

数据驱动测试的多行测试数据对应一个测试脚本(或者说对应于一个关键字的实现,例如登录功能的测试,可以有用户名长度、密码长度、密码字符类型、大小写等多条测试用例,但是都是对应登录一个关键字),然后用不同的测试数据反复运行脚本(即每一行数据的处理逻辑是一样的)。如果需要做不同类型的测试,需要新增测试脚本(往往意味着新的测试数据格式)或者沿用同一个测试脚本,但是要做逻辑判断来确定执行哪一种测试。

核心:就是让测试与数据分离。

关键字驱动测试:Keyword Driven Testing,简称KDT;

关键字驱动的自动化测试(也被称为表驱动测试或基于动作词的测试),是数据驱动自动化测试的变种,关键字驱动的自动化测试框架建立在数据驱动手段之上,表中包含指令(关键词),而不只是数据。这些测试被开发成使用关键字的数据表,它们独立于执行测试的自动化工具。关键字驱动的自动化测试是对数据驱动的自动化测试的有效改进和补充;关键字驱动将数据域与脚本分离、界面元素与内部对象分离测试过程与实现细节分离。关键字驱动的测试逻辑为按照关键字进行分解得到数据文件,常用的关键字主要包括三类:被操作对象(Item)、操作(Operation)和值(value),用面向对象形式可将其表现为Item.Operation(Value);将测试逻辑按照这些关键字进行分解,形成数据文件。测试框架低层负责解释这些关键字,并完成相应的指令操作。  

将测试用例的步骤(元素)和用例分离。关键字驱动表示把项目中的一些逻辑封装成关键字(一个函数名)。例如login、 register、点击、打开浏览器、等待、输入,进行设置变量, 调用不同的关键字组合实现不同的业务逻辑,从而驱动测试用例的执行。

关键字驱动的框架基本工作是将测试用例分成4个不同的部分,测试步骤、测试对象、测试对象执行的动作、测试数据。

示例:

testCase:
    testName:#正确地注册用户
    pretc:
    step:
        open    'http://localhost:8080/register'
        click   id=reg
        input   id=username    value='zhangsan'
        input   id=password    value='abcdefg'
        input   id=checkpass   value='abcdefg'
        click   class=regbutton
    expected: #预期结果
        code 200
        message 注册成功

KDT:

关键字:Item.Operation(Value)

Operation:input、click、drag、move等

Item:元素的标签、元素的定位方式;

value:数据

本质是面向对象编程思维的一种体现,其实就是将代码,基于业务的实际使用场景,通过合理的封装,然后基于封装好的函数,通过调用这些函数驱动业务的执行。没有固定形式,

页面对象模式:Page Object Model,简称POM;

selenium在测试一个web页面时,通常是针对一个个页面进行测试的,基于此前提,我们可以把一个页面中的对象和操作进行封装,这就是POM;不难理解,POM本质就是将页面对象和操作进行封装,作为一个对象库而存在,这样在测试脚本中直接调用方法来进行相关操作并传递相应的参数即可。

核心:就是让操作与元素分离。

单例模式:大力魔兽指在程序的生命周期中,只做一次实例化,只分配一块内存空间,以确保所有操作和调用在同一块内存空间发生。例如:selenium的webdriver每实例化一次,都会打开一个新的浏览器,如果要对多个模块进行测试,不可能把所有的测试脚本放到同一个类中,因此需要使用单例模式。

单例模式代码示例:

from selenium import webdriver
 
class utility:
    
    driver = None #定义类级变量,
 
    #单例模式,确保只有一个实例在运行
    #classmethod
    def get_webdriver(cls,borwser='chrome'):
        #如果没有被实例化,则实例化,否则直接返回;传参数做浏览器兼容
        if cls.driver is None:
            if browser=='chrome'
                cls.driver = webdriver.chrome()
        
        return  cls.driver

基于组件的测试:Component Based Testing,简称CBT;

业务流程测试:Business Process Testing,简称BPT;

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/35012.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch学习02——Kibana安装

ElasticSearch学习02——Windows下Kibana安装 Kibana是界面化的查询数据的工具,下载时尽量下载与ElasicSearch一致的版本。 1、下载对应版本的Kibana ​ 有了ElasticSearch安装的经验,我们发现了ES和JDK有着版本对应的关系,Kibana和ES共同为…

一文了解PoseiSwap的质押系统

PoseiSwap 正在向订单簿 DEX 领域深度的布局,并有望成为订单簿 DEX 领域的早期开创者。PoseiSwap 是行业内首个模块化 Layer3 架构链 Nautilus Chain 上的首个 DEX ,Nautilus Chain 具备行业内最快的 EVM,支持以模块化的形式构建定制化开发&a…

【macOS 系列】如何调整启动台图标大小和行数

1、使用指令,这是隐藏的技巧,在控制台输入如下指令 defaults write com.apple.dock springboard-rows -int 6 defaults write com.apple.dock springboard-columns -int 8 defaults write com.apple.dock ResetLaunchPad -bool TRUE killall Dock以上表…

初始Liunx线程

文章目录 前言1.初始Liunx下线程2.关于虚拟地址的补充知识3.线程的相关特点1.线程的优点2.线程的缺点3.线程异常4.线程和进程的比较 4.线程相关操作接口线程控制相关接口 5.关于线程id的理解 前言 本文主要是对Liunx之下线程的前置知识铺垫,同时也是对之前进程的相…

EasyCVR如何实现国标级联无人机推送的RTMP推流通道?

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,包括:NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力,可在复杂的网络环境中&#xff0c…

ZYNQ——脉宽调制之呼吸灯实现

文章目录 原理简介实验代码软件仿真板上验证 原理简介 呼吸灯的实现过程就是把不同占空比的脉冲输出后加在LED上,LED灯就会显示不同的亮度,通过不断地调节方波的占空比,LED灯的亮度也会跟着变化,看起来就像是“呼吸”一样。 要得…

爬虫小白入门在服务器上-部署爬虫或者开服务接口并供给他人访问

目录 一、准备工作-服务器1、先准备一个服务器(以阿里云为例子)2、开通服务端口号访问权限 二、准备工作-Xshell登录服务器1、xshell基本登录操作2、xftp基本操作 三、部署代码到服务器上1、部署一个python爬虫脚本在服务器上定时运行等2、部署一个pytho…

【面试常见】JS继承与原型、原型链

前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库 web前端面试题库 VS java后端面试题库大全 在 JavaScript 中,继承是实现代码复用和构建对象关系的重要概念。本文将讨论原型链继承、构造函数继承以及…

SONY索尼MP4视频变RSV文件修复方法

索尼MP4变RSV的原因分析 索尼新型号相机或者摄像机,如SONY A7S3,A7M4,FX3, FX6, FX9等,如果录像过程中有发生如下异常情况,如断电,死机,电量不足,机器摔倒,非常规操作&a…

【接口测试】Postman —— 接口测试知识准备

1.0 前言 ​应用程序编程接口(Application Programming Interface, API)是这些年来最流行的技术之一,强大的Web应用程序和领先的移动应用程序都离不开后端强大的API。API技术的应用给系统开发带来了便利,但也对测试人员提出了更高…

CentOS7下载并安装mysql-8.0.33

CentOS7下载并安装mysql-8.0.33 一、官网下载mysql-8.0.33 MySQL下载路径 MySQL :: Download MySQL Community Server 自己百度mysql官网下载的话直接按照完整路径指示下载即可,如果点击上面的连接下载mysql的话,直接按照4、5、6步骤选择适合自己linu…

旅游卡景区购票小程序开发定制

旅游业的蓬勃发展,越来越多的景区开始推出自己的旅游卡,以吸引更多的游客前来观光。同时,为了更加便捷地服务游客,许多景区也开始启用小程序来进行门票售卖和游客管理。针对这种情况,专业的小程序开发公司推出了定制旅…

自定义注解,基于redis实现分布式锁

一、如何实现自定义注解 1.1、注解的基础知识 实现自定义注解其实很简单,格式基本都差不多。也就参数可能变一变。 Retention:取值决定了注解在什么时候生效,一般都是取运行时,也就是RetentionPolicy.RUNTIME。 Target&#xff…

初识Go语言25-数据结构与算法【堆、Trie树、用go中的list与map实现LRU算法、用go语言中的map和堆实现超时缓存】

文章目录 堆Trie树练习-用go中的list与map实现LRU算法练习-用go语言中的map和堆实现超时缓存 堆 堆是一棵二叉树。大根堆即任意节点的值都大于等于其子节点。反之为小根堆。   用数组来表示堆,下标为 i 的结点的父结点下标为(i-1)/2,其左右子结点分别为…

性能优化 :删除项目中没有引用关系的文件 useless-files-webpack-plugin

一般此类包不需要安装到项目中,减少node_modules体积(以项目实际情况决定-S/-D) npm i useless-files-webpack-plugin -S然后再vue.config.js中配置 const UselessFile require(useless-files-webpack-plugin) chainWebpack: config > …

【NLP模型】文本建模(2)TF-IDF关键词提取原理

一、说明 tf-idf是个可以提取文章关键词的模型;他是基于词频,以及词的权重综合因素考虑的词价值刻度模型。一般地开发NLP将包含三个层次单元:最大数据单元是语料库、语料库中有若干文章、文章中有若干词语。这样从词频上说,就有词在文章的频率,词在预料库的频率,文章在预…

SpringBoot3.0整合RocketMQ时出现未能加载bean文件

SpringBoot3.0整合RocketMQ时出现未能加载bean文件 问题 APPLICATION FAILED TO START Description: Field rocketMQTemplate in com.spt.message.service.MqProducerService required a bean of type ‘org.apache.rocketmq.spring.core.RocketMQTemplate’ that could not …

window debug ios webview

业务需求 在window上想要debug在ios的应用中的webview页面,毕竟页面是在安卓端和ios端都有webview的。安卓的页面使用edge的edge://inspect/#devices,手机开启调试模式就可以了。对于ios就没有办法,页面中已经使用了vconsole可以看到部分的信…

火山引擎 Iceberg 数据湖的应用与实践

在云原生计算时代,云存储使得海量数据能以低成本进行存储,但是这也给如何访问、管理和使用这些云上的数据提出了挑战。而 Iceberg 作为一种云原生的表格式,可以很好地应对这些挑战。本文将介绍火山引擎在云原生计算产品上使用 Iceberg 的实践…

XXX汽车ERP系统供应商索赔业务上线,助力业财数据快速闭环(投稿数据化月报四)

供应商三包索赔款项源起QMS质量系统,联动金税系统完成发票开具,最终在SAP系统中创建完成财务凭证。该流程上线前为手工操作,费时费力且效率低下容易出错。针对该业务现状,SAP与QMS业务顾问及开发团队组成开发小组,导入…