接口性能测试方案

吞吐率主要站在服务端的角度来看的一个性能指标,它可以衡量整个系统的处理能力。对于集群或者云平台来说,吞吐率指标反映的是服务器集群对外整体能够承受的压力,该指标比用户数更容易对比。

3.用户数

对于服务器集群或者云平台,几乎都是多用户系统,系统能提供给多少用户正常使用,也是一个非常重要的度量指标。我们把这些用户按照使用系统的时机不同,做如下区分。

系统用户数(SystemUsers):指系统能够存储的用户量。

在线用户数(OnlineUsers):指用户通过身份确认后,处于能正常使用状态的用户个数。

严格并发用户数(Strictlythenumberofconcurrentusers):指同一时刻都操作某个业务的用户数。

在性能测试过程中,我们要去模拟实际用户来发请求。但是为了吐服务器产生更大的压力,我们模拟的用户操作和实际的用户操作存在一定的差异(比如模拟的用户请求比实际用户的请求更频繁),而且返种模拟的用户数和实际的用户数也难以相互换算。所以在度量服务器集群能力时,吞吐率指标比用户数指标更实用。

02

性能测试方法及目标

1.性能测试方法

1.1基准测试(BenchmarkTesting)

方法是做多组不同场景的测试,观察结果,抽取出几个关键数据做好记彔,用于以后进行性能对比和评价。

1.2性能测试(PerformanceTesting)

通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。

特点:

(1)主要目的是验证系统是否具有系统宣称的能力。

(2)需要事先了解被测系统的典型场景,并具有确定的性能目标。

(3)要求在已确定的环境下运行。

1.3负载测试(LoadTesting)

(1)主要目的是找到系统处理能力的极限。

(2)需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景,使得测试结果具有业务上的意义。

(3)一般用来了解系统的性能容量,或是配合性能调优使用。

1.4压力测试(StressTesting)

测试系统在一定饱和状态下,例如CPU、内存等在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。

(1)主要目的是检查系统处于压力情况下是应用的表现。

(2)一般通过模拟负载等方法,使得系统的资源使用达到较高水平。

(3)一般用于测试系统的稳定性。

1.5配置测试(ConfigurationTesting)

通过对被测系统的软/硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到系统各项资源的最优分配原则。

(1)主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行得调优操作。

(2)一般在对系统性能状况有初步了解后进行。

(3)一般用于性能调优和规划能力。

1.6并发测试(ConcurrencyTesting)

通过模拟用户的并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。

(1)主要目的是发现系统中可能隐藏的并发访问时的问题。

1.7可靠性测试(ReliabilityTesting)

(1)主要目的是验证系统是否支持长期稳定的运行。

1.8失效恢复测试(FailoverTesting)

针对有冗余备份和负载均衡的系统设计的,可以用来检验如果系统局部发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响。

(1)主要目的是验证在局部故障情况下,系统能否继续使用。

(2)还需要指出,当问题发生时“能支持多少用户访问”的结论和“采取何种应急措施”的方案。

(3)一般来说,只有对系统持续运行指标有明确要求的系统才需要进行这种类型的测试。

2.性能测试目标

概况来说,可分为4个方面:

2.1能力验证

(1)要求在已确定的环境下进行。

(2)需要根据典型场景设计测试方案和用例。

一般采用的方法是:性能测试、压力测试、可靠性测试、失效恢复测试。

2.2能力规划

(1)属于一种探索性的测试

(2)可被用来了解系统的性能以及获得扩展性能的方法,例如系统扩容规划。系统容量可以是用户容量,也可能是数据容量,或者是系统的吞吐量(系统的处理能力)。对于集群服务我们更多的是用吞吐率作为容量。

方法是①先对各子系统、组件进行性能测试,找出它们之间的最优配比;②然后再通过各环节的水平扩展,计算出整体的扩容机器配比。

一般采用的方法是:负载测试、压力测试、配置测试。

2.3性能调优

为了更好的发挥系统的潜能,定位系统的瓶颈,有针对性的进行系统优化。

一般对系统的调整包括以下3个方面:

(1)硬件环境的调整

(2)系统设置的调整

(3)应用级别的调整

一般采用的方法是:基准测试、负载测试、压力测试、配置测试和失效恢复测试。

2.4发现缺陷

方法是设置集合点,实现严格并发用户访问;或者设置超大规模用户突发访问等这样的性能测试用例进行测试。

一般采用的方法是:并发测试。

03

性能需求分析

1.性能需求获取

1.1功能规格说明书

1.2系统设计文档

1.3运营计划

1.4用户行为分析记录

2.性能关键点选取

主要从以下4个维度进行选取:

2.1业务分析

确定被测接口是否属于关键业务接口或先分析出关键业务以间接获取该业务所访问的接口。

2.2统计分析

若接口系统访问行为存在日志分析记录,则直接获取日访问量高的接口;否则根据接口发布类型,选择第3方日志分析工具间接获取。

(1)IIS日志分析工具:LogParser2.2+LogParserLizardGUI

(2)Tomcat日志分析工具:AWStatsv7.3

(3)Nginx日志分析工具:GoAccessv0.9

若IIS或Tomcat等接口应用服务器使用Nginx进行负载,则日志访问量要以负载为准,因避免接口在Nginx设置缓存(即未进行透传)而导致统计不正确。

2.3技术分析

(1)逻辑实现复杂度高的接口(如判断分支过多或涉及CPU/IO密集型运算等)

(2)对系统(内存、CPU、磁盘IO)及网络IO等硬件资源耗用高的接口

备注:若接口因逻辑修改而重构,则需重新分析。

2.4运营分析

由于运营推广活动导致日访问突增高的接口。

备注:若运营计划调整,则需重新分析。

3.性能指标描述

3.2成功率

在一般情况下,接口响应成功率需达到99.99%以上。

3.3系统资源

若为最佳负载,则系统CPU及内存使用率建议区间[50%,80%],否则建议不超过50%。

3.4处理能力

立项申请书明确要求:在XX压力下(并发数)TPS需达到XX或接口系统可支撑XX万实时在线访问。

3.5稳定性

在实际系统运行压力情况下,可稳定运行N*24(一般N>=7)小时。在高于实际系统运行压力1倍的情况下,可稳定运行12小时。

3.6特性指标

例:Java类应用FullGC次数<=1次/天

04

性能测试范围

1.业务范围

关键业务功能点描述。

2.设计范围

网络接入层、接口层、中间件、存储层等被测组件及拓扑结构描述。

五、并发数计算方法

做过一些性能测试的童鞋刚开始比较纠结某个或某一类接口的并发数如何计算,其实并发数可以从用户业务和服务器的2个角度来看。

1.80/X原则

适用范围:无限制

以一项目为案例,母亲节当天接口服务器访问量分布如下所示,如何计算当天平均并发数和高峰并发数?

查看母亲节当天UV曲线分布与请求量呈线性关系,如下所示:

其实每个矩形的长度均为1(1小时),故求面积时只需考虑宽度,即考虑

每小时请求量即可。

故,平均并发数(每秒平均请求数)=80%*日请求量/1天*30%

进而计算出最高峰值与平均并发数的倍数=2.25

故,高峰并发数(每秒高峰请求数)=2.25*平均并发数=

2.25*80%*日请求量/1天*30%=6*日请求量/1天

因UV与请求量曲线分布呈线性关系,日请求量=9.25*日UV

故,高峰并发数=6*9.25*日UV/1天=55.5*日UV/1天

2.公式法

适用范围:Web类访问

公式(1)计算平均并发用户数:C=n*L/T

公式(2)计算并发用户数峰值:C’≈C+3根号C

C’指并发用户数的峰值,C就是公式(1)中得到的平均的并发用户数。该公式的得出是假设用户的loginsession产生符合泊松分布而估算得到的。

例1:

C=400*4/8=200

C’≈200+3*根号200=242

为了更好地理解上述公式,将其转换为如下公式:

例2:

分析:

吞吐率=8000*2(整个业务操作需加载2次页面才能完成)

通过以上方法得到业务并发数后,我们可以进一步分析业务访问了哪些接口,我们只要模拟这些接口调用方式和调用时序就行了。

有时我们需要计算某一个或某一类接口的并发数,我们可以按如下步骤进行分析计算:

(1)梳理出被测接口被访问的业务场景和每个业务场景访问的次数

(2)通过上述方法计算出业务场景的并发用户数

接口并发数=场景1并发用户数*业务场景接口调用次数1+场景2并发用户数*接口调用次数2+…

05

性能测试用例与场景

脚本模板

场景模板

06

性能测试工具选择

1.数据建模工具

DataFactory是一种强大的数据产生器,它允许开发人员和QA很容易产生百万行有意义的正确的测试数据库,该工具支持DB2、Oracle、Sybase、SQLServer数据库,支持ODBC连接方式,无法直接使用MySQL数据库,可间接支持。

2.脚本开发工具

(1)若考虑脚本运行效率,则可考虑底层开发语言C或支持异步通信的语言JS,我们可以分别选择:Loadrunner或Node.js的IDE环境进行开发。

(2)若考虑脚本开发效率,则可考虑代码复用性,可以选择面向对象语言C#或Java,为此我们可以分别选择:VS2008及以上版本+对应LR.NET控件或者Eclipse4.0及以上版本+JDK1.7及以上版本。

HTTP、Socket等协议接口性能测试脚本开发过程,请详见附件:

HTTP接口性能测试之脚本开发与性能问题分析.pdf

利用LR.Net控件完成性能测试脚本编写方法.pdf

Node.js学习入门手册.pdf

3.压力模拟工具

(1)若为Java类接口且单机并发数控制在500内,则可选择Jmeter或者Loadrunner。

(2)若为WebService类接口且单机并发数控制在500内,则可选择SoapUI或者Loadrunner。

(3)若单机并发数超过500且控制在5000内,则可选择Loadrunner。

(4)若单机并发数超过5000,则建议采用负载集群,即采用“中控(ControlCenter)+多机部署(LoadGenerator)”方案。

4.性能监控工具

4.1监控工具

无论Windows或Linux平台,一般存在的是一个或一组进程实例,我们可以选择Loadrunner或Nmon来监控。有时为了获取被测应用的一些特性指标,可以选择被测组件自带的性能工具集或监控系统。常见应用服务器监控工具推荐如下:

4.2监控平台

监控机器主要对被测集群服务器的服务或资源使用情况进行监控,比如各种开源的监控工具,MRTG:流量监控;CACTI:流量预警,性能报告Smokeping:IDC质量监控;综合监控:Nagios、Zenoss、Ganglia、Zabbix、Sitescope、HypericHQ等,如下所示:

4.3第三方监控云服务(APM)

APM提供端到端应用性能管理软件及应用性能监控软件解决方案,包含移动,浏览器,应用,基础设施,网络,数据库性能管理等,支持Java、.NET、PHP、Ruby、Python、Node.js、iOS、Android、HTML5等应用性能监控管理,主流云服务包括听云、OneAPM等,如下所示:

07

性能测试结果分析

1.指标分析

a.容量:系统能够承载的最大用户访问量是多少系统最大的业务处理量是多少

b.稳定性:系统是否支持7*24小时(一周)的业务访问。

举例来说,通常接口系统均会直接或间接地访问数据库层介质(如Mysql、Oracle、SQLServer等),此时我们需考虑由接口系统产生压力下存储介质的性能情况,通常我们会选择分析指标如下:

(1)连接数(Connections)

(2)每秒查询数/每秒事务数(QPS/TPS)

(3)每秒磁盘IO数(IOPS)

(4)缓存命中率(BufferHits)

(5)每秒发生的死锁数(DeadLocks/sec)

(6)每秒读/写字节数(Read/WriteBytes/sec)

对于Windows或Linux平台具体指标监控及分析方法,请详见附件:

《Windows操作系统性能监控工具和指标分析V1.0》.pdf

《Linux操作系统性能监控分析手册V1.0》.docx

2.建模分析

2.1理发店模型

根据这种性能表现,图中划分了三个区域,分别是LightLoad(较轻的压力)、HeavyLoad(较重的压力)和BuckleZone(用户无法忍受并放弃请求)。在LightLoad和HeavyLoad两个区域交界处的并发用户数,我们称为“最佳并发用户数(TheOptimumNumberofConcurrentUsers)”,而HeavyLoad和BuckleZone两个区域交界处的并发用户数则称为“最大并发用户数(TheMaximumNumberofConcurrentUsers)”。

2.2压力变化模型

图中:

a点:性能期望值

b点:高于期望,系统资源处于临界点

c点:高于期望,拐点

d点:超过负载,系统崩溃

2.3容量计算模型

以一网站性能测试为案例:

1.通过分析运营数据,可以知道当前系统每小时处理的PV数

2.通过负载测试,可以知道系统每小时最大处理的PV数

即整理得

系统每小时PV处理剩余量=系统每小时最大处理的PV数—系统每小时处理的PV数

假设该网站用户负载基本呈线性增长,现有系统用户数为70万,根据运营推广计划,1年内该网站发展用户将达到1000万,即增长了14倍。即整理得:

系统每小时PV处理增加量=当前系统每小时处理的PV数*14—当前系统每小时处理的PV数

每天系统负载增加率=100%/365=2.74%(备注:此处将未来系统用户数达到1000万的负载定义为100%)

系统每天PV处理增加量=系统每小时PV处理增加量*每天系统负载增加率*24

所以,我们可以知道在正常负载条件下:

系统可支持正常运行天数=系统每小时PV处理剩余量*24/系统每天PV处理增加量

假设该网站后续部署升级天数已知,这样我们可以知道提前升级的天数:

THE END
1.软件接口响应时间标准千城墨白丶软件接口响应时间标准 观点1: 响应时间在4秒以内,大部分用户可以接受; 4~9秒以内,30%的用户选择离开; 8~9秒,则有60%的用户选择离开; 超过10秒,则90%以上的用户选择离开。? 观点2:? 2秒之内的响应被用户认为是 “非常有吸引力” 的用户体验。https://www.cnblogs.com/cheerboy/p/16519851.html
2.java接口响应时间范围mob649e8169ec5f的技术博客在现代软件开发中,API(应用程序接口)的性能至关重要。响应时间是一个关键指标,能够反映出 API 的性能表现,直接影响到用户体验。本文将探讨 Java 接口响应时间范围的重要性,并通过示例代码深入理解如何计算和优化接口响应时间。 响应时间的定义 接口响应时间通常指的是从用户发起请求到接收到完整响应的时间。它包含了多https://blog.51cto.com/u_16175522/12724571
3.性能测试(概念)(并发数吞吐量响应时间TPSQPS基准测试A?案:100万并发访问,登陆响应时间3秒 B?案:500万并发访问,登陆响应时间8秒 这种情况下运维?员往往更更倾向于第?种 ?软件设计开发?员 关注算法设计、架构设计、性能最佳实践、数据库相关、软件性能的可测试性等。 https://blog.csdn.net/weixin_55807049/article/details/141757657
4.后端开发一个接口在并发状况下,平均响应时间多长比较合理在并发状况下,后端开发的一个接口的平均响应时间通常视具体应用、服务器能力及网络条件等因素而定。理想状况下,100毫秒到200毫秒内的相应时间被认为是较为合理的。这是因为,在这个时间范围内,用户体验不会受到明显的干扰,且能在保持较高吞吐率的同时,维护良好的用户体验。其中,保持接口的高效优化是实现理想响应时间的https://docs.pingcode.com/ask/161336.html
5.后端开发一个接口在并发状况下,平均响应时间多长比较合理?对其CPU、网络类型(一般会是专有网络)等等要求会高一些。爱今天灵眸,Windows主题管理/自动暗色软件 https://www.zhihu.com/question/558796860
6.软件开发的性能指标软件开发的性能指标是用于评估和衡量软件系统性能的关键指标。这些指标涵盖了多个方面,包括响应时间、吞吐量、资源利用率、可扩展性等。以下是一些常见的软件开发性能指标: 响应时间(Response Time):衡量系统对用户请求的快速响应程度,通常以毫秒(ms)为单位。较低的响应时间通常表示更好的用户体验。 https://developer.aliyun.com/article/1494628
7.接口性能测试指标综上所述,接口性能测试指标可以帮助我们评估接口的性能并发现潜在的问题。通过衡量响应时间、吞吐量、并发连接数、错误率、可扩展性、容量以及可靠性等指标,我们可以优化接口性能,提供更好的用户体验和系统稳定性。因此,在开发和维护接口时,我们应重视接口性能测试,并根据测试结果进行相应的调整和改进。https://www.eolink.com/news/post/86399.html
8.性能指标之响应时间腾讯云开发者社区虽然不同的场景对响应时间的要求各有差异,但是业界对于在线交易系统,还是有一个普遍的标准:早期是2/5/10秒原则,现如今随着技术的发展,用户的要求也提高了,逐渐朝1/3/5秒原则演变。 1/3/5秒原则: 在1s以内得到响应,用户会觉得系统响应很快,体验非常好;1-3秒得到响应,用户可以接收,体验还不错;3-5秒才响应https://cloud.tencent.com/developer/news/50215
9.面试官:“你就说,你的系统QPSTPS响应时间都是多少!”这位同学,你比上一位面试者好多了,你的简历中做的几个项目都不错。既有业务项目,也有技术项目,看得出你对编程开发是有一定的经验积累的。那么我还想了解下,这些项目在运行中的一个数据效果是怎么样的。比如;tps、qps、响应时间、数据库负载等,都是什么情况,你用的什么监控工具。另外你这里还些了微服务的架构,https://www.eefocus.com/article/1551232.html
10.软件开发接口规范20240908231148.pdf发布时间:2024-09-10发布于中国 浏览人气:20 下载次数:仅上传者可见 收藏次数:0 需要金币:*** 金币(10金币=人民币1元) 软件开发接口规范.pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 软件开发接口规范--第1页 软件开发接口规范 https://m.book118.com/html/2024/0908/7141050154006150.shtm
11.网站程序开发中的网站访问速度与响应时间随着互联网的快速发展,网站已成为人们获取信息、购物、娱乐和交流的重要途径。在网站的开发过程中,网站的访问速度和响应时间是影响用户体验和网站质量的重要因素之一。本文将从技术角度讨论网站程序开发中的网站访问速度与响应时间的关键问题,并提出一些优化策略。 https://www.shwzzz.cn/news/50607.html
12.软件测试5个常用的性能指标是什么?推荐好文在当今高度数字化的世界里,软件性能已经成为衡量产品竞争力的重要因素之一。无论是在Web应用、移动应用还是企业级系统中,性能不佳都会直接影响用户体验,进而影响到企业的品牌形象和市场占有率。因此,性能测试成为了软件开发周期中不可或缺的一部分。本文将重点介绍五个在软件性能测试中最常被使用的性能指标。 https://m.kexintest.com/sys-nd/2676.html
13.页面响应时间的标准是什么?指的是客户发出请求到得到响应的整个前言 在面试中,我们经常会被问到从输入网址到页面展示发生了什么,或者前端的优化建议,我们都很有必要了解下网页响应时间标准是什么? 响应时间 指的是客户发出请求到得到响应的整个过程的时间。在某些工具中,请求响应时间通常会被称为“TTLB”(Time to laster byte) ,意思是从发起一个请求开始,到客户端收到最后一https://juejin.cn/post/6867721264740433934
14.性能测试响应时间技术标签:性能测试响应时间软件测试 性能测试---响应时间 先来一张图 我们先来分析一个用户去访问一个页面的请求过程,如上图所示 数据传输时间: 平时我们访问一个网站或者网址的时候,当我们输入网址,按下回车,开始 性能测试过程中的请求和响应,也是如此,当我们发送一个请求,到服务器接收到这个请求需要时间,系统处理https://www.pianshen.com/article/98841863169/
15.常见的软件系统性能测试指标衡量一个软件系统性能的好坏,在性能测试中会使用一些性能指标来进行分析和描述,以下是一些最常用的性能指标。 响应时间 请求或者某个操作从发出的时间到收到服务器响应的时间的差值就是响应时间。在性能测试中,一般统计的是事务处理的响应时间。 图1-2-1是一次标准HTTP请求可能经过的处理路径和节点,那么响应时间的计https://blog.itpub.net/18841117/viewspace-3009553/