软件性能测试的基本概念

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

软件性能的指标

  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. 微软microsoft word的api文档地址

    https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2003/aa172758(v%3doffice. ...

  2. 最新WordConut

    一.代码地址:https://gitee.com/cainiaoY/WordCount 二.项目分析:代码根据实现的功能不同分为两个模块,一个wcFuctiong类,一个wcTest类,其中wcFuc ...

  3. ie7ajax 跨域 no transport 解决办法

    客户端js <script src="jquery-1.8.0.min.js"></script> <script src="JavaScr ...

  4. cast

    https://blog.csdn.net/seabeam/article/details/47841539 在UVM中经常可以看到$cast的身影,这是SV的build-in task之一,当然它还 ...

  5. Python+Selenium学习--自动化测试模型

    前言 一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库.测试数据源.测试对象识别标准,以及种可重用的模块.自动化测试框架在发展的过程中经历了几个阶段,模块驱动测试.数据驱动测试.对 ...

  6. c#: Label控件加入AutoHeight属性

    此功能在界面布局中颇为实用,录代码以记之: public class LabelEx : Label { private bool autoHeight = true; [DefaultValue(t ...

  7. [leetcode]19. Remove Nth Node From End of List删除链表倒数第N个节点

    Given a linked list, remove the n-th node from the end of list and return its head. Example: Given l ...

  8. Spring事务管理的四种方式(以银行转账为例)

    Spring事务管理的四种方式(以银行转账为例) 一.事务的作用 将若干的数据库操作作为一个整体控制,一起成功或一起失败.   原子性:指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不 ...

  9. vue 前端框架 目录

    vue 前端框架 目录   vue-目录 ES6基础语法 vue基础语法 Vue.js的组件化思想 —上 Vue.js的组件化思想 —下 Vue + Vue-Router结合开发 SublimeSer ...

  10. 删除centos7中自带有python2.7

    删除centos7中自带有python2. ()强制删除已安装python及其关联 # rpm -qa|grep python|xargs rpm -ev --allmatches --nodeps ...