性能测试相关概念
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
系统的性能是一个很大的概念,覆盖面非常广泛,包括执行效率、资源占用、系统稳定性、安全性、兼容性、可靠性、可扩展性等,性能测试就是描述测试对象与性能相关的特征并对其进行评价而实施的一类测试。
性能测试是一个统称,它其实包含多种类型,主要有负载测试、压力测试、并发测试、容量测试等,每种测试类型都有其侧重点。
1.负载测试
负载测试是指逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载量。负载测试类似于举重运动,通过不断给运动员增加重量,确定运动员身体状况保持正常的情况下所能举起的最大重量。
对于负载测试来说,前提是满足性能指标要求。例如一个软件系统的响应时间要求不超过2s,则在这个前提下,不断增加用户访问量,当访问量超过1万人时,系统的响应时间就会变慢,超过2s,从而可以确定系统响应时间不超过2s的前提下最大负载量是1万人。
2.压力测试
压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃的边缘,从而确定系统所能承受的最大压力。
压力测试与负载测试是有区别的,负载测试是在保持性能指标要求的前提下测试系统能够承受的最大负载,而压力测试则是使系统性能达到极限的状态。
例如软件系统正常的响应时间为2s,负载测试确定访问量超过1万时响应时间变慢。压力测试则继续增加用户访问量观察系统的性能变化,当用户增加到2万时系统响应时间为3s,当用户增加到3万时响应时间为4s,当用户增加到4万时,系统崩溃无法响应。由此确定系统能承受的最大访问量为4万。
压力测试可以揭露那些只有在高负载条件下才会出现的Bug(缺陷),如同步问题、内存泄漏等。
3.并发测试
并发测试是指通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其他性能问题。并发测试一般没有标准,只是测试并发时会不会出现意外情况,几乎所有的性能测试都会涉及一些并发测试,例如多个用户同时访问某一条件数据,多个用户同时在更新数据,那么数据库可能就会出现访问错误、写人错误等异常情况。
4.可靠性测试
可靠性测试是指给系统加载一定的业务压力,使其持续运行一段时间(如7×24h),测试系统在这种条件下是否能够稳定运行。例如可以进行使CPU保持70%~90%利用率的压力,连续对系统加压7×24小时的测试,然后根据结果分析是否稳定可靠。
5.容量测试
容量测试验证被测对象承受超额数据容量时,正确处理业务请求的能力。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量,如并发用广数、数据库记录、存储文件数等。
容量测试是指在一定的软硬件及网络环境下,测试系统所能支持的最大用户数、最大存储量等。容量测试通常与数据库、系统资源(如CPU、内存、磁盘等)有关,用于规划将来需求增长(如用户增长、业务量增加等)时,对数据库和系统资源的优化。
针对上述负载测试、压力测试、容量测试举个例子
例:一个人背X斤
负载测试:200斤情况下,是否能坚持5分钟。
压力测试:200,300,400... 斤情况下,他的表现,什么时候失败,失败之后什么表现,重新扛200是否正常。
容量测试:在坚持5分钟的情况下,他一次最多能扛多少斤。
常见术语有:响应时间、并发用户数、吞吐量、吞吐率、点击率、资源使用率、性能计数器等。
1、响应时间 RT
响应时间是指用户从客户端发送请求到所有的请求都从服务器返回客户所经历的时间。
概念:响应时间是指客户端/系统从发出请求开始,到接收到全部响应数据所有的时间。
注意:是从请求发送开始到接收到全部响应数据,强调全部。
误区:很多时候,用户会将发送请求到接收到响应数据视为响应时间。
2、并发用户数
关于用户并发的数量,有两种常见的错误观点。
一种错误观点是把并发用户数量理解为使用系统的全部用户的数量,理由是这些用户可能同时使用系统;
还有一种比较接近正确的观点是把在线用户数量理解为并发用户数量 。
实际上在线用户也不一定会和其他用户发生并发,例如正在浏网页信息的用户,对服务器没有任何影响。并发主要针对Web服务器而言,是否并发的关键是看用户的操作是否对服务器产生影响。
因此用户并发数量的正确理解是,在同一时刻与服务器进行交互的在线用户数量,这些用户的最大特征是和服务器发生了交互。
-----此段引用《Web性能测试实战》一书。
《Web性能测试实战》
在工作中,对于并发用户这个概念的理解经常会出现以下两种误区:
一是认为系统所有的用户都是并发用户;
二是认为所有在线的用户都是并发用户。
系统使用中所有的用户是指所有可能用到该系统的用户,但这并不是并发用户数。
在线用户指当前正在使用系统的用户,但在线用户不一定是并发用户,因为在线用户不一定就与系统进行了数据交互。
3、吞吐量
在性能测试过程中,吞吐量是指单位时间内服务器处理客户请求的数量,吞吐量通常使用请求数/秒来衡量,直接体现服务器的承载能力。
吞吐量作为性能测试过程中主要的指标之一,它与虚拟用户数之间存在一定的联系。
但在实际测试过程中,测试前吞吐量是不知道的,必须通过不断添加虚拟用户来不断地测试,才能找到吞吐量的拐点,即服务器实际吞吐量的值。
4、吞吐率
吞吐率(Throughout)是指单位时间内从服务器返回的字节数,也可以指单位时间内服务器处理客户提交的请求数。它是衡量网络性能的一个重要指标。吞吐率=吞吐量/测试时间,通常情况下吞吐量的值越大,吞吐率的值也越大,那么系统的负载能力越强。
TPS(Transaction Per Second)表示服务器每秒处理的事务数,它是衡量系统处理能力的重要指标。
5、点击率
点击率(Hit Per Second)是指每秒钟用户向服务器提交的 HTTP 数量。用户每点击一次,服务器端就要对用户提交的请求进行一次处理,从事务的角度来说,如果把每次点击作为提交事务来对待,那么点击率与 TPS 的概念是等同的。对于 Web 系统来说,点击率是服务器处理的最小单位,点击率的值越大,说明服务器端所能承受的压力越大。因此通常情况下,Web 服务器都具有防刷新的机制,因为客户每刷新一次系统就要响应一次点击,如果不对服务器进行防刷新处理,当用户不停地单击刷新按钮,此时服务器将承受着巨大的压力。
需要注意的是,单击一次并不代表客户端只向服务器端发送一个 HTTP 请求,客户每单击一次,都可能会向服务器端发出多个 HTTP 请求。点击率越高,说明客户端提交的请求数越多,正常情况下并发的虚拟用户数越多,客户端提交的请求数越多。
6、资源使用率
资源使用率是指服务器系统不同硬件资源被使用的程度,主要包括 CPU 使用率、内存使用率、磁盘使用率、网络等。资源使用率=资源实际使用量/总的可用资源量。资源利用率表现当前服务器资源使用的情况,它是分析服务器出现瓶颈和对服务器进行调优的主要依据,在配置调优测试的过程中,通过比较配置调优前后系统资源的使用率来判断调优的效果。
7、性能计数器
系统性能包括两部分:时间和空间。空间指的是系统硬件资源的使用情况,性能测试工具是如何来监控硬件资源(如 CPU、内存、磁盘)的使用情况呢? 性能测试工具并没有现成的指标可以直接监控这些硬件资源使用的情况,依靠的是不同硬件资源所对应的计数器来监控。
性能计数器(Counter)是描述服务器或操作系统硬件使用情况的一系列数据指标。当然数据库、Web 服务器和应用服务器也存在对应的计数器,但其他归根到底都是在消耗服务器的硬件资源。通过添加计数器来观察系统资源的使用情况。监控不同的对象有着不同的计数器,主要包括操作系统性能计数器、数据库计数器、应用服务器计数器等。
计数器在性能测试过程中发挥着监控和分析的关键作用,尤其是在分析系统的可扩展性和对性能瓶颈进行定位时,计数器的阈值起着非常重要的作用。必须注意的是,一般情况下,单一的性能计数器只能体现系统性能的某一个方面,在性能测试过程中分析测试结果时,必须基于多个不同的计数器进行分析。
在性能测试中常用资源利用率进行横向对比。如在进行性能测试时发现,某个资源的使用率很高,几乎达到 100%,假设该资源是 CPU,而其他资源的使用率又比较低,此时可以很清楚地知道,CPU 是系统性能的瓶颈。
8、思考时间
概念:思考时间是指用户在操作时,每个请求之间的时间间隙。
对于交互系统来说,不可能持续不断的发送请求,一般情况下,用户在向服务端发送一个请求后,会等待一段时间发下一个请求,在性能测试过程中使用思考时间来描述。
这个时间,在脚本中,两个请求之间的时间间隔就是思考时间,也成为休眠时间。
扫二维码用手机看
更多资讯


性能测试相关概念

AppScan使用教程

GB/T 42984.1-2023《健康软件 第1部分:产品安全的通用要求》
联系我们
联系我们
关注我们
