第一章软件性能概述1.1软件性能基础1.1.1软件性能的概念软件性能是与软件功能相对应的一种非常重要的非功能特性,表明了软件系统对时间及时性与资源经济性的要求。
对于一个软件系统,运行时执行速度越快、占用系统存储资源及其他资源越少,则软件性能越好。
软件性能与软件功能是软件能力的不同体现,以一个人的工作能力来比喻,“功能”是某个人能够做的事情,“性能”指此人完成这件事情的效率。
在功能相同的情况下,性能是衡量事情完成效果的一个重要因素。
1.1.2 不同角色对软件性能的理解1)从系统用户角度看软件性能系统用户指实际使用系统功能的人员。
系统用户看到的软件性能就是软件的响应时间,即当用户在软件中执行一个功能操作后,到软件把本次操作的结果完全展现给用户所消耗的时间。
系统响应时间的影响因素有:功能的粒度、客户端网络情况、服务器当前忙闲情况等。
从系统用户角度看,软件响应时间越短,系统性能越好。
2)从系统运维人员角度看软件性能系统运维人员指负责软件系统运行维护的工作人员。
运维人员在关注系统响应时间的同时,还需要关注系统的资源利用率、系统最大容量、系统访问量变化趋势、数据量增长幅度、系统扩展能力等,并在此基础上制定合理的系统维护计划,以保障系统能够为用户提供稳定可靠的持续服务。
运维人员关注的性能问题:运维人员关心的问题软件性能描述应用服务器和数据库服务器的资源使用状况合理吗资源利用率系统是否能够实现扩展系统可扩展性系统最多能支持多少用户的访问系统容量系统最大的业务处理量是多少系统容量系统性能可能的瓶颈在哪里系统可扩展性更换哪些设备能够提高系统性能系统可扩展性系统能否支持7X24小时的业务访问系统稳定性3)从系统开发人员角度看软件性能系统开发人员指系统软件的设计和开发人员。
开发人员关注的性能问题:开发人员关心的问题问题所属层次数据库设计是否存在问题数据库设计代码是否存在性能方面的问题代码系统中是否有不合理的内存使用方式代码系统中是否存在不合理的资源竞争设计与代码1.1.3 软件性能的重要性保障软件系统的性能具有十分重要的意义,具体体现在以下方面:(1)系统性能越好,执行速度越快,用户使用系统的体验就越好(2)系统性能越好,用户的等待时间越少,有利于提高软件操作效率。
(3)系统性能越好,处理能力越大,单位时间处理业务量越大。
(4)系统性能越好,在大量用户访问系统时系统稳定性越好,能够提供持续服务。
(5)系统性能扩展性越好,越容易提升系统的处理能力,以适应更多的访问需求。
能意味着重大的销售损失或用户流失,保持系统系统性能对于软件系统的运营企业具有非常重要性能的的意义,系统下降可良好的系能对于提高用户体验、提升站点声誉、提升客户忠诚度、增加系统收入等都具有重要作用。
1.2 常用性能指标1.2.1 响应时间响应时间指用户感受到的软件系统为其服务所耗费的时间。
一般情况下,需要定义三种情况下的系统的响应时间:(1)闲时响应时间:指系统中访问用户数量较少的情况下,用户访问系统的响应时间,也可理解为在不受其他用户干扰的情况下,系统应该具有的性能表现。
(2)忙时响应时间:指在系统处理正常访问用户量的情况下,用户访问系统的响应时间。
该指标定义了系统在正常访问状态下应该具有的响应时间要求,体现了系统在正常访问状态下的性能表现。
(3)峰时响应时间:指在系统具有大量并发用户的情况下,用户访问系统的响应时间。
该指标定义了系统在承载最大并发用户情况下应该具有的响应时间要求,体现了系统压力负荷最大情况下的性能表现,也可以理解为系统最大响应时间。
1.2.2 并发用户数并发用户数指系统能够同时处理的用户请求的数目,也可以理解为同时向系统提交请求的用户数目。
注册用户数指系统中全部注册用户的数量;在线用户数指在相同时间段内登录了系统,并在系统中进行操作的用户数量。
平均并发用户数:指在系统正常访问量情况下的并发用户数。
最大并发用户数:指在峰值访问情况下的并发用户数。
如何判断是否达到峰值访问情况:(1)系统响应时间达到了峰值响应时间,即系统的响应时间已经达到了用户能够接收的上限。
(2)系统服务器资源利用率已经达到了上限,即服务器的CPU利用率、内存利用率等指标已经达到了需求规定的上限。
(3)系统请求成功率,即成功请求数/总请求数。
当系统压力过大时,某些用户请求就会执行失败,如果失败率过高,就说明系统已经达到了处理能力的上限,所以可以根据成功率来判断是否已经达到了最大并发用户数。
平均并发用户数仅反映了系统某个时刻的用户访问情况,并不反映系统的性能情况;而最大并发用户数反映了系统的处理能力,往往作为一项重要的性能指标在需求分析时进行定义。
1.2.3 吞吐量吞吐量指单位时间内系统处理的客户请求数量,体现系统的整体处理能力。
系统吞吐量越大,说明系统性能越好。
衡量吞吐量的常用指标内包括:RPS:请求数/秒,描述系统每秒能够处理的最大请求数量。
PPS:页面数/秒,描述系统每秒能够现实的页面数量。
PV:页面数/天,描述系统每天总的Page View数量。
TPS:事务/秒,描述系统每秒能够处理的事务数量。
QPS:查询/秒,描述系统每秒能够处理的查询请求数量。
1.2.4 服务器性能计数器服务器性能计数器指服务器或操作系统性能的一些数据指标,在性能测试中发挥着监控和分析的关键作用。
常用的操作系统性能计数器包括System Load、进程与线程数、使用内存数、CPU使用率、磁盘I/O、网络I/O等。
资源利用率反映的是在一段时间内服务器资源平均被占用的情况,能够更加直观的反映系统当前的运行情况,例如CPU利用率如果达到80%,就说明当前CPU基本已经耗尽,系统处于满载状态。
所以在进行性能需求分析时,往往通过资源利用率指标来定义服务器性能要求。
第2章软件性能测试基础2.1 软件性能测试的概念定义:狭义的软件性能测试指为验证软件性能指标、评估系统服务能力、推荐系统软硬件配置、完成系统性能优化等而开展的测试活动;广义的软件性能测试是指测试过程中需要相关性能测试方法配合完成的系统测试活动,包括可靠性测试、可恢复性测试、稳定性测试、兼容性测试、可扩展性测试等。
2.2 软件性能测试的目标目标分为4个方面:能力验证、缺陷发现、能力规划、性能优化1、能力验证分为3个层面:➢验证性能指标与需求的符合情况软件系统性能测试最主要的目标:验证软件性能是否符合软件需求文档中的性能指标要求,是否符合预定的设计目标。
➢获得系统服务能力评价系统可靠性6个质量特性:功能性、可靠性、易用性、效率性、维护性、可移植性可靠性一般用平均无故障时间(MTTF)来度量,三个子特性:成熟性、容错性、可恢复性。
2、缺陷发现缺陷发现性能测试的主要目的是:通过性能测试的手段来发现系统中存在的缺陷,并不需要验证性能指标是否满足需求的要求。
3、能力规划特点:1、规划能力是一种探索新的测试2、配置规划可用于了解系统的性能以及获得扩展性能的方法。
4、性能优化性能条有的前提:进行性能瓶颈定位特点:1、确定基准环境、基准负载和基准性能指标2、调整系统运行环境和实现方法、执行测试2.3常用性能测试方法基准测试三大原则:可测量、可重复、可对比2.4 软件性能测试范围(1)服务器性能测试(2)网络性能测试(3)客户端性能测试2.5 性能测试面临的问题主要包括:1、没有明确的性能指标需求2、不切实际的性能指标要求3、在开发环境下做性能测试4、走形式地进行性能测试5、只测试、不分析6、只测试、不优化7、性能测试缺乏方法论的指导8、缺乏高水平的性能测试人才第三章性能测试的组织管理3.1 软件性能测试过程模型非经典的软件开发模型:瀑布模型、螺旋模型、增量模型、喷泉模型、原型模型、敏捷开发软件测试相关模型:V模型、W模型、H模型、X模型3.1.1 Segue性能测试过程模型Segue性能测试模型3.1.2 HP性能测试过程模型HP性能测试过程模型3.1.3 PTGM(Performance Test General Model)性能测试过程模型性能测试过程通用模型(PTGM)3.1.4 APTM(Agile Performance Test Model)敏捷性能测试过程模型3.1.5 SPTM(System Performance Test Model)系统性能测试过程模型1.组建测试团队1)组织团队成员2)安排工作分工3)进行技能培训2.指定测试计划1)明确测试范围2)制定进度计划3)制定成本计划4)制定环境计划5)测试工具计划6)测试风险分析3.设计测试方案1)明确性能需求2)设计性能测试用例3)设计脚本录制方案4)设计测试场景5)设计测试结果指标4.搭建测试环境1)搭建硬件环境2)搭建软件环境3)搭建测试环境4)准备数据环境5.执行性能测试1)脚本录制与开发2)场景设置3)测试执行4)测试监控6.分析测试结果1)测试结果分析2)性能瓶颈分析3)制定优化方案4)性能测试总结性能测试支持环境:评审、沟通、管理、支持3.2 组件性能测试团队1组织团队成员2安排工作分工3进行技能培训3.2.1组织团队成员第六章LoadRunner基础6.2 LoadRunner 功能结构6.2.1 LoadRunner 工具组成LoadRunner 功能非常复杂,核心模块为Virtual User Generator、Controller、Analysis、Load Generator、Proxy五部分。
虚拟用户脚本生成器Virtual User Generator,简称VuGen,是用来录制虚拟用户脚本的工具支持大量的通信协议,支持自动化脚本录制和二次开发,为系统性能测试提供寻虚拟脚本支持。
负载生成器Load Generator,简称LG,负责将VuGen脚本复制成大量虚拟用户对系统生成负载,在性能测试中,用来模拟大量用户并发访问系统。
用户代理Proxy,是客户端和服务器的中介,负责协调不同负载机上的虚拟用户,产生步调一致的虚拟用户。
测试控制器Controller,负责对整个测试的过程进行设置,制定测试过程中的VU脚本、并发用户数、加压方式、执行周期、监控参数等,同时提供测试过程中的监控功能。
结果分析器Analysis,负责对测试中手机的相关数据进行整理和分析,形成各种图形表,辅助性能测试分析人员完成测试结果的分析任务。
6.2.1 LoadRunner 工作原理controller是执行负载测试管理和监控的中心,在这里定制具体的性能测试方案,执行性能测试,收集测试数据,监控测试指标。
LG是虚拟多用户并发访问被测系统的组件,虚拟多用户并发访问系统的前提是已经具备了虚拟用户的脚本,Vugen是录制和编辑虚拟用户脚本的工具,录制好的脚本是不同语言表达的文本文件,在LG执行时,被解析和执行,脚本录制和回访是在Proxy支持下完成的。