软件性能测试过程详解与案例剖析_性能测试基础学习笔记

本文介绍了性能测试的基本概念,包括模拟大量用户操作以找出系统瓶颈,以及不同角色对性能测试的关注点。重点阐述了并发用户数、响应时间和系统吞吐量的关系,并列举了常用的七种性能测试方法。同时,探讨了性能测试在能力验证、能力规划、性能调优和缺陷发现四大应用领域的具体应用。
摘要由CSDN通过智能技术生成

由于公司业务发展及个人成长所需,需要会性能测试。对于性能测试零基础的我和测试组的组员来说,只能从基础开始学起,通过网上购买课程和书籍,学习了解了一些性能测试的基础概念。做下笔记,方便自己以后查阅。

1、 什么是性能测试

模拟用户进行大量的频繁操作,监控系统中各个节点的资源耗用情况,找到系统的处理极限或瓶颈所在,评估系统整体是否能够满足要求或者是否需要优化系统以及制定优化方案;这就是性能测试。

2、 不同人员眼中的性能测试

不同的人由于视角的不同,所关注的点也可能不同。下面来看看在不同的人群眼中性能分别是什么样的。

  1. 普通用户:我还需要等待多久--响应时间

为什么总是加载中或加载失败--稳定性

2.运维人员:

  • 服务器资源使用合理吗?资源利用率
  • 数据库使用合理吗?资源利用率
  • 系统是否能实现扩展?可扩展性
  • 最多能支撑多少用户访问?系统容量
  • 最大业务处理量?系统容量
  • 系统有哪些潜在的瓶颈?可扩展性
  • 5*8或7*24小时连续不断业务访问?稳定性
  • 更换哪些设备、添加哪些机器可以提高系统性能?可扩展性

3.开发人员:

架构设计是否合理?--架构设计

代码是否存在性能问题?--代码

是否有不合理的内存使用?--代码

是否有不合理的资源竞争?--代码

数据库设计是否合理?--数据库设计

代码算法是否还能有进一步提升?代码

是否有不合理的线程同步操作?--代码

4.测试人员

需要兼顾普通用户、运维人员和开发人员的视角。

需要关注软件的算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性这五大方面。

衡量软件性能的三个常用指标:

1.并发用户数

并发用户数是性能的重要的指标之一。它包含了业务层面和后端服务器层面的两层含义。

业务层面的并发用户数:是指实际使用系统的总的用户数量。但是,我们单靠这个指标并不能反应系统实际承载的压力,我们还要结合用户行为模型才能得到系统实际承载的压力。

在用户数的问题上,需要区分三个概念

1.系统用户数:系统注册的总用户数据

2.在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求

3.并发用户数:

  • 同一时间点,执行同一操作的用户数
  • 同一时间点,执行不同操作的用户数

后端服务器层面的并发用户数,指的是“同时向服务器发送请求的数量”,直接反映了系统实际承载的压力。

2.响应时间

响应时间反映了完成某个操作所需要的时间,其标准定义是“应用系统从请求发出开始,到客户端接收到最后一个字节数据所消耗的时间”,是用户视角软件性能的主要体现。
响应时间,分为前端展现时间和系统响应时间两部分。其中,前端时间,又称呈现时间,取决于客户端收到服务器返回的数据后渲染页面所消耗的时间;而系统响应时间,又可以进一步划分为Web服务器时间、应用服务器时间、数据库时间,以及各服务器间通信的网络时间。

3.系统吞吐量

指在一次性能测试过程中网络上传输的数据量的总和。需要注意的是,所有对吞吐量的讨论都必须以“单位时间”作为基本前提。
对性能测试而言,通常用“Requests/Second”“Pages/Second”“Bytes/Second”来衡量吞吐量。当然,从业务的角度来讲,吞吐量也可以用单位时间的业务处理数量来衡量。
以不同方式表达的吞吐量可以说明不同层次的问题。比如:
“Bytes/Second”和“Pages/Second”表示的吞吐量,主要受网络设置、服务器架构、应用服务器制约;
“Requests/Second”表示的吞吐量,主要受应用服务器和应用本身实现的制约。

3.并发用户数、响应时间、系统吞吐量之间的关系

当系统的并发用户数比较少时,响应时间就比较短;但是由于整体的并发用户数少,所以系统的吞吐量也很低。从中,我们可以得出这样的结论:
当系统并发用户数较少时,系统的吞吐量也低,系统处于空闲状态,我们往往把这个阶段称为 “空闲区间”。
当系统的并发用户数比较多时,响应时间不会增加太多,因此系统的整体吞吐量也随着并发用户数的变大而变大的。从中,我们可以得出这样的结论:
当系统整体负载并不是很大时,随着系统并发用户数的增长,系统的吞吐量也会随之呈线性增长,我们往往把这个阶段称为 “线性增长区间”。
系统的并发用户数达到一定规模时,每个用户的响应时间都会明显变长,所以系统的整体吞吐量并不会继续随着并发用户数的增长而增长。从中,我们可以得出这样的结论:
随着系统并发用户数的进一步增长,系统的处理能力逐渐趋于饱和,因此每个用户的响应时间会逐渐变长。相应地,系统的整体吞吐量并不会随着并发用户数的增长而继续呈线性增长。我们往往把这个阶段称为系统的“拐点”。

4.常用的七种性能测试方法

  • 后端测试
通过性能测试工具模拟大量的并发用户请求,然后获取系统性能的各项指标,并且验证各项指标是否符合预期的性能需求的测试手段。
根据应用领域的不同,后端性能测试的场景设计主要包括以下两种方式:
基于性能需求目标的测试验证;
探索系统的容量,并验证系统容量的可扩展性
  • 前端性能测试
前端性能关注的是浏览器端的页面渲染时间、资源加载顺序、请求数量、前端缓存使用情况、资源压缩等内容,希望借此找到页面加载过程中比较耗时的操作和资源,然后进行有针对性的优化,最终达到优化终端用户在浏览器端使用体验的目的。
前端性能测试优化的需要关注的范围
减少http请求次数:http请求数量越多,执行过程耗时就越长,所以可以采用合并多个图片到一个图片文件的方法来减少http请求次数,也可以采用将多个脚本文件合并成单一文件的方式减少http请求次数;
减少DNS查询次数:DNS的作用是将URL转化为实际服务器主机IP地址,实现原理是分级查找,查找过程需要花费20~100ms的时间,所以一方面我们要加快单次查找的时间,另一方面也要减少一个页面中资源使用了多个不同域的情况;
避免页面跳转:页面跳转相当于又打开一个新的页面,耗费的时间就会比较长,所以要尽量避免使用页面跳转;
使用内容分发网络(CDN):使用CDN相当于对静态内容做了缓存,并把缓存内容放在网络供应商(ISP)的机房,用户根据就近原则到ISP机房获取这些被缓存了的静态资源,因此可以大幅提高性能;
Gzip压缩传输文件:压缩可以帮助减小传输文件的大小,进而可以从网络传输时间的层面来减少响应时间;
  • 代码级性能测试
代码级性能测试,是指在单元测试阶段就对代码的时间性能和空间性能进行必要的测试和评估,以防止底层代码的效率问题在项目后期才被发现的尴尬。
  • 四压力测试
压力测试,通常指的是后端压力测试,一般采用后端性能测试的方法,不断对系统施加压力,并验证系统化处于或长期处于临界饱和阶段的稳定性以及性能指标,并试图找到系统处于临界状态时的主要瓶颈点。所以,压力测试往往被用于系统容量规划的测试。
  • 配置测试
配置测试,主要用于观察系统在不同配置下的性能表现,通常使用后端性能测试的方法:
1.通过性能基准测试(Performance Benchmark)建立性能基线(Performance Baseline);
2.在此基础上,调整配置;
3.基于同样的性能基准测试,观察不同配置条件下系统性能的差异,根本目的是要找到特定压力模式下的最佳配置。
  • 并发测试
并发测试,指的是在同一时间,同时调用后端服务,期间观察被调用服务在并发情况下的行为表现,旨在发现诸如资源竞争、资源死锁之类的问题。
  • 可靠性测试
可靠性测试,是验证系统在常规负载模式下长期运行的稳定性。
虽然可靠性测试在不同公司的叫法不同,但其本质就是通过长时间模拟真实的系统负载来发现系统潜在的内存泄漏、链接池回收等问题。

性能测试的四大应用领域

不同的性能测试方法适用于不同的应用领域去解决不同的问题,这里“不同的应用领域”主要包括能力验证、能力规划、性能调优、缺陷发现这四大方面。每个应用领域可以根据自身特点,选择合适的测试方法。

第一,能力验证

能力验证是最常用,也是最容易理解的性能测试的应用领域,主要是验证“某系统能否在A条件下具有B能力”,通常要求在明确的软硬件环境下,根据明确的系统性能需求设计测试方案和用例。

能力验证这个领域最常使用的测试方法,包括后端性能测试、压力测试和可靠性测试。

第二,能力规划

能力规划关注的是,如何才能使系统达到要求的性能和容量。通常情况下,我们会采用探索性测试的方式来了解系统的能力。

能力规划解决的问题,主要包括以下几个方面:

· 能否支持未来一段时间内的用户增长;

· 应该如何调整系统配置,使系统能够满足不断增长的用户数需求;

· 应用集群的可扩展性验证,以及寻找集群扩展的瓶颈点;

· 数据库集群的可扩展性验证;

· 缓存集群的可扩展性验证;

能力规划最常使用的测试方法,主要有后端性能测试、压力测试、配置测试和可靠性测试。

第三,性能调优

性能调优,其实是性能测试的延伸。在一些大型软件公司,会有专门的性能工程(Performance Engineering)团队,除了负责性能测试的工作外,还会负责性能调优。

性能调优主要解决性能测试过程中发现的性能瓶颈的问题,通常会涉及多个层面的调整,包括硬件设备选型、操作系统配置、应用系统配置、数据库配置和应用代码实现的优化等等。

这个领域最常用的测试方法,涵盖了我在上面分享的七大类测试方法,即后端性能测试、前端性能测试、代码级性能测试、压力测试、配置测试、并发测试和可靠性测试。

第四,缺陷发现

缺陷发现,是一个比较直接的应用领域,通过性能测试的各种方法来发现诸如内存泄露、资源竞争、不合理的线程锁和死锁等问题。

缺陷发现,最常用的测试方法主要有并发测试、压力测试、后端性能测试和代码级性能测试。

4bad8db0c5cea5a0ded471e8c7922c25.png
图片来自网络,侵删

希望我的笔记能对你了解性能测试基础概念有所帮助,加油,奥里给!

参考资料:《软件性能测试过程详解与案例剖析》第二版--段念

《软件测试52讲》--茹炳晟

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件性能测试过程详解案例剖析  第一部分 基础篇   第1章 软件性能测试基本概念   1.1什么是软件性能   1.1.1用户视角的软件性能   1.1.2管理员视角的软件性能   1.1.3开发视角的软件性能   1.1.4总结   1.2软件性能的几个主要术语   1.2.1响应时间   1.2.2并发用户数   1.2.3吞吐量   1.2.4性能计数器   1.2.5思考时间   1.3软件性能测试方法论   1.3.1SEI负载测试计划过程   1.3.2RBI方法   1.3.3性能下降曲线分析法   1.3.4LoadRunner的性能测试过程   1.3.5Segue提供的性能测试过程   1.3.6本书提供的PTGM模型   1.4本章小结    第2章 性能测试的应用领域   2.1性能测试的方法   2.1.1性能测试   2.1.2负载测试   2.1.3压力测试   2.1.4配置测试   2.1.5并发测试   2.1.6可靠性测试   2.1.7失效恢复测试   2.2性能测试应用领域分析   2.2.1能力验证   2.2.2规划能力   2.2.3性能调优   2.2.4发现缺陷   2.2.5总结   2.3本章小结    第3章 性能计数器及性能分析方法   3.1操作系统计数器及分析   3.1.1Windows操作系统的主要计数器   3.1.2UNIX操作系统的主要计数器   3.1.3内存分析方法   3.1.4处理器分析方法   3.1.5磁盘I/O分析方法   3.1.6进程分析方法   3.1.7网络分析方法   3.2应用服务器计数器   3.2.1IIS应用服务器计数器   3.2.2J2EE应用服务器计数器   3.3数据库计数器   3.4本章小结    第4章 性能测试工具原理   4.1性能测试工具模型   4.2性能测试脚本录制时的协议类型   4.3性能测试工具的选择与评估   4.4本章小结    第5章 性能测试的组织   5.1性能测试团队的人员构成   5.2性能测试过程模型   5.2.1测试前期准备   5.2.2测试工具引入   5.2.3测试计划   5.2.4测试设计与开发   5.2.5测试执行与管理   5.2.6测试分析   5.3本章小结    第二部分 实践篇   第6章 案例一某制造型企业信息化项目的性能测试   6.1项目背景   6.2项目特点   6.3性能测试过程   6.3.1测试前期准备   6.3.2测试工具引入   6.3.3测试计划   6.3.4测试设计与开发   6.3.5测试执行与管理   6.3.6测试分析   6.4案例小结    第7章 案例二某省电信公司业务系统的性能测试   7.1项目背景   7.2项目特点   7.3性能测试过程   7.3.1测试前期准备   7.3.2测试工具引入   7.3.3测试计划   7.3.4测试设计与开发   7.3.5测试执行与管理   7.3.6测试分析   7.4案例小结    第8章 案例三某通信企业的Web业务系统性能测试   8.1项目背景   8.2项目特点   8.3性能测试过程   8.3.1测试前期准备   8.3.2测试工具引入   8.3.3测试计划   8.3.4测试设计与开发   8.3.5测试执行与管理   8.3.6测试分析   8.4案例小结    第9章 案例四某集成商的性能选型测试   9.1项目背景   9.2项目特点   9.3性能测试过程   9.3.1测试前期准备   9.3.2测试工具引入   9.3.3测试计划   9.3.4测试设计与开发   9.3.5测试执行与管理   9.3.6测试分析   9.4案例小结
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值