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

 

什么是数据驱动测试

据驱动测试是一种测试方法,其中测试数据和测试逻辑是分开的,测试数据被存储在外部源中(如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.hqwc.cn/news/700453.html

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

相关文章

ROS2入门21讲__第03讲__ROS2安装方法

目录 前言 Linux系统简介 Ubuntu系统简介 Ubuntu虚拟机安装 1. 下载系统镜像 2. 在虚拟机中创建系统 3. 设置虚拟机硬盘大小 4. 设置Ubuntu镜像路径 5. 启动虚拟机 6. 设置用户名和密码 7. 等待系统安装 8. 完成安装 ROS2系统安装 1. 设置编码 2. 添加源 3. 安装…

2024年5月面试准备

2024年5月面试准备 资料来源Java基础泛型注解异常反射SPI机制Java集合CollectionMap 并发基础线程并发关键字并发集合Lock核心类并发集合核心类原子类核心类线程池核心类ScheduledThreadPoolExecutorForkJoinPoolFokJoinTask JUC原子类: CAS, Unsafe和原子类详解JUC 工具类 Jav…

鸿蒙内核源码分析(内核态锁篇) | 如何实现快锁Futex(下)

本篇为快锁下篇,说清楚快锁在内核态的实现,解答以下问题,它们在上篇的末尾被提出来。 鸿蒙内核进程池默认上限是64个,除去两个内核进程外,剩下的都归属用户进程,理论上用户进程可以创建很多快锁&#xff0…

Android开发,日志级别

5个日志级别 Verbose (VERBOSE): 这是最低的日志级别,用于输出最为详尽的信息,包括开发和调试过程中的各种细节。在Log类中对应的方法是Log.v()。Debug (DEBUG): 此级别用于输出调试信息,帮助开发者理解程序运行流程或状态。通过Log.d()方法…

保研机试之【文件描述符】

A选项: 一个文件描述符对应着系统级文件表中的一项 B选项 C选项 D选项 E选项 F选项 综上,我认为这道题选择B、C、E、F~

九、e2studio VS STM32CubeIDE之const修饰BSP函数的形参

目录 一、概述/目的 二、通过串口发送函数对比 2.1 stm32 hal库 VS renesas FSP 2.2 const修改函数形参的作用 2.2.1 值传递-副本 2.2.2 指针传递(就近原则) 2.2.2.1 const修饰:*P 2.2.2.2 const修饰:指针变量P 2.2.2.3 …

[牛客网]——C语言刷题day2

答案:B 解析: char *p[10] 是指针数组,数组里存放了10个指针,在64位系统下指针占8个字节,所以sizeof(p) 10 * 8 80. char (*p1)[10]是数组指针,p1是一个指向存放10个char类型的数组的指针,所以sizeof(p1) 8. 答案:B 解析&#xff1a…

Vue3组件库开发项目实战——03封装Button组件/输出vitePress文档

Vue3组件库开发项目实战——01组件开发必备知识导学-CSDN博客 Vue3组件库开发项目实战——02项目搭建(配置Eslint/Prettier/Sass/Tailwind CSS/VitePress/Vitest)-CSDN博客 在前面两篇博客中,我分别介绍了组件库开发必学知识,以及…

Oracle sqlnet.ora配置文件

一、作用 这里可以看官网解释Parameters for the sqlnet.ora File (oracle.com) 该文件是配置文件配置文件。它驻留在客户端计算机和数据库服务器上。配置文件使用此文件进行存储和实现。可以使用文件中的访问控制参数配置数据库服务器。这些参数根据协议.sqlnet.orasqlnet.o…

CVHub | CVPR 2024 | 英伟达发布新一代视觉基础模型: AM-RADIO = CLIP + DINOv2 + SAM

本文来源公众号“CVHub”,仅用于学术分享,侵权删,干货满满。 原文链接:CVPR 2024 | 英伟达发布新一代视觉基础模型: AM-RADIO CLIP DINOv2 SAM 标题:《AM-RADIO: Agglomerative Vision Foundation Model Reduce Al…

【从零开始实现stm32无刷电机foc】【理论】【1/6 电机旋转本质】

目录 电机旋转需要什么样的力?怎么产生力矢量?怎么产生任意的线圈磁矢量? 电机旋转需要什么样的力? 电机切向存在受力,电机就会旋转。 进一步查看电机结构,分为转子和定子,大部分情况下&#…

【opencv】图像拼接实验

实验环境:anaconda、jupyter notebook 实验用到的包:opencv、matplotlib、numpy 注:opencv在3.4.2之后sift就不是免费的了 我用的是3.4.1.15版本 实验使用到的图片 一、sift函数获取特征值 读入图片 book cv2.imread(book.png, cv2.IMRE…