RF实现数据驱动DDT

news2024/9/20 8:53:45

场景

在自动化测试框架中,数据驱动的意思指定的是测试用例或者说测试套件是由外部数据集合来驱动的框架。这里说的数据集可以是任何类型的数据文件比如xls,xlsx,csv等等。它的核心的思想就是数据和测试代码分离,及时当测试数据发生大量变化的情况下测试代码(或者说测试用例)可以保持不变。数据集合里有1条数据和100条甚至更多,是不会影响到测试用例的执行。如果想使用一组不同的数据来执行的相同的操作没那么你就可以选择数据驱动。

在自动化测试中,为了维持回归测试的稳定一致,测试脚本应当尽量避免更改。在非数据驱动的情况下,恰恰违背了这一原则。自动化测试中,随着项目的深入,测试脚本将会持续增多,测试数据和脚本揉在一起?维护起来将会是一件恐怖的事情,出错在所难免,所以这时不要这样做,让数据和脚本分离,坚持死的代码,活的数据,维护的大部分工作将只面向数据。

因此,数据和脚本分离、维护对象由脚本转向数据,这样的数据驱动测试将会缓解上述测试数据难扩展和测试项目维护难的痛点。

比如,在这么一种场景下,例如你需要用多个不同的账号和密码来登陆某个邮箱,来验证哪些是有效的值,哪些是错误的值,或者哪些值可以导致出错,这只是一个简单的例子。

另外一个简单的例子就是网络电话的测试,当我们模拟拨号、挂断、回拨等等操作时我们希望验证每个按钮是否能正常工作并能得到正确的结果。

或者是搜索功能, 不同的搜索条件, 返回不同的结果. 以下代码就以百度的搜索为例.

代码

Step1:

以下代码演示的是三个搜索条件, 软件测试/RobotFramework/数据驱动. 编写的线性代码, 那么几个搜索条件, 就需要几条测试用例.

*** Settings ***
Library           SeleniumLibrary

*** Test Cases ***
case1
    Open Browser    https://www.baidu.com/
    Input Text    id=kw    软件测试
    Click Element    id=su
    sleep    2
    Close Browser

case2
    Open Browser    https://www.baidu.com/
    Input Text    id=kw    RobotFramework
    Click Element    id=su
    sleep    2
    Close Browser

case3
    Open Browser    https://www.baidu.com/
    Input Text    id=kw    数据驱动
    Click Element    id=su
    sleep    2
    Close Browser

Step 2:

试想, 如果有10个搜索条件, 乃至100个, 那不是要写100条?

对于重复操作的步骤, 我们首先想到的, 应该是封装. 在RF中封装的概念就是自定义关键字.

新建一个Resource, 命名为Resource.robot, 里面存放一个用户关键字search, 把重复操作的步骤代码写入其中, 该关键字需要传入一个参数, 即搜索字段

*** Settings ***
Library           SeleniumLibrary

*** Keywords ***
search
    [Arguments]    ${text}
    Open Browser    https://www.baidu.com/
    Input Text    id=kw    ${text}
    Click Element    id=su
    sleep    2
    Close Browser

Step 3:

新建测试集, 导入资源文件Resource.robot.

数据驱动的实现, 需要用到Template, 也就是模板. 在Test Template处引入search关键字.

Step 4:

数据驱动正式开始. 该测试集下的所有测试用例都会引用关键字search, 只需要在测试用例填写它需要传入的参数即可.

*** Settings ***
Test Template     search
Resource          Resource.robot

*** Test Cases ***
case1
    软件测试

case2
    Robotframework

case3
    数据驱动

写在最后

数据驱动测试并不适用于所有的测试。

首先,对于弱参数的测试,使用数据驱动,将会降低测试效率。所谓弱参数测试,就是测试用例对测试参数不敏感,具体表现在用例不需要传入参数的情况,或者难以参数化的情况等等。

举个例子,我们要测试一个接口,它的功能是返回当前系统时间的时间戳,它没有需要传入的参数,返回的数据也完全由当前时间决定。在这个例子中,我们几乎看不到需要参数化的东西,唯一有可能被参数化的是接口的返回参数,而这个返回参数还是随着当前时间动态变化的。如果要对这个接口实现数据驱动,那么我们需要在数据池中增加动态获取时间的逻辑,然而获取当前时间在测试脚本中,用一行代码就可以实现,所以,本例使用数据驱动得不偿失。

再者,对于非大规模的,或者非自动化的,或者非长期优化的测试,使用数据驱动通常没有必要。对于一个小的、临时的或者一次性的测试需求,整个测试过程讲究灵活变通,完全没有必要去花力气去建设一个专门的数据驱动的平台。总之,如何能够达到效率最高,就如何去安排测试的方法。

脱离了具体需求的测试方法或者技术,都是在耍流氓。

​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:485187702【暗号:csdn11】

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

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

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

相关文章

【同济大学主办】第七届先进算法与控制工程国际学术会议(ICAACE 2024)

第七届先进算法与控制工程国际学术会议(ICAACE 2024) 2024 7th International Conference on Advanced Algorithms and Control Engineering 第七届先进算法与控制工程国际学术会议(ICAACE 2024)定于2024年1月26-28日在中国上…

虽然在不同设备上会出现同样的原神错误代码9907,但解决办法因设备而异

你是不是很享受在原神(Genshin Impact)中的神奇旅程,但错误代码9907出现了?与PS4控制台中全面讨论PS4的错误CE-34878-0不同,本文关注的是原神错误本身。本文不仅讨论了这个错误背后的原因,还讨论了每种类型设备的具体解决方案。 在Microsoft Windows/PC上修复错误代码99…

深入学习redis-基于Jedis通过客户端操作Redis

目录 redis客户端(JAVA) 配置 引入依赖 建立连接 常用命令实现 get/set exists/del keys expire和ttl type 字符串(String) mget和mset getrange和setrange append incr和decr 列表(list) …

自动化测试 —— 如何优雅实现方法的依赖!

在 seldom 3.4.0 版本实现了该功能。 在复杂的测试场景中,常常会存在用例依赖,以一个接口自动化平台为例,依赖关系: 创建用例 --> 创建模块 --> 创建项目 --> 登录。 用例依赖的问题 •用例的依赖对于的执行顺序有严格…

好用的chatgpt工具用过这个比较快

chatgpthttps://www.askchat.ai?r237422 chatGPT能做什么 1. 对话和聊天:我可以与您进行对话和聊天,回答您的问题、提供信息和建议。 2. 问题回答:无论是关于事实、历史、科学、文化、地理还是其他领域的问题,我都可以尽力回答…

医疗机构临床数据合规共享解决方案斩获“金智奖”年度优秀方案奖

11月24日,以“并肩聚力,协同创新,共谋网络安全产业新发展”为主题的2022—2023年度中国网络安全与信息产业“金智奖”(以下简称:“金智奖”)颁奖盛典隆重举行。美创科技—医疗机构临床数据合规共享解决方案…

基于javaweb的宠物服务商城系统设计与开发

摘 要 最近几年以来,宠物在人们的日常生活中所占的地位越来越重要了,它们不仅仅是我们的朋友,也成为了我们家庭中的一份子。21世纪,信息技术飞速发展,计算机行业日新月异,极大地带动了信息的流动&#xff…

跨境电商成拼多多高质量增长奇兵

不曾想到,拼多多增长仍如此迅猛。 11月28日,拼多多发布第三季度财报,数据显示,营收688.404亿元,同比增长94%,超过市场预估的548.7亿元;实现美国通用会计准则口径净利润155.37亿元,同…

代码demo-内部订单批量投料

为了简化用户操作,开发内部订单批量投料功能 用户可以批量上传,或者选择对应的物料,输入库位和内部订单号后进行过账操作 对用户选择的内部订单做校验,内部订单是否正确 内部订单的公司是否和工厂对应的公司一致等等 下面展示…

护眼灯对眼睛有好处吗?考公护眼台灯推荐

根据国家卫健委发布的最新数据,目前我国儿童青少年近视率已经达到了相当高的水平。其中,小学生的视力问题占比接近40%,高中生和大学生的近视率则超过70%并且逐年上升。可以说10个学生里面就有7个学生入手一副眼镜。 为了避免这一现象的加深&a…

【Java】文件I/O-字节流转换成字符流

上文中我们讲了Reader,Writer,InputStream,OutputStream这四种流的基本用法🔢 【Java】文件I/O-文件内容操作-输入输出流-Reader/Writer/InputStream/OutputStream四种流 其中InputStream和OutputStream两个类涉及到的都是byte&…

Small Data Transmission(一) overview

在R16之前,RRC Inactive 不支持数据传输,UE在RRC inactive状态有data要传输时,就要通过RRC resume过程,转换到RRC connected mode才能进行数据传输。 有时候UE要传输的数据包可能会很小,且发送频率也很低,如果每次发送数据都要进行上述过程,就会增加不必要的功耗和信令…

会泽一村民上山放羊吸烟引发森林火灾,AI科技急需关注

2023年4月,会泽县古城街道厂沟村委会望香台山林中发生了一场由疏忽引发的森林火灾。张某某在放羊时未完全熄灭烟头,导致7.33公顷的林地和草地被焚毁,直接经济损失高达29.097万元。这一事件再次凸显了日常生活中的安全隐患。 在这一背景下&…

基于 Gin 的 HTTP 代理 Demo(2)

一周后勘误: 我这里实现的严格来说还是 HTTP 代理,只不过是通过隧道的方式传输非 HTTP 的流量,这里是 HTTPS 流量。尽管它可以传输 HTTPS 流量,它也不算是 HTTPS 代理。 上次写了 基于 Gin 的 HTTP 代理 Demo 之后,对…

如何搭建外网可访问的Serv-U FTP服务器,轻松远程共享文件!

目录 1. 前言 2. 本地FTP搭建 2.1 Serv-U下载和安装 2.2 Serv-U共享网页测试 2.3 Cpolar下载和安装 3. 本地FTP发布 3.1 Cpolar云端设置 3.2 Cpolar本地设置 4. 公网访问测试 5. 总结 1. 前言 科技日益发展的今天,移动电子设备似乎成了我们生活的主角&am…

【算法每日一练]-图论(保姆级教程篇9 最小生成树 ,并查集篇)#道路修建 #兽径管理

目录 题目:道路修建 思路: 题目:兽径管理 思路: 题目:道路修建 思路: “让这些点全部连在一起的最小代价”很明显是最小生成树。绝对不能kruskal,存边一定会超内存。所以只能prim。 但是…

明基|书客|松下护眼台灯值不值得买?爆款多维度测评揭晓!

随着近视率越来越高的现象,护眼台灯逐渐成为大多数家庭的日常所需,许多护眼台灯品牌为了降低价格吸引消费者而不惜大程度上降低材料品质,导致台灯寿命减短,光线变差等问题频发,这也让广大对于如何选择一款好的护眼台灯…

职业测评链接

职业测评链接: https://www.16personalities.com/ch?utm_sourceresults-turbulent-campaigner&amp%3Butm_mediumemail&amp%3Butm_campaignch&amp%3Butm_contentlogo-0

性能测试线上监控

如果你的产品出现了一个线上问题,你会是怎么样的反应? 也许会跟下面这张图一样。 哇!有一个线上bug,好慌呀!! 咦,问题似乎自动解决了?渐渐冷静。 不对!!&a…

2023-11-30 AIGC-让图片动起来的主流 AI 工具

摘要: 2023-11-30 AIGC-让图片动起来的主流 AI 工具 让图片动起来的主流 AI 工具 一、数字人播报 1、HeyGen 2、D-ID 3、SadTalker 二、图片生成视频 1、Runway Gen-2 2、Pika Labs 3、Genmo 三、伪3D动态效果 1、LeiaPix 2、剪映手机版 四、角色动画 Animated …