发布新日志

  • selenium应用web自动化

    2015-09-18 13:56:58

    1、Java的MyEclipse搭建的框架
    2、加载selenium的jar文件
    3、java形成js页面,可以点击连接测试
    4、java调用selenium,可以模拟鼠标或键盘操作
    5、java程序记录最后的测试结果并允许导出
  • 电力主站软件,前置机性能测试

    2015-09-18 13:55:17

    1、Python脚本模拟终端
       socket连接,发送登录及心跳消息
    2、脚本批量发送数据帧,检测前置机状态
  • 生成awr报告

    2012-09-29 17:28:07

    1、如果要生成间隔时间较短的AWR报告。

    exec dbms_workload_repository.create_snapshot();

    2、以oracle用户/密码登录

    sqlplus / as sysdba

    3、执行快照

    Execute dbms_workload_repository.create_snapshot();

    4、这时可以启动LR

    5、执行oracle自带的awrrpt脚本

    @/opt/oracle/product/11g/db/rdbms/admin/awrrpt.sql

    6、打出HTML,直接回车

    7、报告生成在当前目录下面

  • HTTP接口的性能测试(java进程+oracle)

    2012-09-29 16:42:58

    一:LR8.0录制脚本(非录制,自己选择WEB(HTTP/HTML)协议)
       一个接口一个action,定义一个整体的事务。
    1、运用web_custom_request方法
    2、选择目标场景
    3、Edit Scenaro Goal...
       输入需要达到的“目标点击数”比如1000,1100
       虚拟用户数设定最小的10
    4、


    二:性能监控
    TPS 、响应时间,CPU资源占用,PV数、SQL数、PV:SQL


  • windows上面搭建hudson服务器

    2012-09-21 14:56:49

    【工具】
    1、安装jdk
    2、安装ant
    3、安装apache-tomcat-6.0.29.tar.gz(直接解压)
    4、安装hudson-2.2.0.war(解压到tomcat的webapps目录)
    5、需要下载ant执行svn操作的jar包
       ganymed.jar、svnant.jar、svnClientAdapter.jar、svnjavahl.jar、svnkit.jar、JAVAHL-LICENSE、SVNCLIENTADAPTER-LICENSE(后面两个不知道啥用)

    【ant脚本】
    最重要的是ant脚本
    CI-build.xml
    另外设定了一个配置文件
    build.properties

    【最终实现】
    可以实现代码从SVN上面自动下载,记录更新的日志信息。
    自动打包、自动部署到linux环境上去。
    build_properties文件定义为
    ============================================================
    ##########################hudson系统配置####################################
    #hudson家目录
    hudson_home=C:/Documents and Settings/Administrator
    #部分插件存放目录
    plug.lib.dir=${hudson_home}/lib
    checkstyle.home=${plug.lib.dir}/checkstyle-5.4
    findbugs.home=${plug.lib.dir}/findbugs-1.3.9
    pmd.home=${plug.lib.dir}/pmd-4.2.5
    #cpd代码重复统计minimum最小值
    minimumTokenCount=20
    #sonar插件配置
    #sonar.host.ip=192.168.8.100
    sonar.host.ip=192.168.8.188
    sonar.port=9000
    #sonar.jdbc.url=jdbc:mysql://192.168.8.100:7706/sonar?characterEncoding=UTF8&useUnicode=true
    sonar.jdbc.url=jdbc:oracle:thin:@192.168.8.188:1521:oracle
    #sonar.jdbc.driverClassName=com.mysql.jdbc.Driver
    sonar.jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
    sonar.jdbc.username=sonar
    sonar.jdbc.password=sonar

    antlib=/home/hudson/lib/antlib


    ##########################工程配置####################################
    #工程名
    appname=smconvert
    warname=${appname}.war
    zipname=${appname}.zip

    #工程webRoot目录名
    webRoot=WebRoot

    #构建后生成包存放路径
    filepath=${hudson_home}/work/main/${appname}

    #hudson工程构建路径(勿改)
    job.home=${hudson_home}/.hudson/jobs

    Count=I,II,III,IV

    #南京ftp发送路径
    NJ-I-Ftp.dir=/home/media/apache-tomcat/webapps
    #南京部署环境的IP地址
    NJ-I-Telnet.ip=192.168.8.107
    #南京部署环境的用户名
    NJ-I-Telnet.user=media
    #南京部署环境的密码
    NJ-I-Telnet.pwd=media

    #南京ftp发送路径
    NJ-II-Ftp.dir=/home/media/apache-tomcat/webapps
    #南京部署环境的IP地址
    NJ-II-Telnet.ip=192.168.8.190
    #南京部署环境的用户名
    NJ-II-Telnet.user=media
    #南京部署环境的密码
    NJ-II-Telnet.pwd=media

    #南京ftp发送路径
    NJ-III-Ftp.dir=/home/smconvert/apache-tomcat/webapps
    #南京部署环境的IP地址
    NJ-III-Telnet.ip=192.168.8.13
    #南京部署环境的用户名
    NJ-III-Telnet.user=smconvert
    #南京部署环境的密码
    NJ-III-Telnet.pwd=smconvert

    #南京ftp发送路径
    NJ-IV-Ftp.dir=/home/server/apache-tomcat/webapps
    #南京部署环境的IP地址
    NJ-IV-Telnet.ip=192.168.8.13
    #南京部署环境的用户名
    NJ-IV-Telnet.user=server
    #南京部署环境的密码
    NJ-IV-Telnet.pwd=server

    #南京ftp发送路径
    NJ-AUTO-Ftp.dir=/home/serverauto/apache-tomcat/webapps
    #南京部署环境的IP地址
    NJ-AUTO-Telnet.ip=192.168.8.168
    #南京部署环境的用户名
    NJ-AUTO-Telnet.user=serverauto
    #南京部署环境的密码
    NJ-AUTO-Telnet.pwd=serverauto

    #杭州测试ftp发送路径
    HZ-Ftp.dir=/home/server/apache-tomcat/webapps
    #杭州部署环境的IP地址
    HZ-Telnet.ip=10.166.112.94
    #杭州部署环境的用户名
    HZ-Telnet.user=server
    #杭州部署环境的密码
    HZ-Telnet.pwd=server


    #SVN提交人用户名
    svn.user=admin
    #提交人密码
    svn.passwd=admin
    #提交日志
    msg.commit=commit new RouterServer.jar
    logs.commit.msg=daily commit build logs
    ==========================================================
  • windows环境上搭建SVN服务器

    2012-09-20 16:53:19

    花了两天时间研究了下windows上面搭建svn服务器

    【工具】
    1、apache工具:
    http://httpd.apache.org/download.cgi
    网站中的httpd-2.0.64-win32-x86-no_ssl.msi文件
    2、svn服务器安装程序
    svnserver-v1.2.rar

    【安装后配置】
    1、修改apache的启动端口
    修改C:\Program Files\Apache Group\Apache2\conf目录中httpd.conf文件,修改为8080
    ===========================
    #Listen 12.34.56.78:80
    Listen 8080
    ===========================

    2、添加windows的环境变量
    系统变量Path中增加
    ;C:\Program Files\Apache Group\Apache2\bin

    3、复制svn的so文件到apache的modules目录中去
    D:\svn\backupsys\svn\bin目录中的 mod_authz_svn.so和mod_dav_svn.so
    拷贝到C:\Program Files\Apache Group\Apache2\modules目录中取

    4、建议把SVN bin目录中的dll文件全部拷贝到apache的bin目录中去,减少中间可能存在的错误
    D:\svn\backupsys\svn\bin中的所有dll文件拷贝到C:\Program Files\Apache Group\Apache2\bin去

    5、配置Apache的httpd.conf文件

    1)注销
    LoadModule dav_module modules/mod_dav.so
    LoadModule dav_fs_module modules/mod_dav_fs.so
    前面的#
    2)添加
    LoadModule dav_svn_module modules/mod_dav_svn.so
    LoadModule authz_svn_module modules/mod_authz_svn.so
    (个人认为是用来svn鉴权的)
    3)在dos窗口,通过命令创建svn目录
    svnadmin create D:\svn\backupsys\svnroot\doc
    4) 在dos窗口,通过命令创建用户密码文件
    htpasswd -c passwd.conf文件
    ( 放在D:\svn\backupsys\svnroot\doc\conf目录中 )   
    5) 在dos窗口,通过命令建立用户
    htpasswd -m passwd.conf admin admin
    (admin/admin) 

    6、手动新建访问的策略文件accesspolicy.conf(放在D:\svn\backupsys\svnroot\doc\conf目录中)
    ========================================
    [groups]
    admin123 = admin,lianzhi

    [iread:/]
    @admin123 = rw 
    ========================================
    a)新建组,组名随便起,这个里面定义新建的用户
    b)目录权限的设置
      [iread:/]代表下面的 <Location /iread> 中的 SVNPath 
    c)子目录可以设定可以为下面示例
    ==================================================
    [iRead_src:/branches/V100R001C03LCMR010/CMU_Main]
    @admin = rw
    @eReading_VM = rw
    * =

    [iRead_doc:/]
    @admin = rw
    @eReading_VM = rw
    * =
    ==================================================

    7、再次配置Apache的httpd.conf 
    =======================================
    <Location /iread> 
    # 设置url访问svn目录 
    DAV svn
    SVNPath "D:\svn\backupsys\svnroot/doc" 

    # our access control policy
    AuthzSVNAccessFile "D:\svn\backupsys\svnroot\doc\conf\accesspolicy.conf"

    # try anonymous access first, resort to real
    # authentication if necessary.
    Satisfy Any 
    Require valid-user 

    # 配置验证用户方式 
    AuthType Basic 
    AuthName "Subversion repositories" 
    AuthUserFile "D:\svn\backupsys\svnroot\doc\conf\passwd.conf" 
    require valid-user
    </Location>
    ======================================= 
    AuthzSVNAccessFile 指向的是 authz 的策略文件,详细的权限控制可以在这个策略文件中指定。访问文件 accesspolicy.conf 的语法与svnserve.conf和 Apache 的配置文件非常相似,以(#)开头的行会被忽略;在它的简单形式里,每一小节命名一个版本库和一个里面的路径;认证用户名是在每个小节中的选项名;每个选项的值描述了用户访问版本库的级别:r(只读)或者rw(读写),如果用户没有提到或者值留空,访问是不允许的; * 表示所有用户,用它控制匿名用户的访问权限;@符号区分组和用户。 


  • [论坛] QTP--VBS批量处理图片文件

    2009-12-08 17:59:57

    用数码相机拍了一些照片,放到手机上发现由于太大手机无法识别。
    以前看过大虾用aspJpeg组件操作过图片,就想到通过同样的方法VBS批量缩小下图片!

    ==============================================================================================
    '图片的高度和宽度修改成原来的1/10
    Function update_picture(filename,newfilename)

            Dim Jpeg

            Set Jpeg=CreateObject("Persits.Jpeg")
            Jpeg.Open filename
            Jpeg.Width =Jpeg.OriginalWidth/10
            Jpeg.Height =Jpeg.OriginalHeight /10

            Jpeg.Save newfilename
            Jpeg.Close
            Set Jpeg=Nothing
           
    End Function
    '

    Dim fs,fo,x
    Dim str1,str2,filename,newfilename

    str1 = "G:\1\"
    str2 = "G:\2\"
    set fs=CreateObject("Scripting.FileSystemObject")
    set fo=fs.GetFolder(str1)

    '遍历文件夹str1中的所有文件
    For each x in fo.files
       filename =str1 & x.Name
       newfilename = str2 & x.Name
       call update_picture(filename,newfilename)
    next
    set fo=nothing
    set fs=nothing
    ==============================================================================================
  • QTP--低级录制

    2009-06-23 17:27:30

    转:

    Analog recording(模拟录制 )

    模拟录制用于您要在其中录制鼠标的实际移动的应用程序。这些可能包括绘制鼠标签名或者使用通过拖动鼠标创建图像的绘图应用程序。您可以用模拟录制模式相对于屏幕或特定窗口进行录制。
       
    相对于指定窗口录制 - 如果对其执行操作的对象位于一个窗口内部而且该窗口在模拟录制会话期间没有移动。这可以确保在运行会话过程中,QuickTest 将准确地标识在其上执行模拟步骤的窗口位置,即使当您运行模拟步骤时窗口位于不同的位置。QuickTest 不会录制在指定窗口外部执行的任何单击或鼠标移动。当使用这种模式时,QuickTest 不会捕获任何 Active Screen 图像。
       
    相对于屏幕录制 - 如果在其上录制模拟步骤的窗口在录制过程中移动,或者您所执行的操作是针对位于多个窗口内的对象。这可能包括将对象从一个窗口拖放到另一个窗口中。当使用这种模式时,QuickTest 将捕获您在其中进行录制的窗口的最终状态的 Active Screen 图像。
       
    使用模拟录制录制的步骤被保存在单独的数据文件中。该文件与在其中录制模拟步骤的操作或组件一起存储。
       
    当以模拟录制模式进行录制时,QuickTest 将向测试或组件添加一个调用所录制的模拟文件的“RunAnalog”语句。相应的 Active Screen 将显示在模拟录制会话期间执行的最后一个模拟步骤的结果。
    low-level recording(
    低级录制)
       
    使用低级录制在不受 QuickTest 支持的环境或对象上进行录制。当您需要在应用程序屏幕上录制操作的精确位置时,请使用低级录制。当以正常模式录制时,QuickTest 将在对象上执行步骤,即使该对象已经移动到屏幕上的新位置。如果对象的位置对于您的测试或组件非常重要,请切换到低级录制以使 QuickTest 能够按照屏幕上的 x 坐标和 y 坐标录制该对象。这样,该步骤只有在对象位于正确的位置时才能通过。

       
    当使用低级录制时,QuickTest 将所有父类对象录制为 Windows 测试对象,将所有其他对象录制为 WinObject 测试对象。它们在 Active Screen 中显示为标准 Windows 对象。低级录制对每个测试对象支持下列方法:
    WinObject 测试对象 - ClickDblClickDragDropType
    Window
    测试对象 - ClickDblClickDragDropTypeActivateMinimizeRestore
    Maximize
       
    低级录制模式录制的每个步骤都显示在关键字视图和专家视图中。(模拟录制仅录制关键字视图中那个调用外部模拟数据文件的步骤。)

    模拟录制和低级录制的规则
       
    模拟录制和低级录制产生的脚本无法插入检查点,而且应用程序界面稍有变动则脚本无法正常运行,所以非万不得已(QTP正常支持的B/S结构以外的情况)应该避免这两种录制方式。有时候因为无法正常录制或者无法正常运行,初学者就可能考虑使用这两种方式录制,事实上,只要是C/S(其实部分结构简单一点的B/S)结构,基本上都能够避免所遇到的这些问题,具体方法,参见第二部分。

    当选择模拟录制低级录制时,请考虑下列规则:

    只有当 QuickTest 的正常录制模式不能准确录制您的操作时,才应使用模拟录制低级录制模拟录制低级录制要求比正常录制模式更多的磁盘空间。对于特定的步骤,您可以在录制会话期间切换到模拟录制低级录制。在以模拟录制低级录制模式录制了必要的步骤之后,就可以返回到正常录制模式来完成录制会话的其余部分。

  • 安装卸载测试(转)

    2009-06-05 14:34:30

    安装测试

    一:基本目标

          1.安装程序能正确运行;

          2.程序安装正确;

          3.程序安装后能正确运行;

          4.完善性安装后程序能正确运行;

          二:应考虑的一些方面

          0、安装手册给的所有步骤得到验证;

          1、安装过程中所有缺省选项得到验证;

          2、安装过程中典型选项得到验证;

          3、测试各种不同的安装组合,并验证各种不同组合的正确性(包括参数组合,控件执行顺序组合,产品安装组件组合,产品组件安装顺序组合(如b/s)等);

          4、安装过程中异常配置或状态(非法和不合理配置)情况进行了测试(如:断电;数据库终止,网络终止等);

          5、安装后是否能产生正确的目录结构和文件,文件属性正确;

          6、安装后动态库是否正确;

          6、安装后软件能否正确运行;

          7、安装后没有生成多余的目录结构,文件,注册表信息,快捷方式等;

          9、安装测试应该在所有的运行环境上进行验证(手册上指定如:操作系统,数据库,硬件环境,网络环境等);

          10、自动安装还是手工配置安装;

          11、至少要在一台笔记本上进行安装/卸载测试,因为有很多产品在笔记本中会出现问题,尤其是系统级的产品;

          13、安装,该系统是否对其他的应用程序造成不正常影响(如操作系统,应用软件等);

          14、众多web服务,会不会有冲突等;

          15、还应考虑如下几种情况:

          a. 是否可以识别大部分的硬件;对串口硬盘的支持;常见的显卡/声卡的支持;

          b .确认打包程序的特性,比如installshield,不同的打包发布程序所支持的系统都是不一样的,一个软件应该只能在确认的适应的系统上安装;

          c.空间不足的情况,安装过程中如果像安装盘放入大量文件;

          d.卸载过程不得删除系统应该保留的用户数据;

    卸载测试

    应注意的验证点:

    1.是否删除了全部的文件:安装目录里的文件及文件夹(如:程序安装在几处的),非安装目录(向系统其它地方添加的文件及文件夹)。这些文件应包括(exe,dll,配置文件等)。

    2.是否同步去除了快捷方式-(桌面,菜单,任务栏,系统栏,控件面板,系统服务列表等);

    3.复原方面-卸载后,系统能否恢复到软件安装前的状态(包含目录结构、动态库,注册表,系统配置文件,驱动程序,关联情况等)(专门的测试工具regsnap)

    4. 卸载方式--程序自带卸载程序/系统的控件面板卸载/其它自动卸载工具(如:优化大师);

    5. 卸载状态--程序在运行/暂停/终止等状态时的卸载;

    6. 非正常卸载情况-卸载软件过程中,取消卸载进程,然后,观察软件能否继续正常使用;

    7. 冲击卸载--在卸载的过程中,中断电源,然后,启动计算机后,重新卸载软件,如果软件无法卸载,则重新安装软件,安装之后再重新卸载;

    8. 卸载环境--不同的(操作系统,硬件环境,网络环境等)下进行卸载;

    9. 卸载后,该系统是否对其他的应用程序造成不正常影响(如操作系统,应用软件等);

  • [论坛] QTP--方法的重载

    2009-05-31 19:39:14

    下面是我的代码:

    ==============================================================
    SystemUtil.CloseProcessByName("iexplore.exe")
    SystemUtil.Run "iexplore.exe","www.baidu.com",,,3

    Set Bro = description.Create()
    Bro("title").value = ".*"

    Function  Myclose(obj,x)
            MyClose=obj.close(x)
            msgbox"Myclose"
    End Function

    RegisterUserFunc "Browser","Close","Myclose"
    Browser(Bro).Close
    UnRegisterUserFunc "Browser","Close"
    ==============================================================

    QTP应该支持方法的重写,但是Browser的close方法为什么不能重写?

    [ 本帖最后由 fei.ge 于 2009-5-19 17:07 编辑 ]
  • [论坛] QTP--debug

    2009-05-21 14:05:58

    序:QTP脚本写完或部分写完后,我们需要对脚本进行调试,要调试那么我们就需要QTP的debug功能。

    1、        安装完成QTP后有可能我们的QTP没有debug功能,那么我们该怎么办呢?
    <<<原因出在没有安装QTP的debug模块,所以需要我们安装的dbg10chs.exe。

    2、        在调试脚本的时候,我们需要中断脚本的执行,所以就需要设置断点
    a)        设置一个断点,点击debug—insert/remove Breakpoint (快捷键是:F9)
    就可以在这段脚本前设置一个断点了。当脚本运行到这里时会自动停止,并接受你继续运行的指令。
    b)        注释/取消注释  一个断点,点击debug---Enable/disable Breakpoint (快捷键是:Ctr+F9)
    我们可以通过这种方式把断点注释掉或恢复。
    c)        清除断点,点击debug---clear all Breakpoints(快捷键是:Ctr+Shift+F9)
    我们通过这种方式把断点都清空。
    d)        注释/取消注释  全部断点,debug---Enable/disable all Breakpoints

    3、        设置完断点,我们就需要执行,执行方式分以下几种
    a)        直接点击Run(快捷键是:F5),这种执行会一直执行下去,在遇到断点的地方才会停止
    b)        单步运行debug---step into(快捷键是: F11),这种执行每按一下F11脚本就执行一步
    c)        单步运行过程中,遇到函数,如果我们一直单步运行,那么就会进入到运行到函数内部去,但是如果我们想跳过函数呢?<<<这就需要step  over
    d)        单步运行过程中,如果我们已经进入函数单步运行了,这时我们又希望跳出函数,怎么办呢?<<<这就需要step  out

    4、        我们需要观察脚本在运行过程某些变量的动态变化值,该怎么办呢?
    <<<我们需要debug---add  watch,在name列添加你需要的观察的变量,而value列显示的就是此变量动态变化的值。


    未命名.JPG
            


    ========================================================================================
    当然我们在做实际WEB项目的过程中,调试脚本的时候,我们还常利用下面的方法来调试:
    1、        通过msgbox ;print,来输出需要观察的变量的值
    2、        如果遇到不知道对象存不存在的时候,该怎么办呢?
    <<<我们常用msgbox object.exist来观察,如果存在的话,那么会弹出true,不存在是false。
    3、        问题同上
    <<<我们也会用object.highlight高亮的方法来判断对象存不存在。
  • QTP--SQLserver(转)

    2009-05-21 14:04:45

    QTP中MS SQL SERVER数据库连接的一种简单方法

    在QTP中,我们可以通过复制数据库数据到databable中,实现数据的参数化.但这样的做法往往比较烦琐.换一种思路,在Expert View中直接添加连接数据库代码如何?接下来,我们就来完成这个工作.

      对于MS sql server数据库的连接,我们首先要知道所用的MS sql server数据库的连接字符串.这里告诉大家一个轻松获取连接字符串的方法: 新建.txt文件,修改文件名(包括后缀)为XX.udl,双击打开XX.udl文件,在"Provider"选项中选择"Microsoft OLE DB Provider for SQL Server",在"Connection"中,选择相应的server name和database,有用户名和密码的输入用户名和密码,点击右下方的"Test Connection"验证数据库是否连通.点击"OK".把XX.udl文件用记事本方式打开,以"Provider"开始的部分就是你的数据库连接字符串.

      知道了连接字符串,接下来我们来完善代码部分.

      Dim Cnn //定义变量

      Dim Rst //定义变量

      Dim strCnn //定义变量

      strCnn="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=test;Data Source=SIMONVM" //将获得的连接字符串赋值到

      strCnn Set Cnn=CreateObject("ADODB.Connection") //生成数据库连接对象

      Cnn.Open strCnn //打开数据库 Set Rst=CreateObject("ADODB.Recordset") //生成记录集对象  

      Rst.Open "select OrgName from Organization",Cnn //书写SQL语句

      Rst.MoveFirst //将焦点定在第一行

      还可以通过Rst.Field( )函数取出对应行的值(参看QTP Tutorial Help).

      对于以上代码,我只是完成了MS sql server数据库的连接和执行命令部分.后续对表格的应用还未涉及.希望大家指点和补充.
  • QTP 同步点

    2009-05-18 10:22:47

        在用QTP的过程中,常常因为某个控件刷新时间过长,我们会人为的加上wait()方法.该方法虽然可以起到我们想要的作用(让QTP)等待我们所需要的控件出现再往下继续执行,但缺点是.时间比较困定.往往wait里的时间参数,是我们根据经验估计出来的,即使该控件在我规定的时间内已经程现出来,QTP还是会等到wait中的时间到达后,才往下继续执行,浪费了很多时间.这个时候就会想到用waitproperty 方法.waitproperty的语法格式如下:

    Browser("Welcome: Mercury Tours").Page("Flight Confirmation: Mercury").WebElement("Flight Confirmation #").WaitProperty"visible", true, 10000

    在规定的时间段(10秒)内,QTP会不停的检测WebElement的visible属性是否为true.如果在10秒内QTP检测到visible==true那么,将立即往下执行,在这种情况下就比我们用wait指定一个固定的时间段效率要高的多.需要注意的是:如果在规定的时间(10秒)内未能检测到所需结果,该语句将返回一个false,但并不影响程序继续执行.

  • 庆祝51Testing软件测试网成立五周年

    2009-04-28 16:18:02

    庆祝51Testing软件测试网成立五周年,拿勋章,嘿嘿。

    51Testing软件测试网:http://www.51testing.com

  • QTP培训总结

    2008-12-17 11:42:28

    1.启动

    SystemUtil.Run和InvokeApplication

    例子:

    SystemUtil.Run "D:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe"

    InvokeApplication "D:\Program Files\HP\QuickTest Professional\samples\flight\app\flight4a.exe"

    SystemUtil.Run "iexplore.exe","www.baidu.com",,,3

    InvokeApplication "C:\Program Files\Internet Explorer\IEXPLORE.EXE http://www.google.cn/"

    2.设置环境参数,并读取

    1)手动设置:file-settings-environment,选择build in,添加参数和值,并可以导出为xml文件

    2)可以自己直接创建修改xml文件,格式如下:

    xml文件的格式为:

    ================================================

    <Environment>
     <Variable>
      <Name>UserID</Name>
      <Value>founder</Value>
     </Variable>
     <Variable>
      <Name>pwd</Name>
      <Value>112</Value>
     </Variable>
    </Environment>

    =================================================

    3)通过语句读xml文件,并设置为环境参数

    例子:

    Environment.LoadFromFile "G:\qtpscrīpt\peixun\test.xml"
    Dim tmp_ID,tmp_pwd
    tmp_ID= Environment.Value ("UserID")
    tmp_pwd= Environment.Value ("pwd")
    msgbox environment.ExternalFileName
    msgbox tmp_ID
    msgbox tmp_pwd

    4)优点:任何action可以调用。

    如:设置路径为环境参数,以后脚本转移了,直接修改xml里路径的值就可以了。(?待实践)

    3.导出QTP的EXCEL文件,读取默认格式的xls文件(有Global,Action1)

    例子:导出excel文件,读取文件,并读取具体字段

    Dim tmp_pwd
    Datatable.Export "G:\qtpscrīpt\peixun\test.xls"                                                
    Datatable.Import "G:\qtpscrīpt\peixun\test.xls"
    tmp_pwd = datatable.RawValue("Password","Action1")
    msgbox tmp_pwd

    4.读取自己定义的xls文件

    例子:读取自己定义的xls文件,取值

    自己定义的xls文件,取出,替换到ACTION1的值。
    Datatable.ImportSheet "G:\qtpscrīpt\peixun\test1.xls",1,"Action1"  
    '设置当前读取第几行     
    datatable.SetCurrentRow(2)   
    tmp_pwd=Datatable.RawValue("Password","Action1")                            
    msgbox tmp_pwd
    Dim tmp_user 
    tmp_user=datatable.RawValue("UserID","Action1")
    msgbox tmp_user

    5.显示当前执行excel的行数

    Dim tmp
    datatable.SetCurrentRow(2)
    datatable.SetPrevRow
    datatable.SetNextRow
    tmp=datatable.RawValue("row","Action1")
    msgbox tmp
    tmp=datatable.RawValue("row","Action1")
    msgbox tmp

    6.语句调用vbs函数

    ExecuteFile  "c:\my.vbs"
    (注:我的QTP9.5版本不行)

    7.for循环

    Dim i,j
    For i=1 to 10 step 5
     For j=1 to 10
      print"j."&j
     Next
    Next

    8.重写方法

    例子:

     Function MySet(obj,x)
       MySet=obj.set(x)
       msgbox"Myset"
     End Function

    RegisterUserFunc "WinEdit","Set","MySet"
    Dialog("Login").WinEdit("Agent Name:").Set "founder"
    UnRegisterUserFunc "WinEdit","Set"

    练习:代替click动作

    Function MyClick(obj,x)
      mySet=obj.click(x)
      msgbox"Myclick"
    End Function

    RegisterUserFunc "WinButton","Click","MyClick"
    Dialog("Login").WinButton("OK").Click
    UnRegisterUserFunc "WinButton","Click"

    9.输出值

    Dialog("Login").WinEdit("Agent Name:").Output CheckPoint("Agent Name:_4")
    Dim temp
    temp=datatable.RawValue("name","Action1")
    msgbox temp

    10.同步点

    Dim temp
    temp=Window("Flight Reservation").WinComboBox("Fly From:").Check( CheckPoint("Fly From:_2"))                  '?????????加+正则表达式??
    msgbox temp

    11.给action设置参数

    手动到Keyword View页面,对action右键-action properties-Parameters,添加参数

    msgbox parameter.Item ("userid")

    ps:调用Action的方法。。?

    12.描述性编程

    方法一

    sName="Login"
    Dialog("text:="&sName,"Class Name:=Dialog").WinEdit("attached text:=Agent Name:").Set parameter.Item ("userid")
    Dialog("text:=Login","Class Name:=Dialog").WinEdit("attached text:=Password:").SetSecure  parameter.Item("password")
    Dialog("Login").WinButton("OK").Click

    方法二

    set AgentName = Descrīption.Create()
    AgentName("attached text").Value = "Agent Name:"
    Set MyObj=Descrīption.Create()
    MyObj("text").Value="Login"
    MyObj("class name").value="Dialog"


    Dialog(MyObj).WinEdit(AgentName).Set parameter.Item ("userid")
    Dialog(MyObj).WinEdit("attached text:=Password:").SetSecure  parameter.Item("password")
    Dialog(MyObj).WinButton("text:=OK").Click

  • 如何成为最有价值的“测试精英”

    2008-10-20 16:00:31

    第一个方法:不仅要做好你该做的事情,还要尽量去做对公司有益的事情。升职和加薪

    第二个方法:“成功”跳槽。随时留心,随时积累工作心得,最好有一些真实客观的数据。(个人所发现的缺陷占到整个团队发现缺陷的比率是多少?个人发现的对公司最有价值的缺陷是什么?)你为上家公司所做的贡献是什么?

    第三个方法:想尽一切办法为公司的“客户”提供最好的服务。

    第四个方法:适时地停下来,总结自己,与更多的人分享,才能更快的提高自己!

    总结:首先要脚踏实地的认真高效做事,其次工作同时要不段地充电学习并找一个优秀、无私的“教练”是成功的关键,最后要适时地停一停,对以前的自己好好总结,才能为第二次腾飞做好充分的准备!

  • 翻页功能的测试用例

    2008-10-08 16:03:12

    转载:

    翻页功能我们常碰到的一般有以下几个功能:
    1、首页、上一页、下一页、尾页。
    2、总页数,当前页数
    3、指定跳转页
    4、指定每页显示条数
    当然,有一些是少于多少页,全部以数字的形式显示,多于多少页后,才出现下一页的控件。本文暂且用以上四点来做为通用的用例来设计吧。

    对于1翻页链接或按钮的测试,主要要检查的测试点有:
    1、有无数据时控件的显示情况
    2、在首页时,首页和上一页是否能点击
    3、在尾页时,下一页和尾页是否能点击
    4、在非首页和非尾页时,四个按钮功能是否正确
    5、翻页后,列表中的记录是否仍按照指定的排序列进行了排序
    对于2总页数,当前页数,主要要检查的测试点有:
    1、总页数是否等于总的记录数/指定每页条数
    2、当前页数是否正确
    对于3指定跳转页,主要要检查的测试点有:
    1、是否能正常跳转到指定的页数
    2、输入的跳转页数非法时的处理
    对于4指定每页显示条数,主要要检查的测试点有:
    1、是否有默认的指定每页显示条数
    2、指定每页的条数后,列表显示的记录数,页数是否正确
    3、输入的每页条数非法时的处理

    分析完上面的测试点,应该可以进行用例的设计了。
    step 1: 列表无记录 
    expect: 1、四个翻页控件变灰不可点击
            2、列表有相应的无数据信息提示
            3、不可指定页数
            4、不可指定跳转页
            5、总页数显示为0
            6、当前页数显示为0

    step 2: 列表的记录数<=指定的每页显示条数
    expect: 1、四个翻页控件变灰不可点击
            2、总页数显示为1
            3、当前页数显示为1

    step 3: 列表的记录数>指定的每页显示条数
    expect: 1、默认在首页,当前页数为1              
            2、列表的数据按照指定的排序列正确排序
            3、记录数与数据库相符
            4、总页数=记录数/指定的每页显示条数

    step 4: 列表的记录数>指定的每页显示条数,在首页
    expect: 1、首页变灰不可点击
            2、上一页变灰不可点击
            3、下一页可点击,从(每页指定条数+1)条记录开始显示,当前页数+1
            4、尾页可点击,显示最后页的记录

    step 5: 列表的记录数>指定的每页显示条数,在中间的某页
    expect: 1、首页可点击,显示1到每页指定条数的记录
            2、上一页可点击,显示上一页的记录
            3、下一页可点击,从后一页的记录
            4、尾页可点击,显示最后页的记录
            5、列表的数据按照指定的排序列正确排序
            6、当前页数为所在页

    step 6:列表的记录数>指定的每页显示条数,在尾页
    expect: 1、首页可点击,显示1到每页指定条数的记录
            2、上一页可点击,显示上一页的记录
            3、下一页变灰不可点击
            4、尾页变灰不可点击
            5、列表的数据按照指定的排序列正确排序
            6、当前页数为最后一页的页数

    step 7:输入每页显示条数为正整数
    expect: 1、每页显示条数更新成指定的条数
            2、超过指定的条数的记录分页显示
            3、总页数更新成列表的记录数/每页显示条数

    step 8:输入每页显示条数为0
    expect: 1、提示“每页显示条数必须为大于1的整数”
            2、提示后每页显示条数恢复为上次生效的条数

    step 9:输入每页显示条数为负数
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 10:输入每页显示条数长度超过数据库指定的长度<<<maxlen>>>
    expect: 1、提示每页显示条数不能超过<<<maxlen>>>位
            2、提示后每页显示条数恢复为上次生效的条数

    step 11:输入每页显示条数为字符串,如中文翻页数
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 12:输入每页显示条数为特殊字符,如%
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 13:输入每页显示条数为html字符串,如<br>
    expect: 1、提示每页显示条数必须为大于1的整数
            2、提示后每页显示条数恢复为上次生效的条数

    step 14:输入跳转的页数为存在的页数
    expect: 1、正确跳转到指定的页数

    step 15:输入跳转的页数不存在或非法值
    expect: 1、跳转的页数值置为1,显示第一页的数据

    以上的用例是将总页数,当前页数都揉进了翻页控件的测试用例中了。

  • 测试方法的选择

    2008-08-20 14:45:08

    一个好的测试方法能够给测试带来事半功倍的效果。在实际工作中可以参考一下测试方法:

    1.在任何情况下都必须使用边界值分析方法,经验表明,用这种方法设计的测试用例发现错误的能力最强。

    2.用等价类方法补充一些测试用例。

    3.用错误猜测方法再追加一些测试用例。

    4.如果程序的功能说明书中含有输入条件的组合情况,应在一开始就使用因果图法。

    5.如果程序的某功能适合自动测试,则可采用自动测试方法和随即测试方法进行测试。

    6.获得需求说明书的软件可以采用大纲的方法。

    7.对于流程类软件可以采用状态图的方法。

Open Toolbar