一、 LoadRunner介绍
1.1、 什么是LoadRunner
LoadRunner,是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
1.2、 LoadRunner常用来做什么
a. 验证某系统在某环境下是否满足性能需求。
b. 通过测试,规划如何达到要求的性能指标。
c. 调整系统环境,进行性能测试,最终使性能达到最优。
1.3、 为什么使用LoadRunner
考虑这样一种情况,现在需要测试某个网站在500个人并发做登陆操作时,系统的平均响应时间是否满足需求。如果用人工测试的话,可以想象大概的操作场景是这样,一个主持人安排500个操作员,按下述步骤操作:
a. 所有人在一个大厅中,大厅中有500多台电脑,主持人要求500个操作人员分成组,每个组选一个组长,所有人先都登陆到系统,进入登陆页面;
b. 主持人喊3...2...1开始!同时记录开始时间(这个在LoadRunner中有个术语叫“集合点”),组织带领500个人同时点击“登陆”按钮。
c. 看到登陆成功页面的人把登陆成功时的时间记下。
d. 到了规定的时间,主持人喊停,还没有登陆成功的操作人员视为操作失败。
e. 最后,5个组长收集各组的操作结果,汇总给主持人,主持人安排数据统计专员生成统计报告。
这个过程是不是很复杂?而且操作误差比较大,譬如有的人反应慢,有的人反应快,有的人记错时间了,有的人偷懒了等等。所以,对于这种性能测试必须靠自动化。现有自动化的工具有很多,譬如Jmeter,譬如LoadRunner。总的来说,Jmeter更自由,LoadRunner更好用,而我们想用好用的,所以我们用LoadRunner。
1.4、 LoadRunner核心组件
LoadRunner由三部分组成,分别为:Virtual User Generator、LoadRunner Controller、LoadRunner Analysis。
a. Virtual User Generator(虚拟用户生成器)
模拟虚拟用户动作。是用来录制、生成、编辑、调试脚本所用的工具(相当于前述例子中操作人员的机器人化)。
b. LoadRunner Controller(测试控制器)
是用来设计,实现场景,执行场景,集成监控,实时监测的一个组件。是执行负载测试管理和监控的中心。在这里指定具体的性能测试方案,执行性能测试,收集测试数据,监控测试指标(相当于前述例子中的主持人)
c. LoadRunner Analysis(结果分析器)
通过图表,分析进行收集、整理测试结果,提供简单的概要报告、图表,并且提供必要的选项来帮助测试工程师来分析性能测试结果、定位性能瓶颈(相当于前述的分析专员)
1.5、 LoadRunner的功能
轻松创建虚拟用户
创建真实的负载
定位性能问题
分析结果以精确定位问题所在
重复测试保证系统发布的高性能
1.6、 LoadRunne支持多种协议
loadrunner协议该如何选择呢?
a. B/S系统
选择Web(Http/Html)
b. C/S系统
a) 后台数据库是sybase,则采用sybaseCTlib协议。
b) 后台数据库是sql server,则使用MS sql server协议。
c) 后台数据库是oracle 数据库,就使用oracle 2-tier协议。
d) 没有数据库的c/s(ftp,smtp)系统,可以选择windows socket协议。
c. 手机上网,选择wap协议
…
1.7、 LoadRunne一般测试流程
创建脚本->设计场景->运行场景->分析结果
1.8、 测试脚本形式
测试脚本分为两种,一种是录制后进行修改,另外一种是完全自行编写。开放平台的B/S一般采用录制后修改,主机和比较难以录制的平台一般采用后者。
a. 录制脚本时尽量分解脚本,一个功能一个脚本,脚本与脚本之间尽量解耦。若功能是连续的,可以多个功能放置一个脚本。
b. 对压力测试用例进行设计时,选择用户最常用,最重要的功能进行测试。不需要在loadrunner中测试所有功能,录制脚本前需要对脚本的功能和需求进行设计。
c. 对需要压测的需求要非常的清楚和了解,减少不必要的操作,抓重点测试。
二、 性能测试理论
2.1、 概念及其分类
概念:性能测试主要是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
分类:性能测试(狭义)、负载测试、压力测试(强度测试)、并发测试、配置测试、可靠性测试。
a. 性能测试(狭义)
方法:通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。
目的:验证系统是否又系统宣称具有的能力。
b. 负载测试
方法:通过在被测系统上不断加压,直到性能指标达到极限。
目的:找到系统处理能力的极限。
c. 压力测试(强度测试)
方法:测试系统在一定饱和状态下,系统能够处理的会话能力,以及系统是否出现错误。
目的:检查系统处于压力性能下时,应用的表现。
d. 并发测试
方法:通过模拟用户并发访问,测试多用户并发访问同一个应用、模块或者数据记录时是否存在死锁或其他性能问题。
目的:发现系统中可能隐藏的并发访问时的问题。
e. 配置测试
方法:通过对被测系统的软硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优分配原则。
目的:了解各种不同因素对系统性能影响的程度。
f. 可靠性测试:
方法:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
目的:验证系统是否支持长期稳定的运行。
2.2、 性能测试的流程
性能测试分为以下几个阶段:测试计划阶段、测试设计阶段、测试开发阶段、测试执行阶段、测试结果分析阶段、测试报告阶段。
a. 测试计划阶段:
明确测试对象
定义测试目标
定义测试通过的标准
规划测试进度
规划测试参与人员(需求、开发、测试、运维和配置)
申请测试资源
风险控制
b. 测试设计阶段:
设计测试数据
设计测试用例
设计测试场景
c. 测试开发阶段
测试环境搭建
测试过程文档定义及配置
测试脚本开发、调试
测试数据的准备
基准测试
d. 测试执行阶段:
执行测试用例模型,包括执行脚本和场景
测试过程监控,包括查看log、监控服务器资源、数据库和中间件等
e. 测试结果分析
根据测试结果和监控结果进行测试分析
根据性能测试目标,分析出系统存在的性能瓶颈,并给出优化建议。
f. 测试报告
测试范围
测试执行以及参与人员
基准测试数据
测试执行的详细步骤(场景设计)
测试数据记录、监控结果
测试结果对比以及总结性评价
2.3、 性能测试工具的原理
脚本生成器
压力生成器
结果生成器
压力控制器