首页 > 其他分享 >性能理论-软件性能测试方法论(四)

性能理论-软件性能测试方法论(四)

时间:2023-11-15 16:56:49浏览次数:36  
标签:测试计划 负载 方法论 性能 系统 测试 附件 软件

软件性能测试方法论

性能测试方法主要包括 SEI 负载测试计划过程和 RBI 方法。

1. SEI 负载测试计划过程

SEI 负载测试计划过程(SEI Load Testing Planning Process)是一个关注于负载测试计划的方法,其目标是产生清晰、易理解、可验证的负载测试计划。SEI 负载测试计划过程包括 6 个关注的区域(Area):目标用户用例生产环境测试环境测试场景

SEI 负载测试计划过程将以这 6 个区域作为负载测试计划需要重点关注和考虑的内容,其重点关注以下几个方面的内容。

  1. 生产环境与测试环境的不同

    由于负载测试环境与实际的生产环境存在一定的差异,因此,在测试环境上对应用系统进行的负载测试结果很可能不能准确地反映该应用系统在生产环境上的实际性能表现,为了规避这个风险,必须仔细设计测试环境。

  2. 用户分析

    用户是对被测应用系统性能表现最关注和受影响最大的对象,因此,必须通过对用户行为进行分析,依据用户行为模型建立用例和场景。

  3. 用例

    用例是用户使用某种顺序和操作方式对业务过程进行实现的过程。对负载测试来说,用例的作用主要在于分析和分解出关键的业务,判断每个业务发生的频度、业务出现性能问题的风险等。

从 SEI 负载测试计划过程的描述中可以看到,SEI 负载测试计划过程给出了负载测试需要关注的重点区域,但严格来说,其并不能被称为具体的方法论,因为其仅仅给出了对测试计划过程的一些关注内容,而没有能够形成实际的可操作的过程。同功能测试一样,性能测试也必须经历测试需求测试设计测试执行测试分析等阶段,但由于性能测试自身的特殊性(例如,需要引入工具,分析阶段相对重要),性能测试过程又不能完全套用功能测试过程。

SEI 负载测试计划过程在负载测试需要关注的具体内容上提供了参考,但其并不是一个完整的测试过程。

2. RBI 方法

RBI(Rapid Bottleneck Identify)方法是一种用于快速识别系统性能瓶颈的方法。该方法基于以下一些事实:

  1. 发现的 80% 系统的性能瓶颈都由吞吐量制约。

  2. 并发用户数吞吐量瓶颈之间存在一定的关联。

  3. 采用吞吐量测试可以更快速地定位问题。

RBI 方法首先访问服务器上的小页面简单应用,从应用服务器、网络等基础的层次上了解系统吞吐量表现;其次选择不同的场景,设定不同的并发用户数,使其吞吐量保持基本一致的增长趋势,通过不断增加并发用户数和吞吐量,观察系统的性能表现。

在确定具体的性能瓶颈时,RBI 将性能瓶颈的定位按照一种自上而下的分析方式进行分析,首先确定是由并发还是由吞吐量引发的性能表现限制,然后从网络数据库应用服务器代码本身 4 个环节确定系统性能具体的瓶颈。

RBI 方法在性能瓶颈的定位过程中能发挥良好的作用,其对性能分析和瓶颈定位的方法值得借鉴,但其也不是完整的性能测试过程。

3. 性能测试基本过程

面试性能测试时,经常会问一个问题:能否简单地介绍一下性能测试的过程?多数人的回答都不咋地,原因是很多人不清楚性能测试以至于回答问题的思路混乱。其实,大家在应聘性能测试职位时,必须要清楚这个职位是具体做哪些工作的,并且按照工作的流程把每一个环节都表述清楚。

下面结合过往公司实际工作流程与阿里云性能测试流程给大家介绍一下,性能测试的过程到底是如何进行的。

本体系将性能测试工作共分为:需求阶段准备阶段执行阶段报告阶段总结阶段 5 部分。力求简单、实用、有效的指导当前的性能测试工作活动。

需求阶段准备阶段执行阶段报告阶段总结阶段
根据内部或外部客户的需求,项目经理需进行可行性分析、进行项目组筹建 执行具体的性能测试计数方案,并评审通过 按照测试计划中的测试内容规定项目执行各项测试 编制《性能测试分析报告》汇报测试结果以及对系统性能的评估 编制《性能测试总结报告》,总结性能测试过程、方法、经验、教训等,改进工作流程的建议等
项目经理针对客户的系统,需召集相关的人员开项目启动会 环境搭建准备,由客户方实施,并通过冒烟测试 详细记录测试工作步骤以及测试结果    
项目经理组织人员进行详细的需求调研与分析,确定具体的需求范围 测试人员进行脚本设计、数据准备,监控部署等 根据测试结果和性能跟踪数据、监控数据进行系统瓶颈分析    
制定详细的测试和优化分析计划并通过广泛的评审 编写日报或者周报并汇报上级管理层,接收上级管理层的监管与指导      

总结整个性能测试流程体系,共包括 5 大阶段、7 项主要活动。

  • 5 大阶段:需求阶段准备阶段执行阶段报告阶段总结阶段

  • 7 项主要活动:项目启动需求调研与分析项目计划制定性能测试准备性能测试执行性能测试报告项目总结

4. 测试体系活动描述

4.1. 需求阶段

4.1.1. 活动 1—项目启动

项目启动

附件下载:

4.1.2. 活动 2-需求调研与分析

活动属性

活动子流程图

附件下载:

4.1.3. 活动 3-项目计划制定

活动属性

子活动流程图

附件下载:

4.2. 准备阶段

4.2.1. 活动 4—性能测试准备

活动属性

子活动描述

子活动流程图

附件下载:

4.3. 执行阶段

4.3.1. 活动 5—性能测试执行

活动属性

子活动流程图

附件下载:

4.4. 报告阶段

4.4.1. 活动 6—性能测试报告

活动属性

子活动流程图

附件下载:

4.5. 总结阶段

4.5.1. 活动 7—项目总结

项目总结

附件下载:


5. 性能测试需求分析

性能测试的目的就是把客户的真正需求搞清楚,这是性能测试最关键的过程。

有很多客户对性能测试是不了解的,客户可能会提出的我们需要对所有的功能都进行性能测试系统用户登录响应时间小于 3 秒系统支持 10 万用户并发访问等要求。那么这些需求是否存在什么问题呢?我们来分析下:

  1. 我们需要对所有的功能都进行性能测试

    每位用户都希望自己公司应用的系统有良好的性能,从客户的角度讲,肯定都是希望所有的系统应用都有好的系统性能表现,那么是不是所有的功能都要经过性能测试呢?答案当然是否定的,通常性能测试周期较长。

    首先,全部功能模块都进行性能测试需要有非常长的时间;其次,根据 80-20 原则,通常系统用户经常使用的功能模块大概占用系统整个功能模块数目的 20%,像参数设置等类似的功能模块,通常仅需要在应用系统时管理员进行一次性设置,针对这类设置进行性能测试也是没有任何意义的。

    通常,性能测试是由客户提出需求内容,性能测试人员针对客户的需求进行系统和专业的分析后,提出相应的性能测试计划、解决方案、性能测试用例等与用户共同分析确定最终的性能测试计划、解决方案、性能测试用例等,性能测试的最终测试内容通常也是结合客户真实的应用场景,客户应用最多,使用最频繁的功能。所以说,对所有的功能都进行性能测试是不切实际也是不科学的做法,作为性能测试人员必须清楚。

  2. 系统用户登录响应时间小于 3 秒钟

    从表面看这句话似乎没有什么问题,仔细看看是不是看出点什么门道呢?

    其实这句话更像一个功能测试的需求,因为其没有指明是在多少用户访问时,系统的相应时间小于 3 秒,作为性能测试人员必须清楚客户的真实需求,消除不明确的因素。

  3. 系统支持 10 万用户并发访问

    从表面看这句话似乎也没有什么问题。在进行性能测试时,系统的可扩展性是需要我们考虑的一个重要内容。

    例如,一个门户网站,由于刚开始投入到市场上,访问用户量目前只有几百个用户,随着广告、推荐等措施推动了系统宣传力度,那么我们在做系统性能测试时候,需要对未来两三年内系统应用用户有一个初步预期,以至于在两三年后系统仍然能够提供给用户以好的性能体验。

    但是,倘若用户应用该系统的时候,日常每天只有几十个用户,在未来的 5~10 年内,也不过几百个用户,这是不是需要进行 10 万级用户并发访问的性能测试呢?

    建议是把这种情况向客户表达清楚,在满足当前和未来用户应用系统性能要求的前提下进行测试,能够节省客户的投入,这样客户会觉得你更加专业,也真正从客户的角度出发,相信一定会取得更好的效果。如果系统用户量很大,考虑到可扩展性需求,确实需要进行 10 万级用户这种情况的性能测试。我们也需要搞清楚 10 万级用户的典型应用场景,以及不同操作的人员比例,这样的性能测试才会更有意义。

性能测试成功的关键不在于性能测试工具,而在于有效的性能测试分析方法和实践。只有切实掌握了性能测试需求分析方法,才能保证一个应用性能测试的成功、有效。

  1. 80/20 原则

    所谓 80/20 原则,即每个工作日中 80% 的业务在 20% 的时间内完成。

    举例:每年业务量集中在 8 个月,每个月 20 个工作日,每个工作日 8 小时,即每天 80% 的业务在 1.6 小时完成。去年全年处理业务约 100 万笔,其中 15% 的业务处理中每笔业务需对应用服务器提交 7 次请求,70% 的业务处理中每笔业务需对应用服务器提交 5 次请求,其余 15% 的业务处理中每笔业务需对应用服务器提交 3 次请求。根据以往的统计结果,每年的业务增量为 15%。考虑到今后 3 年业务发展的需要,测试需按现有业务量的 2 倍进行。

    每年总的请求数 = (100×15%×7 + 100×70%×5 + 100×15%×3) × 2 = 1000(万次/年)

    每天请求数 = 1000/(20×8) = 6.25(万次 / 天)

    每秒请求数 = (62500×80%)/(8×20%×3600) = 8.68(次 / 秒)

    即服务器处理请求的能力应达到 9 次/秒

标签:测试计划,负载,方法论,性能,系统,测试,附件,软件
From: https://www.cnblogs.com/R-bear/p/17834200.html

相关文章

  • 性能理论-软件性能测试的目标(五)
    软件性能测试的目标是验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最终起到优化系统的目的。软件性能测试包括以下几个方面的内容。评估系统的能力测试中得到的负荷和响应时间数据可以被用于验证所计划的模型的能力,并帮助作出决策。......
  • 性能理论-性能测试类型(二)
    性能测试类型对于性能测试的分类,业界有很多标准,而对每个类型的诠释也有一些差别。从狭义来看,性能测试主要用于描述常规的性能测试,是指通过模拟生产运行的业务压力或用户使用场景来测试系统的性能是否满足生产性能的要求。从广义来看,性能测试则是压力测试、负载测试、强度测试、......
  • 软件测试|使用python绘制等高线密度图
    简介等高线密度图(ContourDensityPlot)是一种可视化数据分布的有效方式,特别适用于显示二维数据的密度分布情况。Python提供了丰富的工具和库,使得创建等高线密度图变得相对容易。在本文中,我们将介绍如何使用Python和Matplotlib库创建等高线密度图,并提供一个示例来演示整个过程。步骤......
  • 号卡小程序管理软件系统
      一、微信小程序会员卡管理系统的优势  微信小程序会员卡管理软件成为了实现分销管理,推广管理的软件,拥有这款软件后就可以实现各种的号卡分销,二级分销管理,用户管理,佣金结算等。  1.用户基数庞大:微信小程序软件平台拥有着用户群体基数打,商家通过入驻就能获得部分的流......
  • 软件测试|使用Python提取出语句中的人名
    简介在自然语言处理(NLP)中,提取文本中的人名是一项常见的任务。Python作为一种流行的编程语言,拥有强大的NLP库和工具,使我们能够轻松地进行这项任务。在本文中,我们将使用Python示例来演示如何提取文本中的人名。环境准备我们将使用以下Python库来执行人名提取任务:spaCy:一个流行的NLP库......
  • 号卡分销系统软件开发解决方案
      一、号卡推广管理系统  是一款基于Web的小程序软件,所有的信息都是通过后台网站管理,数据上传后同步到小程序上。后台功能完整,客户端界面也能管理各种的会员信息。推广业务也方便,例如推送相关的短信,在线支付功能。该系统功能可以扩展,业务增加后也可以升级。  二、号......
  • 号卡分销管理系统软件定制
      移动通信市场环境,竞争对手多,想要获得一定的市场份额,必须寻求一个高效快捷的营销方案。我们的号卡管理系统就实现了企业多端的推广管理,分销管理功能,多级分销分销自动化的管理,提高业绩,降低运用成本。  号卡分销系统:实现高效的解决方案  优势一:智能分销管理  号......
  • Hibench对大数据平台CDH/HDP基准性能测试
    一、部署方式1.1、源码/包:https://github.com/Intel-bigdata/HiBench部署方法:https://github.com/Intel-bigdata/HiBench/blob/master/docs/build-hibench.md注意:hibench执行需hadoop客户端jar包环境如何使用HiBench进行基准测试说明:https://cloud.tencent.com/developer/ar......
  • 信用卡审核通过生成软件,易安卓开发,用户输入信息自动绘图
    闲着没事干,用e4a给大家开发了一个审核通过的截图生成器,原理很简单,就插入了两个窗口,一个窗口是编辑区域,用户输入信息,一个按钮,另一个窗口是画板区域,画板里面插入了审核通过的图片,图片上面对应了指定的标签,标签客户通过窗口1的编辑框通过事件代码对应改变,比如:标签7.标题=读取设置("转......
  • 硬件开发笔记(十一):Altium Designer软件介绍、安装过程和打开pcb工程测试
    前言  前面做高速电路,选择是阿li狗,外围电路由于读者熟悉AD,使用使用ad比较顺手,非高速电路就使用AD了,其实AD也可以做高速电路,由于笔者从13年开始做硬是从AD9开始的,所以开始切入AD做硬件软件学习成本会低很多。 AltiumDesigner简介  AltiumDesigner是原Protel软......