一 软件性能概述
1.软件性能的概念:
软件性能是与软件功能相对应的一种非常重要的非功能特性,表明了软件系统对时间及时性及资源经济性的要求。
2.不同角色对软件性能的理解
(1)从系统用户角度看软件性能:
影响因素:
1、功能粒度
2、客户端网络情况
3、服务器当前忙闲情况
4、……
(2)从系统运维人员角度看软件性能:
影响因素:
1、功能升级
2、用户量增加
3、服务器硬件磨损
4、数据量增加
5、 ……
(3)从开发人员角度看软件性能:
影响因素:
1、机构设计
2、数据库设计
3、内存使用方式
4、线程同步方式
5、资源竞争
6、 ……
3.常用性能指标:响应时间、并发用户数、吞吐量、服务器性能计数器
4.软件性能的影响因素:
(1)硬件设施(部署结构、机器配置)
(2)网络环境(客户端带宽、服务器端带宽)
(3)操作系统(类型、版本、参数配置)
(4)中间件(类型、版本、参数配置)
(5)应用程序(性能)
(6)并发用户数(系统当前访问状态)
(7)系统数据量(系统数据量大小)
5.软件性能生命周期模型
(1)性能需求分析:根据系统的业务特点制定明确的性能需求,为系统设计和性能测试提供依据
(2)概要设计:针对系统性能要求,从数据库结构、软件架构、部署结构等方面进行系统设计工作
(3)详细设计:从单元粒度、算法逻辑复杂度、变量定义等方面进行系统的设计工作
(4)性能测试:对应不同的设计阶段,可以将性能测试分解为单元性能测试、集成性能测试和系统性能测试
6.性能需求分析方法:响应时间、最大并发用户数、吞吐量、资源利用率
7.软件性能模型
二 软件性能测试基础
1.软件性能测试定义:
狭义的软件性能测试指为验证软件性能指标、评估系统服务能力、推荐系统软硬件配置、完成系统性能优化等而开展的测试活动,这也是一般意义上人们对软件性能测试的理解。
广义的软件性能测试指在测试过程中需要相关性能测试方法配合完成的系统测试活动,包括可靠性测试、可恢复性测试、稳定性测试、兼容性测试、可扩展性测试等。
2.软件性能测试的目标
- 能力验证
- 缺陷发现
- 能力规划
- 性能优化
3.常用性能测试方法
(1)基准测试:通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和对比的测试。主要目的是检验系统性能与相关标准的符合程度。
(2)压力测试:通过对软件系统不断施加压力,识别系统性能拐点,来获得系统提供的最大服务级别的测试活动。主要目的是检查系统处于压力情况下,应用的表现。
(3)负载测试:通过在被测系统上不断施加压力,知道达到性能指标极限要求。主要目的是找到特性环境下系统处理能力的极限。
(4)并发测试:指当测试多用户并发访问同一个应用、模块、数据时是否发生隐藏的并发问题,如内存泄露、现成锁、资源争用问题。主要目的并非为了获得性能指标,而是为了
发现并发所引起的问题。
(5)疲劳测试:通过让软件系统在一定访问量情况下长时间运行,以检验系统性能在多长时间后会出现明显的下降。主要目的是验证系统运行的可靠性。
(6)数据量测试:通过让软件在不同数据量情况下运行,以检验系统性能在各种数据量情况下的表现。主要目的是找到支持系统正常工作的数据量极限。
(7)配置测试:通过被检测系统的软/硬件环境的调整,了解各种不同环境对系统性能的影响程度,从而找到系统各项资源的最优分配原则。主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。
三 性能测试过程模型
1.
2.HP性能测试过程
3.制订性能测试计划:
(1)明确测试范围
(2)制订时间(进度)计划
(3)制订成本计划
(4)制订环境计划
(5)测试工具规划
(6)测试风险分析
4.设计测试用例
5.搭建性能测试环境
(1)搭建硬件环境
(2)搭建软件环境
(3)搭建测试工具环境
(4)准备数据环境
6.执行性能测试
(1)脚本录制与开发
(2)场景设置
(3)测试执行
(4)测试监控
四 性能分析与性能优化
1.性能分析方法分类:
(1)指标达成法:用于验证性能指标
(2)最优化分析法:用于能力验证型测试
2.常用性能分析方法:
(1)快速瓶颈识别:
①硬件上的性能瓶颈 ②应用软件上的性能瓶颈 ③应用程序上的性能瓶颈
④操作系统上的性能瓶颈 ⑤网络设备上的性能瓶颈
(2)性能下降曲线:单用户区域、性能平坦区、压力区域、性能拐点
(3)内存分析方法 (4)处理器分析方法 (5)磁盘IO分析方法 (6)进程分析方法 (7)网络分析方法
五 HP LoadRunner基础
1.LoadRunner通过模拟实际用户的操作行为和实施实时性能检测,来帮助用户更快地确认和查找问题的所在。
2.确认系统选择协议方法
(1)可以直接确认。
(2)通过研发人员了解被测系统使用了什么样的协议。
(3)使用常用的数据监听工具进行数据包分析。
(4)万能协议Winsocket协议。
3.LoadRunner工具组成
(1)三个前台功能模块
- VuGen(虚拟用户脚本生成器)
- Controller(测试控制器)
- Analysis(结果分析器)
(2)两个后台功能模块
- LG(负载生成器)
- Proxy(用户代理)
4.LoadRunner 中的关键概念
(1)虚拟用户:Virtual User简称Vuser,性能测试过程中执行VU脚本以模拟真实用户对系统访问的执行实体。
(2)VU脚本:Script,记录了用户执行系统业务的操作过程,是Vuser执行的对象。
LoadRunner支持的脚本语言有:Java、C、Visual Basic、VB Script等,默认的脚本生成语言为C语言。
(3)场景:Scenario,一次性能测试执行内容的定义,用来模拟真实用户是如何产生压力的。(手工场景和面向目标场景)
场景由所要执行的脚本、虚拟用户、负载生成器、运行过程配置、实时监控五方面构成。
(4)事务:Transaction,提供一种端对端的测量方法,用于测量一个业务流程中执行一个或多个步骤所花费的时间。(可理解为一个计时单位)
(5)检查点:Check Point,提供了一种执行结果正确性验证机制,保证了测试工具对执行通过判断的准确性。
(6)思考时间:Think Time,提供了一种让VU脚本暂停执行(等待一段时间)的机制,用来模拟实际用户在不同操作之间等待时间,以便更加真实地反映用户访问系统的行为规律。
(7)集合点:Rendezvous,集合点提供了一种用户并发访问机制,用来模拟多用户对系统的并发访问。
六 HP LoadRunner脚本的录制于开发
1.创建测试脚本流程
2.两种录制模式:
(1) HTML-based script (基于HTML的脚本)录制模式是loadrunner的默认模式,单独步骤
(2)URL-based script (基于URL的脚本),每个请求
3. LoadRunner提供两种注释方法:
(1)单行注释。在代码行的后面,添加“//”,“//”的后面直到本行结束的内容为注释内容。
(2)块注释。一个注释块是以“/*”开头,并以“*/”结尾的串。在“/*”和“*/”之间的即为注释。
4.设置步长(多久迭代一次脚本):Pacing
5.Run Vuser as a process:以一个进程运行虚拟用户
Run Vuser as a thread:以一个线程运行虚拟用户
6.动态验证是需要做关联
7.四种日志类型
- 执行日志
- 编译日志
- 产生日志
- 录制日志
七 HP LoadRunner测试场景管理
1.场景主要是用来模拟真实用户向被测试系统产生压力,是一种用来模拟大量用户操作的技术手段。
2.Controller(中央控制器):负责设计与执行性能测试用例场景的组件。
3.测试场景类型:
(1)Manual Scenario:手工场景
(2)Goal-Oriented Scenario:面向目标的场景
4.负载发生器是一个可以独立部署并运行脚本的负载引擎。
5.手工场景:
(1)Scenario模式:
①Real-world schedule(真实场景模式)
②Basic Schedule(基础模式)
(2)Group模式
6.SLA(服务水平协议)是您为负载测试场景定义的具体目标。
7.面向目标的场景5种类型目标
(1)Vuser数
(2)每秒点击次数(仅Web Vuser)
(3)每秒事务数
(4)每分钟页面数(仅Web Vuser)
(5)场景的事务响应时间
8.系统参数监控
(1)场景用户状态
(2)场景运行状态
(3)计数器管理
①监控Windows、SQL Server、IIS
②Windows监控Linux/UNIX
③监控AIX ④监控Oracle ⑤监控Weblogic ⑥监控Apache
八 HP LoadRunner测试结果分析
1.功能:系统性能测试的目的是查找系统的性能问题,然后找出这些问题的根源。
2.Analysis测试结果分析方法
(1)从分析Summary的事务执行情况入手
(2)查看负载发生器和服务器的系统资源情况
(3)查看虚拟用户与事务的详细执行情况
(4)查看错误发生情况
(5)查看Web资源与细分网页