数据驱动测试在接口测试和网站测试中的应用

 

什么是数据驱动测试

据驱动测试是一种测试方法,其中测试数据和测试逻辑是分开的,测试数据被存储在外部源中(如Excel表格、JSON文件、数据库等),测试逻辑则独立于测试数据。在测试过程中,测试数据被读取并传递给测试逻辑,以执行相应的测试操作。这种方法使得测试用例的维护更加简单,并且能够轻松地扩展和修改测试数据,而不需要修改测试代码。

数据驱动测试的作用和价值包括:

  • 易于维护和扩展: 将测试数据与测试逻辑分离使得测试用例更易于维护。当测试数据需要变更时,只需修改数据源,而不需要修改测试代码本身。

  • 提高测试覆盖范围: 数据驱动测试允许在不同的数据集上执行相同的测试逻辑,从而提高了测试用例的覆盖范围。这意味着可以更全面地测试应用程序的各种情况和边界条件。

  • 减少重复性工作: 通过重复使用相同的测试逻辑,可以减少编写重复代码的工作量。一旦测试逻辑被编写和验证,就可以在多个测试数据集上重复使用。

  • 易于自动化: 数据驱动测试是自动化测试的理想选择。自动化测试工具可以很容易地读取数据源,并将数据传递给测试逻辑,从而实现自动化执行测试用例的目的。

使用场景包括但不限于:

  • 接口测试: 对API进行测试时,可以使用数据驱动测试来测试不同的输入和输出组合。

  • 网页测试: 在网页自动化测试中,可以使用数据驱动测试来测试不同的用户输入、页面操作等场景。

  • 性能测试: 对于性能测试,可以使用数据驱动测试来测试不同的负载情况和并发用户数。

数据驱动测试是一种灵活且高效的测试方法,能够帮助测试团队更好地管理和执行测试用例,提高测试覆盖率和效率,从而保证软件质量。

简单来说,就是测试程序不变,使用不同的测试数据传给测试程序来执行测试用例

下面是一个接口测试中使用数据驱动的案例,测试注册接口:

  1. import requests

  2. # 定义接口测试函数

  3. def test_api(endpoint, method, data=None):

  4. url = f"http://124.223.167.147:8080/{endpoint}"

  5. if method.lower() == 'get':

  6. response = requests.get(url)

  7. elif method.lower() == 'post':

  8. response = requests.post(url, json=data)

  9. else:

  10. print("Invalid HTTP method")

  11. return

  12. print(f"Request URL: {url}")

  13. print(f"HTTP Method: {method}")

  14. print(f"Response Status Code: {response.status_code}")

  15. print(f"Response Body: {response.json()}")

  16. print()

  17. # 数据驱动测试

  18. api_tests = [

  19. {'endpoint': 'register/', 'method': 'post','data':{"username":"li221","password":"a1111111112","email":"lily@qq.com"}},

  20. {'endpoint': 'register/', 'method': 'POST', 'data': {"username":"andy22","password":"b398d2k2k22","email":"andy@qq.com"}}

  21. ]

  22. # 执行测试

  23. for test_case in api_tests:

  24. test_api(**test_case)

执行结果:

 
  1. Request URL: http://124.223.167.147:8080/register/

  2. HTTP Method: post

  3. Response Status Code: 200

  4. Response Body: {'code': '00', 'userid': 3}

  5. Request URL: http://124.223.167.147:8080/register/

  6. HTTP Method: POST

  7. Response Status Code: 200

  8. Response Body: {'code': '00', 'userid': 4}

下面是数据驱动在网站测试中的案例:​​​​​​​

 
  1. from selenium import webdriver

  2. from selenium.webdriver.common.keys import Keys

  3. import time

  4. # 定义网页测试函数

  5. def test_web(url, search_query):

  6. # 请确保已经安装了Chrome浏览器及其对应的webdriver,并将webdriver放在系统PATH中

  7. driver = webdriver.Chrome(executable_path="e:\\chromedriver.exe")

  8. driver.get(url)

  9. search_box = driver.find_element_by_name('query')

  10. search_box.send_keys(search_query)

  11. search_box.send_keys(Keys.RETURN)

  12. print(f"Page Title: {driver.title}")

  13. time.sleep(5)

  14. driver.quit()

  15. # 数据驱动测试

  16. web_tests = [

  17. {'url': 'https://www.sogou.com/web', 'search_query': 'Python'},

  18. {'url': 'https://www.sogou.com/web', 'search_query': 'Data Driven Testing'}

  19. ]

  20. # 执行测试

  21. for test_case in web_tests:

  22.     test_web(**test_case)

测试结果:分别两次打开浏览器,访问搜狗网站的时候,使用了不同的搜索词进行查询。

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

2024年程序员最应该关注的几件事?

对于程序员而言,技术和行业趋势的演变是持续关注的焦点。以下是几件2024年程序员应该关注的事情: 持续学习新技术:技术领域的快速变化要求程序员不断更新自己的技能集,包括编程语言、框架、工具和最佳实践。 人工智能与机器学习&…

Linux线程(四) 生产者消费者模型

目录 一、什么是生产者消费者模型 基本概念 优点以及应用场景 二、 基于阻塞队列的生产者消费者模型 三、POSIX信号量 四、基于环形队列的生产消费模型 一、什么是生产者消费者模型 Linux下的生产者消费者模型是一种经典的多线程或多进程编程设计模式,它用于解…

【LangChain系列 15】语言模型——LLMs(一)

原文地址:【LangChain系列 15】语言模型——LLMs(一) 本文速读: 异步API 自定义LLM Fake LLM HumanInput LLM 本文将介绍LLMs在LangChain中的一些用法,帮助我们更好地了解LLM模块。 01 异步API LangChain通过异步库实现了对异步的支持&a…

大模型应用的最佳实践Chains, SequentialChain使用示例

各种chain的介绍 串联式编排调用链:SequentialChain 流水线 胶水代码逻辑处理具备编排逻辑 串行 one by one的调用上一个chain的输出 作为 下一个chain的输入 超长文本的转换 Transform Chain pdf文件处理提供了套壳的能力 将python处理字符串的能力 套用进来 完成数据的格式化…

datagridview合并单元格

private void dataGridView5_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) { DataGridView dataGridView this.dataGridView5; // 假设你的DataGridView有至少三行三列 if (e.RowIndex 2 && e.ColumnIndex 2) //合并第三行最后两…

java sql中 大于 小于 大于等于 小于等于 代替符号

在写java时sql会经常会忘记大于小于号的表示方法导致无法运行&#xff0c;总结一下 第一种方法&#xff1a; < &#xff1a;< < &#xff1a; < &#xff1a;> &#xff1a; > sql如下&#xff1a; create_at > #{startTime} and create_at < #{end…

MySQL innodb_buffer_pool_size 相关常用语句

对于MySQL速度慢的问题&#xff0c;除了优化 SQL 以外&#xff0c;应该必须优先想到的即使 MySQL 数据库的 innodb_buffer_pool_size 配置问题。 一般来说&#xff0c;innodb_buffer_pool_size 的默认大小都是很小的&#xff0c;尤其是 win 下其默认大小更是只有离谱的 8M。Li…

centos7中如何全局搜索一下nginx的配置文件?

在CentOS 7中搜索Nginx的配置文件&#xff0c;你可以使用一些常用的命令行工具&#xff0c;比如find、grep等。这些工具可以帮助你在文件系统中查找文件&#xff0c;也可以用来查找Docker容器内部的文件&#xff0c;只要你知道如何访问容器的文件系统。 1. 搜索系统中的Nginx配…

fuel无人机自主探索代码解读2——sdf_map.cpp【占据栅格地图、膨胀占据栅格地图、ESDF】

一、概述 sdf_map.cpp负责map_ros.cpp内部主体函数的具体实现&#xff0c;主要功能包括&#xff1a; 融合输入的深度或点云图生成全局占据栅格地图根据launch参数生成全局膨胀占据栅格地图基于膨胀占据栅格地图采用欧式距离传输生成局部的ESDF地图采用三线性插值的方式得到某…

深度学习面试题整理

文章目录 1. TensorFlow是什么&#xff1f;2. 计算图3. pytorch tensorflow4. 节点与张量类型5. tensorboard6. tensflow三个工作组件7. 大多数 TensorFlow 算法的常用步骤是什么&#xff1f;8. 处理TensorFlow中过拟合的方法9. 为什么出现过拟合10. 交叉验证11. 学习率12. 特征…

Python SMTP发送邮件时如何设置邮件地址?

Python SMTP发送邮件如何添加附件&#xff1f;如何使用SMTP发信&#xff1f; Python则通过其内置的smtplib模块和email模块为我们提供了实现这一功能的工具。在发送邮件的过程中&#xff0c;正确设置邮件地址是至关重要的&#xff0c;AokSend就来详细探讨一下如何在Python SMT…

韵搜坊 -- 前端整合Axios(联调后端)

文章目录 安装配置发送请求 官网&#xff1a;https://www.axios-http.cn/docs/intro 安装 npm install axios配置 坐标&#xff1a;plugins/myAxios.ts import axios from "axios";const instance axios.create({baseURL: "http://localhost:8101/api"…

Python专题:十三、日期和时间(1)

Python 日期和时间处理模块 模块就是别人写好的代码&#xff0c;通过将模块引入到代码里&#xff0c;使用已经实现好的功能 math模块&#xff0c;import模块名 time模块 时间戳&#xff1a;从公元1970年1月1日0点0分0秒起&#xff0c;到现在总共经历过的秒杀

Page对象的学习

在ASP.NET中&#xff0c;Page是一个核心对象&#xff0c;它代表了一个ASP.NET Web Forms页面。每一个.aspx文件在运行时都会被编译成一个Page类的实例&#xff0c;这个实例承载了页面的所有功能&#xff0c;包括处理用户输入、与数据库交互、渲染HTML输出等。 在ASP.NET Web F…

第 8 章 机器人底盘Arduino端编码器驱动(自学二刷笔记)

重要参考&#xff1a; 课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ 讲义链接:Introduction Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程 8.4.3 底盘实现_02Arduino端编码器驱动 测速是整个PID闭环控制中的必须环节&#xff0c;我们必须修改代码适配…

设计模式之策略模式(一)

背景: 下单时有很多情况,有的是用户下单,有的是卡密下单,有的是下游下单,有的是需要唤起支付,有的不需要支付,这样就需要写很多下单接口,下面使用策略模式优化这种情况 代码结构 com.example.order ├── controller │ └── OrderController.java ├── service │ …

使用frp通过SSH访问内网机器

frp是一个开源的内网穿透反向代理工具&#xff0c;支持传输层的tcp/udp协议&#xff0c;也支持应用层的http/https协议。 服务端 服务端下载安装 在有公网地址的机器上下载并解压。 wget -c https://github.com/fatedier/frp/releases/download/v0.58.0/frp_0.58.0_linux_a…

odoo16 银行对账单导入改造

解决问题: odoo原生功能的话 是不能在系统上临时处理文件内容的&#xff0c;只会提示文件内容格式不对。 原始文件格式 在头部与尾部 格式问题&#xff0c;例如csv文件和 C53 文件&#xff0c;做一个前置弹框处理数据之后再导入 camt效果: csv效果:

汇聚荣电商:拼多多开店需要多少费用?

想要在拼多多这个巨大的电商平台上开一家属于自己的店铺&#xff0c;很多创业者都会关心一个问题&#xff1a;开店需要多少费用?答案并不复杂&#xff0c;但背后的经营哲学和策略却值得深究。接下来&#xff0c;让我们从四个不同的方面来详细探讨这个问题。 一、开店成本分析 …

通过vue2来类比学习vue3

需求&#xff1a;之前有vue2基础&#xff0c;需要学习使用vue3&#xff1b;当然小白也可以&#xff08;建议先学习vue2&#xff09; 思路&#xff1a;如果已经学习完vue2&#xff0c;那么vue3直接就是小case 一、vue3页面结构&#xff08;归纳为三种&#xff09; 1.传统的vu…