已阅读5页,还剩57页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
性能测试技术交流 主要内容 一 性能测试的基本概念二 性能测试流程三 LoadRunner操作介绍四 测试结果分析 一 性能测试的基本概念 什么是软件性能 用户视觉的软件性能 软件性能就是软件对用户操作的响应时间 管理员视角的软件性能 软件性能首先表现在系统的响应时间 其次还会关心系统状态的相关信息 开发视角的软件性能 最关注的是使性能表现不佳的因素和由于大量用户访问引起的软件故障 也就是我们所说的性能瓶颈 性能测试的常用方法 1性能测试2负载测试3压力测试 测试方法基本概念 性能测试通过模拟生产运行的业务压力量和使用场景组合 测试系统的性能是否满足生产性能要求 特点 这种方法的主要目的是验证系统是否具有系统宣称具有的能力 测试方法基本概念 负载测试通过在被测系统上不断增加压力 直到性能指标 如通过量 响应时间 资源利用率等 特点 这种方法的主要目的是找到系统处理能力的极限 用这种方法可以比较系统调优前后的性能差异 测试方法基本概念 压力测试压力测试是指系统在一定饱和状态下 CPU 75 内存 70 例如CPU 内存等在饱和使用情况下 系统能够处理的会话能力 以及系统是否出现错误 其中 JVM的可用内存 数据库的连接数 数据库服务器的CPU利用率等都可以做为压力的依据 特点 这种方法的主要目的是检查系统处于压力情况下 应用的表现 一般用于测试系统的稳定性 软件性能测试的几个主要术语 响应时间 应用系统从请求发出开始到客户端收到最后一个字节数据所消耗的时间并发用户数 登录到系统中进行业务操作的总用户数 服务器实际承受的压力不只取决于业务并发用户数 还取决于用户的业务场景 吞吐量 指单位时间内系统处理的客户请求的数量 直接体现了软件系统的性能承受能力 性能计数器 描述服务器或操作系统性能的一些数据指标 思考时间 指的是用户在进行操作时 每个请求之间的间隔时间 因为用户在使用系统时 不大可能持续不断地发出请求 二 性能测试流程 设计测试计划 在性能测试正式开展之前 需要针对本次性能测试设计测试方案 测试方案的内容主要包括 项目背景性能测试需求测试环境信息性能测试场景测试实施计划参与人员以及职责 测试环境 工具 数据准备 测试环境准备我们的测试环境与客户的实际环境是有较大的不同 测试环境的网络 计算机硬件软件都无法做到和客户完全相一致 软件在客户那功能不正常 也许就是因为客户安装了某个不知名的其他软件造成的 因此压力测试需要遵循一些基本的原则 搭建测试环境的基本原则 要满足软件运行的最低要求 选用与被测软件相一致的操作系统和软件平台 营造相对独立的测试环境 无病毒的环境 测试环境建议 因为在测试过程中比较重视测试环境的 真实性 所以在客户的实际环境执行测试 需注意以下几点 1 尽可能地降低对客户现有业务地影响 挑选在夜间或者在客户业务不繁忙的时段进行性能 2 测试过程中会产生大量数据或因为系统故障导致数据被破坏 要有很好地备份和恢复过程 3 若是在公司内部进行性能测试 尽量避免一台服务器上装多个应用 尽量少的人使用被测试服务器 这样可以减少其它因素给系统性能带来的影响 数据的准备 在做性能测试时比较容易忽略数据的重要性 实际上后台数据库中数据量的多少会影响压力测试的结果 比如我们测试一个查询操作 数据库表里就几行记录 这样的测试是失效的 因为即使该数据表没有建任何索引话 一个全表扫描也花不了什么时间 如果有大量数据的话 索引覆盖的问题都能暴露出来 因此在做压力测试时要清楚数据库中数据量的大小 具体需要多少数据量可以根据客户数据库中的数据数量进行模拟 否则测试结果会与客户实际情况有一定的差距 测试脚本的录制 编写与调试 制作脚本如下步骤 脚本录制 录制过程中插入事务 插入集合点 查找动态数据 关联 参数替换 添加检查点 单脚本回放 脚本加压回放 三 LoadRunner操作介绍 LoadRunner常用组件 VirtualUserGenerator 虚拟用户脚本生成器 用于捕获最终用户业务流程和创建自动性能测试脚本 也称为虚拟用户脚本 Controller 用于组织 驱动 管理和监控负载测试负载生成器 用于通过运行虚拟用户生成负载Analysis 有助于您查看 分析和比较性能结果 LoadRunner相关术语 1 场景场景是一种文件 用于根据性能要求定义在每一个测试会话运行期间发生的事件 2 Vuser在场景中 LoadRunner用虚拟用户或Vuser代替实际用户 Vuser模拟实际用户的操作来使用应用程序 一个场景可以包含几十 几百甚至几千个Vuser 3 Vuser脚本Vuser脚本用于描述Vuser在场景中执行的操作 4 事务要度量服务器的性能 需要定义事务 事务表示要度量的最终用户业务流程 建议录制的时候插入事务而不要等录制完后再插入事务 5 集合点为了能够模拟所有虚拟用户同时并发 需要在业务操作前添加集合点 当全部用户到达该集合点时 释放所有用户 注意 只能向脚本Action部分添加集合点 利用vugen制作脚本 LR用Vuser 虚拟用户 来代替实际的用户 Vuser执行的操作是用Vuser脚本来描述的 Vuser脚本生成器 也称Vugen 是LR用于开发Vuser脚本的主要工具 Vugen通过录制客户端与服务器之间的活动来录制脚本 例如 在数据库应用程序中 测试工具的脚本生成器 Vugen 会监控数据库的客户端 并跟踪发送到数据库服务器和从数据库服务器接收的所有请求 当Vuser与服务器直接通信时 不需要在用户界面中耗费系统资源 这样就可以在一个工作站中同时运行大量Vuser 进而可以使用很少的测试计算机来模拟非常大的服务器负载 选择协议 C S Client Server 结构的win32应用程序一般可以选用winsocket协议 B S Browser Server 结构的通过浏览器浏览数据的一般选用Web Http Html 协议 1基于浏览器的应用程序推荐使用HTML basedScript2不是基于浏览器的应用程序推荐使用URL basedScript 3如果基于浏览器的应用程序中包含了JavaScript并且该脚本向服务器产生了请求 比如DataGrid的分页按钮等 也要使用URL based方式录制4基于浏览器的应用程序中使用了HTTPS安全协议 使用URL based Winsocket协议 Http协议 Vuser脚本的三个部分 这里我们简单讲讲Vuser脚本的三个部分 创建的每个Vuser脚本都至少包含三部分 vuser init 一个或多个Actions及vuser end 录制期间 可以选择脚本中VuGen要插入已录制函数的部分 通常情况下 可以将登录到服务器的活动录制到vuser init部分中 将客户端活动录制到Actions部分中 并将注销过程录制到vuser end部分中 运行多次迭代脚本 只有脚本的Actions部分被重复 而Vuser init和Vuser end部分只运行一次 如果我们测试的只是登录操作 需要登录操作循环被执行 那么我们也可以将登录操作录制在action中 工具条 录制脚本的时候会产生如下图所示的工具条 录制脚本建议 录制脚本的时候 会使用LR的默认设置 把脚本录制到Vuser init中 此时我们会等录制完成后 再将脚本剪切粘贴到actions和Vuser end部分中去 这是个不可取的做法 比较好的做法是在录制的过程中 就应该通过上图所示的工具条选择我们录制的操作需要录制到脚本的哪个部分 脚本设计常用技巧 参数化 参数化 录制完脚本后点击工具栏上的 参数化 此时参数列表中没有任何参数 点击New新建一个参数 假如我要参数化用户名 参数取名为UserName 参数化设置 参数化设置 Selectnextrow有以下几种选择 Sequential 按顺序一行一行的读取数据 Random 随机取值Unique 取唯一的值 这样需要保证数据表中有足够的数据 Updatevalueone有以下几种选择 EachIteration每一次迭代EachOccurrence每一次出现Once每次取一样的值 参数化 在参数列表中建立好需要的参数后 在脚本中 框选要参数的字符 右击鼠标 选择ReplaceWithaParameter 找到所需要的参数 点击OK 参数化就完成了 脚本设计常用技巧 关联 关联 我们的系统经常会有些动态的数据 比如新增记录之前系统会给一个流水号 我们的脚本在录制的时候捕获了这个号码 但是每次新增流水号肯定不同 拿脚本中的原始流水号去新增记录 肯定违反数据表的主键约束 如果我们在receive的包中找到那个流水号 并把它作为参数给send包 那么问题就迎刃而解了 这就是关联 其实也是一种参数化 关联是脚本设计中相对麻烦的工作 关联成功与否直接影响脚本执行成功 若实在找不出关联的地方 则可与开发人员咨询哪个地方返回了需要关联的数据 脚本设计常用技巧 关联 LoadRunner有自动关联功能 能自动捕捉脚本中需要关联的数据 但得把Tools RecordingOptions Correlation EnablecorrelationduringRecording选上 或者脚本录制完成后 运行一遍 然后点击则会找了脚本中需要关联的数据 可以点击Correlate完成关联 但自动关联操作往往不能完全按照用户的意图来完成 而且自动关联公对web和数据库应用等有限的协议有效 如果要对其他的类型的应用的脚本进行关联操作 就须使用手工关联操作方式 脚本设计常用技巧 关联 关联步骤 1 准备一个固定的操作步骤 包括输入数据等都要求相同 2 在LoadRunner的VUGenerator中使用该步骤录制形成脚本 并保存脚本 3 重复上一步动作 使用相同的步骤录制一个新的脚本并保存 4 执行期间命令Tools Comparewithvusers 在弹出来的对话框中选择步骤 2 所保存的脚本 5 在WinDiff的比较窗口中查看两个脚本的不同之处 并对每个脚本的不同之处进行分析 使用关联函数对需要关联的数据进行关联 关联常用函数 Web reg save 从web服务器返回的信息找到批定的内容并将其保存到参数中 Vuser脚本的两种查看方式 Vuser脚本的两种查看方式 ScriptView和TreeView 我们通过View菜单条ScriptView和TreeView来切换 基于图标的TreeView和基于文本的scriptView有各自的作用 注意 在TreeView模式下点击StartRecord是会出错的 只能在ScriptView下来录制脚本 如果你在查看data ws文件 那么Vugen将不允许你切换到TreeView模式下 TreeView模式查看返回数据 TreeView模式查看返回数据 从图中可以看出 TreeView模式下可以看到每个语句相关的Request和Reponse数据 Reponse数据按照Object的结构关系用树型表达 击击每个Object可以看到Object的HTML码 如何调试脚本 录制好脚本 进行参数化以及关联后 我们还得确定脚本是能正常运行的 是可以模拟用户操作的 我们脚本很少能录制好后 参数化好脚本后回放时就没有错误的 出错时我们需要调试 LR的编译器提供调试脚本的功能 我们可以调试和优化我们的脚本 如何调试脚本 脚本调试先后在单脚本回放下和加压回放下两种情况下进行 也就是在vugen中和在controller中进行 在controller中主要看在加压状态下参数是否能正确地传递与赋值 动态数据是否能正确地获得 如何设计场景 场景 场景可以理解为单个脚本在某种条件或某种环境运行时的环境特点 即脚本的运行环境 比如可以在场景中设置需要监控的服务器及相关计数器 多少并发用户 虚拟用户产生方式 集合点策略 以及Run timesetting 运行时设置 场景的执行时间 这些如何设置需要根据实际情况进行 场景的设置过程可以简单理解为模拟真实环境的过程 场景实则是一种 lrs文件 当场景设计完成后 可以将该场景保存下来 供以后使用 这样就不用重复设计场景了 如何新建场景 打开Controller方法 在VU Gen 脚本生成器 中 Tools CreateControllerScenario 添加LoadGeneratorMachines 点击 Generators 按钮 出现LoadGenerators窗口点击Connect 如果状态变成ready 则表示连接正常 如果状态为Failed该机器不能连接 检查原因 添加虚拟用户数 如何确定并发用户数 估算并发用户数公式C nL T估算峰值并发用户数C C 3 C 根号 其中 C是平均的并发用户数 C 是并发用户峰值 n是loginsession的数量 L是loginsession的平均长度 T是考察的时间段长度 估算并发用户数 假如有一个OA系统 系统有3000个用户 平均每天有400个用户要访问该系统 对一个典型用户来说 一天之内从登录到退出系统的平均时间为4小时 而在一天的时间内 用户只在8小时内使用该系统 求峰值并发数为多少 由上述两个公式可以得到 C 400 4 8 200C 200 3 200 242 设置Schedule 产生虚拟用户 Schedule里面主要用来设置任务计划 点击按钮进入Schedule设置窗口 设置Schedule 运行虚拟用户 设置Schedule 退出虚拟用户 设置场景运行时间 点击 设置集合点策略 设置集合点策略 点击Policy按钮 进入策略设置窗口 添加性能计数器 windows 在添加性能计数器之前需要具有服务器的系统管理员权限 以便获取机器资源 Windows 假设服务器为windows IP为 192 188 13 14 具有管理员权限的用户名和密码为administrator abc命令如下 1 运行 cmd2 netuse 192 168 13 14 user administrator3 按下enter 会提示输入密码4 输入密码abc5 按下enter 提示命令操作成功 则完成连接 添加性能计数器 点击Add按钮 输入服务器IP 执行测试 运行场景前需要注意的事项 每个组的虚拟用户数 迭代次数 thinktime 参数化时的取值间隔 确认虚拟机的LoadRunnerAgentService打开运行前使Generator机器处理Ready状态确认被监测的机器已经连接上去 并且添加自己所需要的计数器运行之前一定要确认系统中压力点的数据量是多少确认以上都设置正确时再点击运行测试场景 四 测试结果分析 内存分析方法 内存分析方法用于判断系统有无遇到内存瓶颈 是否需要通过增加内存手段来提高系统性能表现 1 首先查看Memory AvailableMbytes指标该计数值是描述系统可用内存的直接指标 如果该指标的数据比较小 系统可能出现了内存方面的问题 2 操作系统经常会用磁盘交换的方式提高系统可用的内存量或提高内存的使用率 我们可以关注page sec Page read sec和pagefault sec的值 这三个值直接反映了操作系统进行了磁盘交换的频度 Page sec 表明由于硬件页面错误而从磁盘取出的页面数 或由于页面错误而写入磁盘以释放工作集空间的页面数 PageRead sec 页的硬故障 Page sec的子集 该值比较大测表示是磁盘读而不是缓存读 阈值为5 PageFaults sec 每秒由处理器处理的失效页的全部数量 当一个进程需要的代码或数据不在它的工作区 它的空间在物理内存中 中时 发生失效页 内存分析方法 如果Page sec的计数持续高于几百 很可能会有内存方面的问题产生 但Page sec的值很大不一定表明内存有问题 而可能是使用内存映射文件程序所致 PageFaults sec说明了每秒发生页面失效的次数 页面失效得越多 则说明操作系统向内存中读取的次数越多 3 根据磁盘相关计数器综合分析 如果PageRead sec很低 同时 DiskTime和AverageDiskQueueLength的值很高 则可能有磁盘瓶颈 但是 如果队列长度增加的同时PageRead sec并未降低 则是由于内存不足 处理器分析方法 1 ProcessorTime 如果该值持续超过85 表明瓶颈是CPU 可以考虑增加一个处理器或换一个更快的处理器 2 UserTime 表示非核心操作耗费的CPU 如数据库操作 如排序 执行aggregatefunction
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年辽宁医学院附属第三医院医护人员招聘笔试参考题库及答案详解
- 2026年上海市光华中西医结合医院医护人员招聘考试参考试题及答案详解
- 2026年南昌市洪都中医院医护人员招聘考试备考试题及答案详解
- 2026年吉林省人民医院南区医护人员招聘考试参考题库及答案详解
- 2026年武汉儿童医院医护人员招聘考试备考试题及答案详解
- 2026年山东省眼科医院医护人员招聘考试参考题库及答案详解
- 2026年盘锦市第二人民医院医护人员招聘笔试参考题库及答案详解
- 2026年邵阳市中西医结合医院医护人员招聘笔试参考题库及答案详解
- 2026年青岛眼科医院医护人员招聘笔试参考题库及答案详解
- (2026年)查对制度试题
- 浙江省金华市2026年中考一模 科学卷
- 河南开放大学2026年《版式设计》形考作业1-3答案终考作业答案
- 2026年中考历史考前冲刺:中国+世界(古代史|近代史|现代史) 小论文范文汇编
- 先天性无阴道患者的个案护理
- 2026届广东广州市普通高中毕业班综合测试(二)化学(含答案)
- 2024-2025学年福建省福州市台江区四年级(下)期末数学试卷 含解析
- 2026贵州贵阳市云岩区选聘社区工作者36人笔试参考题库及答案解析
- DB54∕T 0533-2025 公路养护预算指标(定额)
- 雨课堂学堂在线学堂云《键盘即兴协作与创编(四川师范)》单元测试考核答案
- 亡故患者信息保护教育培训课件
- 影像报告书写不规范病历记录制度
评论
0/150
提交评论