负载测试:确定在各种负载下系统的性能。目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。
压力测试:通过一个系统的平静或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
容量测试:测试确实系统可处理同时在线的最大用户数。
常见指标:B/S每秒响应次数,成功的请求,失败的请求···· C/S用户连接数···
基本流程
明确性能测试需求:测试条件,规则,检查内容···
制定性能测试方案:测试背景,目的,范围,进入条件,退出条件,指标要求,策略,实际,风险,资源···
编写性能测试案例:具体测试步骤
执行性能测试案例:
分析性能测试结果
生成性能测试报告
开源web性能测试
开源性能测试工具:预算紧张,基本变成经验,良好英文阅读能力,不排斥开源性能测试工具。
第二章 jmeter的基础知识
100%java桌面应用程序;可以对静态资源和动态资源的性能进行测试。起初是为了测试apache jserv的性能。
特点:支持多种服务类型;支持录制脚本;高可移植性;多线程框架;GUI;高扩展···
常用术语:
采样器:发出请求,测试脚本的基本单元
逻辑监听器:控制jmeter测试脚本的执行顺序。
监听器:用来收集测试结果信息。
配置元件:设置测试脚本的共用信息。
断言:验证返回信息
定时器:保存测试脚本与时间相关的一些信息。
前置处理器:任何采样器被执行前都要先执行前置处理器。
后置处理器
测试计划:测试脚本的根节点,基础设置
线程组:定义虚拟用户池,用户的测试脚本相同
工作台:保存暂时不使用的测试元素
测试结果字段的意义
label 请求名称······
jmeter工作原理
性能测试脚本模拟请求,用线程组模拟真实用户对web服务器的访问压力。
安装与目录结构
下载解压即可使用;
bin目录 jmeter.bat主启动程序,可以可以被编辑,一般来说需要修改JVM参数
set HEAP=-Xms512m -Xmx512m
set PERM=-XX:PermSize=128m -XX:MaxPermSize=128m
32位的jdk只支持1.5G左右的内存
修改jmeter.properties文件的log_level.jmeter 默认info 改为degub可以获取更详细的日志
界面中 添加-非测试元件-propertyDisplay 也可以查看jmeter属性
docs目录和printable_docs目录
docs说明文档;
printable_docs/usermanual下是jmeter的用户手册文档 component_reference.html(最常用核心元件)
printable_docs/demos 下面有一些常用的jmeter脚本案例
extras目录
此目录下文件提供了对ant的支持,可以实现测试自动化。jmeter会将测试数据生成一个.jtl文件,将其放在extras目录下,运行ant -Dtest=文件名 report 可以生成统计报表。
lib目录
下面有两个子目录,ext子目录有jmeter核心包,junit存放junit测试脚本;用户扩展所依赖的包都直接放在lib下。
2.4如何运行
jmeter.bat 其他方式先不深究
1 JMETER_HOME/lib 共用包 JMETER_HOME/lib/ext 包含jmeter元件和补丁
如果想将扩展包放在其他路径可以设置jmeter.properties 的search_paths
将共用包放在其他路径可以设置jmeter.properties的user.classpath属性
jmeter “java -jar ***”方式启动(可以携带-classpath/-cp),设置环境变量是没有效果的
2 代理服务器 需要携带主机名,端口号等。
3 非GUI模式 ***一系列指令
4 服务器模式 分布式测试,可以在远程节点上以服务器模式运行jmeter 需要指明 主机名,端口号???
5命令行重置java,jmeter,日志属性 -D -J -G -L
···········
第三章 web性能测试脚本录制与开发
3.1加入卸载元件,停止/关闭线程,查看错误信息
3.2常用元件 函数测试模式,可以把测试数据保存到文件中,但不建议
线程组:设置线程数量,启动周期(在时间达到最大值时,线程全开),循环次数
控制器:采样器/逻辑控制器
采样器有多种参数可以设置,还可以加入配置元件,一定要添加监听器,可以为采样器加断言检查
逻辑控制器可以改变子测试元件的执行顺序 仅一次控制器,交替逻辑控制器··· 控制器可以组合起来达到各种测试目的。
(HTTP请求默认值,可以为请求的空白信息填充HTTP请求;所有web测试应添加cookie管理器,确保所有http请求使用相同的cookie)
监听器:访问测试期间收集到的信息
图形结果:将系统响应时长绘制在一张图片上。
查看结果树:监听器会展示采样器请求和响应的细节
监听器可以将测试数据导入文件,可以指定存储文件,存储字段,存储格式。它们仅收集测试树中相同或者更低级别测试元件的数据。
定时器:设定请求之间的间隔时间;如果测试人员为线程组添加了多个定时器,那么jmeter会将这些定时器的时长叠加;只会影响作用域范围内的采样器。test action 该采样器可以使测试计划此处暂停。
断言:检查从服务器中获得的响应内容。可以使用perl格式的正则表达式,可以将请求标记为成功或失败。
断言会影响作用域内的所有采样器(如果要让断言只影响某个采样器,需要将断言作为该采样器的子项)
配置元件:不能发送请求,但可以添加或者修改请求;HTTP cookie或者HTTP请求默认值,只对同级或以下有效,采样器优先采用下级配置元件。(配置元件 用户定义的参数会在测试的初始阶段执行)
前置处理器:采样器在发出请求之前的操作,如果附着在某个采样器之下,只会在该采样器之前执行。通常用于修改采样器的设置,变量。
后置处理器与前置处理器类似,通常被用来处理服务器的响应数据。
3.3jmeter脚本开发基础
执行顺序:配置元件,前置处理器,定时器,采样器,后置处理器,断言,监听器
(小贴士:作用域中存在采样器时,定时器,断言,前后置处理器才会被执行;逻辑控制器和采样器按照在测试树种出现的顺序执行;其他测试元件会根据自身的作用域执行,也与其类型有关)
作用域规则(分层规则,顺序规则)
一般情况采样器 逻辑控制器符合顺序规则,其余元件符合分层规则(只对自己控制的范围有效)
配置元件(http信息头管理器,cookie管理器,http授权管理器)中的设置不会被合并;默认配置元件的设置会被合并成一系列变量值。一个作用域有多个配置元件,并不能指定是哪个。
jmeter属性·变量
属性统一定义在jmeter.properties中,全局的。变量是局部变量,范围是线程。
配置元件或测试计划定义的变量范围是整个测试计划。前/后置处理器仅影响当前线程。
(_setProperty函数可以定义jmeter属性,全局,可以在线程间传递信息)
使用变量参数化测试,在测试计划中命名常量,大并发情况还是应该使用jmeter属性。
3.4创建web测试计划
添加各类元件
登录web站点
3.5录制web测试脚本
使用jmeter代理创建测试计划(录制发往服务器的请求)代理目前不支持https协议,因为其为安全协议,可以使用badboy搞定。
步骤:启动jmeter,添加线程组,http请求默认值(填入协议,服务器ip,port),工作台中添加http代理(port,patterns to include,patterns to exclude) start
ie中在tools>internet options>connection>lan settings>use a proxy server 设置本机ip和端口号(与jmeter代理一致) 这就可以开始录制了
重新检视测试计划 如果所有的页面都需要某个特定的请求参数,就可以在http请求默认值中添加一行,保存该参数。
录制好之后在线程组中设置线程数量之后就阔以开始测试了。
使用badboy录制web性能测试脚本 傻瓜操作,在地址栏输入网址,访问,录制好之后导出为jmx格式;在jmeter内导入。
3.6创建高级web测试计划
(1)使用URL回写来处理用户会话(解析服务器返回的html 得到会话ID,修改器将其放入每个请求中)
URL回写修改器的GUI(指明会话ID参数的名称,指明会话ID是路径的一部分)
(2)使用信息头管理器,可以帮助测试人员设定请求头中包含的信息(user-agent,pragma,referer) 应尽可能放在线程组一级。
原文:http://www.cnblogs.com/py2015yq/p/5164731.html