任何软件的开发都是一个繁琐而漫长的过程,在发布和使用之前都要经过一系列的质量和性能测试。随着技术世界的发展,用户对处理应用程序的期望也在不断变化,在大规模部署应用程序之前测试应用程序的性能至关重要。
一、选择合适的指标衡量软件性能
衡量软件产品的性能对于成功开发软件非常重要。检查软件是否可以执行分配的任务,并帮助其不断改进是必不可少的。衡量性能使开发团队能够识别问题并通过采取快速行动帮助他们尽早解决问题。
性能测试需要发现有待改进的领域。它需要开发团队衡量完成任务所需的时间。这将为客户提供更准确的项目计划。
选择合适的指标来衡量软件产品十分必要:
- 在测试方面,指标是执行的基准。
- 指标在部署后跟踪软件产品的性能方面发挥着关键作用。
- 指标是QA 测试人员确定已部署软件产品中的问题和错误的关键方面。此外,它还可以帮助测试人员找到合适的解决方案来快速解决问题。
- 用于跟踪软件产品性能的指标允许开发人员比较结果并确定代码更改造成的影响。
软件开发团队实施的性能测试常用的度量包括敏捷性能度量、生产分析、基本代码度量、安全度量等。
二、软件产品性能关键指标
几个应用程序性能指标可帮助软件开发团队衡量性能。跟踪软件产品性能的关键指标包括:
1. 响应时间
它是性能的基本度量,包括从请求进入服务器到从服务器接收到最后一个字节所经过的时间。此响应时间指标以千字节每秒为单位。
2. 请求率
请求率指标被称为客户端发送的应用程序被注册为 HTTP 请求并发送到服务器。服务器软件然后处理请求,生成响应,并响应客户端。一致请求的总数记录为每秒请求数 (RPS)。请求可以以任何数据格式记录,如 HTML 页面、Javascript 库、多媒体文件、XML 文档等。
3. 用户交易
软件界面记录用户操作的顺序。将实际事务时间与预期时间进行比较有助于得出系统在通过负载测试时的成功程度。
4. 每单位时间的虚拟用户数
如果软件产品满足定义的要求,该指标有助于检查软件产品的性能。该指标使 QA 团队能够估计不同负载条件下的平均负载和软件行为。
5. 错误率
该指标计算一段时间内无效答案与有效答案的比率。这些结果以百分比表示。当软件负载超过其容量时会发生错误。跟踪错误的不同方式包括 HTTP 错误百分比、记录的异常、抛出的异常等。
6. 等待时间
等待时间也称为潜在时间,它是从请求发送到服务器的那一刻到接收到名列前茅个字节所经过的时间。这些指标以 KB/s为单位。该指标与响应时间不同,因为包含的时间范围不同。
7. 平均加载时间
这是传递请求所用的时间段。这是用于根据其操作评估软件质量的主要参数之一。据观察,如果网页加载时间超过3s,则用户倾向于放弃该页面。因此,QA 团队的任务是测量平均加载时间。团队需要建议以较慢的速度优化页面加载的区域。
8. 峰值响应时间
该指标类似于平均加载时间。该指标包括应用程序完成请求所花费的最长时间。如果该参数高于平均加载时间,则表明软件中至少存在一个问题组件,需要注意。
9. 并发用户
该指标也称为负载大小,因为它有助于显示任何给定时间点的活跃用户数量。该指标广泛用于研究多个虚拟用户下的软件行为。它类似于每秒请求数,但不同之处在于它不会生成任何一致的请求。在思考时间的概念中,所有请求不会同时发送到服务器,而是按顺序发送到服务器,每个请求之间会有短暂的停顿。
10. 通过或失败的交易
这是最简单的指标之一,用于表示通过或失败的测试与执行的测试总数相比的百分比。该指标类似于最终用户的加载时间和关键指标。
11. 吞吐量
该指标定义了测试期间使用的带宽。该指标表示在给定时间内流经任何特定网络的最大数据量。该指标以 KB/s为单位,取决于并发用户的数量。
12. CPU利用率
好吧,名称本身就可以告诉您这些指标的全部故事以及如何处理它们。该指标用于计算 CPU(中央处理单元)用于处理最终用户提出的任何请求的时间。
13. 内存利用率
它是测试团队用来检查软件产品性能的具体指标之一。该指标定义了 QA 团队用于测试的任何给定设备上的物理内存在处理任何请求时使用了多少资源。
14. 用户会话总数
该指标提供任何特定时间的强度。这可以通过每周的会话数来衡量。或每月,这取决于产品所有者选择的时间范围。总用户会话数据包括查看的页面数和传输的字节数等详细信息。
三、软件性能评估方法
1、响应时间评估
响应时间是指系统对请求作出响应的时间。这个时间是指用户从软件客户端发出请求到用户接收到返回数据的整个过程所需要的时间,包括各种中间件(如服务器、数据库等)的处理时间。响应时间的绝对值并不能直接反映软件的性能的高低,软件性能的高低实际上取决于用户对该响应时间的接受程度。客户感受的响应时间 = 客户端响应时间+服务器端响应时间+网络响应时间。
2、系统响应时间和应用延长时间评估
系统响应时间是指客户端接收到用户请求到客户端接收到服务器发来的数据所需时间。应用延长时间指客户端接收到网站数据时呈现页面所需的时间。
3、吞吐量
吞吐量是指系统在单位时间内处理请求的数量。对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,实际上此时吞吐量就是响
应时间的倒数。
4、并发用户量
并发用户量、在线用户量、注册用户量的区别:并发用户量指现实系统中操作业务的用户量,会对服务器产生压力,在性能测试中称为虚拟用户数(Virtual User);在线用户量指挂在系统的用户量,只有活动的在线用户才会对服务器产生压力;注册用户指数据库中存在的用户数。
(1)、用TPS(Transaction Per Second 每秒事务数)估算并发用户量
TPS普通计算:TPS=总请求数/总时间
TPS二八原则计算:TPS=(总请求数80%)/(总时间20%)
并发用户量=TPS(运行时间+思考时间) 例如:某打卡软件有10万个用户,所有用户在8:30-9:10进行打卡,服务器响应时间0.2s,网络响应时间2s,客户端响应时间0.5s,思考时间为3s 普通估算: TPS=100000/(4060)=41.7(业务量/秒) 并发用户量=41.7(0.2+2+0.5+3)=238(人) 二八原则估算: TPS=10000080%/(406020%)=166.7(业务量/秒) 并发用户量=166.7(0.2+2+0.5+3)=950(人)
(2)、通过在线活动用户量估算并发用户量
平均并发用户量=平均每天访问的用户数每天用户从登录到退出的时长/考察时间长度 并发用户量峰值=平均并发用户量+平均并发用户量的立方根 例如:某打卡软件有10万个用户,用户从登录到退出的平均时长为2小时,用户在12小时之内会使用该系统,则: 平均并发用户量=1000002/12=16666.7(人) 并发用户量峰值=16666.7+25.5=16693(人)
(3)、根据系统在线用户量估算并发用户量
并发用户量=系统最大在线用户数的8%到12% 例如:某打卡软件有10万个用户,则 并发用户量=10000010%=10000
(4)、通用估算
并发用户量=(80%影响因子用户总量/统计时间)每人耗费的时间 例如:某打卡软件有10万个用户,统计时间为2小时,则 并发用户量=80%3100000/(26060)5=166.7(人)
5、资源利用率估算
资源利用率反映的是在一段时间内资源平均被占用的情况,包括CPU利用率、内存利用率、磁盘利用率等。
CPU评估
用TPC-C(Transaction PerMinute每分钟完成多少笔交易)进行服务器评估 TPC-C=典型工作日平均业务交易总量(TASK)80%(80%的业务交易集中在高峰时段)/典型工作日业务交易峰值持续时间(T以分钟为单位)复杂程度因子(s)业务冗余预留(F)/CPU利用率估值(C=75%) 复杂因子:一般复杂事务为6-12,较复杂事务为13-16,高度复杂事务为17-20,建议值为15 例如工作日有10万用户,每个用户进行30次交易,交易峰值持续时间12小时 TPC-C=(100000300.8)/(1260)101.5/75%=6.7万交易量/分钟
可选择单个服务器CPU达到该指标、或几个服务器集群达到该指标。
内存评估
内存需求=操作系统所占内存(4G)+数据库管理系统所占内存(4G)+Redis服务器所占内存(2G)+Tomcat服务器所占内存(4G)+应用程序所占内存(1G) 合理的内存利用率一般低于50% 内存=(4+4+2+4+1)/50%=30G
磁盘评估
磁盘需求=操作系统所需磁盘(40G)+数据库1年所需磁盘(30G)+数据及文件保存1年所需磁盘(30G)+数据库3年历史数据所需磁盘(90G)+数据及文件保存3年历史数据所需磁盘(90G)+其它(20G) 硬盘空间的利用率一般不超过85% 硬盘=(40+30+30+90+90+20)/85%=352G
网路评估
网络需求=单个用户最大数据量并发用户量 合理的网络利用率一般低于50% 例如:单个用户每秒最大数据量为1K,并发用户数10000,则 网速=(100010000)/50%=20M
6、测试评估
(1)、负载测试;通过自动化测试工具模拟程序或者软件系统在超强负荷条件下,观察系统各项性能指标的变化情况,一般与压力测试共同进行。
(2)、强度测试;指系统在资源条件很差工作环境下的运行情况,如人为限制网络带宽,内存等。
(3)、容量测试;一般指模拟用户不断增加时,确定系统可以处理同时在线的最大用户数量。
以上就是衡量软件的性能的指标,衡量软件的性能可以让软件开发团队改进他们的软件(产品),并在竞争中保持名列前茅。
五、软件开发质量和效能提升辅助工具
国内好的效能管理工具并不多,以下是比较推荐的三款,仅供参考:
工具 | 类型 | 介绍 | 地址 |
PingCode | 研发全周期 | 覆盖研发管理全生命周期,研发效能上满足:企业研发效能评估、研发团队效能度量、项目交付数据分析、个人效能指标统计等场景的需求。具备自动采集研发全生命周期数据、效能度量指标体系(比如交付质量、交付效率、交付能力,流程上覆盖了需求、开发、CI/CD、测试、发布)、自定义的数据分析报表、建立效能度量分析模型。 | https://datayi.cn/w/4PY7B0D9 |
思码逸 | 单点工具 | 为研发团队提供了研发数据汇总分析的一站式入口,度量指标包括效率、质量及人才三方面,从高管、团队Leader、项目/产品经理、开发者等视角,帮助研发团队各角色成员客观、全面地洞察研发流程及成果。 | https://www.merico.cn/ |
云效 | 研发全周期 | 提供的交付过程观测和研发效能度量、分析能力,为项目管理、研发管理场景下进行过程跟进、效能改进时提供可视化数据依据。 | https://www.aliyun.com |
一款好的研发项目管理软件可以对软件开发效能和质量提升提供以下帮助:
- 计划和进度管理:研发项目管理软件可以帮助项目经理制定计划和进度,协调开发人员的工作,并确保项目按时交付。
- 任务分配和优先级管理:软件开发项目通常需要执行多个任务,研发项目管理软件可以帮助团队分配任务并设置任务的优先级,以确保高优先级任务能够及时完成。
- 团队协作和沟通:研发项目管理软件可以提供协作和沟通工具,使得团队成员可以实时交流和协作,从而提高开发效率和协作效率。
- 缺陷和Bug管理:研发项目管理软件可以跟踪缺陷和Bug,并帮助开发团队更好地管理缺陷,从而提高软件的质量和可靠性。
- 代码管理和版本控制:研发项目管理软件可以提供代码管理和版本控制功能,帮助开发团队管理代码的变更和版本控制,以确保代码的稳定性和一致性。
- 数据分析和报告:研发项目管理软件可以提供数据分析和报告功能,使得团队可以更好地了解项目的进展和状态,从而做出更好的决策。
总之,研发项目管理软件可以帮助开发团队更好地管理项目,提高开发效率和质量,减少风险,并帮助团队更好地协作和沟通。
来源:51CTO技术栈
作者:Heli Patel