昨天下午培训了一下JMeter,有很多不足,而且也有些紧张,效果不是很好,所以,就总结一下,以后培训JMeter的时候,要怎么结合实例去给别人分享JMeter(针对接口测试)
一、首先什么是接口
计算机中包括硬件接口和软件接口。电脑等信息机器硬件组件间的接口叫硬件接口,
是可以看到以实物存在的如串口、并口等;而电脑等信息机器软件组件间的接口叫软件接口。
而软件接口则是虚拟存在的接口。
对于平常测试系统的接口,可以概括为:
指程序中具体负责的不同模块之间传输或接受数据的并做处理的类或者函数。
举例来说:
某个系统中的查询功能对外来说就是一个接口
对外提供服务,可通过对应的请求,完成相应的功能业务的处理。
二、什么是接口测试
接口测试是项目的一部分,正如其名,它测试的主要对象是接口,
是测试系统组件间接口的一种测试。
接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。
测试的重点是检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
请求结构:
不管是何种接口测试,其测试都为客户端发送request请求,接着服务器会返回response报文,然后我们需要对response内容进行比对,从而来判断接口访问是否成功,最终验证业务是否符合需求。并且针对请求后的逻辑操作进行判断,例如数据库操作。
接口测试的分类:
1、HTTP API
报文:key+value、xml、json
2、WebService API
报文:Soap xml
接口测试用例设计流程:
了解测试接口的功能需求 |
---|
在整个系统中的业务功能 |
测试的要求和目的 |
接口测试用例设计原则:
- 是否满足前提条件
——【有些接口需要满足前置条件,才可以成功获取】 - 是否携带默认参数值
——【带默认值的参数要注意,必填参数都填写正确】 - 业务规则、功能需求【根据实际的业务规则和需求进行用例设计】
- 参数是否必填
——【异常情况,参数为空的测试】 - 参数之间是否存在关联
——【若参数之间存在约束关系,则要设计相关用例进行测试】 - 参数数据类型限制
——【参数值限制了数据类型则输入非该类型进行测试】 - 参数的边界值
——【根据边界范围设计边界值进行测试】 - 请求成功后的操作
——【例如请求成功后的逻辑操作和数据库操作】
测试用例设计,不要做简单的笛卡尔积。根据实际情况去设计用例。
接口测试的脚本就是测试用例的一种实现方式。
三、测试工具
主要使用的是JMeter
Jmeter简介
Apache JMeter 是Apache组织的开放源代码的项目,一个纯Java的桌面应用,可以进行性能测试,后被扩展到其他测试领域,比如接口测试。
- JMeter支持http、java、ftp、smtp、jms、tcp等协议
- 完全的可移植性的百分百的纯Java
- 支持各种函数组件
- 多线程框架支持多个线程并发取样等
- 有GUI且操作简便
- 支持分布式测试
- 支持命令行执行方式
JMeter组件
线程组:设置并发用户数等,场景的起始信息。
逻辑控制器:可以进行循环或者if判断的处理
循环控制器
if控制器
当满足条件时,if控制器下的所属元件就会执行
简单控制器
简单控制器在接口测试中的作用,主要用来划分测试场景,使测试思路更加清晰,也方便自己和别人查看
配置元件:参数配置等基础性配置控件
首先是JDBC Connection Configuration
JDBC Connection Configuration主要是用来配置数据库的相关信息
CSV Data Set Config
主要用来参数化,接口测试中,可以用来存放接口的请求的参数,也可以用来存放接口的请求url
Http 信息头管理器
主要用于配置接口请求的信息头,例如:Content-Type等接口的头信息,可以添加、删除
定时器:各种Sampler等待时间
前置处理器:运行Sampler之前,进行各种参数等内容的前置处理
Sampler(采样器):各种请求等内容的控件
后置处理器:运行Sampler之后,进行各种参数等内容的后置处理
断言:验证返回信息是否正确
监听器:收集执行测试整个过程的信息