当前位置: 首页 > article >正文

【项目一】基于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.kler.cn/a/291100.html

相关文章:

  • 写SQL太麻烦?免费搭建 Text2SQL 应用,智能写 SQL | OceanBase AI 实践
  • sql server索引优化语句
  • 3D Gaussian Splatting for Real-Time Radiance Field Rendering-简洁版
  • docker简单命令
  • 将4G太阳能无线监控的视频接入电子监控大屏,要考虑哪些方面?
  • day5,数据结构,单向,双向,循环链表
  • 中锂天源卡车电瓶:绿色能源驱动未来物流
  • go常用代码
  • 数据仓库系列18:如何建立一个有效的元数据管理体系?
  • django之ForeignKey、OneToOneField 和 ManyToManyField
  • 惠中科技综合光伏清洗技术:引领绿色清洁新时代
  • 【后端开发】PHP、go语言、Java、C++、Linux开发等急招中......
  • Windows电脑获取目录及子目录结构及包含文件名的命令
  • notepad++将换行替换成空
  • JS设计模式之“神奇的魔术师” - 简单工厂模式
  • 【Python篇】PyQt5 超详细教程——由入门到精通(中篇一)
  • 栈和队列的习题详解(2):用队列实现栈
  • 注册中心技术选型
  • 将Google Chrome或Microsoft Edge浏览器的地址栏隐藏的方法
  • 【GPT】Coze使用开放平台接口-【1】创建插件
  • 省钱的开源项目「GitHub 热点速览」
  • 智能未来:低代码与AI如何重塑企业应用开发
  • PostgreSQL添加远程用户访问
  • 经典大语言模型解读(2):生成式预训练的先锋GPT-1
  • 【RAG】LongRAG:利用长上下文LLMs增强检索增强生成
  • 假期学习----iOS多线程