性能测试思想(What is performance testing?)
1.什么是性能测试
什么是软件性能?
定义:软件的性能是软件的一种非功能特性
,它关注的不是软件是否能够完成特定的功能,而是在完成该功能是展示出来的及时性
。
比如:一个登录功能他能实现登录操作,但是登录过程需要10s才能进入主页面,这就说明软件的性能不好。
什么是性能测试?
定义:指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件
来对系统的各项性能指标进行测试。
功能测试的时候关注的是1个人的操作,性能测试关注的是多个人。
性能测试什么时候做?
接口测试是最先做,性能测试是最后
做。
性能测试是基于所有功能都测试完毕并且修复完成,基本不改变,正常测试流程已经全部走完,在上线前的两三天做性能测试,性能测试通过则可以上线。
2.不同群体眼中的性能
用户的视角:
- 响应时间(还要让我等多久?需要加载老半天才出现页面?)
- 确定性(为什么总是失败?闪退?无响应?)
开发视角:
- 架构设计是否合理?——架构设计
- 数据库设计是否合理?——数据库设计
- 代码是否存在性能问题?——代码
- 是否有不合理的内存使用?——代码
- 是否有不合理的线程同步操作?——代码
- 是否有不合理的资源竞争?——代码
- 代码算法是否还能进一步提升?——代码
系统管理员(运维)视角:
- 服务器资源使用合理吗?——资源利用率
- 数据库使用合理吗?——资源利用率
- 系统是否实现扩展?——可扩展性(比如:服务器动态扩展)
- 最多支撑多少用户访问?——系统容量
- 最大业务处理量?——系统容量
- 系统有哪些潜在的瓶颈?——可扩展性
- 更换哪些设备,添加哪些机器可以提高系统性能?——可扩展性
- 7×24小时连续不间断业务访问?——稳定性
测试眼中的性能:
官方回答:
- 测试人员通常是作为软件质量控制的一个角色,不仅仅是找BUG,更需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面。
- 测试人员需要考虑全面的性能,包括用户、开发、运维等各个视角的性能。
- 测试人员在做性能测试时除开要关注表面的现象,比如:响应时间,也需要关注本质,比如:用户看不到的服务器资源利用率,架构设计是否合理,代码是否合理等方面。
实际测试:
- 将开发视角看成一块,运维视角也看成一块,站在用户的角度,模拟用户操作。
- 如果达标就通过,上线。
- 如果不达标,就要判断是开发的问题还是运维的问题。
- 监控系统的物理资源,比如:CPU占用100%(一般是85%以内,70%、60%、50%都ok),就是运维问题,或者是内存占满,带宽打满。
- 运维已经调过物理资源,CPU、内存、带宽等也都达标,测试发现还有性能问题,那就是开发问题。就要指派给开发去处理。
性能测试的指标?是谁定的?
产品经理和项目经理制定。
3.性能测试的场景维度和类型
基准测试:
在给系统施加较低压力时,查看系统的运行状况并记录相关数据作为基础参考。
比如:一个系统的性能要求是满足100个人使用,我们就会取10-20个人去做测试就会得到一组数据,这个数就作为基准测试的基础参考值
负载测试:
是指对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如:某种资源已经达到饱和状态。
正常是由小往大增加,需要注意的点是需要往安全的临界值去加,而不是往超负荷的去加,也就是说性能是走上坡路的,寻找最佳性能的那个点。如果加到发现性能下降,就需要往回退,取更小的差值,比如60直接加到70的时候出现性能指标下降,就需要取65、66、67等慢慢尝试,找到系统最优点。
压力测试:
压力测试是评估系统处于或超过预期负载时系统的运行情况,关注点在于系统在峰值负载或超出最大载荷情况下的处理能力。
70往上加,观察软件是如何处理这种情况:
①系统崩溃
②所有人都无法访问
③一部分人可以访问,一部分人无法访问,需要错峰访问(比如:考试系统查分)
稳定性测试:
在给系统加载一定业务压力(40%-60%)的情况下,使系统运行一段时间,以此检测系统是否稳定。
并发测试:
测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。
4.性能测试指标确立及分析
响应时间
(RT——Response-time)定义:从
用户发送一个请求
到用户接受到服务器返回的响应数据
的这段时间就是响应时间。关键路径:http请求经过网络发送到web服务器进行处理,如果需要操作DB,再由网络转发到数据库进行处理,然后返回值给web服务器,web服务器最终把结果数据通过网络返回给客户端。
响应时间计算方法:
响应时间=呈现时间+网络传输时间+服务器端响应时间+应用延时时间
响应时间和负载对应关系:
理发店模型:10个理发师,理1个客户需要1分钟,当同时来的客户数量小于等于10个,总时间只需1分钟,当同时来11个客户,总时间就需要2分钟,以此类推21个客户就需要3分钟......
拐点:
- 响应时间突然增加。
- 意味系统的一种或多种资源利用达到极限。
- 通常可以利用拐点来进行性能测试分析与定位。
吞吐量
定义:单位时间内系统处理的客户端请求的数量。(判断系统处理能力的一个指标)
计算单位:一般使用
请求数/秒
作为吞吐量的单位,可以使用页面数/秒
表示。另外,从业务角度来说也可以使用访问人数/天
或页面访问量/天
作为单位。计算方法:throughput = (number of requests)/(total time)
吞吐量和负载对应关系:
拐点:
- 吞吐量逐渐达到饱和。
- 意味着系统一种或多种资源利用达到了极限。
- 通常可以利用拐点来进行性能测试分析与定位。
并发数
- 并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。
- 在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。(日活——每日活跃用户数)
- 系统用户数:系统注册的总用户数据。
- 三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数
资源利用率
定义:指的是对不同系统资源的使用程度,通常以占用最大值的百分比来衡量(CPU、内存)。
通常需要关注的服务器资源如下:
- CPU:就像人的大脑,主要负责相关事物的判断以及实际处理的机制。(一般不超过80%-90%)
- 内存:大脑中的记忆块区,将眼睛、皮肤等收集到的信息记录起来的地方,以供CPU进行判断,但是是临时的,访问速度快,如果关机或断电,内存中的数据就会消失。
- 磁盘IO:大脑中的记忆区块,将重要的数据保存起来,永久保存,关机或断电也不会丢失,速度慢,以便将来再次使用这些数据。(通过查看读写)
- 网络:带宽。(发送/接收的速率)
资源利用率和负载对应关系:
拐点:
- 服务器某资源使用逐渐达到饱和。
- 通常可以利用拐点来进行性能测试分析与定位。
windows的资源监视器:
任务管理器 --> 性能 --> 资源监视器
其他常用概念
PV
(Page View,页面访问量):访问一个URL,产生一个PV,每日每个网站的总PV量是形容一个网站规模的重要指标。UV
(Unique Visitor,用户访问):作为独立的用户,访问站点的所有页面均算一个UV。
性能测试思想(What is performance testing?)的更多相关文章
- RabbitMQ Performance Testing Tool 性能测试工具
RabbitMQ Performance Testing Tool 介绍:https://www.rabbitmq.com/java-tools.html RabbitMQ Performance T ...
- Performance Testing 入门小结
从事软件测试两年多了,一直在做功能测试.2016年计划学习Performance.今天,先把之前听过的同事session以及自己查阅的资料小结一下. 一.什么是性能测试 首先来说一下软件的性能是什么. ...
- Difference Between Performance Testing, Load Testing and Stress Testing
http://www.softwaretestinghelp.com/what-is-performance-testing-load-testing-stress-testing/ Differen ...
- 脚本语言&& Performance Testing
watin: http://www.cnblogs.com/dahuzizyd/archive/2007/04/13/ruby_on_rails_windows_instatnrails_study_ ...
- Run Performance Testing Which Was Distributed To Multiple Test Agents
How to solve the VS installed machine cannot run performance testing by .testsettings file, which wi ...
- Difference between Load / Stress / Performance Testing
Load and stress testing are subsets of performance testing. Performance testing means how best somet ...
- Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑
脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...
- 【原创】时隔十年,再度审视Performance Testing,性能测试,Load Runner,和企业级性能测试解决方案
软件测试入行是2006年,最先学习的测试工具囊括了QTP,Test Director,Load Runner,Rational Robot,Rational Performance: 那时的操作系统是 ...
- Performance testing of web application
Testing the performance of web application is easy . It's easy to design unrealistic scenario . Easy ...
- Performance testing test scenarios
1 check if page load time is within acceptable range2 check page load on slow connections 3 check re ...
随机推荐
- spring boot整合mybatis-plus报错:There is no getter for property named ‘ew‘ in ‘xxx‘
问题说明 spring boot整合mybatis-plus报错:There is no getter for property named 'ew' in 'xxx' 问题解决 XXXmapper. ...
- python web连接mysql数据库
一定要commit,否则数据库不会发生改变!!! 1.使用python写入内容到数据库 import pymysql # 记得下载并引入pymysql # 1.连接mysql,db:声明数据库 con ...
- QT - Day 2
QMainWindow 菜单栏 最多有一个 QMenuBar *bar = MenuBar(); setMenuBar(bar); QMenu *fileMenu = bar->addMenu ...
- Golang gRPC学习(05): retry重试
什么是重试 如果服务出现了错误,主要是网络,服务器出现了短暂异常的时候,该怎么办? 我们都会人工或者自动的重新连接服务试试,看服务是否恢复可用了. 这种重新进行连接服务的一种方式就是重试.如果是在微服 ...
- Go语言并发编程(2):channel 通道介绍和使用
一.简介 channel 不仅可以用于 goroutine 间进行安全通信,还可以用于同步内存访问. 而且 Go 社区强烈推荐使用 channel 通道实现 goroutine 之间的通信, 不要通过 ...
- OpenCV开发笔记(六十一):红胖子8分钟带你深入了解Shi-Tomasi角点检测(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- docker 发布.net core 项目(linux)
一.准备阶段:前提:一台linux系统,安装好了Docker并启动 1.上传.netcore项目压缩文件 2.解压 注:若没有解压软件,先下载rar解压软件再安装:需注意系统是64位还是32 (下 ...
- 【C++ OOP 02 对象的初始化和清理】构造/析构函数、深/浅拷贝、初始化列表以及静态成员
[对象的初始化和清理] 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全 C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据 ...
- 第一篇博客——MarkDown语法
Markdown学习 标题 三级标提 四级标题 字体 Hello World ! 两个星号加粗 Hello World ! 一个星号斜体 Hello World ! Hello World ! 两个波 ...
- 【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答
一:云服务后端是2台虚拟机,Work Role,Web Role,可以RDP进去,但是为什么在虚拟机列表里看不到呢? 因为云服务(经典)是PaaS服务,有别于传统的IaaS服务,其提供的WebRole ...