【项目一】基于pytest的自动化测试框架day1

day1不涉及编写代码,只简单梳理接口测试相关的概念。

  • day1
    • 接口测试的本质:功能测试的一部分
    • 测试用例的设计与实现
    • 接口调试与自动化:从postman到持续集成
    • 补充概念

day1

接口测试的本质:功能测试的一部分

接口测试是功能测试的一部分,本质是将测试的对象从用户界面转移到了应用程序接口上。

测试用例的设计与实现

接口测试的第一步,从来都是获取接口文档。一个完整的接口文档通常包含以下几部分

  • 接口名词
  • 接口地址
  • 请求方法(GET,POST,PUT,DELETE等)
  • 请求头信息
  • 请求参数(必选参数与可选参数)
  • 返回值以及数据结构

测试用例的设计围绕如何验证接口的功能暂开,通常从以下几个方面入手:

  1. 单接口测试:验证某一个接口在不同参数组合下的行为是否符合预期。测试点包括:
  • 正向测试:使用正确的参数进行请求,验证返回值是否符合预期。
  • 反向测试:使用错误或异常参数进行请求,验证接口是否能正确处理异常情况。
  • 边界测试:例如对于要求固定长度的参数(如身份证号),测试其在不同长度下的响应情况。
  1. 业务逻辑测试:验证多个接口之间的协同工作。例如商品下单流程设计多个接口,如库存检查、订单创建、支付确认等。这些接口之间存在依赖关系,测试是需要保证每个步骤的返回值都正确传递给下一个接口。

接口调试与自动化:从postman到持续集成

postman、jmeter等可以帮助我们快速验证接口的功能。通过这些工具,可以确认接口是否正常工作,参数是否正确传递,以及返回值是否符合预期。自动化测试的实现通常是将手动测试的步骤脚本化,并在代码中实现。
例如,使用python的requests库,可以轻松地编写自动化测试脚本,并将这些脚本集成到持续集成(CI)系统中,如Jenkins、GitLab CI等。通过CI,我们可以设定每日定时执行测试,并将测试结果推送到团队的沟通工具(如钉钉、Slack)中,确保所有成员都能及时了解到项目的健康状态。

补充概念

DevOps:
一种将开发、运维结合的文化和实践方法。其目标是通过协作和自动化来提高软件交付的速度、频率和可靠性。DevOps 强调持续交付(CD)和持续部署(CI/CD),即通过自动化构建、测试和部署,确保代码能够快速、安全地推向生产环境。

自动化测试在DevOps中的作用:
自动化测试在 DevOps 流程中至关重要。通过自动化测试,可以在每次代码变更后立即验证其正确性,减少引入新 bug 的风险。自动化测试的主要作用包括:

  • 回归测试:确保新代码不会破坏已有功能
  • 持续集成:在每次代码提交时自动运行测试,快速发现和修复问题
  • 持续交付:确保代码在交付前通过所有测试,从而减少部署后的问题

DevOps工具链中的自动化测试:
在 DevOps 工具链中,自动化测试通常与持续集成/持续交付工具结合使用。例如,Jenkins 是一个广泛使用的 CI/CD 工具,它可以自动化地构建、测试和部署代码。通过 Jenkins,测试工程师可以设置流水线,在代码每次变更时自动运行测试并生成报告。

测试驱动开发(TDD):
测试驱动开发(TDD)是一种软件开发流程,强调先编写测试用例,然后编写最小量的代码来通过这些测试,流程通常是:

  • 编写一个失败的测试:根据需求编写一个测试用例,测试当前未实现的功能。
  • 编写通过测试的代码:编写代码通过刚刚的测试。
  • 重构:优化代码,同时确保所有测试继续通过。

TDD有助于确保代码的每个部分都是经过测试的,并且开发人员能够在早期阶段发现问题。

行为驱动开发(BDD):
行为驱动开发是一种在TDD基础上发展出来的开发流程。BDD强调在开发前,开发人员、测试人员和业务人员共同定义系统的行为,即用户故事。BDD 通常使用自然语言编写测试用例,使其更容易被非技术人员理解。例如:

• “当用户登录成功后,应该跳转到主页。”

BDD 的主要工具包括 Cucumber 和 Behave,这些工具允许测试用例以人类可读的形式编写,并且能够自动运行。

从TDD/BDD到CI/CD:
现代软件开发往往将TDD或BDD与CI/CD流程结合起来,以实现高效的测试和交付。具体流程如下:

  • TDD/BDD流程:开发人员在编写代码之前,首先编写测试(TDD)或行为描述(BDD)
  • 持续集成(CI):每次代码提交后,CI工具(如jenkins)自动运行所有测试,确保代码符合预期
  • 持续交付/持续部署(CD):通过CI工具,代码在所有测试通过之后被自动部署到生产环境,或准备好进行手动部署。

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

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

相关文章

每个python程序员都应该早点知道的 6 个 Python 函数

在编程中,默认参数的引入使得函数调用更为灵活,不仅允许开发者在特定情况下省略某些非必需参数,同时也强调了对参数与实际传递值(即论点)之间区别的理解,这对于掌握函数工作机制至关重要。 此外&#xff0…

nnunetv2系列:使用默认的预测类推理2D数据

nnunetv2系列:使用默认的预测类推理2D数据 这里参考源代码nnUNet/nnunetv2/inference/predict_from_raw_data.py中给的示例进行调整和测试。 代码示例 from torch import device from nnunetv2.inference.predict_from_raw_data import nnUNetPredictor# from nn…

VScode 的简单使用

目录 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 1. VScode 的使用 1.1 常用插件 1.2 常用快捷键 也可以“ CTRLD ”;使用“CTRL滚轮”即可; ctrl /-,是用来展开/收起代码的; 比如:js 的多行注释是 shiftalt…

[数据集][目标检测]西红柿缺陷检测数据集VOC+YOLO格式17318张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):17318 标注数量(xml文件个数):17318 标注数量(txt文件个数):17318 标…

AV1 Bitstream Decoding Process Specification:术语和定义

原文地址:https://aomediacodec.github.io/av1-spec/av1-spec.pdf没有梯子的下载地址:AV1 Bitstream & Decoding Process Specification摘要:这份文档定义了开放媒体联盟(Alliance for Open Media)AV1视频编解码器…

使用Bert模型优化Padding策略:加速文本分类训练

文章目录 摘要介绍导包模型datasetBertCLS速度对比代码开源地址 摘要 本文探讨了如何通过优化Padding策略,提高基于Bert的文本分类模型的训练速度。我们比较了两种不同的Padding方式:一种是将输入数据统一填充到最大长度512,另一种是只将每个…

UE4_后期处理五—饱和度调整、隔离、扭曲、重影

一、色彩饱和度调整: 原图 后期处理材质节点: 效果图: 可以根据参数saturation调整饱和还是去饱和。 当saturation为1时:去饱和度,如下图: 当saturation为0时:原始的一个状态,如下…

Debian安装Nodejs与npm

仅做记录,apt install nodejs 只会安装 Node.js 本身,而不会自动安装 npm sudo apt install -y nodejssudo apt install -y npm

展会通过智慧客流统计分析优化运营策略-讯鹏科技

在当今数字化高速发展的时代,展会行业也在积极探索利用智慧科技进行转型与升级。其中,智慧客流统计分析成为了展会优化运营策略的关键要素。 智慧客流统计分析首先为展会提供了精准的数据支撑。通过先进的传感器、摄像头等设备,能够实时、准确…

常用的jdk下载地址

jdk下载地址 安装方式可以看之前的博客: mac安装jdk oracle 版本:https://www.oracle.com/java/technologies/downloads/ Eclipse Temurin版本:https://adoptium.net/zh-CN/temurin/releases/ 阿里版本: github:htt…

PyCharm修改背景颜色、修改字体大小+Python常用快捷键+Python常见的运算符

文章目录 PyCharm软件的使用1. 修改背景颜色和字体大小1.1 修改背景颜色1.2 修改字体大小 2. 常用的快捷键3. 常见的运算符3.1 算术运算符3.2 赋值运算符3.3 比较运算符3.4 逻辑运算符 PyCharm软件的使用 1. 修改背景颜色和字体大小 1.1 修改背景颜色 1.2 修改字体大小 2. 常…

图文并茂带你理解Java的SPI机制

目录 一、Java的SPI机制1、什么是Java的SPI ?2、JavaSPI 代码示例 (使用Maven项目演示)3、 JavaSPI 机制的核心-ServiceLoader4、实现自己的ServiceLoader5、Java中还有哪些SPI实现? 一、Java的SPI机制 1、什么是Java的SPI ? SPI全称 Servi…

字符串API

字符串作为经常使用的数据类型,它们的API种类繁多,为了提升效率,不少API的底层实现可能会用更接近机器优化的代码实现。 不同语言的实现 用于内核或驱动调用的copy/compare API,大部分有机器架构汇编代码实现以加速处理&#xff…

中秋快到了,要给哪些国外客户送祝福(附贺卡模板)

马上就要中秋节了,在这里提前祝小伙伴们中秋节快乐,身体健康,阖家团圆,业绩越来越好,公司越来越好,一切都越来越好! 中秋节是我们非常重要的几个传统节日之一了,除了我们自己庆祝之…

计算机网络练级第一级————认识网络

目录 网络搁哪? 网络的发展史(了解) 独立模式: 网络互联: 局域网时期: 广域网时期: 什么是协议 TCP/IP五层/四层模型 用官话来说: 我自己的话来说 第一层应用层&#xff1…

java中JTS对空间数据Geometry进行坐标系投影转换

java中JTS对空间数据Geometry进行坐标系投影转换 代码: /*** Description: 用JTS对Geometry空间数据进行坐标系投影转换** Param: [params]* Return: Geometry* Author yanghaoxing* Date 2024/9/10 14:54*/public Geometry getGeometryForlong(Geometry geometr…

Python+selenium自动化元素定位防踩坑(建议收藏)

踩坑一:StaleElementReferenceException selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document 异常原因: 意思是,引用的元素已过期。原因是页面…

学习记录之C语言学习笔记1

1. 数据类型 基本数据类型:整型(int)、浮点型(float)、字符型(char)和双精度浮点型(double)。 派生数据类型:数组、结构体、联合体和枚举。 void类型…

soup.find(‘div‘)获取的数据长度为3,为什么1和3都是空的?

用beautifulSoup中的find(‘div’)可以获取一个div数据,为什么用len()计数是显示长度为3? 实际在打印输出时,1和3又没有内容输出?用print(div【0】)和print&…

Java小白一文讲清Java中集合相关的知识点(七)

LinkedHashSet LinkedHashSet是HashSet的子类 LinkedHashSet底层是一个LinkedHashMap,底层维护了一个数组双向链表 而在之前讲的HashSet中的链表是单向的哈,注意区分! LinkedHashSet根据元素的hashcode值来决定元素的存储位置,同时使用链表…