- 浏览: 416085 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
iwwenbo:
别逗好不好
Popup.js 弹出窗口 -
bugnuke:
尼玛 跑不了。。。
Popup.js 弹出窗口 -
tangzhifei:
创建Subversion授权文件放哪目录下?前面我的都对了,到 ...
Trac系列(8):windows下Apache+SVN+Trac安装及配置(一) -
zoutuo1986:
正在安装,确实很慢,一定要选择网速快的时候安装,
eclipse 插件springide安装 -
johnsonyang:
this.jmsTemplate.send(
...
spring,weblogic配置jms
本次通过loadrunner录制Sql Server介绍一下如何测试一个sql语句或存储过程的执行性能。
主要分如下几个步骤完成:
第一步、测试准备
第二步、配置ODBC数据源
第三步、录制SQL语句在Sql Server查询分析器中的运行过程
第四步、优化录制脚本,设置事务
第五步、改变查询数量级查看SQL语句的性能
第六步、在controller中运行脚本
转载请注明出处:http://www.51testing.com/?41972
下面开始具体的介绍:
测试准备阶段我们首先要确认测试数据库服务器:我们可以在本地安装SQL SERVER数据库服务端及客户端,也可以确定一台装好的SQL SERVER服务器。
接下来,准备测试数据:对数据库测试时我们要考虑的不是SQL语句是否能够正确执行,而是在某数量级的情况下SQL语句的执行效率及数据库服务的运行情况,所以我们分别准备不同数量级的测试数据,即根据实际的业务情况预估数据库中的记录数,在本次讲解中我们不考虑业务逻辑也不考虑数据表之间的关系,我们只建立一张表,并向此表中加入不同数量级的数据,如分别加入1000条、10000条、50000条、100000条数据查看某SQL语句的执行效率。
在查询分析器中运行如下脚本:
--创建测试数据库
create database loadrunner_test;
use loadrunner_test
--创建测试数据表
create table test_table
(username varchar(50),sex int,age int,address varchar(100),post int)
--通过一段程序插入不同数量级的记录,具体的语法在这里就不多说了
declare @i int
set @i=0
while @i<1000 //循环1000次,可以根据测试数据情况改变插入条数
begin
BEGIN TRAN T1
insert into test_table (username,sex,age,address,post) values ('户瑞海'+cast(@i as varchar),@i-1,@i+1,'北京市和平里'+cast(@i as varchar)+'号',123456);
IF @@ERROR <> 0
begin
rollback;
select @@error
end
else
begin
commit;
set @i = @i+1
end
end
转载请注明出处:http://www.51testing.com/?41972
好了,执行完上述语句后,建立的数据表中已经有1000条记录了,下面进行第二步的操作,配置ODBC数据源,为了能让loadrunner能够通过ODBC协议连接到我们建立的SQL SERVER数据路,我们需要在本机上建立ODBC数据源,建立方法如下:
控制面板—性能和维护—管理工具—数据源(ODBC)--添加,在列表中选择SQL SERVER点击完成,根据向导输入数据源名称,链接的服务器,下一步,输入链接数据库的用户名和密码,更改链接的数据库,完成ODBC的配置,如果配置正确的话,在最后一步点击“测试数据源”,会弹出测试成功的提示。
配置好ODBC数据源后就要录制SQL语句在查询分析器中的执行过程了:
1、 打开loadrunner,选择ODBC协议
2、 在start recording中的application type 选择win32 application;program to record中录入SQL SERVER查询分析器的路径“..\安装目录\isqlw.exe”
3、 开始录制,首先通过查询分析器登录SQL SERVER,在打开的查询分析器窗口中输入要测试的SQL语句,如“select * from test_table;”
4、 在查询分析器中执行该语句,执行完成后,结束录制
好了,现在就可以看到loadrunner生成的脚本了(由于脚本过长,在这里就不粘贴了,有需要的朋友可以加我QQ,我把脚本发给你们),通过这些语句,我们可以看出,登录数据库的过程、执行SQL语句的过程
转载请注明出处:http://www.51testing.com/?41972
接下来,我们来优化脚本,我们分别为数据库登录部分和执行SQL语句的部分加一个事物,在增加一个double的变量获取事务执行时间,简单内容如下:
Action()
{ double trans_time; //定义一个double型变量用来保存事务执行时间
lr_start_transaction("sqserver_login"); //设置登录事务的开始
lrd_init(&InitInfo, DBTypeVersion); //初始化链接(下面的都是loadrunner生成的脚本了,大家可以通过帮助查到每个函数的意思)
lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
lrd_db_option(Ctx1, OT_ODBC_OV_ODBC3, 0, 0);
lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);
………………
trans_time=lr_get_transaction_duration( "sqserver_login" ); //获得登录数据库的时间
lr_output_message("sqserver_login事务耗时 %f 秒", trans_time); //输出该时间
lr_end_transaction("sqserver_login", LR_AUTO); //结束登录事务
lr_start_transaction("start_select");//开始查询事务
lrd_cancel(0, Csr2, 0 /*Unused*/, 0);
lrd_stmt(Csr2, "select * from test_table;\r\n", -1, 1, 0 /*None*/, 0);//此句为执行的SQL
lrd_bind_cols(Csr2, BCInfo_D42, 0);
lrd_fetch(Csr2, -10, 1, 0, PrintRow24, 0);
……………..
trans_time=lr_get_transaction_duration( "start_select" ); //获得该SQL的执行时间
lr_output_message("start_select事务耗时 %f 秒", trans_time); //输出该时间
lr_end_transaction("start_select", LR_AUTO); //结束查询事务
优化后,在执行上述脚本后,就可以得到登录到数据库的时间及运行select * from test_table这条语句的时间了,当然我们也可以根据实际情况对该条语句进行参数化,可以测试多条语句的执行时间,也可以将该语句改为调用存储过程的语句来测试存储过程的运行时间。
接下来把该脚本在controller中运行,设置虚拟用户数,设置集合点,这些操作我就不说了,但是值得注意的是,没有Mercury 授权的SQL SERVER用户license,在运行该脚本时回报错,提示“You do not have a license for this Vuser type.
Please contact Mercury Interactive to renew your license.”我们公司穷啊买不起loadrunner,所以我也无法继续试验,希望有license朋友们监控一下运行结果!
最起码在VUGen中运行该脚本我们可以得到任意一个SQL语句及存储过程的执行时间,如果我们测试的B/S结构的程序,我们也可以通过HTML协议录制的脚本在CONTROLLER中监控SQL SERVER服务器的性能情况,这样两方面结合起来就可以对数据库性能做一个完整的监控了。
本人对LOADRUNNER也是在摸索中,如果文章有写的不对,或理解错误的地方请指出,不甚感激
转载请注明出处:http://www.51testing.com/?41972
发表评论
-
Loadrunner关联
2008-09-28 16:40 3923Loadrunner关联(一)什么 ... -
LoadRunner监控器系列-How to set up the WebLogic monitor
2008-09-28 16:37 2703Installation Overview LoadRunne ... -
如何在 LoadRunner 脚本中做关联 (Correlation)
2008-09-28 11:04 2977当录制脚本时,VuGen会 ... -
lr监视的性能计数器
2008-09-28 10:59 1707Memory: 内存使用情况可 ... -
十步完成Web应用程序压力测试
2008-09-28 10:55 1703Web 应用程序是决定网站 ... -
分析图表-中级测试师用
2008-09-28 10:52 1392在论坛混了多日,发现越来越多的性能测试工程师基本上都能够掌握利 ... -
LR性能分析图解释
2008-09-27 11:23 2337Transactions(用户事务分析)用户事务分析是站在用户 ... -
Loadrunner关于页面检查的几个函数详解
2008-09-27 11:07 3050环境:51Testing软件测试网/VDn_([Loadrun ... -
Loadrunner 日志参数的设置与使用
2008-09-27 11:05 2482转载请注明出处:http://www.51testing.co ... -
lR知识
2008-09-23 16:25 1270问题1:LoadRunner响应时间 ... -
性能瓶颈分析方法
2008-09-23 16:19 3241同一场景1.小用户量的情况下测试2.大用户量情况下的测试分析的 ... -
LoadRunner中HTTP协议的录制及两种录制模式的比较
2008-09-23 14:36 1988一,脚本编写 1, “HTML –base scrīpt”和 ... -
LoadRunner例子:检查点为参数的一个例子
2008-09-23 14:30 2654检查点是LoadRunner的一个功能,用来验证业务功能的正确 ... -
LoadRunner中字符串的操作
2008-09-23 14:29 2303LoadRunner中常用的字符串操作函数有: ... -
LoadRunner编程之文件的操作
2008-09-23 14:28 1979这篇文章主要写下LoadRunner下如何进行文件的操作。 1 ... -
LoadRunner关联函数的脚本实例--如何操作关联参数
2008-09-23 14:24 4879这几天一直在学习LoadRunner的VuGen编程,今天想对 ... -
关于Loadrunner非常好的英文网站
2008-09-23 14:07 1841今天无意间在一个测试同行的BLOG中发现了这个网站的链接: h ... -
LoadRunner脚本编写(6)— 数据类型转换和字符串操作
2008-09-22 16:05 4650一,数据类型转换 没有使用过C编程的LoadRunner脚本编 ... -
LoadRunner脚本编写(5)-- 检查点,关联等函数
2008-09-22 16:04 4077本文接着前面脚本编写4 http://www.51testin ... -
LoadRunner学习---脚本编写(4)(比较重要)
2008-09-22 16:01 4838今天接着来翻译http://www.wilsonmar.com ...
相关推荐
Loadrunner测试数据库性能,测试SQL语句性能的脚本例子.docx
Loadrunner测试数据库性能测试SQL语句性能的脚本例子.pdf
Loadrunner测试数据库性能,测试SQL语句性能的脚本例子.pdf
通过loadrunner录制Sql Server介绍一下如何测试一个sql语句或存储过程的执行性能
LoadRunner性能测试工具实战视频教程【全套26集】 随机函数 在软件测试工具中如何巧用LoadRunner的随机函数。 LoadRunner有自带的随机函数,如果巧妙的加以采用,能解决一些看似很困难的实际问题。 一个项目的性能...
此代码为Loadrunner 8 通过C API类型的Vuser 测试MySQL性能,或者测试sql语句性能的脚本。 这东西很少有人用,网上资料很少,一般测试B/S的很多。
主要描述了性能测试对结果的分析方法,主要从数据库、内存、网络、服务器响应时间进行分析,并给出了响应的解决方法查找瓶颈时按以下顺序,由易到难。 服务器硬件瓶颈-〉网络瓶颈(对局域网,可以不考虑)-〉服务器...
//这里的LRD_VAR_DESC数据结构声明是很重要的,他是用来存储sql结果数据集的结构体,第一个参数头文件中就是这么写的,第二个参数是最大行数,第三个参数是每一行的最大长度,如果获得的查询结果比定义的长,运行时...
类与方法诊断 SQL语句优化 第四天 软件测试管理 测试流程管理 测试准备 测试计划 测试执行 测试分析 Bug管理流程 bug生命周期 bug属性设计 bug分析挖掘 测试配置管理 测试需求版本控制 与开发接口的配置管理 测试...
程序上存在数据库的问题,那就必须采用更加专业的工具来抓取出现问题的程序,主要是程序中执行效率很低的sql语句,weblogic可以采用introscope定位,期间可以注意观察一下jvm的垃圾回收情况看是否正常,我在实践中...
测试管理与QualityCenter培训手册 1、测试流程管理、测试度量方法 按照尽早进行测试的原则,测试人员应该在需求阶段就介入,并贯穿软件开发的全过程。就测试过程本身而言,应该包含以s下几个阶段。 -测试需求的...
直接从SQL语句问题贴子数据建表并生成建表语句的存储过程 从SQL中的一个表中导出HTML文件表格 获取數据库表的前N条记录 几段SQL Server语句和存储过程 生成表中的数据的脚本 最详细的SQL注入相关的命令整理 Oracle ...