first-jmeter001

为什么要做性能测试?

优化:后端代码、sql语句、表设计。
**性能指标:**响应时间、并发量、错误率、吞吐量(tps/qps)、CPU、内存。
**响应时间:**遵循2/5/8原则;(在一定并发量的前提下,响应时间为2秒完全ok,响应时间为2~5秒也可以接受,响应时间超过5秒可以直接让开发优化代码了);
**并发量:**大概支持多少用户同时发起请求;(根据公司业务决定,如果用户量本身就不多,那并发量是可以酌情考虑的);
**错误率:**发送请求无响应;(不能超过0.5%);
**吞吐量:**单位时间内处理事务的能力,(吞吐量在100左右)(一个请求一个响应就是一个事务);
**CPU:**看服务器的CPU,(不能超过80%);
**内存:**看服务器的内存,(不能超过80%)。
性能测试是什么?
基于协议模拟用户发出请求,对服务形成一定负载, 来测试服务器性能指标是否满足要求,性能指标关注点:时间性能(响应时间),空间性能(cpu/内存)。
总结就是:多快好省!!!!
多:容纳用户量多;
快:响应时间快;
好:稳定性好,错误率少;
省:省资源。

性能测试工具

loadrunner:企业级的,内存非常大;
jmeter:开源,免费,基于java编写,支持接口测试、负载、压力测试等,多平台支持,支持多协议。

jmeter

作用:接口测试,性能测试,数据库测试。性能测试做的比较多。
下载jmeter之后,首先配置环境变量(不要出现中文和空格):此电脑右键,点击属性,点击高级系统设置,在系统变量中点击新建,变量名:JMETER_HOME,变量值:一定要到bin目录(bin属于那个目录,把这个目录拿过来),然后把%JMETER_HOME%\bin填充到path中。最终我们要启动的是jmeter.bat,在黑窗口中输入jmeter,就会帮我们打开jmeter。
first-jmeter001first-jmeter001
线程组:
进程:一个正在执行的程序对应一个线程;
线程:一个进程里有多个执行线程;
线程组:按照线程性质对线程分组
二者关系:一个进程有多个线程组,一个线程组有多个线程。
first-jmeter001
first-jmeter001
我们可以先使用两个普通的接口做正确错误对比:
正确的接口请求中可以看到连接方式、服务器的域名、客服端依据什么访问的(还有我们jdk的版本);
first-jmeter001

first-jmeter001
我们可以右键线程组,点击添加,点击监听器,点击聚合报告,发起请求,就可以查看聚合报告中的信息。
接口出错在jmeter中怎么查看
两种方法:
点击添加—>点击监听器----->查看结果树(响应数据/颜色)/聚合报告(error)。
first-jmeter001
线程数:模拟用户数量,ramp-Up:时间内完成所有的线程,循环次数:循环了几次。
first-jmeter001
first-jmeter001
采样器:
发起http请求:
右键线程组,点击添加,点击sampler,http请求;
1:参数传递中Parameters和Body Data不能同时使用,必须要保证其中至少一个为空,否则提示错误
2:在传递的参数中,接口参数名和参数值两边不能有空格,否则会报错。
first-jmeter001
first-jmeter001
监听器:
右键线程组–添加–监听器–聚合报告/查看结果树
通过颜色判断接口对不对。红色代表接口报错,绿色代表接口正常响应。
取样器结果:相应行和响应头信息一级响应传递字节数和时间;
请求:请求url和参数;
响应数据:响应文本,报错会有报错信息。first-jmeter001
日志信息:
并发量很大,报错信息刷新时,会把前面的报错顶出去,但我们查看报错信息,所以勾选仅日志错误,创建一个文件(文件名.csv),把报错日志保存在文件中,可以在文件中看到日志。
first-jmeter001
first-jmeter001
聚合报告:

first-jmeter001
1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。
2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求。
3、取样器(Sampler):模拟各种请求。所有实际的测试任务都由取样器承担,存在很多种请求。
如:HTTP 、ftp请求等等。
4、监听器:负责收集测试结果,同时也被告知了结果显示的方式。功能是对取样器的请求结果显
示、统计一些数据(吞吐量、KB/S……)等。
6、断言:用于来判断请求响应的结果是否如用户所期望,是否正确,非常实用
7、定时器:负责定义请求(线程)之间的延迟间隔,模拟对服务器的连续请求。
5、逻辑控制器:允许自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的
请求序列。
8. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
9. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的
设置,后置处理器则常常用来处理响应的数据。

jmeter断言操作:
**响应断言:**响应断言有很多中方式,可以通过响应文本、响应代码、响应信息、url。(一般用响应文本比较多),只要返回体中包含它的,都可以用断言来表示。适用多种类型。
first-jmeter001
first-jmeter001

**json断言:**右键点击断言,点击json assertion,在json assertion页面中,$.想要获取的值,点击勾选框,在Expacted values输入数据,进行对比,成功则成功,失败则会报错。适用于返回结果是json类型的。
first-jmeter001
first-jmeter001

Xpath断言: xml路径语言,确定xm了文档中某部分的语言,点击请求右键,点击添加,点击断言,点击XPath Assertion,点击Use Tidy勾选框启用下面的格式,在XPath Assertion中添加数据,//*[@id='kw](/:是绝对路径,//:是相对路径)。
first-jmeter001
first-jmeter001
定时器:
创建两个请求,选择一个请求,右键点击添加,点击定时器,点击固定定时器,有一个线程延迟,默认是300毫秒,执行请求,可以在查看结果树中看到,加了延迟时间的请求,会比没有加延迟时间的请求延迟出现。

first-jmeter001
first-jmeter001
集合点:
集合在某一点,释放所有线程。例:秒杀。
创建线程组,创建请求,右键请求,点击添加,点击定时器,点击Synchronizing Time,集合点中的数据不需要修改。
first-jmeter001
逻辑控制器:
事务控制器: 创建线程组,点击添加,点击逻辑控制器,点击事务控制器,勾选Generate parent sample,勾选之后实现是无暇的所有请求都是一个整体,事务控制器下的请求看成是一个整体,一个请求出错,全都显示为错误。
first-jmeter001
first-jmeter001
循环处理器:
创建请求,在一个请求中添加循环控制器;
first-jmeter001
first-jmeter001
first-jmeter001

上一篇:android中的UI中的窗口之Window类介绍,美团点评APP在移动网络性能优化的实践


下一篇:Combinations