如何设计自动化测试脚本

news2024/11/28 20:44:31

企业中如何设计自动化测试脚本呢?今天我们就来为大家分享一些干货。

一、线性设计

线性脚本设计方式是以脚本的方式体现测试用例,是一种非结构化的编码方式,多数采用录制+回放的方式,测试工程师通过录制+回访的访问对被测系统进行自动化测试,录制的脚本会产生某些冗余的代码内容或函数及脚本。

线性设计的特点:

测试用例已脚本方式编写

脚本开发成本较低

对测试人员编码的无经验要求

不需要提前对测试框架进行设计与开发

测试过程中的数据是写死在脚本中的会出现冗余

脚本的维护比较困难,成本非常高

测试人员各自为主,缺少复用

二、结构化设计

结构化设计是以函数/方法的形式进行编写,主要是通过循环来控制测试流程及测试脚本,如使用for循环、while循环、if...else...等循环或分支语句实现对函数的不同条件的判断及场景的调用。

结构化设计的特点:

  • 测试用例在脚本中通过函数的方式体现

  • 测试脚本编码能力较线性脚本有更高的要求

  • 需要测试人员具备良好的代码设计能力与编码能力

  • 测试数据依然在脚本中写死

  • 相对较为稳定,所需要的维护成本较线性脚本相对较低

三、共享化设计

共享化设计是将脚本中公共的函数/内容在整个测试过程中进行共享,方便其它脚本的调用,减少了代码的冗余。让被测系统实现组件化的互相调用。

共享化设计的特点:

  • 测试用例在脚本中编写,同时需要便于其它脚本的调用

  • 开发成本较低,减少了大量的冗余脚本内容

  • 对测试人员的代码设计能力有较高要求

  • 由于需要组件化进行设计,对测试人员的编码能力要求较高

  • 脚本的维护和成本较低

四、数据驱动设计

数据驱动设计是将测试数据与测试脚本进行分离,以外部数据文件的方式进行测试数据管理,减少耦合,在测试过程中需要对测试数据进行修改时,仅需修改外部数据文件中的内容即可,测试脚本中的代码内容不做改动,从而减少频繁修改代码产生的问题。

数据驱动设计的特点:

测试用例的脚本与测试数据分离,需要测试数据时进行I/O读取

参数化数据读取与写入相对来说,对测试人员的编码能力进一步提高

测试数据独立进行保存与维护

测试脚本的维护成本较低

一般推荐在需要测试正反向测试时使用

测试数据能够复用,进一步减少了代码的冗余情况

五、关键字驱动设计

关键字驱动是将所有需要执行的业务操作中的公共的操作独立进行封装,所有业务调用公共的操作方式,而对于程序的控制也以函数的方式进行驱动,即公共操作,程序控制,测试数据都通过外部数据文件进行管理和读写,关键字驱动的基础的数据驱动。

关键字驱动设计的特点:

关键字驱动对于测试人员的编码能力要求非常高,需要大量的编码经验积累

关键字驱动中测试用例是以外部数据文件的方式进行组织的

对于整体测试框架的设计能力要求较高

能够极大的降低其它测试人员的编码能力要求

整体框架的维护成本非常低

支持多个项目复用,同一套框架可以不断复用在其它的项目中

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Game-On论文阅读

异质性是多模态研究中最重要的关注点 文章目录 Abstract1. Introduction2. Related Work2.1 多模态假新闻检测 **以往的研究方法**2.2 GNNs在多模态研究中的地位3. 方法论3.1 视觉和文本特征编码器3.2 共享多模态空间和多模态图构建3.3 图注意层3.4 假新闻检测器4. 实验与结果4…

12.5作业

1. #include <iostream>using namespace std;class Animal { private:string name; public:Animal(){}Animal(string name):name(name){cout << "animal" << endl;}virtual void perfrom(){cout << "实现不同表演行为" << …

竞赛选题 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

文章目录 0 简介1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习卷积神经网络的花卉识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…

深入了解c语言中的结构体

介绍&#xff1a; 在C语言中&#xff0c;结构体是一种用户自定义的数据类型&#xff0c;它允许我们将不同类型的数据组合在一起&#xff0c;形成一个更为复杂的数据结构。结构体可以用来表示现实世界中的实体&#xff0c;如人员、学生、图书等。本篇博客将介绍结构体的基本概念…

Token 和 N-Gram、Bag-of-Words 模型释义

ChatGPT&#xff08;GPT-3.5&#xff09;和其他大型语言模型&#xff08;Pi、Claude、Bard 等&#xff09;凭何火爆全球&#xff1f;这些语言模型的运作原理是什么&#xff1f;为什么它们在所训练的任务上表现如此出色&#xff1f; 虽然没有人可以给出完整的答案&#xff0c;但…

使用node实现链接数据库并对数据库进行增删改查的后端接口

环境 node npm 编辑器 vscode 项目配置 新建目录 用vscode打开 终端输入 npm init -y npm install mysql npm install express 代码 安装好之后的代码页面 新建 在根目录新建api.js文件 const express require(express); const db require(./db/index); const app…

国产智能运维操作系统新选择-浪潮KeyarchOS

1.背景 在CentOS停更&#xff0c;国有企业纷纷摒弃原有的开发与运维工具&#xff0c;全面拥抱国产。我司也顺应号召&#xff0c;更换原有CentOS系统。 在新系统选型上&#xff0c;我司有以下要求&#xff1a; 国产、快速更新迭代、社区活跃&#xff1b;拥有一定知名度&#x…

数据库Delete的多种用法

数据库的Delete操作是用来删除数据库中的数据记录的&#xff0c;它是数据库操作中的一种重要操作&#xff0c;能够帮助用户删除不需要的数据&#xff0c;以便保持数据库的整洁和高效。在使用Delete操作时&#xff0c;需要注意确保操作的准确性和安全性&#xff0c;以免误删重要…

【Mysql】聚合函数和分组(查找)

聚合函数 函数说明COUNT([DISTINCT] expr)返回查询到的数据的 数量SUM([DISTINCT] expr)返回查询到的数据的 总和&#xff0c;不是数字没有意义AVG([DISTINCT] expr)返回查询到的数据的 平均值&#xff0c;不是数字没有意义MAX([DISTINCT] expr)返回查询到的数据的 最大值&…

最新发布SPAB模块,YOLOv5改进之SPAB

目录 一、原理 二、代码 三、应用到YOLOv5 一、原理 单幅图像超分辨率(SISR)是低分辨率计算机视觉中的一项重要任务,旨在从低分辨率图像中重建高分辨率图像。传统的注意机制虽然显著提高了S

批量获取 Btsow 网站搜索到的磁力链接

BTSOW 是个不错的种子或磁力链接搜索网站&#xff0c;本脚本可以按需要批量抓取 磁力链接&#xff08;老司机必备&#xff09; 功能: 1.获取最新地址&#xff08;网站经常失联&#xff09; 2.最多50页内容&#xff08;网站限制&#xff09; 3.结果生成CSV文件&#xff08;可用e…

全网最新最牛的Appium自动化:Appium常用操作之TouchAction操作

TouchAction操作 Appium的辅助类&#xff0c;主要针对手势操作&#xff0c;比如滑动、长按、拖动等。其原理是将一系列的动作放在一个链条中&#xff0c;然后将该链条传递给服务器。服务器接受到该链条后&#xff0c;解析各个动作&#xff0c;逐个执行。 TouchAction类支持的动…

Verilog基础:编译指令`timescale

相关阅读 Verilog基础https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 timescale编译指令用于指定指令后模块的时间单位和时间精度。时间单位是时间值的度量单位&#xff0c;例如延迟值和仿真时间&#xff1b;而仿真精度决定了最小可分…

《SpringBoot项目实战》第六篇—接口防抖(防重复提交)的一些方式

系列文章导航 第一篇—接口参数的一些弯弯绕绕 第二篇—接口用户上下文的设计与实现 第三篇—留下用户调用接口的痕迹 第四篇—接口的权限控制 第五篇—接口发生异常如何统一处理 第六篇—接口防抖(防重复提交)的一些方式 本文参考项目源码地址&#xff1a;summo-springboot-i…

15.Servlet [一篇通]

文章目录 1.Servlet 是什么2.第一个 Servlet 程序2.1创建项目2.2引入依赖2.3创建目录2.4编写代码2.5打包程序2.6部署程序2.7验证程序 3.更方便的部署方式3.1安装 Smart Tomcat 插件3.2配置 Smart Tomcat 插件 4.访问出错怎么办?4.1出现 4044.2出现 4054.3出现 5004.4出现 &quo…

前端面试高频考点—事件循环Event loop

目录 事件循环 执行步骤 概念讲解 主线程 微任务(micro task) 宏任务(macro task) Event Loop经典例题 这段代码的执行结果是什么&#xff1f; 正确答案&#xff1a; 具体流程&#xff1a; 事件循环 主线程从"任务队列"中读取执行事件&#xff0c;这个过程…

WeiPHP 微信开发平台 SQL注入漏洞复现

0x01 产品简介 weiphp 是一个开源,高效,简洁的微信开发平台,基于 oneThink 内容管理框架实现。 0x02 漏洞概述 weiphp 微信开发平台 _send_by_group、 wp_where、 get_package_template等接口处存在 SQL 注入漏洞,攻击者利用此漏洞可获取数据库中的信息(例如,管理员后台…

【Docker】部署若依项目——保姆级教程亲测

目录 1.部署后端 步骤1&#xff1a;修改mysql地址 步骤2&#xff1a;修改redis地址 步骤3&#xff1a;修改后端端口 步骤4&#xff1a;将项目打包成Jar包 ​编辑 步骤5&#xff1a;编写Dockerfile 步骤6&#xff1a;制作镜像 启动容器 步骤7&#xff1a;访问 2.前端打…

国产接口测试工具APIpost

说实话&#xff0c;了解APIpost是因为&#xff0c;我的所有接口相关的文章下&#xff0c;都有该APIpost水军的评论&#xff0c;无非就是APIpost是中文版的postman&#xff0c;有多么多么好用&#xff0c;虽然咱也还不是什么啥网红&#xff0c;但是不知会一声就乱在评论区打广告…

论文阅读-Null-text Inversion for Editing Real Images using Guided Diffusion Models

一、论文信息 作者团队&#xff1a; 论文链接&#xff1a;https://arxiv.org/pdf/2211.09794.pdf 代码链接&#xff1a;https://github.com/google/prompt-to-prompt 二、Conditional Diffusion&#xff08;classifier-free guidance) Classifier-free guidance方法训练&…