搜索标题
日历
| |||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | 2 | 3 | 4 | 5 | |||||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 | |||
| 13 | 14 | 15 | 16 | 17 | 18 | 19 | |||
| 20 | 21 | 22 | 23 | 24 | 25 | 26 | |||
| 27 | 28 | 29 | 30 | 31 | |||||
统计信息
- 访问量: 3248
- 日志数: 36
- 文件数: 2
- 建立时间: 2006-11-30
- 更新时间: 2008-07-08
我的最新日志
-
自动化测试框架设计
2008-7-08
-
qtp动态脚本执行-Execute
2008-7-08
动态脚本代码执行,灵活性在于字符串的组合,如何让脚本动态执行关键是Execute
样例代码如下:
Systemutil.Run "notepad.exe"
Window("记事本").Activate
Window("记事本").WinMenu("Menu").Select "帮助(H);关于记事本(A)"tempString= "Window(""记事本"").Dialog(""关于 记事本"").WinButton(""确定"")"
pcl_Click tempString
'------------------------------------------
Function pcl_Click(ByVal str)
Dim obj
Execute "Set ōbj = " & str '关键点
obj.Click
End Function'-------------------------------------------
-
配置QTP录制flex2.0.1技巧
2008-7-08
Flex 是 Macromedia发布的presentation server(展现服务),它是java web container或者.net server的一个应用,根据.mxml文件(纯粹的xml描述文件和actions cript)产生相应得.swf文件,传送到客户端,由客户端的flash player或者shockwave player解释执行,给用户以丰富的客户体验。
Flex就像Flash一样, Flex能够制作出可以被Flash Player播放的SWF文件。但是,Flex主要是开发者(程序员)的工具,并且开发Flex应用程序的方式和开发Flash RIA(Rich Internet Application,富互联网应用程序)的方式完全不同。所有的Flex开发都基于一个Flex开发框架,该框架为你提供可重复使用、可扩展的UI组件、数据获取服务和事件处理模块等等关键信息:
1. must have QTP 9.1, flex 2.0.1, IE 6+, and install the QTP plug-in.
2. must recomiple the app in flex 2.0.1 with automation testing libraries.
3. must put the swf and html file to the QTP machine.
4. When testing, access the html(not the swf) file from a browser via web server. don't open the html from the file system.
- Before you start to test your flex app with QTP, you have to make sure you have all the necessary software installed and configured correctly.
- Make sure you installed QTP 9.1, not 9.0.
- Make sure you installed flex 2.0.1 , and your flex app should be recompiled using flex 2.0.1.
- Make sure you have installed the QTP plug-in. You can download it from our website. You will need to register to login the page first. After you login into the page, scroll down and you will see "Flex Automation Package". From there you can download Flex_Automation.zip. After you unzip the zip file, you can see QTP_Plugin_Installer.exe. Run that exe file and that will install the plugin. Note, To verify if you have installed the plug-in or not, go to your registry, and search for entry of TEAPluginIE.dll and TEAPluginQTP.dll. If those dlls are not in the registry, then your plug-in has not been installed correctly.
- If you have above installation and configuration, but the QTP does not record the flex app, then check the following:
- QTP plug-in is only supported on IE 6+, you need to make sure your browser is using IE 6 or higher version. And your flash player must be version 9.0.28. or higher. To verify your flash player version, request the following link from your testing browser: http://www.adobe.com/cfusion/knowledgebase/index.cfm?id=tn_15507
- The flex app you are going to test with QTP must be prepared for automation. You need compile your app with automation testing libraries, such as automation.swc, automation_agent.swc, and qtp.swc, etc. You can compile this via Command-line compiler or flex builder. If you have compiled your flex app in flex 2.0.1 already, and want to Test run-time loading, then you can compile RunTimeLoading. Please follow the instruction step by step described here.
- If you request your flex app from a browser, you have to use the html wrapper file. Do not accessing the swf directly, it needs to be loaded from an object tag with an ID. You can open the wrapper or the SWF file from the file system, but it is not a recommended practice. You should try to deploy the SWF file to a web server and request the html wrapper through HTTP from the server. See page 13 of Testing Flex Applications with Mercury QuickTest Professional for more details.
- If you still have trouble getting up and running with Flex QTP plugin, you can create a log by following the steps below:
- Go to the mercury installation/bin directory say: "C:\Program Files\Mercury Interactive\QuickTest Professional\bin" and run MicLogSetting.exe .
- Select the log settings as: Level: MicLogLevelDebug2 Folder:C:\Program Files\Mercury Interactive\QuickTest Professional\ Selected Categories:LogCatPackTEA
- Run QTP and record a flex application say flexstore.html
- A log file would have been generated like C:\Program Files\Mercury Interactive\QuickTest Professional\MicLogFile_QTPro_pid1912_11_32_32.html
- Check whether you are seeing the following in the log: "Read Flex environment and matching ProgId TEAPluginQTP.TEAFlexAgentQTP.
-
老婆测试工具培训记 - 启动应用程序的方式
2008-7-07
前几天给老婆讲了自动化测试工具的实现,并让他独立完成了工具的实现,今天晚上给老婆培训了下qtp的启动方式,由于老婆有TestComplete和Wr的基础,工具上手还是很快的。
常用的启动应用程序的方式
'1.systemutil.Run
SystemUtil.Run "calc.exe"'2.wscrīpt.shell
Dim wsh 'as wcript.Shell
Dim strExe_Path 'as stringstrExe_Path = "calc.exe"
Set wsh=CreateObject("wscrīpt.shell")wsh.Exec strExe_Path
Set wsh=nothing
'3.录制的方式,虽然比较傻,但是很有效Dialog("运行").WinEdit("打开(O):").Set "calc.exe"
Dialog("运行").WinButton("确定").Click
SystemUtil.Run "calc.exe","","C:\Documents and Settings\piaochunlong",""
Window("计算器").Close'4 api方式 难度在于了解win32消息机制
'vb api变换成 QTP的api声明才能用
'Public Declare Function WinExec Lib "kernel32" Alias "WinExec" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Extern.Declare micLong,"WinExec","kernel32","WinExec",micString,micLong
Extern.WinExec "calc.exe",5备注:针对最后一种情况提供一个声明转换的工具。
'5 InvokeApplication
InvokeApplication "calc.exe"
-
性能监控随笔点滴 - pcl
2008-7-07
吞吐量:
定义:单位时间内完成工作的度量。
评估点:在C/S环境中通常是从服务器方进行评估。
表象:随着负载的增加,吞吐量往往增长到一个峰值后,然后下降,队列变长。
分析:
在C/S架构的系统中,吞吐量依赖每个部件的运行,系统地最慢点决定了整个系统的吞吐量,这个点我们称之为瓶颈。一般使用率最高的资源就是瓶颈(但也不总是这样,因为可能这种情况是某种资源正在处理多种请求),只要没有队列就没有瓶颈。
LoadRunner监控:选择Windows资源监控器,对资源进行监控队列:
定义:处理请求排队
评估点:服务器端进行评估
表象:对资源的请求的速率大于资源的吞吐量。
分析:当队列变长,请求不能被有效的处理,响应时间就会变慢。
响应时间:
定义:从客户端发出请求到服务器端返回最后一个字节的时间
评估点:通常从客户端来度量(LoadRunner通过事务来度量)
表象:响应时间通常随着负载的增加而增加(虚拟用户数的增加,请求数的增加)
分析:可以利用资源的队列的长度除以资源的吞吐量可以计算响应时间
LoadRunenr:自定义事务是度量的关键,最后分析图中可以通过看平均事务响应时间图分析
Window性能监控原理操作系统本身时时采集系统资源如PhysicalDisk,Memory,CPU,NetWork等数据。缺省情况下,操作系统是通过注册表来收集系统资源。同时它也支持WMI(Window Management Infrastructure)收集数据,
所以很多性能测试工具都宣称是通过无代理进行性能数据采集,在window平台上基本上所有的工具都可以做到(其他平台有些工具就不能达到loadrunner无代理方式的性能采集了),
背景知识:在WMI出现之前,所有的 Windows管理工具都依赖于 Win32 应用程序编程接口(Application Programming Interfaces,APIs)来访问和管理 Windows 资源。因为在 WMI 之前,能够以编程方式访问 Windows 资源的惟一方法就是通过 Win32 API。这种情况使 Windows 系统管理员无法通过一种简便的方法利用常见的脚本语言来自动化常用的系统管理任务,因为大多数脚本语言都不能直接调用 Win32 API。通过提供一致的模型和框架,WMI 改变了这种情况 — 通过模型和框架,所有的 Windows 资源均被描述并公开给外界。最好的一点是,系统管理员可以使用 WMI 脚本库创建系统管理脚本,从而管理任何通过 WMI 公开的 Windows 资源!
例子代码:WMI脚本检索远程计算机上安装的物理内存量
strComputer = "pcl"Set wbemServices = Getobject("winmgmts:\\" & strComputer)
Set wbemObjectSet = wbemServices.InstancesOf("Win32_LogicalMemoryConfiguration")For Each wbemObject In wbemObjectSet
Wscrīpt.Echo "Total Physical Memory (kb): " & wbemObject.TotalPhysicalMemory
Next定位瓶颈:
定位瓶颈是监控整个系统开始,如果某个环节限制了整个系统更快的执行才会存在瓶颈,即使系统中的一个或者多个使用超负荷,但是作为一个整体系统没有受到任何的影响,就不存在瓶颈。瓶颈的产生的原因:主要是服务的请求数,请求的频率,请求的持续时间
-
AIX上安装配置DB2
2008-7-07
在2台P550数据库主机上安装DB2 V8.2,两台数据库主机间进行数据库HA配置,实现数据库双机互备。
本文档编写以磁盘大小360G,数据库名CRAMS_JS为例.
设备准备
请系统管理员协助划分DB2需要的共享磁盘,本文以磁盘大小共360G为例,做以下划分:
建数据库需要的文件系统:
/db2log1 10G
/db2_db 3G
建数据库需要的裸设备:
device '/dev/db2_dta01 99G
device '/dev/db2_dta02 98G
device '/dev/db2_dta03 49G
device '/dev/db2_idx01 48G
device '/dev/db2_idx02 48G
device '/dev/db2_tmp 6G
1. 主服务器安装
1.1 安装先决条件
(1)确保系统满足安装内存和磁盘需求,磁盘空间不足的话通过 Smitty fs 或者 Smitty jfs扩展。
(2)打开系统异步IO,通过SMITTY工具将异步状态置为Available,即
The state to be configured at system restart : available
(3)以超级用户root登陆,手工创建必需的 DB2 用户组和用户:
您可以通过Smitty工具来创建用户和组,也可以通过下列命令来创建:
mkgroup id=999 db2iadm1
mkgroup id=998 db2fadm1
mkgroup id=997 db2asgrp
mkuser id=1004 pgrp=db2iadm1 groups=db2iadm1 home=/home/db2inst1
db2inst1 passwd db2inst1
mkuser id=1003 pgrp=db2fadm1 groups=db2fadm1 home=/home/db2fenc1
db2fenc1 passwd db2fenc1
mkuser id=1002 pgrp=db2asgrp 1 groups=db2asgrp home=/home/db2as
db2as passwd db2as
1.2安装DB2
1. 以 root 用户登录系统
2. mount /cdrom
3. cd /cdrom
4. 将安装文件ese.dbcs.tar.gz 复制到临时文件系统中。
5. 输入命令gunzip /…/ese*.gz 解压得到 ese.dbcs.tar
6. 输入命令 tar -xvf ese*.tar 解压得到安装目录ese.dbcs
7. 通过cd ese.dbcs/进入安装目录,
8. 运行 ./db2setup执行安装,,接受许可协议,选择安装DB2 ESE SERVER,安装类型为典型安装,按照安装向导的提示安装。其中一个界面需要输入DB2管理服务器的用户和密码,一般情况下我们默认使用,用户名: dasusr1,密码:dasusr1。
1.3 数据库配置
1.3.1创建数据库实例
使用 db2icrt 命令来创建实例,具体步骤如下:
1. 作为具有 root 用户权限的用户登录,
2. cd /usr/opt/ db2_08_01/instance/
3. db2icrt -a AuthType -s ese –w 64 –u db2fenc1 db2inst1
参数说明:
n -a AuthType 表示实例的认证类型。AuthType 可为 SERVER、CLIENT、DCS、SERVER_ENCRYPT 和 DCS_ENCRYPT 其中之一。SERVER 是缺省值。此参数是可选的。
n -s ese 表示将要创建的实例类型,其中ese表示服务器端的实例,CLIENT表示客户端的实例。
n -w 64 表示要创建的实例是64位的。
n -u FencedID 表示将用来运行受防护用户定义函数(UDF)和受防护存储过程的用户的名称。若您正在 DB2 客户机上创建实例,则此标志不是必需的。指定您创建的受防护用户的名称。
n db2inst1表示实例的名称。实例的名称必须与拥有实例的用户的名称相同。指定您创建的拥有实例的用户的名称。将在拥有实例的用户的主目录中创建该实例。
1.3.2创建数据库和数据库对象
1.3.2.1 创建数据库
(1) 输入命令su – db2inst1 切换到db2inst1用户
(2) 执行DB2进入db2命令行处理器,输入以下命令来创建数据库:
create database CRAMS_JS on '/ db2_db ' using codeset GBK territory CN
1.3.2.2 创建和调整缓冲池
(1) 输入命令su – db2inst1 切换到db2inst1用户
(2) 执行DB2进入db2命令行处理器,输入以下命令来创建数据库:
CREATE BUFFERPOOL "BUFFPOOL8K" SIZE 65536 PAGESIZE 8192 NOT EXTENDED STORAGE
ALTER BUFFERPOOL IBMDEFAULTBP SIZE 65536
1.3.2.3 创建表空间
(1) 输入命令su – db2inst1 切换到db2inst1用户
(2) 执行DB2进入db2命令行处理器,输入以下命令来创建数据库:
CREATE TEMPORARY TABLESPACE TMPSPACE8K IN DATABASE PARTITION GROUP IBMTEMPGROUP PAGESIZE 8192 MANAGED BY DATABASE
USING (device '/dev/rdb2_tmp' 786432)
EXTENTSIZE 8
BUFFERPOOL BUFFPOOL8K
CREATE REGULAR TABLESPACE SDB1 IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 8192 MANAGED BY DATABASE
USING (device '/dev/rdb2_dta01' 12976128)
EXTENTSIZE 8
BUFFERPOOL BUFFPOOL8K
CREATE REGULAR TABLESPACE SDB2 IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 8192 MANAGED BY DATABASE
USING (device '/dev/rdb2_dta02' 12845056)
EXTENTSIZE 8
BUFFERPOOL BUFFPOOL8K
CREATE REGULAR TABLESPACE SDB3 IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY DATABASE
USING (device '/dev/rdb2_dta03' 12845056)
EXTENTSIZE 16
CREATE REGULAR TABLESPACE IDB1 IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY DATABASE
USING (device '/dev/rdb2_idx01' 12582912)
EXTENTSIZE 16
CREATE REGULAR TABLESPACE IDB2 IN DATABASE PARTITION GROUP IBMDEFAULTGROUP PAGESIZE 4096 MANAGED BY DATABASE
USING (device '/dev/rdb2_idx02' 12058624)
EXTENTSIZE 16!
1.3.3操作系统参数设置
n 与网络相关的设置
修改/etc/rc.net文件,将文件末尾处
if [ -f /usr/sbin/no ] ; then
/usr/sbin/no -o extendednetstats=0 >>/dev/null 2>&1
fi
修改为:
if [ -f /usr/sbin/no ] ; then/usr/sbin/no -o extendednetstats=0 >>/dev/null 2>&1
/usr/sbin/no –o thewall=1048576
/usr/sbin/no –o rfc1323=1
/usr/sbin/no –o tcp_sendspace=655360
/usr/sbin/no –o tcp_recvspace=655360
/usr/sbin/no –o udp_sendspace=65536
/usr/sbin/no –o udp_recvspace=655360
/usr/sbin/no –o sb_max=1310720
fi
n 系统虚拟内存设置
vmo -r -o minperm%=15
vmo -r -o maxperm%=25
vmo -r -o maxclient%=15
vmo -r -o maxfree=184
vmo -r -o v_pinshm=1
vmo -r -o lgpg_size= 16777216
vmo -r -o lgpg_regions= 1207959552
ioo -r -o lvm_bufcnt=16
ioo -r -o maxpgahead=64
chdev -l sys0 -a maxuproc=4096
1.3.4 数据库服务器参数设置
(1) 如果当前用户是root用户,通过su – db2inst1 切换到db2inst1用户
(2)通过输入以下命令设置数据库服务器环境:
db2set DB2_EVALUNCOMMITTED=on
db2set DB2_EXTENDED_OPTIMIZATION=on
db2set DB2_SKIPDELETED=on
db2set DB2_PARALLEL_IO=*
db2set DB2_ANTIJOIN=ON
db2set db2comm=tcpip
db2set db2codepage=1386
db2set DB2_USE_ALTERNATE_PAGE_CLEANING=ON
1.3.5数据库管理器参数设置
(1) 如果当前用户是root用户,通过su – db2inst1 切换到db2inst1用户
(2)通过输入以下命令设置数据库服务器环境:
db2 update dbm cfg using SHEAPTHRES 100000
查看/etc/services文件末尾关于服务的名字和端口号,通过以下命令更新相应服务名:
db2 update dbm cfg using svcename DB2_db2inst1
1.3.6数据库参数设置
(1) 如果当前用户是root用户,通过su – db2inst1 切换到db2inst1用户
(2) 通过执行以下命令配置数据库。
db2 UPDATE DB CFG FOR CRAMS_JS USING LOCKLIST 20480
db2 UPDATE DB CFG FOR CRAMS_JS USING LOGBUFSZ 256
db2 UPDATE DB CFG FOR CRAMS_JS USING SORTHEAP 32768
db2 UPDATE DB CFG FOR CRAMS_JS USING LOCKTIMEOUT 60
db2 UPDATE DB CFG FOR CRAMS_JS USING LOGFILSIZ 10000
db2 UPDATE DB CFG FOR CRAMS_JS USING LOGRETAIN ON
db2 UPDATE DB CFG FOR CRAMS_JS USING NUM_IOSERVERS 7
db2 UPDATE DB CFG FOR CRAMS_JS USING NEWLOGPATH /db2log1
db2 UPDATE DB CFG FOR CRAMS_JS USING LOGPRIMARY 50 LOGSECOND 10
1.4准备HACMP切换脚本
1. 以root用户登录
2. mkdir /hacmp
3. cp /home/db2inst1/sqllib/samples/hacmp/hacmp-s1.sh /hacmp/pbc-ha-start.sh
4.
WinRunner Tips 整理(以前整理)
2008-7-07
WinRunner测试技巧集 - 1
1.WinRunner如何把Real类型转化为指数表示方法
答:
指数类型转化为real类型,可以通过下边的代码
var = 5.3569E+10;
pause(var);
#显示 53569000000
Real类型转化为指数表示方式
var = sprintf("%e",53568544768);
pause(var);
#displays 5.356854e+0102.什么是同步点,怎样用它?他和Wait有什么不同?
答: 从功能上他们都可以实现脚本和被测试程序同步的问题,不过同步点有window/object,bitmap方式,她等待的是某个等待的对象 窗体,bitmap的出现,一定程度她也可以作为验证点
wait这点上无法实现相同的效果。有的脚本中即使你加入wait,但是你无法知道下边的对象窗体图片是否就是成需要运行的正确 出现的
3.tl_step和tl_step_once的区别
答:tl_step和tl_step_once都是把运行状态信息放到运行结果中去,区别在如果连接TD,TL_STEP把每步状态信息都插入到测试结果中去,tl_step_once如果连接td,只是插入一次运行步骤的名字
代码例子:
--------------------------------------------------------------------------------for (i=1;i<4;i++){
tl_step("Step", PASS, "reporting step, #" &i);
tl_step_once("Step Once", PASS, "reporting step once, #" &i);
}--------------------------------------------------------------------------------
WR中的报告:
Step: Step, Status: PASS, Descrīption: reporting step, #1
Step: Step Once, Status: PASS, Descrīption: reporting step once, #1
Step: Step, Status: PASS, Descrīption: reporting step, #2
Step: Step Once, Status: PASS, Descrīption: reporting step once, #2
Step: Step, Status: PASS, Descrīption: reporting step, #3
Step: Step Once, Status: PASS, Descrīption: reporting step once, #3TD中的报告:
Step: Step, Status: PASS, Descrīption: reporting step, #1
Step: Step Once, Status: PASS, Descrīption: reporting step once, #1
Step: Step, Status: PASS, Descrīption: reporting step, #2
Step: Step, Status: PASS, Descrīption: reporting step, #34.WinRunner和TD集成后脚本运行很慢是什么原因呢?
答:安装TD和WinRunner服务器上需要独占100GByte,TD需要10OGHZ时钟速度16GB RAM的处理平台
5.WR是否支持vs.net
根据Mercury的介绍,他们的对.Net的支持转移到QuickTest Pro上了,如果你需要自动化测试.Net程序(不是web的),建议用QuickTestPro。也就是说wr不支持vs.net开发的程序
6.我对比两个文件file1.txt和file2.txt,文本内容如下
file1.txt 内容如下:
10523 8315 6804 8387 3643 4550 3457 3649file2.txt内容如下:
190176 155737 117417 145194 65314 81431 64522 63324
代码如下:file_compare("C:\\file1.txt","C:\\file2.txt","save");
为什么每次对比这两个文件结果都是通过的。
答:这个问题的原因在于它在前面的脚本中对文件进行了操作,没有关闭,所以这段代码运行总是通过7.如何在winRunner中用Windows的API函数
在使用该API函数前需要先加载该函数然后声明API函数,代码如下
load_dll("user32.dll");
extern int PostMessageA(in long, in long, in long, in long);
win_get_info("{class:window, MSW_class:AfxMDIFrame42, label:\"!WinRunner.*\"}", "handle", hWnd);
PostMessageA(hWnd, 16, 0, 0);
请在尝试以上代码的时候,保存脚本,呵呵!
8.怎样处理跟踪键盘操作?
答:下边的代码希望对你有帮助
function GetKeyStatus(in vKey){
auto pid, thread_id, win_desc, hWnd, KeyState, win_log_name, win_full_desc, focused_obj_desc;
win_desc = "{active:1}";
if (win_exists(win_desc)==0) {
win_get_desc(win_desc, "", "", "", win_full_desc);
GUI_map_get_logical_name( win_full_desc, "", win_log_name, "bla");
win_get_info(win_desc, "handle", hWnd);
pid = GetWindowThreadProcessId(hWnd, NULL);
thread_id=GetCurrentThreadId();
AttachThreadInput(pid,thread_id,TRUE);
KeyState=GetKeyState (vKey);
AttachThreadInput(pid,thread_id,FALSE);
if (KeyState < 0)
return(0); # Key is pressed
else
return (1); # Key is not pressed
}
else
return (-1); # No active window found, so cannot determine key state
}9.WinRunner如何处理excel?
答:其实解决方法有很多,这里列举两种。
一.利用其他语言特性开发出dll提供给winrunner使用(vb,vc,delphi等)
二.在其他环境中实现,用winrunner调用
第一种我在这里不举例子了,第二种我利用vbs往excel中赋值给大家提供一种思路,代码如下:'vbs中的代码
Dim ExcelApp
Dim itemX
if Wscrīpt.Arguments.Count < 2 then
r = msgbox("Requires 2 arguments", 48, "change_sheet")
else
dim fso
set fso = createobject("scrīpting.filesystemobject")
xlBook = fso.GetAbsolutePathName(Wscrīpt.Arguments(0))
xlSheet = Wscrīpt.Arguments(1)
set fso = Nothing
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Workbooks.Open(xlBook)
Set itemX = ExcelApp.ActiveWorkbook.Worksheets.Item(xlSheet)
itemX.Activate
excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("A1").Select
excelapp.ActiveCell.FormulaR1C1 = "1"
excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("B1").Select
excelapp.ActiveCell.FormulaR1C1 = "2"
excelApp.ActiveWorkbook.Worksheets(xlSheet).Range("c1").Select
excelapp.ActiveCell.FormulaR1C1 = "3"ExcelApp.ActiveWorkbook.Save()
ExcelApp.ActiveWorkbook.Close(1)
ExcelApp.Quit()
Set itemX = Nothing
Set ExcelApp = Nothingend if
winrunner中的调用代码:
dos_system("wscrīpt \"C:\\excel_sheet.vbs\" \"C:\\SheetBook.xls\" \"Sheet2\"");
10.在WinRunner中如何实现得到transaction时间?
答:一般情况下transaction的时间只能在最后结果中得到,如何在脚本得到这个时间呢,下边的代码可以帮助你:
public transactions[];
function start_my_transaction(in transaction_name)
{
transactions[transaction_name] = get_time();
tl_step("Start transaction: \"" & transaction_name & "\"",PASS,"Timestamp: " & transactions[transaction_name]);
return (transactions[transaction_name]);
}
function end_my_transaction(in transaction_name)
{
auto end_time = get_time();
auto rc;
if(transactions[transaction_name] == "")
{
tl_step("End transaction: \"" & transaction_name & "\"",FAIL,"Transaction was never started.");
rc = -1;
}
else
tl_step("End transaction: \"" & transaction_name & "\"",PASS,"Elapsed Time: " & (rc = end_time - transactions[transaction_name]));
delete transactions[transaction_name];
return rc;
}start_my_transaction("my_transaction");
wait(2);
rc = end_my_transaction("my_transaction");
pause("Elapsed time = " & rc);
qtp tips 整理(以前整理)
2008-7-07
1.我下载了一个新的试用版本,但是不能使用
你的机器上是否安装了老的版本的QTP?如果安装了老的版本也会有问题的。你可以把QTP安装在没有安装QTP的机器上。
2.如何在QTP中使用API?
'声明FindWindow方法
Extern.Declare micHwnd, "FindWindow", "user32.dll", "FindWindowA", micString, micString
'Declare SetWindowText method
Extern.Declare micLong, "SetWindowText", "user32.dll", "SetWindowTextA", micHwnd, micString'获得记事本窗体的Handle
hwnd = Extern.FindWindow("Notepad", vbNullString)
if hwnd = 0 then
MsgBox "Notepad window not found"
end if
'改变记事本窗体的标题
res = Extern.SetWindowText(hwnd, "PCL")3.动态打开IE
创建StartUrl 环境变量
StartURL = Environment("StartUrl")
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = true
IE.Navigate StartURL4.如果我随机调用不同的函数如何实现
x = some random number
select case x
case 1call function1
case 2
call function2
case
else'error handlingend
end select5.通过命令行启动应用程序
Set ōShell = CreateObject ("Wscrīpt.shell")
oShell.run "cmd /K CD C:\Winnt\system32 & calc.exe"
Wait(1)
Set ōShell = Nothing6.如何添加验证点
步骤1. Add object to the object repository
步骤2. use the GETROproperty()
步骤3. retrive the value of one property of an object
步骤4. compare manually7.如何禁止运行结束之后显示测试结果?
禁止脚本运行结束之后显示测试结果
1. Go to Tools -> Options.
2. Select the Run tab.
3. Clear the "View results when run session ends" checkbox.
4. Click <OK>.
激活运行结束之后显示测试结果
1. Go to Tools -> Options.
2. Select the Run tab.
3. Select the "View results when run session ends" checkbox.
4. Click <OK>.8.QuickTestPro中是否可以编写调试vb代码?
不可以在QTP的Expert view中写入VB代码,但是你可以写vbs代码。vbs代码的语法和vb很类似,很多的vb函数可以在vbs中调用,但这不代表qtp中可以写vb的代码。
9.怎样通过GetWindowThreadProcessId从window的句柄得到线程的ID。
代码
MyVarPtr = 0
extern.Declare micLong,"GetWindowThreadProcessId","user32.dll","GetWindowThreadProcessId", micLong , micLong+micByRef
MyVarPtr = 0
pid = extern.GetWindowThreadProcessId (hWnd, MyVarPtr)10.如何进行文件对比?
Set fso = CreateObject("scrīpting.FileSystemObject")
Set file1 = fso.OpenTextFile("C:\file1.txt", 1)
Set file2 = fso.OpenTextFile("C:\file2.txt", 1)if file1.readall=file2.readall then
msgbox "Files are equal"
else
msgbox "Files are not equal"
end if11.如何对比两个xml文件?
Set doc = XMLUtil.CreateXML()
doc.LoadFile "c:\example.xml"
Set doc1 = xmlutil.CreateXML()
doc1.Load doc.ToString
Set doc2 = doc.Clone()
res = doc1.Compare(doc2,resultDoc,micXMLValues+micXMLCDataSections)
if res = 1 then
msgbox "Documents match :-)"
else
msgbox "Documents do not match :-("
end if12.如何使用Excel对象处理数据?
Dim xl
打开excel文件
Function OpenExcelFile(strFilePath)
Set xl = CreateObject("Excel.Application")
xl.Workbooks.Open strFilePath
End Function
获得指定单元格数据
Function GetCellData(strSheet,rwIndex,colIndex)
GetCellData = xl.WorkSheets(strSheet).Cells(rwIndex,colIndex)
End Function
填充单元格数据
Function PutCellData(strSheet,rwIndex,colIndex,varData)
xl.WorkSheets(strSheet).Cells(rwIndex,colIndex) = varData
End Function
保存并推出
Function SaveAndQuit()
xl.Activeworkbook.save
xl.Quit
Set xl = nothing
End Function
13.QuickTestPro版本多少
QTP Major releases
5.6 (branded Astra QuickTest I believe)
6.0
6.5
8.0
8.2
9.014.如何更新classpath?
Set Sh = CreateObject("Wscrīpt.Shell")key = "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment\CLASSPATH"
Sh.RegWrite key , Sh.RegRead(key) & ";C:\Oracle\Ora92\jdbc\lib\classes12.zip"
15.回放的过程中提示"Unable to launch the browser. The specified browser is not installed"
Certain installation combinations of IE 5.x or upgrades to IE 6.x and QuickTest Professional may result in the inability of QTP to launch IE and result in the error message, "Unable to launch the browser. The specified browser is not installed." A workaround is to make a copy of the "IEXPLORE.EXE" loader stub found in "<drive>:\Program Files\Internet Explorer\..." and place it in the "<drive>:\WINNT" subdirectory. In addition, the following registry key and string values must be added (if absent) to maintain backward compatibility:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\IEXPLORE.EXE]
"Path"="D:\\Program Files\\Internet Explorer\\"
@="D:\\Program Files\\Internet Explorer\\IEXPLORE.EXE"如何用Rational进行压力测试-Test Manager篇
2008-7-07
LoadRunner 代码样例
2008-7-05
输出信息到外部文件?
#include "as_web.h"
Action()
{
long stream;
char kmp1[6];lr_vuser_status_message("Iteration: %s", lr_eval_string("{it_number}"));
if( (stream = fopen( "D:\\LTProjects\\Log\\order1.txt", "a" )) == NULL ){
return(-1);
}lr_output_message("Iteration Number:""%s",lr_eval_string("{it_number}"));
strcpy (kmp1,lr_eval_string("{it_number}"));
fprintf(stream,"Iteration number:%s",kmp1);
fCLose(stream);
return 0;}
ip欺骗的时候得到主机机器名字?
#include "as_web.h"
Action()
{char *my_ip;
char *my_host;my_ip = lr_get_vuser_ip();
my_host = lr_get_host_name( );
web_url("yahoo.com",
"URL=http://yahoo.com/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);lr_output_message("The IP address is %s", my_ip);
lr_output_message("Host IP address is %s", my_host);
return 0;
}
