软件性能测试(连载4)

简介: 软件性能测试(连载4)

1.7 性能测试的判断标准


对于功能测试,判断测试用例是否测试通过,往往是比较容易的,只要不发生错误并且满足用户的需求即可。而对于性能测试该如何来评判性能测试是否通过呢?可以考虑以下三个方面。


根据用户需求来判断。

如果用户对性能有明确的需求,比如登录操作,不得小于3秒,那么测试工程师就可以就这个需求来进行测试。另外系统运行过程不发生内存溢出、死锁等故障也应该属于隐性的性能需求。


根据业内标准来判断。

比如第1.4-1节提到的2/5/10法则,前端响应时间不得超过全部响应时间的30%等都是业内不成文的性能标准。


根据基准测试结果来判断。

一般而言,本次测试的度量指标不得小于上次版本的95%以下。


1.8性能测试的场景


一般根据性能测试的类型及各个类型的组合来设计性能场景,常见的性能测试场景如下。

普通测试场景。

并发测试场景。

容量测试场景。

疲劳测试场景。

强度测试场景。

配置测试场景。

并发+疲劳场景。

一般采用65%-75%的并发峰值,持续测试48小时。

容量+疲劳场景。

一般采用65%-75%的容量峰值,持续测试48小时。

容量+并发+疲劳场景

65%的并发峰值,65%的容量峰值,持续测试48小时。

多业务测试场景。

有多个业务组合形成的测试场景,一般将前面的性能场景测试完毕以后再进行,否则发生问题难于定位。


1.9 性能测试的干系人


由于各种原因都可能造成性能问题,所以性能测试干系人包括。

客户代表。

产品经理。

销售人员。

市场人员。

项目经理。

研发人员。

包括需求分析师、架构设计师、开发工程师、测试工程师等。

运维人员。

包括DBA、技术支持工程师等。


1.10 负载测试的二分法找拐点法


负载测试包括并发测试和容量测试,寻找性能拐点往往是这种测试的关键。以往寻找拐点往往采取递进法,即给出一个起点,比如500个并发用户,进行并发测试,如果通过,再加100,变成600个并发用户,进行并发测试。通过这样的方法进行层层递进来寻找拐点。可以想象一下,如果并发拐点为3000,岂不需要测试25次才可找到拐点。这里来介绍二分法找拐点的方法。


二分法找拐点的方法请参看图3-17所示。

image.png

3-17  二分法找拐点的方法

1)寻找m,n两个值,其中m<n,建议初始的时候mn之间的差距拉得大一些。

2)对m进行并发/容量测试。

3)如果m测试不通过,说明拐点比m小,寻找新的ma,假设以前测试过的最小值为x(如果没有,令x=0)。那么a=( m + x)/2,返回第(1)步。

4)如果m测试通过,说明拐点比m大,对n进行并发/容量测试。

5)如果n测试通过,说明拐点比m大比n小,选择新的naa=(m+n)/2,返回第(1)步。

6)如果n测试不通过,说明拐点比n大,寻找新的nb,假设以前测试过的最大值为y(如果没有,令y=∞)。那么a=( n + y)/2,返回第(1)步。

7)当n-m<=某一固定的值,当前值即为拐点值,递归结束。


案例3-10:负载测试的二分法找拐点法

使用二分法测试寻找并发测试的拐点,如果n-m<50,即为找到拐点。

1)令m=1000, n=5000,对1000进行并发测试,持续10分钟,没有发现异常,测试通过,说明拐点比1000大。

2)对5000进行并发测试,持续10分钟,发现异常,测试失败,说明拐点比5000小。此时n-m=5000-1000=4000>50

3)选择新的n=(1000+5000)/2=3000,此时n-m=5000-3000=2000>50,对3000进行并发测试,持续10分钟,发现异常,测试失败,说明拐点比1000大但比3000小。

4)选择新的m=(1000+3000)/2=2000,此时n-m=3000-2000=1000>50,对2000进行并发测试,持续10分钟,没有发现异常,测试通过,说明拐点比2000大但比3000小。

5)选择新的m=(2000+3000)/2=2500,此时n-m=3000-2500=500>50,对2500进行并发测试,持续10分钟,没有发现异常,测试通过,说明拐点比2500大但比3000小。

6)选择新的m=(2500+3000)/2=2750,此时n-m=3000-2750=250>50。对2750进行并发测试,持续10分钟,没有发现异常,测试通过,说明拐点比2750大但比3000小。

7)选择新的m=(2750+3000)/2=2875,此时n-m=3000-2875=125>50。对2875进行并发测试,持续10分钟,没有发现异常,测试通过,说明拐点比2875大但比3000小。

8)选择新的m=(2875+3000)/2=2938,此时n-m=3000-2938=62>50。对2938进行并发测试,持续10分钟,没有发现异常,测试通过,说明拐点比2938大但比3000小。

9)选择新的m=(2938+3000)/2=2969,此时n-m=3000-2969=31<50,所以认为并发拐点为2938


这样仅对8个数值进行了测试就找到了拐点。


另外需要说明的是并发测试的拐点没有容量测试那么明显,所以在找到拐点之后,需要对这个值进行多次验证,确保是真正的拐点。而容量测试的拐点往往表现特别明显,拐点上与拐点下的性能表现得很明显。


扩展阅读:0.618黄金分割数

方程x/(1-x)=(1-x)/x的解≈0.6180.618又称作黄金分割数,黄金分割数是一个无理数。它经常被用于各个方面,比如绘画、雕塑、植物、建筑、宇宙、军事、数学等。前面提到的是二分法。如果当前判断拐点大于m小于n,下一个值取:(n-m)×0.618+m,这个方法在数学上已经证明比二分法收敛速度快,而且是一维里面是最快的,所以大家也可以采用0.618黄金分割数法来寻找拐点。


1.11 全链路压测


正如第1.2-3节描述,2018年双11,淘宝“退货退款”模块瘫痪。对于“退货退款”模块往往是一个被忽视的性能测试模块,但是自从这个事故发生之后。各大互联网公司对全链路压测试得到了非常重视。京东、淘宝、腾讯等网商企业现在都在双11到来之前至少半年就开始筹划全链路压测了。全链路压测往往在晚上00:00-5:00在线进行测试,但是也要看公司具体而定。由于LoadRunner是通过并发用户的License收费的,并且收费是相当昂贵的。而JMeter是一个基于Java多线程来实现虚拟用户的开源工具,自身就占用很多的系统资源,所以也被排除。而现在作为全链路压测工具基本上选用Gatling


Gatling是一个开源的基于ScalaAkkaNetty 实现的高性能压测框架,较之其他基于线程实现的压测框架,Gatling 基于AKKA Actor 模型实现,请求由事件驱动,在系统资源消耗上低于其他压测框架(如内存、连接池等),使得单台压测机可以模拟更多的用户。


另外由于全链路压测是在线上进行的,所以要确保测试数据与真实数据分离,在全链路压测完毕,需要把压测数据全部删除。

目录
相关文章
|
12月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for macOS x64 & ARM64 - 领先的 Web 渗透测试软件
525 3
|
7月前
|
Java 测试技术 网络安全
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
324 0
Burp Suite Professional 2025.10 for Windows x64 - 领先的 Web 渗透测试软件
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
12月前
|
安全 测试技术 Linux
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
379 2
Flawnter 5.9.1 (macOS, Linux, Windows) - 应用程序安全测试软件
|
12月前
|
人工智能 安全 网络安全
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
577 4
Burp Suite Professional 2025.5 for Windows x64 - 领先的 Web 渗透测试软件
|
11月前
|
测试技术
软考软件测评师大题——案例分析之白盒测试
历年下午案例试题一固定考察白盒测试,主要包含三大核心问题:推导逻辑条件、绘制控制流图及计算环路复杂度、确定线性无关路径集合。内容涵盖覆盖层级标准(语句、分支、判定、条件覆盖等)、控制流图构建规范(顺序、分支、循环结构转换原则)、环路复杂度计算公式以及线性无关路径生成方法。通过典型题型示例解析,如代码路径分析与验证指标,帮助考生掌握解题思路和技巧。
|
11月前
|
测试技术
软考软件评测师——可靠性测试测试方法
软件可靠性是指软件在规定条件和时间内完成预定功能的能力,受运行环境、软件规模、内部结构、开发方法及可靠性投入等因素影响。失效概率指软件运行中出现失效的可能性,可靠度为不发生失效的概率,平均无失效时间(MTTF)体现软件可靠程度。案例分析显示,嵌入式软件需满足高可靠性要求,如机载软件的可靠度需达99.99%以上,通过定量指标评估其是否达标。
|
11月前
|
安全 测试技术 持续交付
软考软件评测师——基于风险的测试技术
本文详细阐述了测试计划的核心要素与制定流程,涵盖测试范围界定、实施策略规划、资源配置及风险管理机制。通过风险识别方法论和评估模型,构建了完整的质量保障体系。同时,针对不同测试级别与类型提供具体配置建议,并提出技术选型原则与实施规范,确保测试活动高效有序开展,为项目成功奠定基础。内容结合实际经验,具有较强指导意义。