性能测试
1.1.性能测试是什么
基于协议模拟用户发出请求,对服务器形成一定负载,来测试服务器的性能指标是否
满足要求
性能指标关注点:时间性能、空间性能
性能测试与页面无关
性能测试定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对
系统的各项性能指标进行测试。
性能测试类型
1.基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基
础参考
2.负载测试:是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统
的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等。
3.压力测试:压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点
在于系统在峰值负载或超出最大载荷情况下的处理能力。
4.稳定性测试(可靠性测试):在给系统加载一定业务压力的情况下,使系统运行
一段时间,以此检测系统是否稳定。24X3小时
5.并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否
存在死锁或者其他性能问题,
性能测试工具
Jmeter简介
Jmeter的基本概念
ApacheJMeter是Apache组织开发的基于Java的压力测试工具。
2.2.我们为什么使用Jmeter
开源,免费,基于Java编写,可集成到其他系统可拓展各个功能插件
支持接口测试,压力(负载和压力)测试等多种功能,支持录制回放,
入门简单相较于自己编写框架活其他开源工具,有较为完善的UI界面,便于接口调试
多平台支持,可在Linux,Windows,Mac上运行
支持多协议
2.3.Jmeter的作用
1.接口测试
2.性能测试
3.压力测试
4.Web自动化测试
5.数据库测试
6.JAVA程序测试
2.4.Jmeter怎么用
Windows下Jmeter下载安装登录http://jmeter.apache.org/download_jmeter.cgi,根据自己平台,下载对应文件
安装JAVA环境
安装JDK,配置环境变量(具体步骤不做介绍)
将下载Jmeter文件解压,打开/bin/jmeter.bat
/bin目录(常用文件介绍)
examples:目录下包含Jmeter使用实例
ApacheJMeter.jar:JMeter源码包
jmeter.bat:windows下启动文件
jmeter.sh:Linux下启动文件
jmeter.log:Jmeter运行日志文件
jmeter.properties:Jmeter配置文件
jmeter-server.bat:windows下启动负载生成器服务文件
jmeter-server:Linux下启动负载生成器文件
/docs目录——Jmeter帮助文档
/extras目录——提供了对Ant的支持文件,可也用于持续集成
/lib目录——存放Jmeter依赖的jar包,同时安装插件也放于此目录
/licenses目录——软件许可文件,不用管
/printable_docs目录——Jmeter用户手册
使用Jmeter测试快速入门
线程组是什么
进程:一个正在执行的程序对应一个进程
线程:一个进程有多个执行线程
线程组:按照线程性质对线程分组
三者关系:一个进程有多个线程组,一个线程组有多个线程
测试计划—线程组—线程组属性中的线程数
并发执行:多个线程同时执行,特点:执行结束的顺序与开始的顺序不一致
顺序执行:按照线程的启动顺序挨个执行
默认情况下,线程组中的线程是并发执行
每一个线程都要执行组内的http请求
设置线程组顺序执行:勾选测试计划中的(独立运行每个线程组)
线程组用来模拟用户的并发访问
创建线程组
线程组主要包含三个参数:线程数、准备时长(Ramp-UpPeriod(inseconds))、
循环次数。
1.1.3.线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟
用户数在这里也就是设置多少个线程数。
1.1.4.准备时长(秒):设置的虚拟用户数需要多长时间全部启动。如果线程数
为20,准备时长为10,那么需要10秒钟启动20个线程。也就是每秒钟启动
2个线程。
1.1.5.循环次数:每个线程发送请求的次数。如果线程数为20,循环次数为100,
那么每个线程发送100次请求。总请求数为20*100=2000。如果勾选了“永远”,
那么所有线程会一直发送请求,一到选择停止运行脚本。
1.1.6..调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需要勾选
循环次数为永远)
1.1.7.持续时间(秒):测试持续时间,会覆盖结束时间
1.1.8.启动延迟(秒):测试延迟启动时间,会覆盖启动时间
1.1.9.启动时间:测试启动时间,启动延迟会覆盖它。当启动时间已过,手动只需测
试时当前时间也会覆盖它。
1.1.10.结束时间:测试结束时间,持续时间会覆盖它。
一个HTTP请求有着许多的配置参数,下面将详细介绍:
名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
注释:对于测试没有任何作用,仅用户记录用户可读的注释信息。
服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。
端口号:目标服务器的端口号。
方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、
DELETE等。
Contentencoding:内容的编码方式,默认值为iso8859
路径:目标URL路径(不包括服务器地址和端口)
测试计划
1.测试计划就是一个完整的场景
2.“独立运行每个线程组”:勾选以后所有的线程组都是顺序执行的了。一般不勾
选,让所有的线程组并发启动。
3.“函数测试模式”:勾选后会有详细的请求记录,消耗资源,影响客户端性能。
一般不勾选。
4.用户定义的变量:全局变量,测试计划上可以添加用户定义的变量。一般添加一
些系统常用的配置。如果测试过程中想切换环境,切换配置,一般不建议在测试计划上添加变量
(1)、threadgroup(线程组)
这个就是我们通常添加运行的线程。通俗的讲一个线程组,可以看做一个虚拟用
户组,线程组中的每个线程都可以理解为一个虚拟用户。
(2)、setupthreadgroup
一种特殊类型的ThreadGroup的,可用于执行预测试操作。这些线程的行为完全
像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的
执行;类似LoadRunner的init,测试开始时进行初始化的工作。
(3)、teardownthreadgroup
一种特殊类型的ThreadGroup的,可用于执行测试后动作。这些线程的行为完全
像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线
程组;类似LoadRunnner的end,测试结束时进行回收工作。