【项目一】基于pytest的自动化测试框架day1
day1不涉及编写代码,只简单梳理接口测试相关的概念。
- day1
- 接口测试的本质:功能测试的一部分
- 测试用例的设计与实现
- 接口调试与自动化:从postman到持续集成
- 补充概念
day1
接口测试的本质:功能测试的一部分
接口测试是功能测试的一部分,本质是将测试的对象从用户界面转移到了应用程序接口上。
测试用例的设计与实现
接口测试的第一步,从来都是获取接口文档。一个完整的接口文档通常包含以下几部分
- 接口名词
- 接口地址
- 请求方法(GET,POST,PUT,DELETE等)
- 请求头信息
- 请求参数(必选参数与可选参数)
- 返回值以及数据结构
测试用例的设计围绕如何验证接口的功能暂开,通常从以下几个方面入手:
- 单接口测试:验证某一个接口在不同参数组合下的行为是否符合预期。测试点包括:
- 正向测试:使用正确的参数进行请求,验证返回值是否符合预期。
- 反向测试:使用错误或异常参数进行请求,验证接口是否能正确处理异常情况。
- 边界测试:例如对于要求固定长度的参数(如身份证号),测试其在不同长度下的响应情况。
- 业务逻辑测试:验证多个接口之间的协同工作。例如商品下单流程设计多个接口,如库存检查、订单创建、支付确认等。这些接口之间存在依赖关系,测试是需要保证每个步骤的返回值都正确传递给下一个接口。
接口调试与自动化:从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工具,代码在所有测试通过之后被自动部署到生产环境,或准备好进行手动部署。
相关文章:
【项目一】基于pytest的自动化测试框架day1
day1不涉及编写代码,只简单梳理接口测试相关的概念。 day1接口测试的本质:功能测试的一部分测试用例的设计与实现接口调试与自动化:从postman到持续集成补充概念 day1 接口测试的本质:功能测试的一部分 接口测试是功能测试的一部…...
如何下载和安装 Notepad++
Notepad 是一款功能强大的开源文本编辑器,广泛用于代码编写和文本编辑。以下是 Notepad 的下载安装教程: 下载 Notepad 访问官方网站 打开你的网络浏览器,访问 Notepad 的官方网站:https://notepad-plus-plus.org/ 选择下载选项…...

笔记:如何使用Process Explorer分析句柄泄露溢出问题
一、目的:如何使用Process Explorer分析句柄泄露溢出问题 使用 Process Explorer 分析句柄泄漏问题是一个非常有效的方法。句柄泄漏通常是由于应用程序在创建系统资源(如文件、注册表项、GDI 对象等)后没有正确释放这些资源。以下是使用 二、…...
HTTP/2
http相关知识点 HTTP/2是超文本传输协议(HTTP)的第二个主要版本,旨在解决HTTP/1.x版本中存在的一些性能限制和效率问题。HTTP/2由互联网工程任务组(IETF)的HTTP工作组开发,最终在2015年作为RFC 7540正式发…...

如何在算家云搭建ComfyUI(AI绘画)
一、ComfyUI简介 ComfyUI 是一个强大的、模块化的 Stable Diffusion 界面与后端项目。该用户界面将允许用户使用基于图形/节点/流程图的界面设计和执行高级稳定的扩散管道。该项目部分其它特点如下: 全面支持 SD1.x,SD2.x,SDXL,…...

公司的企业画册如何制作?
企业画册是公司形象和产品服务展示的重要载体,一个制作精良的企业画册不仅能展示公司的实力,也能提升客户对公司专业度的认可。以下是制作企业画册的步骤和要点,帮助你的公司画册既美观又实用。 1.要制作电子杂志,首先需要选择一款适合自己的…...

13、Django Admin创建两个独立的管理站点
admin文件 from .models import Epic, Event, EventHero, EventVillain from django.contrib.admin import AdminSiteclass EventAdminSite(AdminSite):site_header "Events管理"site_title "欢迎您!"index_title "管理员"even…...

使用docker compose一键部署 Openldap
使用docker compose一键部署 Openldap LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是一种用于访问分布式目录服务的网络协议,OpenLDAP 是 LDAP 协议的一个开源实现,由 OpenLDAP 项目提供&#x…...

网站代运维与建设:HTTP虚拟专线的优势
网站代运维与建设:HTTP虚拟专线的优势 企业和个人越来越依赖于网站来展示品牌形象、提供服务和与客户互动。然而,网站的建设和运维往往需要投入大量时间和资金,尤其是在服务器费用和技术维护方面。本文将探讨如何通过使用HTTP虚拟专线来降低…...
奇异递归模板模式(Curiously Recurring Template Pattern)
奇异递归模板模式(Curiously Recurring Template Pattern) - 知乎 (zhihu.com) 本文来自上面的文章!!!本菜鸡学习和记录一下。 CRTP是C模板编程时的一种惯用法:把派生类作为基类的模板参数。 1.静态多态 #include <iostrea…...

【ArcGIS Pro实操第一期】最小成本路径(Least-cost path)原理及实操案例
ArcGIS Pro实操第一期:最小成本路径原理及实操案例 概述(Creating the least-cost path)1.1 原理介绍1.2 实现步骤1.3 应用案例 2 GIS实操2.1 工具箱简介2.1.1 成本路径(Cost path)2.1.2 成本距离(Cost dis…...
探索C++编程技巧:计算两个字符串的最长公共子串
探索C编程技巧:计算两个字符串的最长公共子串 在C面试中,考官通常会关注候选人的编程能力、问题解决能力以及对C语言特性的理解。一个常见且经典的问题是计算两个字符串的最长公共子串(Longest Common Substring, LCS)。本文将详…...
等保2.0--安全计算环境--TiDB数据库
在使用本博客提供的学习笔记及相关内容时,请注意以下免责声明:信息准确性:本博客的内容是基于作者的个人理解和经验,尽力确保信息的准确性和时效性,但不保证所有信息都完全正确或最新。非专业建议:博客中的内容仅供参考,不能替代专业人士的意见和建议。在做出任何重要决…...

【unity实战】使用新版输入系统Input System+Rigidbody实现第三人称人物控制器(附项目源码)
最终效果 前言 使用CharacterController实现3d角色控制器,之前已经做过很多了: 【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用 【unity实战】C…...

代码随想录算法训练营Day03 | 链表理论基础、203.移除链表元素 、707.设计链表、206.反转链表
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 链表理论基础203.移除链表元素思路与重点 707.设计链表思路与重点 206.反转链表思路与重点 链表理论基础 C/C的定义链表节点方式: // 单链表 struct L…...
【总结】CSS(SCSS) 不常用属性
1、设置 antd Meta 组件中 title 过长自动换行: .ant-card-meta-title {white-space: normal; /* 允许文本换行 */overflow: visible; /* 防止内容被截断 */text-overflow: clip; /* 禁用文本省略号 */} 2、选择器书写: .QR {&:hover {}} 3、设置文…...

电位计的模拟
该电位计的内部电阻在 270 范围内以“几乎”线性的方式从大约 15 欧姆变化到 220 欧姆。该设备的电流和电阻特性如下表所示: 计算曲线拟合以插入电位计欧姆电阻的非线性趋势非常简单。电位曲线如下: R16.2145((1.55848sqrt(x))*sin((-0.038222)*(-45.77…...
OSI七层网络协议
1、OSI各层数据的名称 7-5,应用层、表示层、会话层都叫做协议数据单元(PDU, Protocol Data Unit)。 4,传输层叫数据段(Segment)。 3,网络层叫数据包/报文(Packet)。 2,数据链路层叫数据帧(Frame)。 1,物理层叫比特流(…...

U盘提示需要格式化才能使用怎么办?教你轻松应对
U盘作为一种便捷的数据存储设备,广泛应用于日常工作和生活中。然而,有时我们会遇到U盘插入电脑后提示需要格式化才能使用的情况,这让人倍感焦虑,因为格式化往往意味着数据丢失。不过,在采取极端措施之前,我…...

Atom编辑器:曾经的效率提升利器,终将被新技术取代
Atom编辑器:曾经的效率提升利器,终将被新技术取代 哪个编程工具让你的工作效率翻倍 ? 那么对我来说答案是 Atom。 作为一名Python开发者,我一直依赖Atom编辑器进行日常编程工作。在漫长的开发旅程中,Atom成为了我代码…...

国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...

免费PDF转图片工具
免费PDF转图片工具 一款简单易用的PDF转图片工具,可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件,也不需要在线上传文件,保护您的隐私。 工具截图 主要特点 🚀 快速转换:本地转换,无需等待上…...