(大部分为资料援引,找不到出处了,若有侵犯产权请告知,将道歉并移去。小部分为个人使用经验与截图,未完待补充,请知悉)
软件测试PPT
性能测试总介绍
综述
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
几言以蔽之-性能测试(Performance Testing)
用户视角
- 这么久?怎么还没好?一一响应时间
- 为什么总是失败?一一稳定性
管理员视角
- 服务器资源使用合理吗?一一资源利用率
- 数据库使用合理吗?一一资源利用率
- 系统能否实现扩展?一一可扩展性
- 最多支撑多少用户访问?一一系统容量
- 最大业务处理量?一一系统容量
- 系统有哪些潜在的瓶颈?一一可扩展性
- 更换哪些设备,添加哪些机器可以提高系统性能?一一可扩展性
- 7×24小时连续不间断业务访问?一一稳定性
开发视角
- 架构设计是否合理?一一架构设计
- 数据库设计是否合理?一一数据库设计
- 代码是否存在性能问题?一一代码
- 是否有不合理的内存使用?一一代码
- 是否有不合理的线程同步操作?一一代码
- 是否有不合理的资源竞争?一一代码
- 代码算法是否还能有进一步提升?一一代码
性能测试人员视角
主要目标
- 验证产品性能在特定负载和环境条件下使用是否满足性能指标
- 进一步发现系统中存在的性能瓶颈,优化系统
度量方法
- 不同的关注对象采用不同的性能的度量方法
- 服务端性能采用CPU、内存等使用率来度量
- 客户端性能通常根据系统处理特定用户请求的响应时间来度量
主要指标
- 响应时间(客户端、服务端)
- 并发用户数(取决于实际场景)
- 吞吐量(单位时间内处理的用户请求数量)
- *性能计数器(描述系统性能的一些数据指标)
概念区分
- 负载测试(正常负载条件下)
- 压力测试(超过或极端负载情况)
- 压力测试要求(希望)系统做到:
- 压力提升时,系统性能按照预期缓慢下降
- 由高压状态下调压力时,系统应能自动逐渐恢复性能
性能测试软件
各软件对比表
| 比较点 | JMeter | nGrinder | LoadRunner | Apache Benchmark | Locust | wrk |
|---|---|---|---|---|---|---|
| 实现语言 | Java | Java/Python | Java/VB/C/.NET | Python | C | |
| 使用方式 | C/S或Command | B/S | B/S | Command | B/S或Command | Command |
| 支持分布式 | master/slave | controller/agent | master/slave | 不支持 | master/slave | 不支持 |
| 资源监控 | monitor/plugin,如果二开,需要查找plugin的源码 | monitor方式,有直接可用的源码 | 自带资源监控功能 | 不支持 | 不支持 | 不支持 |
| 社区活跃度 | 文档完善 | 有中文社区 | 网上资料和相关培训很多,购买正版还可以得到技术支持 | 过于简单,无需繁杂文档 | 开源免费 | 开源免费 |
| 是否需要编码 | 基本不需要 | 需要,Jython/Groovy | 需要 | 不需要 | 需要,Python | 不需要 |
| 脚本的维护 | 本地 | 内置SVN | 本地 | 本地 | 本地 | 本地 |
| 脚本录制 | 可使用BadBoy进行录制 | 可通过PTS插件进行录制 | 自带录制功能 | 不支持 | 不支持 | 不支持 |
| 可扩展性 | 可增加plugin,输出结果可以再加工 | 可增加plugin | 通过扩展函数库实现 | 基本不支持 | 具有极强的可定制型 | 需要使用者自行编写lua脚本 |
| 安装 | 简单,解压即可 | 简单,可以下载安装包或绿色包解压 | 安装包比较大,安装繁琐 | apache自带 | 依赖python | 简单,yum或apt-get即可 |
Jmeter部分
功能简介
Apache JMeter
JMeter作为一款广为流传的开源压测产品,最初被设计用于Web应用测试,如今JMeter可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等,还能对服务器、网络或对象模拟巨大的负载,通过不同压力类别测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
JMeter的特点包括对HTTP、FTP服务器、数据库进行压力/性能测试;完全的可移植性;完全 Swing和轻量组件支持包;完全多线程;缓存和离线分析/回放测试结果;可链接的取样器;具有提供动态输入到测试的功能;支持脚本编程的取样器等。在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录浏览器的HTTP请求,也可以记录Apache等WebServer的log文件来重现HTTP流量,并在测试运行时以此为依据设置重复次数和并发度(线程数)来进行压测。
参考文章:《云智慧压测实战分享之JMeter工具使用初探(云智慧压测实战分享之JMeter工具使用初探 - CloudwiseAPM - SegmentFault )》
官网链接:Apache JMeter - Apache JMeter™
优势
- 开源,轻量级安装简单,社区接受度高,比较容易入门
- 利用badboy录制测试脚本,可以快速的形成测试脚本
- 使用参数化以及Jmeter提供的函数功能,可以快速完成测试数据的添加修改等
- 不只依赖于界面,测试脚本不需要编程,熟悉http请求,熟悉业务流程,就可以根据页面中input对象来编写测试用例,测试脚本灵活
- 社区比较完善,提供了比较丰富的协议支持。比如除了支持常见的HTTP协议之外,还可以直接通过JDBC Sampler连接数据库,把期望的测试结果存入数据库中,直接对测试结果进行验证。在编写测试脚本过程中,可以将不同的协议调用使用同一个脚本进行组合调用,写出比较复杂的测试用例。
- 提供了比较高级的扩展能力,允许自己定义和扩展新的协议支持,比如扩展支持阿里提供的Dubbo协议的JMeter插件等
- JMeter提供了HTML测试报告和Jenkins集成的能力,比较方便地实现一些基础的持续测试
安装
-
安装jdk,不详述
-
可直接双击打开**\apache-jmeter-5.1.1\bin下的ApacheJMeter.jar**文件,亦可打开jmeter.bat文件打开图形界面
-
亦可于cmd命令行窗口/运行窗口中输入jmeter,启动jmeter ,如图(需要配置环境变量至**\bin**的父目录)
基本介绍
测试计划
测试计划中可以选择添加多种组件
线程组
常用取样器
常用逻辑控制器
常用前置处理器
常用后置处理器
常用断言
常用定时器
常用配置元件
常用监听器
软件工具
默认Tools
Plugins
Plugins Manager
-
插件管理器及其他插件下载官方地址:jmeter-plugins.org/install/Ins…
-
并按照文档要求:Download plugins-manager.jar and put it into
lib/extdirectory, then restart JMeter. -
重启后可在Jmeter-选项中打开Plugins Manager,如图:
-
此后亦可在Plugins Manager中安装、更新插件
插件推荐
-
Transactions per Second
即TPS:每秒事务数,性能测试中,最重要的2个指标之一。该插件的作用是在测试脚本执行过程中,监控查看服务器的TPS表现————比如整体趋势、实时平均值走向、稳定性等。
jmeter本身的安装包中,监视器虽然提供了比如聚合报告这种元件,也能提供一些实时的数据,但相比于要求更高的性能测试需求,就稍显乏力。
通过上面的下载地址下载安装好插件后,重启jmeter,从监听器中就可以看到该插件,如下图所示:
某次压力测试TPS变化展示图:
-
Response Times Over Time
即TRT:事务响应时间,性能测试中,最重要的两个指标的另外一个。该插件的主要作用是在测试脚本执行过程中,监控查看响应时间的实时平均值、整体响应时间走向等。
使用方法如上,下载安装配置好插件之后,重启jmeter,添加该监视器,即可实时看到实时的TRT数值及整体表现。
某次压力测试TRT变化展示图:
-
PerfMon Metrics Collector
即服务器性能监控数据采集器。在性能测试过程中,除了监控TPS和TRT,还需要监控服务器的资源使用情况,比如CPU、memory、I/O等。该插件可以在性能测试中实时监控服务器的各项资源使用。
下载地址:jmeter-plugins.org/downloads/a…
其中JMeterPlugins-Standard和JMeterPlugins-Extras是客户端的插件,ServerAgent是服务端的插件。
下载成功后,复制JmeterPlugins-Extras.jar和JmeterPlugins-Standard.jar两个文件,放到jmeter安装文件中的lib/ext中,重启jmeter,即可看到该监视器插件。如下图:
将ServerAgent-2.2.1.jar上传到被测服务器,解压,进入目录,Windows环境,双击ServerAgent.bat启动;linux环境执ServerAgent.sh启动,默认使用4444端口。
1、服务端启动校验
CMD进入命令框,观察是否有接收到消息,如果有,即表明ServerAgent成功启动。
2、客户端监听测试
给测试脚本中添加jp@gc - PerfMon Metrics Collector监听器,然后添加需要监控的服务器资源选项,启动脚本,即可在该监听器界面看到资源使用的曲线变化。如下图所示:
在脚本启动后,即可从界面看到服务器资源使用的曲线变化,Chart表示主界面显示,Rows表示小界面以及不同资源曲线所代表的颜色,Settings表示设置,可选择自己需要的配置。
测试用例截图
图表、报表
Aggregate Graph(汇总图)
Response Time Graph(响应时间图)
Graph Results(图形结果)
View Results in Table(用表格察看结果)
视频
-
录制(http测试)
-
回放
-
多用户模拟
-
分布式
-
IP欺骗功能
LoadRunner(待补充)
功能简介
优势
安装
测试用例截图
图表、报表
视频
-
录制(http测试)
-
回放
-
多用户模拟
-
分布式
-
IP欺骗功能