性能测试
了解性能测试相关指标
1.什么是做性能测试
1.1 生活中遇到的软件性能问题
软件用着用着就不能用了,一看热搜,发现该软件的服务器崩崩溃了。
1.2 性能测试定义
测试人员借助性能测试工具,模拟系统在不同场景下,对应的性能指标是否满足需求。
1.3 性能测试和功能测试的区别
- 功能测试依靠人工去执行。性能测试依靠工具完成。
- 功能测试:验证软件是否实现了需求。不管在什么场景下,只要能够正常运行即可。
- 性能测试:在软件能够正常运行的前提下。软件在极端的情况下,是不是能正常运行。
性能测试是在功能测试之后执行的。
1.4 什么样的表现属于软件性能好的表现
相应时间短,资源利用率高,日活跃用户数多,吞吐量大。
- 一个软件登录时间3ms比登录时间3s的性能要好
- 软件日活跃用户数多的,比日活跃用户数少要性能好
- 软件由于用户访问次数多,软件采用了较少并发数,软件算法优化,服务器升级的软件性能比用户访问人数一多就崩溃的软件好。
DAU:日活跃用户数。
1.5 影响一个软件性能因素
- 硬件:服务器CPU利用率,内存,磁盘操作频率,CPU核心数,网络带宽。
- 软件:实现软件的算法,编写软件的编程语言,
- 用户:用户数量,用户使用时长,用户的使用频率
为什么要做性能测试?
- 获取系统性能的指标,作为性能指标的基准(基准性能测试)
- 验证系统的性能指标是否达到要求(性能需求)
- 应用程序是否能够满足系统要求的各种性能指标
- 应用程序是否能处理预期的用户负载并有盈余能力
- 应用程序是否能处理业务所需要的事务数量
- 在预期和非预期的用户负载下,应用程序是否稳定
- 是否能确保用户在真正使用软件时获得舒服的体验
- 发现系统的性能瓶颈,内存泄漏等问题。
- 系统正常工作的情况下的最大容量。
- 帮助系统运维部门能更好的规划硬件配置
2.性能测试常见术语以及衡量指标
2.1 并发:
- 1个用户访问该网站(×)
- 100万个用户每隔10s时间访问该网站(×)
- 100万个用户同时访问该网站(√)
并发要满足大量用户同时访问。
业务层面的并发用户数:指的是同时向服务器发送请求的用户数量。 后端服务器层面的并发用户数:指的是同时向服务器发送请求的请求数量。
后端服务器层面的并发用户数 >= 业务层面的并发用户数
2.2 用户数:
- 系统用户数:系统注册用户数(数据库对其进行维护,不一定访问系统,不访问的不会对系统产生压力)
- 在线用户数:成功登录系统的用户数(相当于qq登录上账号了 ,停留在登录成功页面。并不会对系统产生压力)
- 并发用户数:大量用户同时访问系统,此时访问的用户数就是并发用户数。
数量 系统用户数 > 在线用户数 > 并发用户数
2.3响应时间
用户响应时间:发出请求开始,到客户端接收完所有的字节数据所消耗的时间 N1+A1+N2+A2+N3+A3+N4
请求响应时间:服务器收到请求发出相应这段时间是请求响应时间。A1+N2+A2+N3+A3
影响一个软件的响应时间因素有那些?
用户设备,网络带宽,服务器的配置(CPU,内存),软件算法逻辑,数据库性能
2.4 事务
数据库的事务就是把多个操作打包到一起,构成原子操作。
性能测试中,事务指的是指一组密切相关的子操作的组合 ,比如一次登录、一次筛选条件查询,一次支付等;
- 事务响应时间:用户完成某个具体事务(比如支付操作)所需要的时间。
- 358原则:对于一般系统而言,如果用户点击按钮后,系统可以在3秒钟内得到应答,则用户比较满意;如果系统在5秒内得到应答,则用户能够忍受;如果系统在8秒后得到应答,则用户不能忍受
- 每秒事务通过数: 处理的事务数量/事务花费的时间, 每秒事务通过的数量越多说明软件性能越好的。
TPS 是指每秒系统能够处理的事务数。它是衡量系统处理能力的重要指标。这个指标衡量了系统在同一时间内处理业务的最大能力。 当压力加大时,TPS曲线如果变化缓慢或者有平坦的趋势,很有可能是服务器开始出现瓶颈了。如果环境没有发生大的变化,对于同一系统会存在一个最大处理事务能力,它并不随着并发用户的增减而改变。
2.5 点击率
点击量:用户点击发送的http请求数,并不能衡量软件性能
点击率:点击量/时间
每秒点击数代表用户每秒向Web 服务器提交的HTTP请求数。点击率越大,服务器压力越大。这里的点击并不是鼠标的一次点击,一次点击可能有多次HTTP请求。
2.6 吞吐率
吞吐量:用户一次请求和服务器之间的数据交互量。并不能衡量软件性能
吞吐率:吞吐量/时间。吞吐率越高软件性能越好
2.7 思考时间
用户在对软件进行操作的时候,每一个操作中间的时间间隔。
2.8 资源利用率
不同系统资源的使用情况。包含CPU,内存,硬盘,网络等。
面试题:了解性能测试,那么你给我说一下你做性能测试的时候,你关注哪些指标?
3.性能测试的分类
基准性能测试
定义:让系统在正常情况下运行,观察性能指标。建立一个性能基准,作为以后性能测试的参考。
应用场景:软件刚上线需要对性能进行摸底,软件进行升级后,性能测试的参考,衡量软件是变好了还是变坏了。
负载性能测试
验证软件在一定的压力情况下运行,观察性能指标是否出现拐点。
压力性能测试
系统处于临界饱和的情况下,观察系统性能指标。(往往会把系统搞崩溃)
可靠性测试
验证系统在一个持续的时间段内运行,在这个运行时间段内,观察系统各项性能指标是否正常。
持续1day -> 持续运行一周 -> 持续运行1个月 -> 一个季度 -> 一年
如果持续一天没问题就持续一周,如果持续一周没问题就持续一个月……
可靠性就是可用性,正常使用时间的占比。可靠性 = 正常运行时间/(正常运行时间+非正常运行时间)* 100*%*可用性指标一般要求达到4个或5个“9”,即99.99%或者99.999% 。
如果可用性达到99.99%,对于一个全年不间断(7*24的方式)运行的系统,意味着全年(252600min)不能
正常工作的时间只有52min,不到一个小时。
如果可用性达到99.999%,意味着全年不能正常工作的时间只有5min 。
可靠性测试靠人为是达不到要求的,需要借助工具比如(loadrunner)
造成可靠性降低的原因:软件硬件出现问题,网络故障出现问题,自然灾害导致服务器损坏出现问题,停电。
4.性能测试的执行流程
功能测试的执行流程:需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估(发布测试报告)→ 上线
性能测试的执行流程:需求分析→测试计划→选择一款性能测试工具→性能测试脚本编写→执行性能测试脚本→产生性能测试报告
性能测试中出现了不符合预期的情况,我们不叫做BUG,叫做性能瓶颈
在性能测试中,出现了性能瓶颈,开发修复的过程叫做优化