当前课程知识点:软件工程 > 第13章 软件系统测试 > 13.4 软件性能测试 > 讲课视频
同学们好
这节课我们介绍
软件性能测试的相关内容
软件性能
是软件的一种非功能特性
它主要关注的
是系统在执行功能时
所表现出来的一些性质
比如说 响应是否及时
资源占用的情况如何
是否稳定和安全
以及兼容性 可扩展性和可靠性等
一般来说
我们关注的性能指标
主要包括以下方面
系统对于用户请求的响应时间
容量和数据吞吐量
系统的资源使用率等
下面我们将分别解释一下
这几个指标的具体含义
性能测试主要是模拟多个用户
使用系统时对性能产生的影响
因此估计用户数
是一个基本的要求
对于Web应用来说
用户主要包括注册用户
在线用户和并发用户三种类型
注册用户数指的是
所有在系统注册的用户数量
但是注册用户
有可能并不使用系统
在线用户数
是所有正在访问系统的用户数
并发用户数
是在某一给定时间里
某一个特定时刻
进行会话操作的用户数
通常情况下
我们可以根据网站的统计
得到不同类型用户的数据
如果没有统计数据
也可以通过一定的经验
进行预估
比如说
我们大概估计一下
可能的注册用户数
然后按照注册数的20%
估计在线用户数
再按照在线数的30%
估计并发用户数
我们以新浪微博的例子
来进一步解释一下
用户在注册以后才能够使用
但注册用户
并不是每时每刻都在使用系统
在线用户
在浏览网站的时候
会花很多的时间
阅读网站的信息
所以具体到某一时刻
可能只有一部分在线用户
同时向系统发出请求
由于有些注册用户
可能长时间不登陆网站
所以不能够使用注册用户数
作为性能的指标
一般来说性能测试
更关心的是并发用户数
响应时间
是一个重要的性能指标
它是从客户端发出请求
到获得响应的整个过程
所经历的时间
这个图
显示了从客户端发出请求
到获得响应的整个过程
其中C1表示的是
用户请求发出前
在客户端需要完成的
预处理的时间
N1是请求
由客户端发出
并且达到应用服务器的时间
A1是应用服务器
对请求进行处理的时间
如果需要进行数据库的相关操作
N2是应用服务器
把请求发送到数据库服务器
所需要的时间
A2是数据库服务器
对请求进行处理的时间
N3 A3 N4和C2分别是
从数据库服务器经过网络
应用服务器到客户端
返回处理结果的时间
对于用户来说
响应时间是上面所有时间的总和
对于系统来说
响应时间
是从应用服务器
接收请求到返回结果的这段时间
吞吐量和资源利用率
是从系统管理的角度
所关心的两个性能指标
吞吐量是指单位时间里
系统处理客户请求的数量
它反映的是
软件系统对性能压力的一个承载能力
一般可以用请求数/秒
页面数/秒
访问数/秒
或者处理业务数/小时
这样一些单位来衡量
资源利用率指的是
系统资源的使用程度
比如说服务器CPU利用率
内存利用率 磁盘利用率
网络带宽利用率等
可以用资源实际使用
占总的资源的比例来表示
性能测试
是通过自动化的测试工具或手段
来模拟多种正常情况
峰值情况以及异常负载条件
为获取或验证系统性能指标
而进行的测试
负载测试和压力测试
是性能测试的两种主要类型
负载测试
是通过不断地加载系统负载
比如说
逐渐增加模拟用户的数量
来观察不同负载下
系统的响应时间
数据吞吐量
以及系统占用资源的情况
以检验系统的行为和特性
发现系统可能存在的性能问题
压力测试
是在强负载
比如说 大数据量
或大量并发用户等条件下
对系统进行测试
来查看系统在峰值使用情况下的
操作行为
从而有效地发现
系统的某项功能隐患
是否具有良好的容错能力
和可恢复能力等
我们来举一个日常生活的例子
来说明二者的区别
如果要测试一个人
能够扛多少斤重物
负载测试
就要确定在200斤情况下
这个人能否坚持5分钟
压力测试则是测试
在200斤 300斤 400斤
等不断增重的情况下
这个人的表现
什么时候会失败
失败以后有什么表现
重新再扛200斤是否正常
压力测试也有很多不同的类型
稳定性测试
是保持在高负载条件下
持续运行24小时以上
来查看系统的表现
破坏性测试
是通过不断地加载
来快速造成系统崩溃
以便让问题尽快暴露出来
渗入测试
是通过长时间的运行
来发现像内存泄漏
垃圾收集或者一些其他的问题
峰谷测试
是采用高低突变这样的方式
来进行测试
先加载到高水平的负载
然后急剧降低负载
稍微平息一段时间
再加载到高水平的负载
如此反复来查找系统的问题
另外大数据量测试
和疲劳强度测试
也是性能测试的内容
大数据量测试
主要是检测在数据量比较大的时候
系统的性能状况
一般又包括
独立数据量测试
和综合数据量测试
疲劳强度测试
是在系统稳定运行的情况下
通过长时间地运行系统来检测
系统无故障稳定运行的能力
对于一个Web应用来说
服务器端 数据库 网络 客户端
这些都是影响系统性能的因素
那么应该采用什么样的测试策略
来确定系统发生问题的原因
对于客户端来说
我们可以使用测试工具
在机器上模拟大量的虚拟用户
进行并发操作来测试系统
通过综合分析各种指标
最终来评价系统的性能
或者发现问题
对于网络性能
可以使用相应的监控工具
来测试网络的带宽 延时
负载和TCP端口变化等因素
对响应时间的影响
对于服务器性能
测试的关键点是资源占用情况
数据库性能和故障报警
我们可以使用监控工具
来监测服务器的CPU占用
内存消耗和故障情况
检查数据库的读写 缓存
加锁和事务处理等状态
性能测试
必须要依靠自动化的工具
目前有很多流行的性能测试工具
LoadRunner是惠普公司开发的
一种预测系统行为
和性能的负载测试工具
它是使用非常广泛的
工业标准级的性能测试工具
可以模拟上千万用户的并发负载
来实时监测系统性能
并且确认和查找问题
jMeter是目前非常流行的
开源压力测试工具
可用于Web服务器的性能测试
也可以对数据库
FTP LDAP服务器进行测试
大家可以在课后
结合抢票应用系统
使用jMeter对应用服务器
进行压力测试
-1.1 软件无处不在
--讲课视频
-1.2 软件的本质特性
--讲授视频
-1.3 软件工程的产生与发展
--讲授视频
-1.4 软件工程的基本概念
--讲授视频
-1.5 软件质量实现
--讲授视频
-1.6 业界人士谈软件工程
-测验题--作业
-讨论题
--讨论题
-作业题
--第一张 作业题
-2.1 编程过程与规范
--讲课视频
-2.2 良好的编程实践
--讲课视频
-2.3 Python集成开发环境
--讲课视频
-2.4 代码静态检查
--讲课视频
-2.5 代码性能分析
--讲课视频
-2.6 结对编程实践
--讲课视频
-2.7 刘贺谈软件工程
--讲课视频
--讨论
-测验题--作业
-作业题
--第二章 作业题
-3.1 单元测试概述
--讲课视频
-3.2 黑盒测试方法
--黑盒测试方法
-3.3 白盒测试方法
--基本概念
--代码覆盖标准
--基本路径测试
-3.4 单元测试工具
--单元测试工具
--html
-测验题--作业
-作业题
--第三章 作业题
--作业题附件
-4.1 软件过程
--讲课视频
-4.2 软件过程模型
--讲课视频
-4.3 敏捷开发过程
--讲课视频
-4.4 微软公司开发过程
--邹欣经理自我介绍
--微软开发过程之一
--微软开发过程之二
-测验题--作业
-5.1 团队组织与管理
--讲课视频
-5.2 项目沟通管理
--讲课视频
-5.3 软件项目计划
--讲课视频
-5.4 软件项目估算
--讲课视频
-测验题--作业
-讨论题
--讨论
-6.1 敏捷开发之Scrum
-- 敏捷开发之Scrum
--html
-6.2 用户故事与估算
--讲课视频
-6.3 团队协作工具Tower
-6.4 配置管理
--讲课视频
-6.5 配置管理工具Git
--讲课视频
-测验题--作业
-作业题--作业
-7.1 需求工程师
--讲课视频
-7.2 需求定义
--讲课视频
-7.3 需求的类型
--讲课视频
--讲课视频(2)
-7.4 需求工程过程
--讲课视频
-7.5 需求的主要来源
--讲课视频
-7.6 需求获取技术
--讲课视频
--讲课视频二
--讲课视频三
-7.7 撰写需求文档
--讲课视频
-测验题--作业
-讨论题
--讨论
-8.1 用例建模概念
--讲课视频
-8.2 用例建模过程
--讲课视频
-8.3 用例建模精讲
--讲课视频
-8.4 建模工具介绍
--讲课视频
-8.5 微信抢票应用案例
--讲课视频
-测验题--作业
-讨论题
--讨论
-9.1 面向对象分析
--讲课视频
-9.2 CRC卡片分拣法
--讲课视频-1
--讲课视频-2
-9.3 面向对象设计
--讲课视频-1
--讲课视频-2
-9.4 类图建模
--讲课视频-1
--讲课视频-2
-第9章 面向对象分析与设计--测验题
-讨论题
--讨论
-10.1 顺序图概念
--讲课视频
-10.2 顺序图建模
--讲课视频
-10.3 顺序图风格
--讲义视频
-10.4 状态建模
--讲课视频
-10.5 状态图
--讲课视频
-10.6 状态图精讲
--讲义视频
-测验题--作业
-讨论题
--讨论
-11.1 软件体系结构概念
--讲授视频
-11.2 软件设计原则
--讲授视频
-11.3 软件体系结构风格(一)
--讲授视频
-11.4 软件体系结构风格(二)
--讲授视频
-11.5 软件体系结构风格(三)
--讲授视频
-11.6 软件设计过程
--讲授视频
-11.7 Web系统架构设计
--讲授视频
-11.8 数据库选择策略
--讲授视频
-测验题--作业
-作业题
--html
--html
--html
-作业题--作业
-12.1 交互设计概述
--讲授视频
-12.2 交互设计目标
--讲授视频
-12.3 GUI设计原则
--讲课视频
-12.4 KLM效率模型
--Video
-12.5 Fitts定律
--讲授视频
-12.6 交互设计过程
--讲授视频
-测验题--作业
-13.1 软件测试概念
--讲课视频
-13.2 软件测试类型
--讲课视频
-13.3 软件功能测试
--讲课视频
-13.4 软件性能测试
--讲课视频
-测验题--作业
-14.1 软件部署与交付
--讲课视频
-14.2 软件演化与维护
--讲课视频
-测验题--作业
-第一部分:基础知识
-第二部分:编程与测试(选做)