标签:10 软测 请求 29 接口 线程 测试 参数 jmeter
接口测试理论
自动化测试的金字塔模型
硬件接口:比如usb接口,电源接口、耳机接口...
软件接口:数据系统访问接口、 http请求接口...
为什么要做接口测试
Web前端:指用户可以直观操作和看到的界面。html,Css样式,javascript脚本。android和ios等。
web后端:是指与数据库交互进行处理响应的业务逻辑。包括java、python、php 、net等。
通过接口进行沟通。
什么是接口?(API)
API,接口是一个位于复杂系统之上能简化任务,像中间人一样不需要你了解详细的所有细节。比如登录页面,只需要调用登录接口,就可以达到系统登录的目的。
接口的官方定义:接口是模块与模块之间的对接方式定义,或者是系统与系统之间的对接方法定义
接口测试与功能测试的对应关系
接口测试也是一种功能测试,普通的功能测试在网页上模拟用户操作,接口测试是协助工具,通过接口文档,输入请求参数,校验返回的正确性。
单元测试与接口测试的区别:
1、单元测试注重代码逻辑,接口测试注重业务逻辑
2、单元测试粒度最小,是测试最小独立的的单元模块(不依赖其他模块);接口测试不是,会覆盖很多
3、单元测试是白盒测试,接口测试是黑盒测试
4、单元测试关注的代码实现和逻辑,测试范围较小,保证实现逻辑通过就行;接口测试因为关注业务逻辑,所以测试范围较广泛
接口测试流程
需求评审,熟悉业务和需求——>开发提供接口文档(如果没有接口文档就通过抓包工具进行抓包)——>设计测试用例——>用例评审——>执行测试——>编写测试报告
接口文档包含以下哪些内容?
1、接口描述,这个接口是做什么的
2、请求的URL,请求的方法,post get
3、请求的参数(入参),请求的参数类型、请求的参数说明
4、返回响应、返回参数说明
如何设计接口测试用例
主要从以下几个方面考虑:
正常验证:业务规则、功能需求、按照接口文档中的要求,参数正常输入、返回预期的结果
异常验证:不满足前置条件,常见的有些接口需要token或者cookie,携带默认参数值,带默认值的参数不填,入参的必填的参数不填,入参的长度不符合、入参的类型的异常
安全性验证:关键参数是否明文传输、密码安全校验规则、密码复杂程度、像购物订单,用户下单,服务器是否再校验
接口的性能
web自动化测试的二种思路:
1:UI层面自动化,可以使用selenium这样的UI自动化测试框架,模拟用户操作。
2:接口层面的自动化,用发包工具模拟浏览器发包,直接发送http请求给Web服务器,然后对服务器响应回来的结果进行验证。
接口测试工具:
1:抓包工具:fiddler charles
2:发包工具:jmeter postman或者商业性的Loadrunner
面试题:为什么要进行接口测试?
接口测试由于绕开了前端,直接通过请求调用的方式进行测试,
1:更早的测试介入,只要接口开发完成,就可以进行测试
2:更多的场景覆盖,因为绕开了前端控制,使得测试场景更自由
3:接口测试从项目的角度,工作量是低于UI测试的,投资回报较高
4:接口测试对于自动化的支撑度更好,接口测试可以扩充对于其他类型测试的支持,比如性能测试、安全性测试等,如果接口测试做不好的话,这两种测试也做不好。
jmeter环境配置
需要安装jdk环境
jmeter基于接口的测试
Loadrunner是基于场景的测试
接口测试依据:
1:参数接口文档填入参数
2:没有接口文档,那就需要先跟开发沟通,然后整理接口文档,采用抓包工具fiddler抓包,查看接口请求的参数
jmeter操作基本步骤:
1:添加线程组
2:线程组——>samples——>http请求
3:http请求——>Listener(监听器)——>添加查看结果树
jmeter参数化
1:准备参数文件
2:Thread Grop——>Add——>Config Element——>Csv Data SetConfig
3:使用变量
4:设置线程数
Number of Threads(users):一个用户占一个线程,200个线程就是模拟200个用户
Ram-Up Period(in seconds):设置线程需要多长时间全部启动,如果线程数200,准备时长为10
Loop Count:每个线程发送请求的次数,如果线程数是200,循环的次数为10,那么每个线程发送10次请求,总请求数为200*10=2000
断言:请求成功,返回响应代码为200,并不代表结果一定正确,还需要判断返回内容的正确与否。因此在请求的返回层面增加一层判断机制,以此来提高测试的准确性(类似于Loadrunner检查点)
Response Assertion(响应断言)
1:添加响应断言对web请求的响应进行验证,请求右键——>添加——>断言——>响应断言
2:输入需要匹配的字符
3:添加断言结果,请求右键——>添加——>监听器——>断言结果
4:运行Testplan中的线程组,进行断言检查
jmeter中监控Linux中服务器资源
客户端(Jmeter端)
访问网址https://jmeter-plugins.org/downloads/old/,下载JMeterPlugins-Standard和JMeterPlugins-Extras这两个文件,解压复制JmeterPlugins-Extras.jar、JmeterPlugins-Standard.jar到Jmeter文件夹的lib/ext路径下
重启jmeter后,在监听器中看到perfmon Meterics collector,客户端配置成功
服务器
1、把下载的ServerAgent-2.2.*.zip复制到服务器端,解压即可unzip ServerAgent-2.2.*.zip
2、cd ServerAgent-2.2
3、chmod 777 startAgent.sh
4、./startAgent.sh
面试题:
在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
答案:在jmeter中可以用正则表达式来来实现。
第1步:Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式,
第2步:设置正则表达式提取器:包括引用名称、正则表达式、模板、匹配数组等
第3步:在其他下游请求中用${引用名}来或取第2步中的值
标签:10,
软测,
请求,
29,
接口,
线程,
测试,
参数,
jmeter
From: https://blog.51cto.com/jcy58/6434375