当前位置: 首页 > news >正文

性能测试基础知识

参考书籍:《软件性能测试过程详解与案例剖析》第二版——作者:段念

 

1、定义

对响应时间的评估、分析,结合应用的架构和实现细节找出问题,并最终确认问题得到解决的过程 

2、影响软件性能的因素

网络环境、数据库服务器、应用服务器、业务逻辑的实现方式、系统采用的架构、代码的优化程度、使用者的使用方式等

3、测试模型

通用的软件测试过程模型(PTGM)、敏捷软件测试模型(ATPM)

4、软件性能测试的应用领域 

能力验证、规划能力、性能调优、瓶颈发现、性能基准比较

 

一:基础篇

1、软件性能测试的基本概念

1.1 性能是一种指标(软件性能对其及时性要求的符合程度)

    性能的及时性用响应时间或者吞吐量表示

    响应时间:对请求做出响应所需要的时间

例子:交互式的应用(web):用户感受到的响应时间

     非交互式的应用(嵌入式或者银行等业务处理系统):系统对事件产生响应的time

1.1.1 用户视角的软件性能

端→端

用户操作——数据操作请求——(应用服务器)服务端响应——返回数据——用户端

1.1.2 管理员视角的软件性能 

服务器资源使用状况是否合理                       资源利用率

数据库资源使用状况是否合理                       资源利用率

系统能否可以实现扩展                            系统可扩展性

系统的最大并发,压力是多少                       

并发:最多能支持多少用户访问                     系统容量

压力:最大的业务处理量

系统可能的瓶颈在哪里                            系统可扩展性

更换什么设备能提升系能                          系统可扩展性

能否支持7*24小时的业务访问                      系统稳定性

1.1.3 开发视角的软件性能 

架构设计是否合理                               系统架构

数据库设计是否存在问题                          数据库设计

代码是否存在性能方面的问题                       代码

系统中是否存在不合理的内存使用方式                代码

系统中是否存在不合理的线程同步方式                设计与代码

系统中是否存在不合理的资源竞争                   设计与代码 

1.1.4 web前端性能

Web应用的前端响应时间:页面加载时间

其中包括:

1.对HTML的解析读取

2.对页面图片及CSS等文件的获取和加载

3.客户端脚本(JavaScript)的执行时间

4.对页面进行展现所花的时间 

 

1.2软件性能的几个主要术语

1.2.1 

合理的响应时间取决于实际用户需求

1.2.2 

并发用户数:N数值的用户同时访问系统

1.服务器实际承受的压力不只取决于并发用户数,还取决于用户的业务场景

2.服务端承受的最大并发访问数取决于并发用户数+业务场景

业务场景:通过服务器日志的分析得出的结果

日志分析方法:对服务器日志进行分析,了解系统用户的使用状态,计算出服务器承受的最大并发用户数量

特点:准确度/可信度高

适用:internet应用(无法估算用户量和行为方式)

推荐日志分析工具:AWStats:http://awstats.sourceforge.net/

这是一个基于Perl的日志分析工具,可对Apache/IIS的日志进行分析,还有良好的扩展支持

 

用于估算并发用户数的公式(仅供参考)

平均用户并发数:C=n*L/T

峰值并发用户数:C›≈C+3C 

其中,C是平均并发数,n是用户从登陆到退出系统的时间段,L是系统使用时间段的平均值,T是使用系统的时间段数值,C›指并发用户数的峰值

对于企业内部使用的web系统,还有精度更小的一种公式

平均用户并发数:C=n/10

峰值用户并发数:C›≈r*C 

其中,r值一般取2—3.这种方法要求不太严格,只有很少数据支持分析的性能测试中使用

1.2.3 吞吐量

定义:单位时间内系统处理客户请求的数量

一般来说,请求数/每秒OR页面数/每秒来衡量

从业务角度来说,访问人数/天OR处理的业务数/小时来衡量(PV、UV)

从网络角度来说,字节数/天来考察网络流量 

对于交互式应用,吞吐量指标反映服务器承受的压力,在容量规划测试中,吞吐量是个很重要的指标,因为它能说明系统级别的负载能力

Web系统的性能测试中,吞吐量指标可以在两个方面发挥作用

1.协助设计性能测试场景,以及衡量性能测试场景是否达到预期的设计目标

2.协助分析性能瓶颈

3.没有遇到瓶颈之前,吞吐量和并发用户之间存在的关系可以用下面的公式表达:

  F=N(vu)*R/T

F表示吞吐量,N表示VU的个数,R表示每个VU发送的请求(点击)数量,T表示性能测试所用的时间

不同并发用户数量情况下,对同一系统施加相同的吞吐量,很可能得到不同结果

 

PS:大部分性能测试中,单击数(Hits)指客户端发出的HTTP的请求数量,而不是指用户在页面上的一次单击事件。

比如:一次单击事件请求页面A,页面A包含3张图片和一个框架(Frame),则这次单击共产生了5个Hits(包括对页面A本身的请求) 

1.2.4性能计数器(Counter)

定义:描述服务器或者操作系统性能的一些数据指标

作用:监控、分析

分析系统可扩展性,进行性能瓶颈的定位时,计数器取值非常关键

相关指标:资源利用率:系统各种资源的使用情况 

1.2.5思考时间(Think Time)

休眠时间:用户操作时间每个请求的间隔时间

体现在脚本中,就是操作之间放一个Think函数,使脚本在执行两个操作之间等待一段时间

公式F=N(vu)*R/T吞吐量是VU数量N,请求数R和时间T的函数,其中,R又可以用时间T和用户的思考时间Ts来计算:

  R=T/Ts   (请求数=时间/请求间隔时间)

推荐一个计算思考时间的方法:

1.首先计算出系统的并发用户数

2.统计出系统平均的吞吐量

3.统计出平均每用户发出的请求数量

4.根据上面的公式得出请求时间

 

 

相关文章:

  • [PHP内核探索]PHP中的哈希表
  • 前端学习路线(转自知乎)
  • 【我的《冒号课堂》学习笔记】设计原则(1)间接原则
  • 将字符串中的首字母大写
  • koan重新安装系统
  • mysql JDBC URL格式
  • 李洪强iOS开发之OC[015]#pragma mark的使用
  • QCon旧金山2016大会,议题发布及研讨会一瞥
  • 回到顶部
  • Maven更新子模块的版本号
  • 如何提高网页的加载速度
  • asp.net 如何引用dll
  • java 单例
  • PHP如何快速读取大文件
  • sass学习
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • C++入门教程(10):for 语句
  • JS基础之数据类型、对象、原型、原型链、继承
  • k个最大的数及变种小结
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • PhantomJS 安装
  • vue的全局变量和全局拦截请求器
  • 闭包,sync使用细节
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 观察者模式实现非直接耦合
  • 机器学习学习笔记一
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 技术攻略】php设计模式(一):简介及创建型模式
  • Spring Batch JSON 支持
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 东超科技获得千万级Pre-A轮融资,投资方为中科创星 ...
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (二)c52学习之旅-简单了解单片机
  • (二)JAVA使用POI操作excel
  • (仿QQ聊天消息列表加载)wp7 listbox 列表项逐一加载的一种实现方式,以及加入渐显动画...
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)小程序儿童艺术培训机构教育管理小程序 毕业设计 201740
  • (强烈推荐)移动端音视频从零到上手(上)
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (一)WLAN定义和基本架构转
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • .Net 4.0并行库实用性演练
  • .net Application的目录
  • .Net MVC4 上传大文件,并保存表单
  • .net和jar包windows服务部署
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .Net中间语言BeforeFieldInit
  • @html.ActionLink的几种参数格式
  • @RequestBody与@ModelAttribute