【项目一】基于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工具,代码在所有测试通过之后被自动部署到生产环境,或准备好进行手动部署。