软件性能测试的基本概念

软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是软件在完成该功能时展示出来的及时性。

软件性能的指标

  1. 响应时间:是指系统对请求作出响应的时间,并且这个时间被人们的接收程度是随着需求的不同而不同。
  2. 系统相应时间和应用延迟时间:前面的响应时间主要是指用户感受到的响应时间,其中还可以具体分为系统响应时间和呈现时间,性能测试比较关注系统响应时间
    系统响应时间又可以具体分为网络传输时间和应用延迟时间,性能测试比较关注应用延迟时间。
  3. 吞吐量:吞吐量是指系统在单位时间内处理请求的数量,但是并不是访问人数越多吞吐量越高,因为随着访问人数的增多系统的可分配的资源会减少造成吞吐量下降等。
  4. 并发用户数:是指系统可以同时承载的正常使用系统功能的用户数,与1秒钟几十万吞吐量相比上千用户的并发量是一个更直观但也更笼统的性能指标。
  5. 资源利用率:反映在一段时间内资源平均被占用的情况。

软件性能的角度

  • 用户视角:对于用户而言,性能就是响应时间,对于大量的数据,如果一边返回数据一边呈现对于用户而言响应时间也是很快的
  • 管理员视角:管理员可以通过使用软件提供的管理功能等手段来对系统性能进行优化,但是一般不涉及到源代码的修改
  • 开发人员视角:开发人员的角度和管理员的角度基本是一致的,但是开发人员更需要深入的关注软件的性能

性能测试的目标

  • 发现缺陷
  • 性能调优
  • 能力检验与规划

性能测试的分类

  • 性能测试
  • 并发测试
  • 压力测试
  • 可靠性测试
  • 负载测试
  • 配置测试
  • 失效恢复测试

软件性能测试的执行
与功能测试相比,性能测试更复杂,执行难度更大,对测试工具的依赖也更强,更需要过程模型的指导,例如:PPTGM(Performance Testing General Model)性能测试通用模型。

PTGM模型主要包括6个步骤:

  1. 测试前期准备,通常要求软件已经通过功能测试并修正了缺陷
  2. 引入测试工具
  3. 指定测试计划,需要明确性能测试的目标
  4. 测试设计和开发,准备好软件运行的软硬件环境,用户并发使用软件的测试场景,每个用户具体如何使用该软件
  5. 测试执行和管理
  6. 测试结果分析

SEI负载测试计划过程主要考虑六个方面:

  1. 目标,指的是商业目标而不是技术目标,明确软件达到什么样的负载能力才能满足项目的商业目标
  2. 用户,是指可能产生负载或使用资源的人和软件过程
  3. 用例,是指用户对软件的不同使用方式
  4. 使用环境,软件在实际交付的运行环境中
  5. 测试环境,在测试中的环境
  6. 使用场景

LoadRunner的性能测试过程总体上是满足PTGM:

  1. 指定测试计划
  2. 设计测试用例
  3. 设计测试脚本(将测试用例转换成可以执行的测试脚本)
  4. 创建测试环境(测试脚本运行的测试环境)
  5. 运行测试脚本
  6. 分析测试结果

性能分析

  • 性能下降曲线的分析。主要包括三个区间:性能平坦区,性能轻微下降区,性能急剧下降区
  • 快速性能瓶颈识别:优先考虑吞吐量,优先考虑简单的测试用例,优先考虑基础系统的性能
  • 性能计数器的分析:内存,处理器,I/O磁盘,进程等分析

性能测试的自动化

  • 创建进程或者线程来模拟用户产生压力
  • 对性能进行监控
  • 对结果进行分析
  • 依赖一些性能测试工具

小结

性能测试

  1. 软件性能测试包括三个目标:发现缺陷;性能调优;能力检验与规划
  2. 软件性能的主要指标有:响应时间、系统响应时间和应用延迟时间、吞吐量、并发用户数、资源利用率
  3. 系统的响应时间通常是指该系统所有功能的平均响应时间或者所有功能的最大响应时间
  4. 对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系
  5. 吞吐量不能无限的增大,关键原因在于资源利用率不能无限的提高
  6. 资源利用率可以为性能调优提供很大帮助
  7. 在压力测试时,软件通常会处于性能下降曲线的哪个区间:性能轻微下降区
  8. 担任软件性能测试中最核心的技术力量的角色是设计人员
  9. 通常分析性能下降曲线时,会首先将其分为几个区间:性能平坦区、性能轻微下降区、性能急剧下降区。
    性能平坦区是软件运行的正常状态,因此人们往往希望该区间越长越好;
    性能轻微下降区是软件承受高负载的缓冲区,该区间也是越长越好;
    性能急剧下降区不是软件的正常运行区间,这一阶段响应时间会急剧增加至用户不能忍受,吞吐量会急剧下降甚至低于单用户时的吞吐量,但该区间对于分析性能瓶颈却有很大作用,
    通常说来,性能急剧下降区的起始点(也称性能拐点)就是性能瓶颈出现的地方,此时进一步分析资源利用率就可以找到性能瓶颈的原因。

参考信息

Testing - 软件测试知识梳理 - 软件性能测试的更多相关文章

  1. Testing - 软件测试知识梳理 - 相关词汇

    测试策略 描述测试工程的总体方法和目标:根据测试需求,描述在什么测试阶,依据什么测试要素和目标,进行什么种类的测试,使用什么样的测试方法和工具. 测试策略的制定主要包含如下内容: 确定测试过程要使用的 ...

  2. Testing - 软件测试知识梳理 - 基础概念

    测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计.实施.维护的的整个生命周期过程. 仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底. 不同的测试岗位从事不同的 ...

  3. Testing - 软件测试知识梳理 - 探索性测试

    定义 探索性测试(Exploratory Testing)是一种自由的软件测试风格,强调测试人员同时展开测试学习,测试设计,测试执行和测试结果评估等活动,以持续优化测试工作. 其特征有:即兴发挥,快速 ...

  4. Testing - 软件测试知识梳理 - 测试方法

    选择和使用测试方法和工具 按照测试需求用途(或测试技巧)选择 在软件开发生命周期和软件测试流程中适当地选择 按照测试人员实际技能选择 选择可提供的和可执行的 测试方法 类别及技巧 目标 使用方法 举例 ...

  5. Testing - 软件测试知识梳理 - 测试分类

    参考信息 软件测试分类 经典软件测试技术分类 软件测试方法汇总 简洁分类 对软件内部结构的深入程度 黑盒测试:又叫功能测试.数据驱动测试或基于需求规格说明书的功能测试. 该测试类别注重于测试软件的功能 ...

  6. Testing - 软件测试知识梳理 - 理解测试

    理解 目的 测试就是要找到关键信息,有关项目和产品的关键决策都是根据这些信息做出. 对产品质量做出总体评估. 找出并报告团队所有可能会对产品价值产生消极影响的问题(但并不意味着能发现所有问题). 重心 ...

  7. Testing - 软件测试知识梳理 - 测试阶段

    估算 测试对软件工作量的估算的准确性 测试评估软件系统的状况的准确性 关注点: 不准确的估算 不适当的开发过程 不真实的状态报告 如何知道对工作量的估算是正确的 估算工作量的工具很容易出错 对软件工作 ...

  8. Testing - 软件测试知识梳理 - 测试用例

    测试用例 是指对一项特定的软件产品进行测试任务的描述,体现测试方案.方法.技术和策略. 内容包括测试目标.测试环境.输入数据.测试步骤.预期结果.测试脚本等,并形成文档. 每个具体测试用例都将包括下列 ...

  9. Testing - 软件测试知识梳理 - 测试流程

    测试存在于各个阶段: 需求测试--->单元测试--->集成测试--->系统测试--->性能测试--->用户测试--->回归测试 需求测试 完整性&正确性 一 ...

随机推荐

  1. oralce 中union 和union all 的简单使用说明

    union:对两个结果集进行合并操作:不包括重复行:同时进行默认规则的排序: union all:对两个结果集进行合并操作:包括重复行:不排序:

  2. mongodb异常恢复

    构造mongdb异常 启动mongodb,bash mongodb.sh #!/bin/bash pid_file=/var/run/mongodb/mongod.pid pid_dir=/var/r ...

  3. SSM框架整合的其它方式

    ---------------------siwuxie095                                 SSM 框架整合的其它方式         1.主要是整合 Spring ...

  4. Agile PLM 开发中AgileAPI类型对应控制台分类说明

    1)    分类中的一级大类PLM后台管理的控制台中,每个分类中的一级大类都对应AgileAPI中一个类型 IServiceRequest对应产品服务请求,表为:psrIPrice对应价格,表为:pr ...

  5. c#NPOI读取excel 比interop和Microsoft.Jet.OLEDB.4.0 之类 的好的多

    今天下午开始整理excel这块, 微软弄的那些库简直是个坑, 什么com注册之类的净是些报错. 在网上搜资料偶然碰见npoi ,好东西,值得使用 NPOI是指构建在POI 3.x版本之上的一个程序,N ...

  6. [Selenium] 在Chrome的开发者工具中验证检查XPath/CSS selectors

    Evaluate and validate XPath/CSS selectors in Chrome Developer Tools Method 1 : From Elements panel U ...

  7. MFC在对话框中嵌入对话框

    在对话框中嵌入子对话框 代码 m_childDlg = new CChildDlg(); m_childDlg->Create(IDD_CHILD_DIALOG,AfxGetApp()-> ...

  8. ABP框架系列之一:(Entity-实体)

    Entities are one of the core concepts of DDD (Domain Driven Design). Eric Evans describe it as " ...

  9. android 测试

    Android Monkey压力测试 monkey测试结果详细分析 Android自动化测试工具 UiAutomator使用详解 在Android Sudio中使用Uiautomator 六款Andr ...

  10. 配置微信jssdk自定义分享

    前段时间做这个功能的时候遇到这个问题,之前的话是微信自动抓取界面第一张图,现在微信更新api,必须自行配置,接入jssdk,才能实现该功能. 详细可以查看微信的jssdk文档 微信官方开发者文档    ...