《软件性能测试过程详解与案例剖析》读书笔记

一、软件测试基本概念

响应时间

定义:对请求做出响应所须要的时间。是用户视角的软件性能的主要体现,带有主观色彩,没有绝对的长短。 “web页面合理响应时间标准”:2/5/10秒,10秒为上限web

上图将响应时间划分为“呈现时间”和“系统响应时间”。“呈现时间”取决于数据在客户端收到数据后呈现页面所消耗时间,通常性能测试中不关注“呈现时间”,由于其很大程度上取决于客户端表现。所以此处响应时间多为“系统响应时间”。数据库

页面响应时间可被进一步分解为:“网络传输时间”、“数据库延迟时间”和“应用服务器延迟时间”api

并发数

业务并发用户数定义:同一时间段内访问系统的用户数量(虽然在访问系统,但不必定对服务端产生压力,好比只是在浏览系统)服务器

服务端承受的最大并发访问数定义:从服务端承受的压力出发,描述的是同时向客户端发出请求的客户,体现的是服务端承受的最大并发访问数,常结合并发测试,来发现系统中存在的并发引发的资源竞争等问题。网络

例:若是一个OA系统有2000名用户,最高峰时有500人在线,其中40%在看系统公告,20%在发呆,20%在进行页面跳转,20%在填写表单。则:系统用户数为2000,在线用户数为500,业务并发用户数为500,服务端承受并发数取决于业务并发用户数及用户业务场景。session

上图用于估算业务并发用户数: 其中,公式1中C为平均并发用户数,n是login session的用户数,L是login session的平均长度,T是考察的时间段的长度,通常为8小时工做时间。公式2给出了并发用户数峰值计算方式,该公式由泊松分布估算获得。若知道平均每一个用户发出的请求数u,可估算吞吐量为u*C。架构

可经过“日志分析”对应用服务器进行分析,从而了解并发数数据,推荐AWStats开源工具(http://awstats.sourceforge.net/)并发

吞吐量

  • 定义:单位时间内系统处理的客户请求的数量,通常web系统用请求数/秒 或 页面数/秒来衡量。从业务角度,可用访问人数/天、业务数/小时衡量,或网络角度字节数/天负载均衡

  • 在没有遇到性能瓶颈时,吞吐量可计算为:F=(N*R)/T。其中N表示用户个数;R表示每一个用户发出的请求数量,T表示性能测试所用的时间。函数

  • 经常使用于分析分析吞吐量的图形是“吞吐量——VU数量(虚拟用户数)”的关联图。虽然吞吐量指标被看作系统承受压力的体现,但在不一样并发用户数量的状况下,对一个系统施加相同的吞吐量压力,可能获得不一样的测试效果。例如,对同一个系统,测试A采用100个VU,每一个VU间隔1s发出一个请求;测试B采用1000个并发,每隔10秒发出一个请求;二者吞吐量均为100,但B会更容易出现性能瓶颈。 两个不一样系统可能具备不一样用户数和用户使用模式,但若是具备基本一致的吞吐量,则能够说他们具备基本相同的平均处理能力。

性能计数器:内存数、进程时间;资源利用率

思考时间(Think Time),或休眠时间

  • 用户操做时每一个请求间的间隔时间。自动化测试角度来讲,必须在测试脚本中让各个操做之间等待一段时间。

RBI测试方法:Rapid Bottleneck Identify

性能降低曲线分析法:单用户区域;性能平坦区;压力区域;性能拐点

LoadRunner的性能测试过程

二、性能测试的应用领域

方法分类:

  • 性能测试:模拟业务压力量和使用场景组合,验证系统是否具备所宣称的能力。
  • 负载测试:经过在被测系统上不断增长压力,直到性能指标达到饱和状态,目的是找到系统的处理极限。经过“检测-加压-直到性能指标超过预期”的方法
  • 压力测试:测试系统在必定饱和态下,例如CPU、内存等在饱和态下系统的会话能力,以及系统是否会出错。经过增长访问压力(如并发量),检测系统有无出错信息,以及系统响应时间,以及系统在一段时间内的稳定性。通常会以*“CPU使用率达75%以上,内存使用率达70%以上,系统错误率,响应时间”来做为描述。
  • 配置测试:经过对系统软硬件调整,了解不一样配置对系统性能影响程度,从而找到最优分配原则。通常用于性能调优和规划能力
  • 并发测试:经过模拟用户并发访问,测试多用户并发访问一个应用时是否存在死锁或其余性能问题。主要关注内存泄露、线程锁、资源争用等。可针对系统或某种架构设计进行,可在开发各阶段使用。
  • 可靠性测试:经过给系统加载必定的业务压力(如资源在70%~90%使用率),让应用持续运行一段时间,测试系统是否稳定。
  • 失效恢复测试:针对有冗余备份和负载均衡的系统设计,能够用来检验若是系统局部发生故障,用户可否继续使用系统,以及用户将受多大程度的影响。

应用领域:

  • 能力验证:对一个已部署系统的性能进行验证。如性能测试,可靠性测试,压力测试,失效恢复测试
  • 规划能力:关心如何才能使系统具备咱们要求的性能能力,如系统可否支持将来一段时间内的用户增加。 是一种探索性测试。如负载测试,配置测试和压力测试
  • 性能调优:配置测试,负载测试,压力测试和失效恢复测试
  • 发现缺陷:并发测试,压力测试,失效恢复测试

三、性能计数器及性能分析方法

操做系统级别、应用服务器级别和数据库级别上查看和记录分析

操做系统计数器:

  • 内存分析(应用命令vmstat):
  • 处理器分析(命令top):
    1. 查看System\%Total processor Time性能计数器计数值:体现服务器总体的处理器利用率(或平均利用率)。当持续超过90%,则面临瓶颈,需增长处理器
    2. 查看每一个CPU的Processor\%Processor Time 和 Processor\%User Time(系统非核心操做消耗的CPU时间,当服务器是数据库服务器时,多是数据库排序或函数操做消耗时间) 和 Processor\%Privileged Time
    3. 查看 System\Processor Queue Length,当其大于CPU数量总数+1时,说明出现处理器阻塞。当Processor\%Process Time较高时通常伴随阻塞,反之则没必要然。
  • 磁盘I/O分析方法:针对数据库服务器、或文件服务器、流媒体服务器; Disk/Transfer 介于15~30ms为良好,超过60ms则需考虑更换硬盘等
  • 进程分析方法:查看进程的%Processor Time值,反应进程消耗的处理时间。查看页面失效。
  • 网络分析

    应用服务器计数器:IIS应用服务器,Tomcat

    数据库计数器

四、性能测试工具原理

性能测试不等同于性能测试工具;性能测试脚本录制是指录制服务端和应用之间的通讯数据,而非GUI操做,需先选择录制的协议

性能测试架构(以load runner为例)

  • 虚拟用户脚本生成器
  • 压力产生器:用于根据校本内容产生实际的负载。(通常一台具备512MB内存的PC机可顺利运行200个左右的VU)
  • 用户代理:是运行在负载机上的进程(可被看做压力产生器的组成部分),通常之后台方式在负载机上运行
  • 压力调度和监控系统
  • 压力结果分析功能
相关文章
相关标签/搜索