1、51Testing软件测试博客【森林一木】htp:/ 作者:森林一木前言本文旨在指导初学者使用 LoadRuner进行基础的性能测试。我们在接到一个性能测试任务的时候,需要从以下几点考虑:我们的测试对象是什么 ,测试要求是什么,测试环境怎么部署的,业务规模如何,哪些业务点是客户最关注的等等 ,下面将从性能测试启动开始讲解基本的测试流程。 1、测试脚本录制在使用 loadruner工具前 , 需确定哪些业务需要使用该工具进行测试 , 不需要的时候坚决不用,不要认为这个工具万能。以本次测试中的综合查询(预付费综合业务信息查询 ) 为例进行讲解。 1.1录制前准备工作在录制脚本前需检查压测环境的整体
2、功能是否正确 , 待测部分的功能是否正确 , 只有确保功能正确后才可进行压测。如本次测试,可先验证 50环境是否正常, CIS服务器( 49)是否正常, /var/cis_regions目录的使用率是否过高等等,一切确定 OK后,开始验证功能 ,这些都保证没有问题后,检查一下测试工具 loadruner是否正常使用,可简单的点点用用 ,确保工具 OK。1.2录制及调试脚本在准备工作 OK后,进行脚本的录制,具体过程如下:1、打开 “ 开始 程序 MercuyLoadRuner MercuyLoadRuner” 出现下图51Testing软件测试博客【森林一木】htp:/ 点击 “ Creat/
3、EdirScipts” ,出现下图 , 如果没有出现 , 则可在 “ File” 下选择 New新建 。3、 出现这个界面后 , 选择 Web(HTP/ML)协议 , 我们测试的是 B/S模式 , 采用的是 Web协议。选择后,点【 OK】按钮。出现下图:51Testing软件测试博客【森林一木】htp:/ ,这个表示开始录制脚本,点这个按钮后,出现下图:图中的 URL输入待测的网址 , 如本次测试网址 : htp:/10.243.1.50/bos/lginauthservlt在 RecordintAction中 选 择 vuser_int, 把 登 录 部 分 放 在 vuser_int中
4、, vuer_it与 _nd在测试过程中仅执行一次,这里解释一下, Action的作用是讲测试功能主体放在里面执行 ,举 例 , 假 如 做 产 品 转 换 , 我 们 讲 登 陆 的 部 分 放 在 vuser_int中 , 具 体 业 务 操 作 放 在 Action中 , 退 出 部 分 放 在 vuser_nd。 这 样 , 我 们 将 压 力 集 中 在 业 务 操 作 上 , 而 不 是 登 陆 退 出 上 。同时,可以创建多个 Actio,将业务操作分成多个部分,比如用户鉴权放在 Confirm 中 , 将选择产品放在 Selt_Prd中 , 将业务分开放在多个 Action的好
5、处是可以统计这个操作的处理时间,处理速度等,便于定位问题。 Action的 增 加 、 修 改 、 删 除 : Action可 以 在 录 制 前 增 加 , 具 体 方 法 是 选 中 界 面 左 边 的部 分 , 然 后 点 右 键 , 可 以 看 到 有 增 加 Action的 按 钮 ( CreatNewActio) , 也 可 进 行 删 除 、 重 命 名 。 在 测 试 前 可 以 根 据 需 要 将 业 务 分 为 几 个 操 作 部 分 , 建 立51Testing软件测试博客【森林一木】htp:/ Action, 名称最好能清晰操作部分的功能 。 录制脚本的时候 , 可以将
6、对应的操作放在对应的 中。这里我们假设综合查询需要以下几个步骤: 第一、登陆 第二、进入菜单 第三、输入测试号码、提交查询则可设计 Action为这几个: vuser_int(这个默认有 ) 、 IntoMeu、 SbQue5、 设置好后,点【 OK】 , 进行录制,在录制前,如果已经打开待测页面的话,建议关闭该页面。点【 】后,这时会出现待测页面,如 htp:/10.243.1.50/bos/lginauthservlt, 同时 会 出 现 , 这 表 示 现 在已 经 开 始 录 制 , 可 根 据 需 要 将 业 务 放 在 一 个 Action中 , 也 可 以 分 成 多 个 , 放
7、 在 多 个 Action中 , 具体方法是在进行下一个业务操作前 , 点上图中的 , 选择对应的 Action, 如果事先没有创建 Action的话,则可点击 增加新的 Action。在页面中输入用户名后 , 登陆到系统 , 待页面都加载完毕后 , 将 vuser_int改 为 IntoMeu,点击相应的菜单 , 如 查询统计 -营业受理查询 -预付费查询 -预付费综合业务信息查询 , 页面加载完毕后 , 将 IntoMeu改为 SubQe, 在 “ 服务号码 : ” 中输入号码 13590( 测 试 号 码 ) , 点 击 【 查 询 】 , 待 页 面 返 回 查 询 结 果 后 , 将
8、 SubQe改 为 vuser_nd, 退 出 系统。 注:页面加载完毕可以参考网页左下角有个信息提示 “ 完毕 ” 。所 有 操 作 完 成 后 , 点 击中停止按钮 , 停止录制 , 页面将自动关闭 , 返回到 loadruner录制界面 , 将在界面中显示录制脚本代码,保存录制的脚本。 6、调试代码并进行参数化 录制后的代码需要进行调试才可用于压测 , 调试的办法就是进行回放操作 , 如果回放过程无错误,运行结果也正确的话,则可用于压测。具体调试步骤如下:点 击 界 面 中 的 , 进 行 单 次 运 行 调 试 , 运 行 后 , 会 弹 出 运 行 预 览 的 一 个 窗 口 , 可
9、 以 看到 每 一 个 Action的 执 行 过 程 , 运 行 结 束 后 , 会 出 现 一 个 结 果 报 告 , 如 果 有 错 误 , 会 在 报 告中 以 红 色 叉 标 志 显 示 出 来 , 同 时 在 Executionlg中 也 会 打 出 错 误 信 息 , 可 以 根 据 这 些 错 误信息进行调试 。 如果无错误 , 则可进行插入事务 、 参数化设置等其他操作 。 现假设调试无错误,进行参数化设置。 在测试过程中 , 有可能需要不同的测试号码 , 如果产品转换 , 首次激活等 , 如果有同样的号码将导致测试失败 , 因为相同的号码不能做同样的业务操作多次 , 所以需
10、要大量不同的测试号码 , 这个就需要用到参数化设置 。 我们在编写测试方案的时候 , 已经得出要准备多少测试号码 , 在测试工作准备的时候 , 已经准备好测试号码 , 那么可以利用这些准备的号码进行参数化设置 。 参数化设置的意思就是将需要用其他数据代替的地方设置为一个参数 , 在运51Testing软件测试博客【森林一木】htp:/ , 就使用其他的值代替 , 在这个例子中 , 我们需要设置参数的地方是服务号码。这样,我们需要先创建一个参数,步骤如下: 先准备好号码,可在数据中导出,存放在 tx文本中,格式为:测试号码,一行一个号码,最后一行要为行,如果文件名为 tes_num .a、 点击
11、界面中 ,出现下面界面在 这 个 界 面 中 , 点 击 左 边 的 New, 创 建 一 个 新 的 参 数 , 在 界 面 的 右 边 , Parm etrtype选 择 File, ilepath选 择 存 放 号 码 的 tx文 件 路 径 , 选 定 文 件 后 , 会 在 下 面 的 表 格 中 列出测试号码 , 我们在 Selctnextro中选择 Unique, 这个表示整个测试过程仅使用唯一的号码,保证号码不重复,这样就要号码资源足够多,同时测试时间也需要控制好 , 否则会报错。 创建好参数后 , 返回到刚才录制的脚本中 , 找到对应的 Action, 如 SubQe中服务号
12、 码字段 , 选 择该号码 , 右 键选择 “ Replacwithaprm etr” , 在 Parm etrnam 的 下拉列表中选择需要替换的参数,选定后点击 OK。设置 OK后 , 可进行调试 , 如无问题 , 则可以进行场景的设置 。 这里有个注意点要说明一下 , 参数化也可以直接在脚本中选中需替换的地方 , 点右键 , 选择 “ Replacwithaprm etr” , 改更 Propetis进行设置 , 但这样做经常出问题 , 不容易调试 , 不建议这样做。51Testing软件测试博客【森林一木】htp:/ 在脚本录制完成,调试通过后,可以进行测试场景的设计。具体步骤如下:1
13、、打开 “ 开始 程序 MercuyLoadRuner MercuyLoadRuner” 出现下图2、点击图中的 RunLoadTest,出现下图界面在新建场景的窗口,选择一种场景类型。下面对三种类型进行简单的说明。51Testing软件测试博客【森林一木】htp:/ ManulScenario:该项要完全手动的设置场景。 withPercntageMode:该项只有在 “ ManulScenario” 选中的情况下才能选择。选择该项后,在场景中我们需要定义要使用的虚拟用户的总数, LoadGenratom chine机器集,然后我们为每一个脚本分配要运行的虚拟用户的百分比。 2oal Ori
14、entdScenario: 在测试计划中,一般都包括性能测试要达到的目标。选择该项后, LoaRu基于这个目标,自动为你创建一个场景。在场景中,我们只要定义好我们的目标即可。 3、 在上图中出现的 Availbescripts, 选择要进行场景设计的脚本,若没有出现需要对应的脚本 , 可点击 Browse查找后添加进来 , 选择好脚本后 , 点 Ad, 则可加入到右边的窗口中 ,然后点【 OK】 ,出现下图4、 上 图 中 的 ScenarioGups, 显 示 的 是 脚 本 的 路 径 与 并 发 数 个 数 , 根 据 测 试 方 案 中 的 并 发数可更改此处的并发数,在上图中点击 E
15、ditSchedul,出现下图51Testing软件测试博客【森林一木】htp:/ , 假如我们设计的场景是每 15秒增加 2个 , 所有并发数增加完后持续运行 5分钟 ,5分钟运行结束后 , 每 30秒减少 个并发 , 则上面三张图的设置就行了 , 注意那个 Initalize必须勾选上。51Testing软件测试博客【森林一木】htp:/ “ Run-tim eStings” ,出现下图选 择 图 中 的 Thinkim e, 在 右 边 选 择 Replaythinktim e, 再 勾 选 中 Lim thinktim eto: 1seconds, 表示即使脚本 thinktim e时
16、间可能超过 1秒 , 也用 1秒替换 , 可以自行调整这个时间 。 这 样 做 的 目 的 是 在 测 试 过 程 中 使 得 每 个 业 务 操 作 里 加 上 thinktim e, 表 示 用 户 在 操 作 的时候 , 有个时间延迟 , 真实的模拟用户的操作 , 比如用户在做产品转换的时候 , 可能在选择产品的时候 , 有个停顿思考的时间 , 这样 loadruner会记录下来 。 如果选择 Ignorethinktim e,这样对服务器造成的压力是最大的 , 在运行时 , 会没有停顿的 , 持续对服务器加压 , 不太符合实际使用情况。 设 置好 Thinkim e后 , 选 择 Mi
17、scelanous, 在 出现的窗口中勾中 Contiueonr, 表 示在遇到错误的时候,继续执行场景,直到场景运行结束。6、一切设置 OK后,点击 ,运行测试场景,如下图51Testing软件测试博客【森林一木】htp:/ , 右边可以查看通过的事务数 、 失败的事务等,如果运行过程中有错误出现,则可以点击 Eros右边的放大镜,查看详细错误信息 。窗 口 下 面 是 各 种 监 控 窗 口 , RunigVuser展 示 的 是 目 前 并 发 用 户 数 的 运 行 情 况 , TransResponeTim 表示的是事务的响应时间,即每个事务处理的时间是多少秒。3、测试结果分析场景执
18、行结束后 , 可以使用 loadruner自带的分析工具进行结果分析 , 这里我们主要考察两个地方 , 第一是平均事务响应时间 AvagTransctionResponeTim , 第二是并发数运行情况 RunigVuser, 这两个显示了场景运行过程中并发数的执行情况与每笔事务的处理时间。还有其他几个考察点,做简要解释。 注:事务数概念解释:事务就是脚本中定义的每个 Action。具体分析步骤是先打开 “ 开始 程序 MeruyLadRuner MercuyLoadRuner”出现下图51Testing软件测试博客【森林一木】htp:/ AnalyzeLoadTest,出现下图在图中的菜单栏
19、中选择打开 , 找到要分析的场景执行结果 , 点 【 打开 】 即可 , 还可以直接在场景运行结束后,点击 Contrle菜单栏的 ,直接收集场景运行结果进行分析。打开场景执行结果后的界面如下:51Testing软件测试博客【森林一木】htp:/ , 右边是图形的显示 , 下面是指标对应的采集数据 。 接下来将重点选择几个指标做解释。 3.1并发数执行情况( RunningVusers)并发数执行情况反映了在场景执行过程中各个并发数的运行情况 , 成功了多少 , 失败了多少,是否按照既定的场景执行计划运行,是否达到预期的执行效果,如果在某个时间 , 执行失败了 , 或者存在异常 , 那么并发数
20、的图表将是波动 , 可以从图中直观的看出来 , 同样根据场景中 Ero的信息 , 定位在何时出现了错误 , 此时执行的并发数是多少 。 并发数的图表如下:51Testing软件测试博客【森林一木】htp:/ Throughput)事务通过数的意思是每个特定时间间隔内通过的事务数,如果随着场景执行时间的推延 , 通过事务数曲线应该是平缓的,如果突然上升,则可能是服务不稳定,或者网络因素导致的 ,如果持续下降,则表示服务的处理能力在下降,此时可以查看服务器段是否有进程堵塞 , 或者服务器的连接数不够,也可能是网络带宽不够。事务通过数的图表如下51Testing软件测试博客【森林一木】htp:/ A
21、verageTransactionResponseTime)平均事务响应时间在整个测试过程中是一个很重要的参考指标 , 他能清晰的反映出场景执行过程中,每个事务的执行时长,整个业务中哪个操作最耗时等等。场景执行结束后 , 可以根据这个图表分析出在一定响应时间要求下 , 系统可支持的并发数 , 假如我们要求在查询的时候要求这个返回结果的时候不超过 5秒 , 那么可以在场景中找到对应的 SubQe事务在处理时间为 5秒左右的时间点,再从 RunigVuser图中找到对应的时间点,查看对应的并发用户数 。 同样 , 在整个执行过程中 , 当并发数达到一定数值后 , 平均事务响应时间曲线应该是平缓的 , 如果出现突然升高或者降低的情况 , 则表示系统存在异常 , 这样我们可以找到这个时间点去查看服务器端的运行日志,查找原因。平均事务响应时间的图表如下:3.4服务器资源分析服务器资源监控利用的是 nm o工具 , 在得出分析结果后 , 可以查看对应的图表进行分析。 4、总结 整个测试过程是有序的 , 需要事先计划好 , 在录制脚本 , 调试脚本的时候需要注意的是要单个单个号码的试 , 不可一次把号码都跑完 , 这样不经济 。 这里仅仅介绍了简单的测试流51Testing软件测试博客【森林一木】htp:/ LoadRur的使用。