接口测试框架实战 | 流程封装与基于加密接口的测试用例设计

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 接口测试框架实战 | 流程封装与基于加密接口的测试用例设计

接口测试仅仅掌握 Requests 或者其他一些功能强大的库的用法,是远远不够的,还需要具备能根据公司的业务流程以及需求去定制化一个接口自动化测试框架的能力。所以,接下来,我们主要介绍下接口测试用例分析以及通用的流程封装是如何完成的。

首先在做用例分析之前,可以通过追查公司一年来所有的故障原因,定位问题起因,或者通过与 CTO、产品经理、研发、运维、测试调查,得到质量痛点,还可以分析业务架构、流程调用,以及监控系统了解到业务的使用数据,从而得到质量需求。

得到质量需求之后,通过与产品经理、项目经理、研发总监等对接后得知待测业务范围、业务场景用例、业务接口分析,从而确定公司的测试计划。将测试计划与质量需求结合进行分析,就可以开始进行业务用例的设计,而接口测试用例分析,也在其内。

接口封装思想主要分为 3 个大维度:配置、接口封装、业务流程。其中:

  • 配置主要用作根据配置文件获取初始配置和依赖;
  • 接口封装遵循 APIObject 设计模式,对接口的调用进行抽象封装;
  • 业务流程则负责数据初始化、业务用例设计,包含有多个 API 形成的流程定义,不要再包含任何接口实现细节、以及断言。
    下面将会与实战案例结合,进行详细的介绍。
    由于信息安全原因,许多接口在传输的时候会对请求与响应进行加密处理,如果直接对这部分数据做断言显然是行不通的。还需要对这部分接口额外进行解密的处理之后,才可以对已解密的接口进行断言。
    在进行实战之前,需要先准备一个对响应加密的接口。对它发起一个 get 请求后,得到一个加密过后的响应信息。
    先准备一个 JSON 格式 demo:
    使用 base64 对其做加密,得到一个加密后的文件 demo64.txt
    使用 Python 命令在 “demo64.txt” 所在目录启动一个服务
    启动后的样子如图:

如果请求成功的话就代表环境已经准备成功

调用 base64,直接对返回的请求做解密,即可得到解密后的响应,将解密后的响应转为 JSON 格式,此时就可以对这个返回值做断言且不会报错了。

这样的写法显然不够优雅,如果被测接口的协议发生变化,Requests 库无法支持改变后的协议,需要调用别的第三库发送请求信息,则还是需要修改底层的源码。碰到这种情况,可以增加一层封装,构造一层更加通用的发送方法。

首先需要通过一个字典的结构体,保存所有的请求信息,包括发送的协议、解码方式、请求 method 等等,而这种字典形式的结构体也为后面的数据驱动改造做好了一个重要的铺垫。

通过请求信息的结构体中的schema,添加判断条件,去选择不同的请求协议。举个例子,如果 schema 为“http”的话,就选择调用被封装的 requests 库。

调用在ApiRequest类中的send方法发送请求并进行断言

如果面对不同的算法,还需要修改底层的源码,所以需要把算法封装。需要使用哪个算法,就使用哪个。封装的思想与上面相同。首先在字典结构体中添加一个 encoding 字段,用来判断选择的不同的加密条件。

还是通过请求信息的结构体中的 encoding,添加判断条件,去选择不同的解密方式。

首先需要明确在面对一个加密的响应结果,可以使用什么样的处理方式:

1.如果知道使用的是哪个通用加密算法的话,可以自行解决。

2.如果不了解对应的加密算法的话,可以让研发提供加解密的 lib。

3.如果既不是通用加密算法、研发也无法提供加解密的 lib 的话,可以让加密方提供远程解析服务,这样算法仍然是保密的。

本文主要讲的是在了解使用加密算法的情况下,如何处理这样的解密算法。但是封装的思路都是相通的,不管是面对哪种情况,都可以通过格式化的数据,指明数据的内容,并通过一层逻辑的封装,将加解密或者选择的协议封装进去。

[更多技术文章](https://qrcode.ceba.ceshiren.com/link?name=article&project_id=qrcode&from=bjhao&timestamp=1650525227)

相关文章
|
9天前
|
敏捷开发 Java 测试技术
探索软件测试中的自动化测试框架
在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的不断进步和软件项目的日益复杂化,传统的手动测试方法已经无法满足高效、准确的测试需求。自动化测试作为一种提高测试效率和质量的有效手段,越来越受到开发者和测试者的青睐。本文将深入探讨自动化测试框架的重要性、常见的自动化测试工具以及如何选择合适的自动化测试框架。
35 10
|
11天前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
28 1
|
6天前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
24 6
|
2天前
|
机器学习/深度学习 人工智能 Java
探索软件测试中的自动化框架选择与优化策略####
本文深入探讨了在软件测试领域,面对众多自动化测试框架时,如何根据项目特性、团队技能及长远规划做出最佳选择,并进一步阐述了优化这些框架以提升测试效率与质量的策略。通过对比分析主流自动化测试框架的优劣,结合具体案例,本文旨在为测试团队提供一套实用的框架选型与优化指南。 ####
|
2天前
|
敏捷开发 前端开发 Java
软件测试中的自动化测试框架选择与实践
在当今软件开发生命周期中,自动化测试已成为提升软件质量和开发效率的关键手段。本文旨在探讨自动化测试框架的选择标准及其在实际项目中的应用实践。通过对主流自动化测试框架的分析比较,结合具体案例,本文将阐述如何根据项目需求和团队特点选择合适的自动化测试工具,并分享实施过程中的经验教训。
9 1
|
9天前
|
SQL 安全 算法
网络防御的艺术:探索安全漏洞、加密技术与培养安全意识
【10月更文挑战第42天】在数字时代的浪潮中,网络安全已成为我们不可忽视的盾牌。本文将带您深入探索常见的网络漏洞、加密技术的奥秘以及如何提升个人和组织的安全意识。我们将通过实际案例分析,揭示黑客攻击的策略和防御方法,同时提供实用的安全建议,旨在为读者打造一道坚固的网络安全防线。
69 56
|
4天前
|
安全 网络安全 数据安全/隐私保护
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在数字化时代,网络安全和信息安全已成为我们生活中不可或缺的一部分。本文将介绍网络安全漏洞、加密技术和安全意识等方面的知识,并提供一些实用的技巧和建议,帮助读者更好地保护自己的网络安全和信息安全。
|
4天前
|
安全 算法 网络安全
网络安全与信息安全:关于网络安全漏洞、加密技术、安全意识等方面的知识分享
在当今数字化时代,网络安全和信息安全已经成为了全球关注的焦点。随着技术的发展,网络攻击手段日益狡猾,而防范措施也必须不断更新以应对新的挑战。本文将深入探讨网络安全的常见漏洞,介绍加密技术的基本概念和应用,并强调培养良好安全意识的重要性。通过这些知识的分享,旨在提升公众对网络安全的认识,共同构建更加安全的网络环境。
|
4天前
|
SQL 安全 算法
网络安全的隐形盾牌:漏洞防御与加密技术
在数字化时代,网络安全成为保护个人隐私和公司资产不可或缺的一部分。本文将探讨网络安全中的常见漏洞、加密技术的重要性以及提升安全意识的必要性。通过分析不同类型的网络攻击案例,我们将了解如何识别和应对这些威胁。同时,文章还将介绍基础的加密技术概念,并通过代码示例展示如何在实际中应用这些技术来保护数据。最后,讨论为何提高个人和组织的安全意识是防范网络威胁的关键。
|
6天前
|
SQL 监控 安全
网络安全的盾牌与利剑:漏洞防御与加密技术解析
在数字时代的洪流中,网络安全如同一场没有硝烟的战争。本文将深入探讨网络安全的核心议题,从网络漏洞的发现到防御策略的实施,以及加密技术的运用,揭示保护信息安全的关键所在。通过实际案例分析,我们将一窥网络攻击的手段和防御的艺术,同时提升个人与企业的安全意识,共同构筑一道坚固的数字防线。
下一篇
无影云桌面