一、性能测试目的:
性能测试的目的是验证软件系统是否能够达到用户提出的性能指标,同事发现软件系统中存在的性能瓶颈,进而优化软件,最后起到优化系统的目的。
1、评估系统的能力,测试中得到的符合和响应市场数据可以被用于验证所计划模型的能力,并作出决策。
2、识别系统中的弱点:受控负荷可以被增加到一个极端的水平,并突破他,从而修复体系的瓶颈活薄弱地方。
3、系统调优:重复运行测试,验证调整系统的活动,得到了预期结果,从而改进性能。
4、检测软件中的问题:长时间测试执行可导致程序发生由于内存泄漏引起的失败,解释程序中隐含的问题或冲突。
5、验证稳定性和可靠性:在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
二、性能测试分类:
性能测试包括:负载测试、压力测试、容量测试
负载测试:通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或者验证系统的负载能力。
压力测试:在软件工程中,压力测试是对系统不断地施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别测试。
容量测试:确定系统可处理同时在线的最大用户数。
三、性能测试基本流程:
1、明确性能测试需求(明确测试涉及的功能点)
2、制定性能测试方案
3、编写性能测试案例,举例如下图:
4、执行性能测试案例
5、分析性能测试结果
6、生成性能测试报告
一份性能测试报告,至少包含以下内容:
(1)、测试基本信息,包含:测试目的、报告目标读者、术语定义、参考资料
(2)、测试环境描述,包含:服务器硬件环境、网络环境、测试工具、测试人员
(3)、性能测试案例执行分析:需要详细描述每个测试案例的执行情况,以及对对应测试结果进行分析。
(4)、测试结果综合分析及意见:对本次性能测试做综合分析,并给出测试结论和改进意见。
(5)、测试经验总结。
四、Jmeter与Loadrunner优缺点对比
Loadrunner支持的测试协议更广,图形分析能力更强,易用性也更强。但是Loadrunner的基本功能,Jmeter都具备,只是没有那么完善。由于Loadrunner价格非常昂贵,因此这些差距是可接受的。
五、Jmeter常用术语
1、采样器:采样器是Jmeter测试脚本的基础单元,用户可以用它来想服务器发出特定的请求,采样器会在超时前等待服务器响应。
2、逻辑控制器:用户通过逻辑控制器来控制Jmeter测试脚本的执行顺序,以便测试能够按照用户的期望顺序和逻辑来执行。
3、监听器:用来收集测试结果信息
4、配置元件:用来设置一些Jmeter测试脚本公用信息
5、断言:用来验证服务器实际返回的信息,与用户期望的情况是否相符
6、定时器:
7、前置处理器:在前置处理器作用范围内,任何采样器被执行前,都要先执行前置处理器
8、后置处理器:在后置处理器的作用范围内,任何采样器被执行后,都要执行对应的后置处理器
9、测试计划:测试计划是Jmeter测试脚本的根节点,关于整个测试脚本的一些基础设置,可以在测试计划中设定。
10、线程组:线程组定义了一个虚拟用户池,其中每个用户都是用相同的测试脚本
11、工作台:工作台被用来保存暂时不是用的测试元素,当测试人员保存测试计划时,工作台内容不会被保存起来。
六、Jmeter工作原理
以web性能测试为例,介绍Jmeter工作原理。
Jmeter可以作为web服务器与浏览器之间的代理网关,以便捕获浏览器请求和web服务器的响应,如此就可以很容易生成性能测试脚本。有了性能测试脚本,Jmeter就可以通过线程组来模拟真实用户对web服务器的访问压力。
Jmeter工作原理如下图:
七、Jmeter执行顺序规则
执行规则如下:
0、配置元件
1、前置处理器
2、定时器
3、采样器
4、后置处理器
5、断言
6、监听器
注意:只有当作用于内存在采样器时,定时器、断言、前置/后置处理器才会被执行。逻辑控制器与采样器按照在测试树中的顺序执行。其他测试元件会一句自身的作用域范围来执行。另外海域测试元件所属类型有关(归属于同一类的测试元件,会按照它们在测试树中的顺序来执行)
例:在如下测试计划中
执行顺序为:
Pre-processor1
Timer1
timer2
Sampler1
post-processor1
post-processor2
Assertion1
Pre-processor1
Timer1
timer2
Sampler2
post-processor1
post-processor2
Assertion1