性能测试培训.ppt_第1页
性能测试培训.ppt_第2页
性能测试培训.ppt_第3页
性能测试培训.ppt_第4页
性能测试培训.ppt_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

主讲 王春梅 性能测试培训 培训内容 本次培训主要内容 性能测试理论 脚本录制 场景设置 性能分析 性能测试 性能测试 通过自动化的测试工具模拟多种正常 峰值以及异常负载条件来对系统的各项性能指标进行测试 性能测试的分类 性能测试类型包括负载测试 强度测试 容量测试等负载测试 负载测试是一种性能测试 指数据在超负荷环境中运行 程序是否能够承担 强度测试 强度测试是一种性能测试 他在系统资源特别低的情况下软件系统运行情况 容量测试 确定系统可处理同时在线的最大用户数 测试流程 目标计划 创建Vuser脚本 定义场景 运行场景 监测场景 分析结果 测试工具 loadrunner8 0 Loadrunner工具是一种预测系统行为和性能的工业标准级负载测试工具 通过以模拟大量用户实施并发 性能监测来确认和查找问题现在软件的复杂程度以某种惊人的速度在增加 那么性能测试是量化和减少业务风险中最常见的策略 MercuryLoadrunner是现在最流行的性能自动测试工具之一 LR脚本 录制脚本流程及脚本结构 录制脚本选项 脚本中插入事务 集合点 检查点及参数化 创建测试脚本的工作流程 创建测试脚本的工作流程 Plan 规划Record 录制 可手工开发但是基于WEB的系统工作量太大 Enhance 增强 加检查点等 Test 回放 目的在于验证脚本录制是否正确 plan record enhance test 录制脚本的过程 新建 选择协议 设置录制选项 按计划操作系统 停止录入 保存 Newvirtualuser Startrecording new Applicationtype Programtorecord URLadress Workingdirectory Recordintoaction Plannedoperation stop save Startrecording 设置录制选项 Applicationtype IE win32 自己编的Clientserver的程序但是也是基于HTTP协议的 Startrecording 设置录制选项 Programtorecord 浏览器的可执行文件 如果想用其他浏览器就把浏览器的可执行文件的路径找到即可 比如IE的 C WINDOWS explorer exeURLadress 录制脚本的网址Workingdirectory 缺省值不用管Recordintoaction initactionend三个函数 头和尾只执行一次 action重复执行 LR是怎么录制脚本的 截获客户端和服务器端之间的通讯包 通常的测试工具录制脚本有一共有两种方式 Sniffer的方法 利用以太网 局域网 的广播特性 客户端和服务器在同一个网段不能跨网段 Proxy的方法 代理的方式 更加有通用性 LR采用的就是此种方式 客户端发出请求给 VUG 转发给服务器 从而VUG捕获客户端可服务器之间的通讯包 录制的测试脚本的规律 脚本的语句是按照 发 收 发 收 的次序排列 客户端先有发出请求 提供服务者接受请求 再回馈给客户端 脚本是顺序执行的 没有分支判断和循环 以上两种规律适用于任何协议的录制脚本 脚本结构 三个函数 init action end start Vuser init action Vuser end end Vuser Init 脚本启动时运行一次Action 脚本的主体函数 可以运行任意次 由runtimesetting进行设置 Vuser End 脚本退出时运行一次 回放 VUG回放脚本的目的 确定是否好用 标准 如果能正常的向数据库发出请求并正常的得到回应 是否达到正常的目的 发出请求是否正常 当录制是业务的流程时 脚本比较多 确保脚本好用 录制基本的用户脚本 录制基本的用户脚本 协议 协议 其实就是客户端和服务器端之间的通讯方式 通讯语言 例子 不同的客户端和不同的服务器之间的通讯方式是不一样的 比如中国与外部国家用英语进行沟通 这个英语就是一种通讯的方式 也可以叫做协议 录制基本的用户脚本 在此可执行循环Init end不可 录制基本的用户脚本 录制基本的用户脚本 顺序性 可有多个 可执行多次 录制基本的用户脚本 脚本中采用HTML页面的形式来表示 录制基本的用户脚本 录制基本的用户脚本 录制基本的用户脚本 完善测试脚本 当录制完一个基本的用户脚本后 在正式使用前我们还需要完善测试脚本 增强脚本的灵活性 一般情况下 我们通过以下方法来完善测试脚本 Loadrunner中的事务 定义 事务又称为Transaction 事务 Transaction 是这样一个点 我们为了衡量某个action 动作 的性能 需要在action的开始和结束位置插入这样一个 范围 这就定义了一个transaction 事务的作用 例子 瘸子走路 判断哪条腿是残疾 判断的依据 时间 两条腿迈步的时间 那条腿慢就说明哪条腿有问题 事务的作用 loadrunner运行到该事务的开始点时 loadrunner就会开始计时 直到运行到该事务的结束点 计时结束 这个事务的运行时间在loadrunner的运行结果中会有反映 通俗的讲loadrunner中的事务就是一个计时标识 loadrunner在运行过程中一旦发现事务的开始标识 就开始计时 一旦发现事务的结束表示 则计时结束 这个过程中得到的时间即为一个事务时间 通常事务时间所反映的是一个操作过程的响应时间 为什么在LR中使用事务 1 事务是loadrunner度量系统性能指标的唯一手段 没有事务则没有办法衡量系统的响应时间 也许有人说loadrunner可以通过编程来计时得到 不错如果你编程能力够强是能够实现的 但肯定不如loadrunner中的事务用的简单而且方便 为什么在LR中使用事务 2 事务能够用于度量高风险业务流程的性能指标 3 事务能够度量在一组操作中每一步的性能指标 4 通过事务计时实现了不同压力负载下的性能指标对比 5 通过事务计时可以帮助定位性能瓶颈 使用事务的方法 方法一 脚本生成后 手动插入事务 方法 在loadrunner脚本中点击鼠标 右键 选择 Insert StartTransaction 弹出一个对话框 输入一个事务名字 注 事务名字可以为中文 可以为英文 也可以中英文混合 但推荐的做法是起一个容易理解的名称 例如想知道登录所花费的时间 则插入事务可以命名为login或登录 使用事务的方法 StartTransaction 插入完成后 还需要插入一个 EndTransaction 用以标识事务结束 注 StartTransaction和EndTransaction需要成对出现 如果仅插入StartTransaction则脚本编译会提示错误 此外 还可以通过loadrunnervixen中的 Insert 菜单插入StartTransaction和EndTransaction 使用事务的方法 2 方法二 在脚本录制过程中插入StartTransaction和EndTransaction 在脚本录制过程中 通过录制工具条上的StartTransaction和EndTransaction图标插入事务 如下图所示 使用事务的方法 3 方法三 通过Run timeSettings中的AutomaticTransactions自动生成事务 如下图所示 使用事务的方法 注 该种方法插入的事务仅能在loadrunnerController中的图表和报告中看到在脚本的log中看不到 以上为事务的插入方法 无论是那种方法 插入事务后 我们都可以在脚本中看到如下两个函数 lr start transaction 事务 和lr end transaction 事务 LR AUTO 前一个为事务开始函数 后一个为事务结束函数 括号中引号中的内容为事务名称 插入集合点 插入集合点是为了衡量在加重负载的情况下服务器的性能情况注意 集合点经常和事务结合起来使用 集合点只能插入到Action部分 vuser init和vuser end中不能插入集合点 集合点 定义 在事务中 用户集体并发的点 要素 1 必须在action函数中插集合点2 必须在事务开始点之前插集合点目的 检测某一事务什么时候设集合点 1 有并发事务2 担心进程不能同时启动 可以用这个集合函数来做限制 例子 例如两个线程 A先到了B没到 按照操作系统处理方式 时间切片上是先进先出的 不可能有什么并发 那么就设个锁 所以有的集合点 集合点 3 集合点是一种特殊情况下的并发 通常是在以调优为目的的性能测试中才会用得到 目的是有针对性地对某个可能存在性能问题的模块施压 以便找到性能 集合点例子 大家等在一个地方 食堂这个集合点 人都到了并且到开饭的时间 集合点的等待时间的结束点 集体吃饭 即 多个用户 同一时刻 执行同一个事务 集合点的作用 集合点可以控制各个vuser在同一时刻执行任务 借助集合点 可以在LR中实现真正意义的完全一样的并发 问题 在实践中 我们经常会碰到这样的情况 测试需求说 该系统应支持200个并发用户 那么我们就开始测 录制好脚本 下一步就是在场景中执行了 在控制台中设置某脚本并发用户数为200 测试结果为通过或未通过 此时争议就来了 这200个用户的脚本如果执行通过 测试结果可以接受 是否可以说这个系统支持了200个并发呢 并发 并发用户数 系统用户数 和 同时在线用户数 假设有一个OA系统 该系统有2000个使用用户 这就是说 可能使用该OA系统的用户总数是2000名 这个概念就是 系统用户数 该系统有一个 在线统计 功能 系统用一个全局变量记数所有已登录的用户 从在线统计功能中可以得到 最高峰时有500人在线 这个500就是一般所说的 同时在线人数 那么 系统的并发用户数是多少呢 Controller中设置集合点策略 Controller中设置集合点策略 参数化 含义 用参数来替换一些常量 作用 执行脚本时 vuser将使用指定数据源的值来替换参数 参数数据源 可以是一个文件 内部生成的变量 源于数据库中的查询结果 什么可以参数化 用户名 密码 日期 用户ID 即 数据库中存在的数据 例子 登陆 参数化 参数化 选择 Replacewithaparameter 出现以下窗口 插入Text Imag检查点 在进行压力测试时 为了检查Web服务器返回的网页是否正确 VuGen允许我们插入Text Imag检查点 这些检查点验证网页上是否存在指定的Text或者Imag 还可以测试在比较大的压力测试环境中 被测的网站功能是否保持正确 插入检查点的步骤比较简单 添加Text Imag检查点 可以在录制过程中 也可以在录制完成后 推荐该项 检查点 含义 LR用来检查服务器端返回给客户端的结果是否正确的点 什么时候用 1 压力测试时 检查WEB服务器返回的网页结果是否正确 哪些可以设为检查点 文本或者图片检查点的作用 验证网页是否存在指定的的文本或者是图片 例子 213公交站牌 等待213班车 为什么要插入检查点 为什么需要检查点LoadRunner的很多API函数的返回值会改变脚本的运行结果 比如web find函数 如果它查找匹配的结果为空 它的返回值就是LR FAIL 整个脚本的运行结果也将置为FAIL 反之 查找匹配成功 则web find返回值是LR PASS 整个脚本的运行结果置为PASS 而脚本的结果则反应在Controller的状态面板上和Analysis统计结果中 为什么要插入检查点 web image check也是一个决定脚本运行结果的函数 但仅仅通过脚本函数执行结果来决定整个脚本的成功 失败 这未免太草率了 因为脚本往往是在执行一个业务流程 VU脚本函数本身是协议级的 它执行的失败会引起整个业务的失败 但它运行成功却未必意味着业务会成功 比如 我们要测100人登录一个Web邮件系统 此邮件系统有个限制 即不允许使用同一个IP登录两个用户 为什么要插入检查点 显然 如果LoadRunner没有开启多IP欺骗功能的话 第一个虚拟用户登录成功后 第二个虚拟用户试图登录 系统将返回一个页面 提示用户 您已经登录本系统 请不要重复登录 在这种场景下 如果没有设检查点来判断这个页面 那么VU认为它已经成功地发送了请求 并接到了页面结果 http状态码为200 虽然是个错误页面 这样VU就认为这个动作是成功的 但事实如我们所见 并非如此 因此我们要采用检查点来判断结果 为什么要插入检查点 检查点 CheckPoint 并不是一个LoadRunner里专有的概念 在WinRunner和QTP中就有检查点 对于自动化测试来讲 检查点是一个很重要的功能 它的作用是验证程序的运行结果是否与预期结果相符 Run TimeSetting Run TimeSetting Run TimeSetting 运行测试脚本 经过以上的各个步骤后 脚本就可以运行了 运行脚本可以通过菜单或者工具栏来操作 VuGen先编译脚本 再运行 如果编译通过 就会开始运行 然后会出现运行结果 创建运行场景 运行场景描述在测试活动中发生的各种事件 一个运行场景包括一个运行虚拟用户活动的LoadGenerator机器列表 一个测试脚本的列表以及大量的虚拟用户和虚拟用户组 创建运行场景使用Controller 在开始菜单中 启动Controller程序 出现 NewScenario 窗口 创建运行场景 创建运行场景 ManualScenario 该项要完全手动的设置场景 更加详细的信息 ManualScenariowithPercentageMode 该项只有在 ManualScenario 选中的情况下才能选择 选择该项后 在场景中我们需要定义要使用的虚拟用户的总数 LoadGeneratormachine机器集 然后我们为每一个脚本分配要运行的虚拟用户的百分比 选择场景类型为ManualScenario 添加LoadGeneratorMachines设置虚拟用户总数设置Schedule设置结果文件保存路径设置集合点Run TimeSetting 设置Schedule 设置Schedule 设置Schedule 设置Schedule 启用IPSpoofer IP欺骗 当运行场景时 虚拟用户使用它们所在的LoadGenerator的固定的IP地址 同时每个LoadGenerator上运行大量的虚拟用户 这样就造成了大量的用户使用同一IP同时访问一个网站的情况 这种情况和实际运行的情况不符 并且有一些网站会根据用户IP来分配资源 这些网站会限制同一个IP的登陆 使用等等 为了更加真实的模拟实际情况 LoadRunner允许运行的虚拟用户使用不同的IP访问统一网站 这种技术称为 IP欺骗 启用IPSpoofer IP欺骗 第一次运行IPWizard需要选择第一项 Createnewsettings 如果以前运行过 可以选择第二项 Loadprevioussettingsfromfile 选择保存好的文件 第三项用于使用IP欺骗进行测试完成后 释放IP的过程 因为该机会占用大量的IP资源 可能会导致其他机器没有IP可用的尴尬局面 使用该项 可以恢复到原来的状况 在Controller的场景中 启用IPSpoofer即可 启用IPSpoofer IP欺骗 分析以及监视场景 在运行过程中 可以监视各个服务器的运行情况 DataBaseServer WebServer等 监视场景通过添加性能计数器来实现 这一章非常的重要 确定系统瓶颈全靠它了 性能指标 响应时间响应时间是反映完成某个业务所需要的时间 例如 从单击登陆按钮到登陆完成返回登陆成功页面需要消耗1秒钟 那么就说这个操作的响应时间是1秒 性能指标 在性能测试中是通过事务函数来完成对响应时间的统计 事务是指做某件事情的操作 事务函数会记录开始做这件事情和该事情做完之间的时间差 使用transactionresponsetime这个词来说明 也称为事务响应时间 性能指标 吞吐量吞吐量反映单位时间内能够处理的事务条目 例如对于系统来说一个用户登陆需要1秒钟 如果系统同时支持10个用户登陆 且相同时间是1秒 那么系统的吞吐量就是10个 秒 性能指标 在性能测试工具中 吞吐量也被称为TPS transactionpersecond 每秒事务数 也就是说在单位时间内能完成的事务数目 TPS的计算一般是通过的事务除以时间 性能指标 服务器资源占用服务器资源占用反映在负载下系统的资源利用率 资源的占有率低 说明系统越优秀 资源并不仅仅指运行系统的硬件 而是支持整个系统运行程序的一切软硬件平台 例如CPU的占有率 内存使用率 查询cache命中率等 性能指标 有调查统计 对于一个用户来说 如果访问某系统的响应时间小于2秒 那么用户会感觉系统很快 比较满意 如果访问某系统的响应时间在2 5秒 那么用户可以接受 但是对速度有些不满 如果系统的响应时间超过10秒 用户将无法接受 性能指标 所以对于一个系统来说 需要尽可能保证每一个操作的响应时间控制在5秒以内 当然某些特殊的操作可能会大大超出这个响应时间 可以通过loadingbar的方式来提前告诉用户 性能分析及调优 性能测试的目的是为了发现性能的瓶颈并解决 性能分析是为了确定导致性能瓶颈的原因 而调优就是用来解决性能瓶颈 提高某些手段来让系统的性能得到提升是性能调优的主要目的 性能分析及调优 性能分析主要有以下两种方法 指标达成法将测试结果与客户需求进行比较 如果达成用户需要则测试通过 性能分析及调优 服务器资源利用率在满负荷的情况下 忙时的峰值CPU负载不超过75 内存的占用不超过80 性能分析及调优 最优化分析方法通过分析消除系统性能瓶颈 使系统的处理能力最大化 系统资源实现充分利用 应用程序诊断 性能分析及调优 应用程序的诊断是性能测试的最初目的 通过模拟多用户操作形成的负载 检查应用程序是否能够满足用户性能需求 如果不能满足 则定为应用瓶颈 并寻找解决该瓶颈的方案 确保系统在修正后能够满足用户需求 对于一个项目来说 一般都以应用诊断为主 性能分析及调优 系统调优性能测试的目的不是为了满足用户 而是超越自己 这个时候需要做的是让系统能够比以前更加优秀的运行 通过生成负载 对测试结果进行分析 并且准备大量的软硬件环境进行迭代测试 找出影响性能的要素 最终提升系统的性能 一般产品都会采用系统调优的方式逐步完善系统性能 常见的性能瓶颈 硬件上的性能瓶颈一般指的是CPU RAM方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论