loadRunner性能测试培训-设计方案分享
1.1.性能重点分析
系统的性能表现是评价系统体验的一项重要指标,本项目涉及到多个子系统,且用户群体设计较广,用户访问量较大,系统不但要能支撑原有预估用户量的访问,同时也要给用户提供一个良好的性能体验,且资源损耗情况又不能过于严重。
针对本次测试,我们将依据测试要求的4大方向进行分析:
负载测试,通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。
压力测试,压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。
极限压力测试举例:
1) 接收大数据量的数据文件时间;
2) 大数据恢复时间;
3) 大数据导入导出时间;
4) 大批量录入数据时间;
5) 大数据量的计算时间;
6) 多客户机同时进行某一个提交操作;
7) 采用测试工具软件;
8) 编写测试脚本程序;
9) 大数据量的查询统计时间。
疲劳强度测试,主要特点是长时间对目标测试系统加压,目的是测试系统的稳定性,持续时间一般在1小时以上;疲劳强度测试属于用户并发测试的延续,因此核心内容仍然是核心模块用户并发和组合模块用户并发。
大容量测试,主要针对对数据库有特殊要求的系统进行的测试,如系统的入库查询业务;可以分为实时大数据量,主要目的是测试用户较多或者某些业务产生较大数据量时,系统能否稳定运行;极限状态下的测试,测试系统使用一段时间即系统累计一点量的数据时能否正常的运行业务;前面两种的结合,测试系统已经累计了较大数据量时,一些实时产生较大数据量的模块能否稳定工作,大数据量测试可以分为两种类型:针对某些系统存储、传输、统计、查询等业务进行大数据量的独立数据量测试;与压力性能测试、负载性能测试、疲劳性能测试相结合的综合数据量测试方案。大数据量测试的关键是测试数据的准备,可以依靠工具准备测试数据
1.2.性能测试建模
系统使用的用户群体大致分为系统总用户、在线用户、并发用户,其中系统总用
户为所有可能用到该系统的用户;在线用户为与系统保持连接关系并且 session 连接 未断的用户;并发用户为同一时间向系统发出请求的用户,我们通过实际调研通过对 系统总用户数及在线用户数的收集对并发用户数进行估算,力求与真实情况相接近。
测试过程中的系统用户模型:系统存在 200 名用户访问的可能。本次性能测试用
户模型均转化为并发用户,具体并发用户数情况参见本文档 1.3.1 测试要求中描述。
2. 典型业务模型
性能测试中不可进行穷举测试,对系统整体性能的考核可针对典型业务即大用户量访问、高压力、高风险的业务进行测试,从而评估系统性能整体表现。测试过程中的典型业务模型:采购计划编制、采购计划查询、综合查询统计。
3. 用户接入模型
指用户在访问系统时,以什么样的方式或者带宽来访问系统。测试过程中可通过 测试工具或者相关设备对用户接入模式进行仿真。对用户接入行为的仿真模型我们称 为用户接入模型。
测试过程中的用户接入模型:通过对本次测试内容分析,测试应在 1000M 环境下 执行,且在测试环境中执行,带宽不做重点考虑。
4. 思考时间模型
指在测试过程中模拟人的真实操作行为,比如一个人访问应用系统的过程中,不 可能是一直跟服务器进行交互,一定存在浏览、填写表单、阅读说明等行为,因此在 性能测试过程中,需要通过一种机制来模拟这种行为,那么这种行为的模拟方式就是 建立“思考时间模型”,通过测试脚本程序上的等待来完成用户以上行为的仿真。
测试过程中的思考时间模型: 信息采集业务思考时间为:3 秒随机 警情处理业务思考时间为:3 秒随机 动态监控业务思考时间为:5 秒随机
5. 数据模型 旨在为测试过程中模拟系统真实的业务数据,而人为在系统中添加预埋数据及测
试数据。
6. 浏览器模型 浏览器模型:是指在测试过程中模拟用户浏览器的类型、操作模式、缓存处理、
非 HTML 资源处理等配置方式的一个模型。浏览器模型的建立可以真实的仿真用户基于 客户端访问系统的情况。
测试过程中的浏览器模型:浏览器类型仿真:IE6.0、IE8.0,不下载非 HTML 资 源,不清除浏览器缓存。
7. 性能监控模型
应用属性服务器
对象 | 度量 | 描述 |
Memory | Free(KB) | 可用物理内存 |
Swap(KB) | 已使用的虚拟内存数量。在 Linux 中,该值 被识别为 swpd。 | |
(Page)si | 每秒钟从磁盘交换到内存的数量。在 Linux 中 该值被放在 swap 区中。 | |
Cache(KB) | 文件系统缓存 | |
Process | %CPU Usage | 被处理器消耗的处理器时间数量。如果是专 用于某种特定应用(例如数据库服务器或者 应用服务器)则可应用相关进程的%Process Time 进行衡量,此时可接受的上线一般不超 过 85%。 |
Page Fault count | 该进程产生的页面失效次数。可以用该值与 系统的页面失效次数进行对比,从而判断该 进程对页面失效的影响。 | |
Resident size(KB) | 进程保留的使用内存量。该值等于进程的代 码使用内存+进程的数据使用内存。如果该值 在测试过程中持续增加,很可能意味着发生 了内存泄露。 | |
Processor | %Idle Time | %Idle Time 描述的是CPU总的空闲时间。 如果该值低于10%,表明 CPU 瓶颈。可以 考虑增加一个处理器或换一个更快的处理 器。 |
%User Time | 非内核操作消耗的 CPU 时间。一般来说,如 果系统中使用大量的算法或复杂的计算操 作,该值会比较大。 | |
%Kernel Time | CPU 内核时间是在特权模式下处理线程执行 代码所花时间的百分比。 | |
%IOwait Time | CPU 消耗在等待 I/O 处理上的时间,此值需要 结合 I/O 计数器进行考虑。 | |
PhysicalD isk | Percent of time the disk is busy | 指所选磁盘驱动器忙于为读或写入请求提供 服务所用的时间百分比。 |
Average number of transactions actively being serviced | 指读取或写入请求(为所选磁盘在实例间隔 中队列的)的平均数。该值应不超过磁盘数的 1.5-2 倍。要提高性能,可增加磁盘。在 iostat 的结果中,该值为 actv。 | |
Average number of transactions actively waiting for service | 指读取(写入)请求(队列)的平均数。在 iostat 的结果中该值显示为 wait。 | |
Read(Writes) per sec | 物理磁盘上每秒钟读、写磁盘次数。两者相 加,应该小于磁盘设备的最大容量。在 iostat 的结果中,该值显示为 r/s 和 w/s。 | |
Average service time active transactions in milliseconds | 指以毫秒计算的在磁盘上读取和写入数据的 所需平均时间。在 iostat 的结果中,该值显 示为 asvc_t。 | |
The number of disk operations per second | 显示每个磁盘每秒的被操作次数。 | |
System | %User Time | 系统上所有处理器执行非内核操作的平均时 间的百分比,该值反映了用于有用作业上的 时间比率。 |
CPU context switches | CPU 上下文切换。 | |
Network | Bytes Received/sec | 网络每秒接收的字节数。 |
Bytes Sent/sec | 网络每秒发送的字节数。 | |
Bytes Total/sec | 网络每秒总和的字节数。 | |
Current Bandwidth | 当前的带宽数值。 |
数据属性服务器
对象 | 度量 | 描述 |
System | Total Processor Time | 数据库进程占用的 CPU 时间。在不同的数据库 中以不同的名称表示。在 Oracle 中该计数器 被称为:CPU used by this Session。 |
User Connections | 当前用户连接数。数据库服务器一般都有用户 连接限制,当应用不合理时,有可能出现连接 数超过限制的情况,导致一些异常发生。 | |
Memory | Cache Hit Ratio | 缓存命中率。当该值比较小,而数据库比较繁 忙时,可能需要调整缓存的大小。 |
PGA Memory/UGA Memory(仅用于 Oracle) | Oracle 进程的内存占用情况。 | |
Lock | Average Wait Time | 锁平均等待时间 |
Lock Requests/sec | 每秒钟锁请求数 | |
Number of Deadlocks /sec | 每秒钟产生死锁的数量。当该计数器值较大 时,需要查找产生数据库死锁的原因。 | |
Throughpu t | Throughput | 指单位时间内可以成功传输的数据数量。 |
I/O | Outstanding Reads (Writes/s) | 被挂起的物理读写。当计数器比较大时,可能 是 CPU、磁盘 I/O 产生瓶颈,可以通过服务器 的 CPU 和 I/O 分析了解进一步的原因。 |
Page Reads /sec | 每秒钟页面读写次数 | |
Transactions/Sec | 每秒钟产生事务数。 | |
Iops | 每秒进行读写(I/O)操作的次数。 | |
Network | Bytes Received/sec | 网络每秒接收的字节数。 |
Bytes Sent/sec | 网络每秒发送的字节数。 | |
Bytes Total/sec | 网络每秒总和的字节数。 | |
Current Bandwidth | 当前的带宽数值。 |
1.3.性能测试方法
1. 基准测试方法 应用单一的虚拟用户依次访问单一的典型业务点,保证测试过程中没有其他操作影
响,从而获得“基准”的响应时间、资源利用率、吞吐量的参考值及性能周期性的表现 趋势。
2. 性能测试方法 通过在被测系统上不断增加压力,直到性能指标例如响应时间超过预定指标或者某
种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供数据。 3. 压力测试方法 通过在被测系统上不断增加压力,直到性能指标例如响应时间超过预定指标或者某
种资源已经达到饱和状态。这种测试可以找到系统的处理极限,为系统调优提供数据。 4. 负载测试方法
保证系统负载 50%-80%的情况下,进一步加压运行测试,运行上述负载测试,关注 系统在长时间运行情况下,系统的稳定性和系统的故障率以及产生故障的原因。
1.4.性能测试工具
性能测试软件 LoadRunner
LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具。通过以模拟 上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够 对整个企业架构进行测试。通过使用 LoadRunner , 企业能最大限度地缩短测试时间, 优化性能和加速应用系统的发布周期。企业的网络应用环境都必须支持大量用户,网络 体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。难以预知的用户负载 和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢, 系统崩溃等问题。 LoadRunner 是一种适用于各种体系架构的自动负载测试工具, 它能预测系统行为并优 化系统性能。LoadRunner 的测试对象是整个企业的系统, 它通过模拟实际用户的操作 行为和实行实时性能监测, 来帮助您更快的查找和发现问题。此外,LoadRunner 能支 持广范的协议和技术, 为您的特殊环境提供特殊的解决方案。
主要功能介绍:
使用 LoadRunner 的 Virtual User Generator,您能很简便地创立起系统负载。该 引擎能够生成虚拟用户,以虚拟用户的方式模拟真实用户的业务操作行为。它先记录下 业务流程(如下订单或机票预定),然后将其转化为测试脚本。利用虚拟用户,您可以在 Windows ,UNIX 或 Linux 机器上同时产生成千上万个用户访问。所以 LoadRunner 能 极大的减少负载测试所需的硬件和人力资源。
用 Virtual User Generator 建立测试脚本后,您可以对其进行参数化操作,这一 操作能让您利用几套不同的实际发生数据来测试您的应用程序,从而反映出本系统的负 载能力。以一个订单输入过程为例,参数化操作可将记录中的固定数据,如订单号和客 户名称,由可变值来代替。在这些变量内随意输入可能的订单号和客户名,来匹配多个 实际用户的操作行为。
真实负载
Virtual users 建立起后,您需要设定您的负载方案,业务流程组合和虚拟用户数 量。用 LoadRunner 的 Controller,您能很快组织起多用户的测试方案。Controller 的 Rendezvous 功能提供一个互动的环境,在其中您既能建立起持续且循环的负载,又能管理和驱动负载测试方案。 而且,您可以利用它的日程计划服务来定义用户在什么时候访问系统以产生负载。
这样,您就能将测试过程自动化。同样您还可以用 Controller 来限定您的负载方案, 在这个方案中所有的用户同时执行一个动作---如登陆到一个库存应用程序----来模拟 峰值负载的情况。另外,您还能监测系统架构中各个组件的性能---- 包括服务器,数 据库,网络设备等----来帮助客户决定系统的配置。
定位性能
LoadRunner 内含集成的实时监测器,在负载测试过程的任何时候,您都可以观察到 应用系统的运行性能。这些性能监测器为您实时显示交易性能数据(如响应时间)和其 它系统组件包括 application server,web server,网路设备和数据库等的实时性能。 这样,您就可以在测试过程中从客户和服务器的双方面评估这些系统组件的运行性能, 从而更快地发现问题。
利用 LoadRunner 的 ContentCheck TM ,您可以判断负载下的应用程序功能正常与 否。ContentCheck 在 Virtual users 运行时,检测应用程序的网络数据包内容,从中 确定是否有错误内容传送出去。它的实时浏览器帮助您从终端用户角度观察程序性能状 况。
分析结果
一旦测试完毕后,LoadRunner 收集汇总所有的测试数据,并提供高级的分析和报告 工具,以便迅速查找到性能问题并追溯原由。使用 LoadRunner 的 Web 交易细节监测器, 您可以了解到将所有的图象、框架和文本下载到每一网页上所需的时间。例如,这个交 易细节分析机制能够分析是否因为一个大尺寸的图形文件或是第三方的数据组件造成 应用系统运行速度减慢。另外,Web 交易细节监测器分解用于客户端、网络和服务器上 端到端的反应时间,便于确认问题,定位查找真正出错的组件。例如,您可以将网络延 时进行分解,以判断 DNS 解析时间,连接服务器或 SSL 认证所花费的时间。通过使用 LoadRunner 的分析工具,您能很快地查找到出错的位置和原因并作出相应的调整。
重复测试 负载测试是一个重复过程。每次处理完一个出错情况,您都需要对您的应用程序在
相同的方案下,再进行一次负载测试。以此检验您所做的修正是否改善了运行性能。
性能监控分析工具
NMON
分析 AIX 和 Linux 性能的免费工具,NMON 工具可以帮助在一个屏幕上显示所有 重要的性能优化信息,并动态地对其进行更新。这个高效的工具可以工作于任何哑屏幕、 telnet 会话、甚至拨号线路。另外,它并不会消耗大量的 CPU 周期,通常低于百分之 二。在更新的计算机上,其 CPU 使用率将低于百分之一。
其中包括:CPU 使用率、内存使用情况、内核统计信息和运行队列信息、磁盘 I/O 速度、传输和读/写比率、文件系统中的可用空间、磁盘适配器、网络 I/O 速度、传输 和读/写比率、页面空间和页面速度、CPU 和 AIX 规范、消耗资源最多的进程、IBM HTTP Web 缓存、用户自定义的磁盘组、计算机详细信息和资源、异步 I/O,仅适用于 AIX、 工作负载管理器 (WLM),仅适用于 AIX、IBM TotalStorage® Enterprise Storage Server® (ESS) 磁盘,仅适用于 AIX、网络文件系统 (NFS)。
远程管理工具
SSH Secure Shell Client
是一个用来替代 TELNET、FTP 以及 R 命令的工具包,通过使用 SSH,你可以把所有 传输的数据进行加密,这样"中间人"这种攻击方式就不可能实现了,而且也能够防止 DNS 欺骗和 IP 欺骗。在本次测试中主要应用到远程管理和操作等。
1.5.性能测试案例
针对招标测试要求,通过分析选择性能测试典型业务登录、查询进行并发测试,验证系统容量特性、时间特性及资源利用状况等效率指标是否符合用户需求,形成典型测试用列如下:
测试案例一:登录
用例编号 | TC_P _JTXX_001 | ||||||
用例名称 | 登录 | ||||||
测试内容 | 登录业务并发的平均性能表现 | ||||||
测试需求 | R_F_ JTXX_001 | ||||||
设计人员 | 田雄军 | ||||||
设计时间 | 2015.10.20 | ||||||
前置条件 |
| ||||||
测试步骤 | 脚本配置 | 场景配置 | |||||
|
|
| |||||
期望结果 | |||||||
序号 | 并发用户数 | 业务指标 | 资源利用 | ||||
| 待定 | 平均响应时间小于5秒 | CPU平均利用率不超过75% 内存平均利用率不超过75% | ||||
评判标准 | 实际结果与预期结果相符,判定该用例通过;否则为不通过。 | ||||||