Testing - 软件测试知识梳理 - 软件性能测试
软件性能测试的基本概念
软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是软件在完成该功能时展示出来的及时性。
软件性能的指标
- 响应时间:是指系统对请求作出响应的时间,并且这个时间被人们的接收程度是随着需求的不同而不同。
- 系统相应时间和应用延迟时间:前面的响应时间主要是指用户感受到的响应时间,其中还可以具体分为系统响应时间和呈现时间,性能测试比较关注系统响应时间
系统响应时间又可以具体分为网络传输时间和应用延迟时间,性能测试比较关注应用延迟时间。 - 吞吐量:吞吐量是指系统在单位时间内处理请求的数量,但是并不是访问人数越多吞吐量越高,因为随着访问人数的增多系统的可分配的资源会减少造成吞吐量下降等。
- 并发用户数:是指系统可以同时承载的正常使用系统功能的用户数,与1秒钟几十万吞吐量相比上千用户的并发量是一个更直观但也更笼统的性能指标。
- 资源利用率:反映在一段时间内资源平均被占用的情况。
软件性能的角度
- 用户视角:对于用户而言,性能就是响应时间,对于大量的数据,如果一边返回数据一边呈现对于用户而言响应时间也是很快的
- 管理员视角:管理员可以通过使用软件提供的管理功能等手段来对系统性能进行优化,但是一般不涉及到源代码的修改
- 开发人员视角:开发人员的角度和管理员的角度基本是一致的,但是开发人员更需要深入的关注软件的性能
性能测试的目标
- 发现缺陷
- 性能调优
- 能力检验与规划
性能测试的分类
- 性能测试
- 并发测试
- 压力测试
- 可靠性测试
- 负载测试
- 配置测试
- 失效恢复测试
软件性能测试的执行
与功能测试相比,性能测试更复杂,执行难度更大,对测试工具的依赖也更强,更需要过程模型的指导,例如:PPTGM(Performance Testing General Model)性能测试通用模型。
PTGM模型主要包括6个步骤:
- 测试前期准备,通常要求软件已经通过功能测试并修正了缺陷
- 引入测试工具
- 指定测试计划,需要明确性能测试的目标
- 测试设计和开发,准备好软件运行的软硬件环境,用户并发使用软件的测试场景,每个用户具体如何使用该软件
- 测试执行和管理
- 测试结果分析
SEI负载测试计划过程主要考虑六个方面:
- 目标,指的是商业目标而不是技术目标,明确软件达到什么样的负载能力才能满足项目的商业目标
- 用户,是指可能产生负载或使用资源的人和软件过程
- 用例,是指用户对软件的不同使用方式
- 使用环境,软件在实际交付的运行环境中
- 测试环境,在测试中的环境
- 使用场景
LoadRunner的性能测试过程总体上是满足PTGM:
- 指定测试计划
- 设计测试用例
- 设计测试脚本(将测试用例转换成可以执行的测试脚本)
- 创建测试环境(测试脚本运行的测试环境)
- 运行测试脚本
- 分析测试结果
性能分析
- 性能下降曲线的分析。主要包括三个区间:性能平坦区,性能轻微下降区,性能急剧下降区
- 快速性能瓶颈识别:优先考虑吞吐量,优先考虑简单的测试用例,优先考虑基础系统的性能
- 性能计数器的分析:内存,处理器,I/O磁盘,进程等分析
性能测试的自动化
- 创建进程或者线程来模拟用户产生压力
- 对性能进行监控
- 对结果进行分析
- 依赖一些性能测试工具
小结
性能测试
- 软件性能测试包括三个目标:发现缺陷;性能调优;能力检验与规划
- 软件性能的主要指标有:响应时间、系统响应时间和应用延迟时间、吞吐量、并发用户数、资源利用率
- 系统的响应时间通常是指该系统所有功能的平均响应时间或者所有功能的最大响应时间
- 对于无并发的应用系统而言,吞吐量与响应时间成严格的反比关系
- 吞吐量不能无限的增大,关键原因在于资源利用率不能无限的提高
- 资源利用率可以为性能调优提供很大帮助
- 在压力测试时,软件通常会处于性能下降曲线的哪个区间:性能轻微下降区
- 担任软件性能测试中最核心的技术力量的角色是设计人员
- 通常分析性能下降曲线时,会首先将其分为几个区间:性能平坦区、性能轻微下降区、性能急剧下降区。
性能平坦区是软件运行的正常状态,因此人们往往希望该区间越长越好;
性能轻微下降区是软件承受高负载的缓冲区,该区间也是越长越好;
性能急剧下降区不是软件的正常运行区间,这一阶段响应时间会急剧增加至用户不能忍受,吞吐量会急剧下降甚至低于单用户时的吞吐量,但该区间对于分析性能瓶颈却有很大作用,
通常说来,性能急剧下降区的起始点(也称性能拐点)就是性能瓶颈出现的地方,此时进一步分析资源利用率就可以找到性能瓶颈的原因。
参考信息
Testing - 软件测试知识梳理 - 软件性能测试的更多相关文章
- Testing - 软件测试知识梳理 - 相关词汇
测试策略 描述测试工程的总体方法和目标:根据测试需求,描述在什么测试阶,依据什么测试要素和目标,进行什么种类的测试,使用什么样的测试方法和工具. 测试策略的制定主要包含如下内容: 确定测试过程要使用的 ...
- Testing - 软件测试知识梳理 - 基础概念
测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计.实施.维护的的整个生命周期过程. 仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底. 不同的测试岗位从事不同的 ...
- Testing - 软件测试知识梳理 - 探索性测试
定义 探索性测试(Exploratory Testing)是一种自由的软件测试风格,强调测试人员同时展开测试学习,测试设计,测试执行和测试结果评估等活动,以持续优化测试工作. 其特征有:即兴发挥,快速 ...
- Testing - 软件测试知识梳理 - 测试方法
选择和使用测试方法和工具 按照测试需求用途(或测试技巧)选择 在软件开发生命周期和软件测试流程中适当地选择 按照测试人员实际技能选择 选择可提供的和可执行的 测试方法 类别及技巧 目标 使用方法 举例 ...
- Testing - 软件测试知识梳理 - 测试分类
参考信息 软件测试分类 经典软件测试技术分类 软件测试方法汇总 简洁分类 对软件内部结构的深入程度 黑盒测试:又叫功能测试.数据驱动测试或基于需求规格说明书的功能测试. 该测试类别注重于测试软件的功能 ...
- Testing - 软件测试知识梳理 - 理解测试
理解 目的 测试就是要找到关键信息,有关项目和产品的关键决策都是根据这些信息做出. 对产品质量做出总体评估. 找出并报告团队所有可能会对产品价值产生消极影响的问题(但并不意味着能发现所有问题). 重心 ...
- Testing - 软件测试知识梳理 - 测试阶段
估算 测试对软件工作量的估算的准确性 测试评估软件系统的状况的准确性 关注点: 不准确的估算 不适当的开发过程 不真实的状态报告 如何知道对工作量的估算是正确的 估算工作量的工具很容易出错 对软件工作 ...
- Testing - 软件测试知识梳理 - 测试用例
测试用例 是指对一项特定的软件产品进行测试任务的描述,体现测试方案.方法.技术和策略. 内容包括测试目标.测试环境.输入数据.测试步骤.预期结果.测试脚本等,并形成文档. 每个具体测试用例都将包括下列 ...
- Testing - 软件测试知识梳理 - 测试流程
测试存在于各个阶段: 需求测试--->单元测试--->集成测试--->系统测试--->性能测试--->用户测试--->回归测试 需求测试 完整性&正确性 一 ...
随机推荐
- Unity shader 官网文档全方位学习(一)
转载:https://my.oschina.net/u/138823/blog/181131 摘要: 这篇文章主要介绍Surface Shaders基础及Examples详尽解析 What?? Sha ...
- Pandas合并数据集之merge、join方法
合并数据集 pandas.merge 可根据一个或多个键将不同DataFrame中的行连接起来. pandas.concat 可以沿着一条轴将多个对象堆叠到一起. combine_first merg ...
- ToolBar+Drawable实现一个好用的侧滑栏(侧边栏)和工具栏
先参考下ToolBar的使用和DrawableLayout的使用: 1.主界面布局,主要结构包含一个ToolBar和一个DrawableLayout,DrawableLayout里面有左侧边栏布局和主 ...
- dump、load和dumps、loads的区别
dump: 将dict(字典)转换为str(字符串),并写入json文件中. load: 用于从json文件中读取数据 运行结果: dumps: 将dict(字典)转换为str(字符串). 运行结果: ...
- EasyUI datagrid单元格文本超出显示省略号,鼠标移动到单元格显示文本
nowrap : true; 是前提 $('#×××').datagrid({ nowrap : true,//设置为true,当数据长度超出列宽时将会自动截取 }); 省略号样式: <sty ...
- WordPress 自动初始化数据库
背景 自动化搭建开发环境.测试.部署如通过网页操作(访问 /wp-admin/install.php)相对比较麻烦且在有的场景无法实现. 步骤 修改 wp-config.php 配置 wordpres ...
- [leetcode]11. Container With Most Water存水最多的容器
Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). ...
- node.js中net网络模块TCP服务端与客户端的使用
node.js中net模块为我们提供了TCP服务器和客户端通信的各种接口. 一.创建服务器并监听端口 const net = require('net'); //创建一个tcp服务 //参数一表示创建 ...
- 使用git开发的流程
1.git常用的主干,分支命令 查看分支 git branch 或者 git branch -v A) 创建分支 git branch Dev_samples_V1.0.0 B) 切换分支 git c ...
- 批量屏蔽符合条件的IP地址《目前仅测Centos 6 版本》
使用办法:可以将下面的sh保存到一个单独的文件中,比如ipad.sh,然后再编辑获取IP地址列表中的那段.最终的结果是需要直接获取到IP地址,一行一个,可以有多个文件,一行一个,进行重定向到指定的IP ...