测试开发必看--从入门到超神--第一篇

测试基础

技术方向:功能测试,接口测试,自动化測试,性能测试,测试开发等等
业务方向:银行测试,车载测试,大数据测试,软硬件结合测试等等

为了使“接口测试基础”这一小节内容更加丰富且逻辑清晰,我们可以按照以下结构进行填充和优化:


1、接口测试基础

为什么要进行接口测试?

接口测试是软件开发过程中不可或缺的一环,其重要性体现在以下几个方面:

  1. 前后端分离开发

    • 在现代Web应用中,前端(客户端)和后端(服务器端)通常采用分离的架构模式。这种架构使得前端和后端可以独立开发和部署,但也要求两者之间通过定义良好的API接口进行通信。接口测试确保了前端发送的数据能被后端正确接收和处理,并保证后端返回的数据符合前端预期。
  2. 项目间的依赖与交互

    • 实际项目很少孤立存在,多数情况下需要与其他系统或服务进行数据交换。例如,电商平台可能依赖支付网关、物流系统等多个第三方服务。接口测试验证了这些外部调用的有效性和稳定性,确保不同系统之间的数据传递准确无误,维持业务流程的连续性。
  3. 安全考虑

    • 安全性是任何信息系统的关键考量之一。接口作为系统对外暴露的服务入口,容易成为攻击者的靶子。因此,接口测试不仅要检查功能正确性,还要评估接口的安全特性,如身份验证、授权机制、数据加密等,以防止潜在的安全漏洞被利用。

接口测试测什么?

接口测试主要关注以下几个关键点:

  • 参数校验:确认接口接收到的所有输入参数是否符合预期格式、类型和范围。这包括必填项的存在性检查、数值的合理性验证以及字符串长度限制等。

  • 输出结果的正确性:验证接口返回的数据是否满足业务逻辑要求,包括但不限于响应码、响应体的内容格式及其语义一致性。

  • 容错处理:模拟各种异常场景,比如无效参数、网络中断或超时等情况,测试接口能否妥善处理错误并给出恰当的反馈信息,帮助开发者快速定位问题所在。

  • 权限控制:确保只有经过适当授权的用户才能访问特定接口,防止未授权操作导致的数据泄露或其他安全风险。

以USB接口为例,它涉及硬件层面上的数据传输,而我们所讨论的项目接口则是基于HTTP/HTTPS协议的RESTful API或者RPC风格的服务接口,它们在概念上类似——都是用于两个实体间的信息交换,只不过后者更侧重于软件层面的交互。

接口测试工具有哪些呢?

市场上存在多种成熟的接口测试工具,每种工具都有其特点和适用场景:

  • JMeter:Apache JMeter是一个开源的性能测试工具,支持负载测试和压力测试,特别适合用于评估Web应用程序的性能。它可以模拟大量并发用户访问,帮助识别系统的瓶颈和极限容量。

  • Postman:Postman是一款广受欢迎的API开发协作平台,提供了从API设计、测试到文档生成的一站式解决方案。它拥有直观的图形界面,方便团队成员共同管理和调试API。

  • Apifox:国内知名的API管理平台,集成了API文档编辑器、Mock Server、自动化测试等功能,旨在简化API生命周期管理过程。它的优势在于强大的社区支持和中文界面,非常适合中国开发者使用。

  • Apipost:另一款国产API调试工具,专注于提供高效的API调试体验。它具备简洁易用的操作界面和丰富的插件生态,能够很好地满足日常开发中的接口测试需求。

选择合适的工具取决于具体的项目需求、团队规模和个人偏好。无论是大型企业级应用还是小型创业项目,找到最适合自己的工具对于提高开发效率和产品质量都至关重要。

2、 Jmeter安装配置以及核心目录讲解

jmeter基于java语言来开发,java需要jdk环境。
windows:
1、安装jdk并且配置jdk的环境变量
2、jmeter只需要解压就可以使用了
Mac:
参考:https://www.jianshu.com/p/bce9077d883c

3、 Jmeter组件和作用域详解

十大组件(元件)

在性能测试工具如JMeter中,组件是构建测试计划的基本单元,每个组件都有其特定的功能,共同协作以完成复杂的测试任务。以下是十个关键组件及其功能说明:

  1. 测试计划(容器)

    • 测试计划作为最顶层的容器,包含了整个测试的所有配置和设置。它定义了全局属性,如线程数、循环次数等,并且可以包含多个线程组和其他子元素。
  2. 线程组(1-N个用户模拟)

    • 线程组用来模拟并发用户的行为。每个线程代表一个虚拟用户,可以在指定的时间内执行一系列操作,如发送HTTP请求或执行数据库查询。
  3. 配置元件(接口配置,协议,服务器信息)

    • 配置元件用于设定与目标系统通信所需的参数,包括但不限于API端点、传输协议(如HTTP/HTTPS)、服务器IP地址及端口号等。这些配置确保了请求能够正确地到达目的地。
  4. 前置处理器(预处理逻辑)

    • 在实际请求之前执行的任何逻辑都可以通过前置处理器实现。这可能涉及到动态生成请求数据、读取文件或其他准备工作,为即将发出的请求做准备。
  5. 逻辑控制器(条件控制与循环)

    • 逻辑控制器允许根据一定的条件来决定是否执行某个请求或者重复执行某些操作。例如,可以通过条件判断来选择性地调用不同的接口,也可以设置循环结构来进行多次请求。
  6. 定时器(延迟控制)

    • 定时器用于引入时间间隔或随机等待时间,模拟真实的用户行为。它们可以帮助缓解瞬时流量高峰,使得负载更加平滑,同时也能测试系统的响应速度。
  7. 取样器(请求执行者)

    • 取样器负责向目标系统发送具体的请求,并记录下每次请求的结果。这是所有测试的核心部分,因为所有的性能指标都是基于取样器所收集的数据。
  8. 后置处理器(结果处理)

    • 请求完成后,后置处理器可以用来解析响应内容、提取有用信息或进行其他后续操作。这对于依赖于前序请求结果的操作特别有用。
  9. 断言(验证机制)

    • 断言用于检查响应是否符合预期的标准,比如状态码是否为200、响应体是否包含特定字符串等。如果断言失败,则认为该次请求未通过测试。
  10. 监听器(结果收集与展示)

    • 监听器用于收集并可视化测试过程中的各种数据,如响应时间、吞吐量、错误率等。它提供了直观的方式让用户了解测试进展和结果。

组件的作用域

组件的作用域决定了其影响范围,即哪些请求或组件会受到该组件配置的影响。理解作用域对于设计合理的测试计划至关重要:

  • 结论一:父级作用域

    • 当一个组件位于另一个组件内部时,它将自动作用于其父组件内的所有请求。例如,在Java请求1下的查看结果树组件可以查看Java请求1的结果。这意味着,放置在一个较高层级的组件会影响其下方的所有子组件。
  • 结论二:同级作用域

    • 同级别的组件之间也可以共享某些配置或资源。例如,在同一个简单控制器下的Java请求1Java请求2查看结果树三个组件中,查看结果树不仅可以查看Java请求1的结果,还能查看Java请求2的结果。这种设计简化了配置管理,避免了重复劳动。
  • 结论三:跨层级作用域

    • 更进一步,低层级的组件还可以影响到更高层级甚至兄弟节点下的子组件。例如,如果在最底层添加了一个查看结果树组件,它可以汇总并展示从Java请求1Java请求4的所有请求结果。这种灵活性使得复杂测试场景下的调试变得更加高效。

⚠️:组件的辈份调整直接拖拽组件就可以。
在这里插入图片描述

4、 Jmeter接口测试实战

场景一:我一个人负责所有的接口,项目规模不大。

1、创建一个线程组,并创建三个元件。
在这里插入图片描述
2、配置组件信息(此处配置了HTTP请求的默认信息)
在这里插入图片描述
在这里插入图片描述
端口默认是80(http),443(https)
⚠️:ip要根据环境来确定,如果有不同的环境的话。
3、发出HTTP-GET请求(请求方式,请求路径,请求参数,请求头):请求参数使用?隔开多个参数使用&连接
在这里插入图片描述
增加查看结果树,查看结果。
在这里插入图片描述
此处是报错;;密码错了。
⚠️:接口文档是后端给的,如果没有,需要自己手动抓包。
4、创建第二个HTTP-POST请求,在消息体数据当中传递,文件就在文件传
在这里插入图片描述

插入SessionID,Token,Cookie三者的关系:

Token、Session ID 和 Cookie 是Web应用中用于管理用户会话和身份验证的三种不同机制,它们之间既有区别又有联系。以下是它们之间的关系及各自的作用:

Token

  • 定义:Token(令牌)是一种自包含的字符串,通常用于表示用户的身份信息。它可以是JWT(JSON Web Token)、OAuth2.0访问令牌等。
  • 特点
    • 无状态:服务器端不需要存储Token的状态信息,所有必要的数据都包含在Token内部。
    • 安全性:Token可以签名或加密,确保其内容不被篡改,并且只有授权方能够解读。
    • 跨域支持:因为Token可以通过HTTP头传递,所以它非常适合SPA(单页应用程序)和微服务架构中的跨域请求。
  • 使用场景:API调用、前后端分离的应用程序、移动应用等。

Session ID

  • 定义:Session ID是一个唯一标识符,用来跟踪用户的会话。当用户登录时,服务器创建一个新的会话并将Session ID返回给客户端。
  • 特点
    • 有状态:服务器端需要保存每个Session ID对应的数据(如用户信息),因此它是有状态的。
    • 依赖Cookie:大多数情况下,Session ID通过Cookie发送给客户端,并在后续请求中自动附带以维持会话。
    • 安全性考虑:由于Session ID存储在服务器端,所以相对更安全;但必须防止Session劫持攻击(如XSS、CSRF)。
  • 使用场景:传统的Web应用程序,其中服务器需要记住用户的状态。

Cookie

  • 定义:Cookie是由服务器发送到用户浏览器的一小段文本信息,浏览器会将这些信息存储起来,并在之后向同一服务器发送请求时附带回去。
  • 特点
    • 持久性:可以根据设置保持一段时间,即使关闭浏览器后仍然有效。
    • 大小限制:单个Cookie的最大尺寸为4KB左右,整个域名下的Cookies总大小也有一定限制。
    • 安全性选项:可以通过HttpOnly属性防止JavaScript访问,通过Secure属性确保仅通过HTTPS传输。
  • 使用场景:除了与Session ID结合用于会话管理外,Cookie还可以用于个性化设置(如语言偏好)、追踪用户行为等。

关系总结

  1. Token vs. Session ID

    • Token通常是无状态的,而Session ID是有状态的。
    • Token可以直接包含用户信息,而Session ID只是一个引用ID,真正的用户信息存储在服务器端。
    • Token更适合分布式系统和移动端应用,而Session ID则广泛应用于传统Web应用。
  2. Cookie与两者的关系

    • Cookie可以用来携带Session ID,从而维持用户会话。
    • 对于Token,虽然理论上可以通过Cookie传递,但更常见的做法是将其放在HTTP头部(如Authorization字段),特别是在SPA和API-first开发模式下。
  3. 安全性考量

    • 在使用Token时,应采取措施保护其机密性和完整性,例如使用HTTPS协议传输。
    • 对于基于Session ID的方案,除了HTTPS之外,还需要关注如何防范各种类型的会话劫持攻击。

⚠️为什么要提这三者呢?因为这个例子当中需要使用到Token来进行身份验证。
想提出什么问题呢?token会随着时间或者使用次数而失去使用状态,所以我们要在请求前获得最新的token。这样就提到了接口关联

接口关联实现的两种方式:

1、jsonpath实现的接口关联。
在这里插入图片描述
选中json提取器作为后置处理器。
在这里插入图片描述
⚠️表达式写法:$表示根节点,.表示取子节点的值
在这里插入图片描述
参数Match No,表示取出结果的第一个值。
参数Names of created variables,表示重命名取值,方便取出,此处命名为www
在这里插入图片描述
⚠️:前提
在这里插入图片描述
⚠️:查看是否取成功
在这里插入图片描述
2、使用正则表达式来实现接口关联(一般是对于HTML页面数据进行取得数据的)。
首先,进行测试,尝试正则表达式能不能成功取出数据。
在这里插入图片描述
左边界+取值+右边界(必须唯一)
在这里插入图片描述

其次,正则表达式取得成功之后,就可以做一个实施,类似于json一样给其起一个别名。
在这里插入图片描述模版在这里插入图片描述
请求头+表单,此处使用到了aaa别名。
在这里插入图片描述

在这里插入图片描述

场景二:协同接口测试中的测试片段

在大型项目中,多个测试人员可能负责不同模块的接口测试。为了提高协作效率和管理复杂性,可以采用“测试片段”这一概念来组织和共享测试用例。

什么是测试片段?

测试片段是指一个包含特定功能或模块测试逻辑的独立部分,它本身不是完整的测试计划,而是整个项目测试计划的一个子集。测试片段不能单独运行,必须与控制器(如模块控制器)结合使用,类似于远程调用的方式。这种设计使得团队成员可以专注于自己负责的部分,同时确保所有模块能够无缝集成到整体测试流程中。

如何使用测试片段?
  1. 创建测试片段

    • 在性能测试工具(如JMeter)中新建一个测试片段,将与该模块相关的所有组件(如线程组、取样器、断言等)放置在此片段之下。
  2. 配置模块控制器

    • 使用线程组下的模块控制器来引用并控制测试片段的执行。通过这种方式,可以在主测试计划中轻松地包含或排除特定模块的测试逻辑,并查看结果。
  3. 协同工作流程

    • 每个测试人员完成自己负责模块的测试片段后,将其保存为.jmx文件格式,并提交给测试组长(Leader)⚠️使用的是git/svn服务器。Leader负责整合所有人的测试片段,构建完整的测试计划,并进行统一执行。

在这里插入图片描述
leader创建一个控制器
在这里插入图片描述
在这里插入图片描述
添加一个查看结果树。就能看到组员的结果。

5、接口测试断言

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值