当前位置: 首页 > news >正文

创建excel服务失败_什么是数据驱动测试?学习创建框架

fbda21ee4c07349d71430425cf047f02.gif

0611d69210fbb998f18b2ba6b7f574f3.png数据驱动测试

数据驱动测试是一种软件测试方法,其中测试数据以表或电子表格格式存储。数据驱动的测试允许测试人员输入单个测试脚本,该脚本可以对表中的所有测试数据执行测试,并期望测试输出在同一表中。也称为表驱动测试或参数化测试。

0611d69210fbb998f18b2ba6b7f574f3.png数据驱动框架

数据驱动框架是一个自动化测试框架,在该框架中,从数据文件中读取输入值并将其存储到测试脚本中的变量中。它使测试人员可以将肯定和否定测试用例都构建到单个测试中。数据驱动框架中的输入数据可以存储在单个或多个数据源中,例如.xls,.xml,.csv和数据库。

3bef0bfc4a7de6f0432b82e62e3356e0.png 0611d69210fbb998f18b2ba6b7f574f3.png为什么要进行数据驱动测试?

数据驱动测试非常重要,因为测试人员经常为一个测试提供多个数据集,并且为每个数据集创建单独的测试可能很耗时。数据驱动的测试有助于使数据与测试脚本分开,并且可以针对输入的测试数据的不同组合执行相同的测试脚本,并且可以高效地生成测试结果。

例如,我们要使用包含1000个不同数据集的多个输入字段来测试登录系统。

0611d69210fbb998f18b2ba6b7f574f3.png要对此进行测试,可以采用以下不同方法:

方法1)为每个数据集创建1000个脚本,并逐个运行每个测试。

方法2)手动更改测试脚本中的值,然后运行几次。

方法3)从Excel工作表导入数据。从excel行中逐行提取测试数据并执行脚本。

在给定的三种情况下,前两种情况既费力又费时。因此,遵循第三种方法是理想的。

因此,第三种方法就是数据驱动框架。

如何创建数据驱动的自动化框架

b14648f017992ece2baf32a81f4f5072.png

考虑您要测试应用程序的登录功能。

步骤1)确定测试用例

输入正确的用户名和密码-登录成功

输入错误的用户名和正确的密码–登录失败

输入正确的用户名和错误的密码-登录失败

步骤2)为上述3个测试用例创建详细的est步骤

测试用例描述测试步骤测试数据预期结果

1

检查登录以获取有效凭证

启动应用程序

输入用户名密码

单击确定

检查结果

用户名:有效

密码:有效

登录成功

2

检查登录以获取无效的凭证

启动应用程序

输入用户名密码

单击确定

检查结果

用户名:无效

密码:有效

登录失败

3

检查登录以获取无效的凭证

启动应用程序

输入用户名密码

单击确定

检查结果

用户名:有效

密码:无效

登录失败

0611d69210fbb998f18b2ba6b7f574f3.png创建测试脚本

如果您遵守3个测试步骤,则“测试步骤”仍然很常见。您需要创建一个测试脚本来执行这些步骤

//这是伪代码//测试步骤1:启动应用程序driver.get(“应用程序的URL”);//测试步骤2:输入用户名txtbox_username.sendKeys(“ valid”);//测试步骤3:输入密码txtbox_password.sendKeys(“ invalid”);//测试步骤4:检查结果If (Next Screen) print success else Fail
0611d69210fbb998f18b2ba6b7f574f3.png使用输入测试数据创建excel / csv ec1f1c40f4a97ba1c30b7368bbe467b3.png

步骤修改凭证以循环输入测试数据。输入命令也应参数化

//这是伪代码//循环3次(i = 0; i< = 3; i ++){    //从Excel读取数据并将其存储到变量    int input_1 = ReadExcel(i,0);    int input_2 = ReadExcel(i,1);    //测试步骤1:启动应用程序    driver.get(“应用程序的URL”);    //测试步骤2:输入用户名    txtbox_username.sendKeys(input_1);    //测试步骤3:输入密码    txtbox_password.sendKeys(input_2);    //测试步骤4:检查结果是否    If(Next Screen) print success    else Fail    }

以上只是3个测试用例。仅通过将测试数据值附加到Excel,即可使用测试脚本来循环以下测试用例

  • 输入错误的用户名和错误密码–登录失败

  • 输入正确的用户名和密码为空白–登录失败

  • 输入空白的用户名和密码–登录失败

数据驱动测试的最佳做法:

下面给出的是数据驱动测试的最佳测试实践:

  • 理想的是在数据驱动的测试过程中使用真实的信息

  • 测试流程导航应在测试脚本中编码

  • 利用有意义的数据来驱动虚拟API

  • 使用数据来驱动动态断言

  • 测试正面和负面结果

  • 重新利用数据驱动功能测试的安全性和性能

  • 数据驱动测试的优势

数据驱动具有许多优点,其中包括:

  • 允许在回归测试期间使用多组数据值测试应用程序

  • 测试数据和验证数据只能组织在一个文件中,并且与测试用例逻辑分开。

  • 基于该工具,可以将测试脚本存储在单个存储库中。这使文本易于理解,维护和管理。

0611d69210fbb998f18b2ba6b7f574f3.png动作和功能可以在不同的测试中重复使用。
  • 一些工具会自动生成测试数据。当需要大量随机测试数据时,这很有用,这有助于节省时间。

  • 数据驱动的测试可以执行开发的任何阶段。数据驱动的测试服务通常在单个过程中合并。但是,它可以在多个测试案例中使用。

  • 允许开发人员和测试人员清楚地将测试用例/脚本的逻辑与测试数据区分开。

  • 相同的测试用例可以执行多次,这有助于减少测试用例和脚本。

  • 测试脚本中的任何更改都不会影响测试数据

数据驱动测试的缺点:

  • 测试的质量取决于实施团队的自动化技能

  • 测试大量数据时,数据验证是一项耗时的任务。

  • 维护是一个大问题,因为数据驱动测试需要大量编码。

  • 需要高级技术技能。测试人员可能必须学习全新的脚本语言。

  • 将有更多文档。主要与脚本管理测试基础结构和测试结果有关。

  • 需要使用诸如记事本之类的文本编辑器来创建和维护数据文件。

0611d69210fbb998f18b2ba6b7f574f3.png结论:

数据驱动的是一个测试自动化框架,以表格或电子表格格式存储测试数据。

  • 在数据驱动的测试自动化框架中,输入数据可以存储在单个或多个数据源中,例如xls,XML,csv和数据库。

  • 为每个数据集创建单独的测试是一个漫长且耗时的过程。数据驱动测试框架通过将数据与功能测试分开来解决了此问题。

  • 在数据驱动测试中,使用实际信息是理想的选择

  • 它允许在回归测试期间使用多组数据值测试应用程序

  • 该方法的缺点在于它取决于实施团队的自动化技能

推荐阅读
  • 如何使用PYTHON抓取新闻文章

  • pCloudy的方式–连续测试平台可实现高速,高质量的移动应用程序测试

  • Linux系统下一步到位搭建bug管理系统——禅道

  • 七夕如何向心爱的ta表白,看这里

7228ddbac1926ebaf572eb3cfcdae923.png扫一扫添加小编获取最新资料

相关文章:

  • mysql cbo优化器_Oracle约束Constraint对于CBO优化器的作用
  • php结合MySQL的柱状图_jpgraph+php+mysql生成柱状图(含代码)
  • 查看有哪些namespace_Linux操作系统中的namespace是个什么鬼
  • zabbix php mysql_Centos7+PHP5.6+MySQL5.7+Zabbix4.0部署
  • 判别式模型python_判别式模型与生成式模型
  • 双鉴探测器是哪两种探测方式结合_报警的基本知识
  • 虚拟机annaconda连接mysql_Python3.5(ANCONDA3)连接MYSQL数据库
  • mysql 存储过程enum 变量初始化_mysql存储过程变量使用-bug记要
  • mysql获取option的value_js:如何获取select选中的值
  • java链表 排序_Java实现单链表的快速排序和归并排序
  • java jar包 资源_java jar包资源下载
  • flash builder java_Flash Builder4.5 + BladeDS + Java 集成实例
  • java 打包成war包后 获取类路径_一个Java项目布署到weblogic里,听说weblogic会把classes目录打成jar包,怎么获取classes里文件的路径...
  • crh寄存器_STM32的寄存器控制SDA_IN()/SDA_OUT()
  • java连接openoffice_Java启动openoffice服务后拒绝连接
  • php的引用
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • Centos6.8 使用rpm安装mysql5.7
  • javascript从右向左截取指定位数字符的3种方法
  • Making An Indicator With Pure CSS
  • mysql 5.6 原生Online DDL解析
  • mysql常用命令汇总
  • ng6--错误信息小结(持续更新)
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Python 反序列化安全问题(二)
  • Unix命令
  • Vue UI框架库开发介绍
  • Wamp集成环境 添加PHP的新版本
  • webpack入门学习手记(二)
  • 大型网站性能监测、分析与优化常见问题QA
  • 力扣(LeetCode)21
  • 你真的知道 == 和 equals 的区别吗?
  • 前端存储 - localStorage
  • 浅谈web中前端模板引擎的使用
  • 实战|智能家居行业移动应用性能分析
  • 王永庆:技术创新改变教育未来
  • 我的面试准备过程--容器(更新中)
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ​学习一下,什么是预包装食品?​
  • $refs 、$nextTic、动态组件、name的使用
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (七)Knockout 创建自定义绑定
  • (一)Neo4j下载安装以及初次使用
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)ORM
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .net流程开发平台的一些难点(1)
  • /boot 内存空间不够
  • ??eclipse的安装配置问题!??