发布新日志

  • 数据库客户端工具

    2010-07-13 16:51:33

    oracle---PLsql

    DB2----DbVisualizer-6.0.7

  • QTP里设置从datable的第二行开始执行

    2010-06-03 18:30:14

    再datable里导入excel
    然后在file-settings-run下进行设置run * to *(注意不要再在Keyword VIew右键设置action为“Run on all rows”)
  • 先安装oracle客户端和后安装完整版的plsql问题解决

    2009-12-30 15:51:26

    之前安装过oracleclient的客户端,因为仅仅想用plsql,直接装个客户端就行,然后配置一下环境变量:

    系统变量

    ORACLE_HOME= D:\oracleclient

    Path  =D:\oracleclient\lib\win32;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Program Files\TortoiseSVN\bin;C:\Program Files\SecureCRT\;C:\Program Files\Common Files\Thunder Network\KanKan\Codecs

     

    然后再到plsqltools/Preferences下去选择一下:

     

    然后再到oracle目录的admin目录下找到tnsnames.ora,去配置一下:

    dev-apay =

      (DESCRIPTION =

        (ADDRESS_LIST =

          (ADDRESS = (PROTOCOL = TCP)(HOST = 10.2.4.94)(PORT = 1521))

        )

        (CONNECT_DATA =

          (SERVICE_NAME = pay)

        )

      )

     

     

    而当你之前已经配置好oracleclient之后,此时安装了oracle 10g标准版,那么需要怎么配置,才能让两者不冲突,并且让plsql还是能访问数据库呢?方法如下:

    1.  删除ORACLE_HOME环境变量

    2.  Path环境变量的oracleclient的部分去除

    3.  oracle的装目录下面“D:\oracle\product\10.2.0\db_1\NETWORK\ADMIN”找到tnsnames.ora,配置好(也可以通过Net Configuration Assistant去配置

    4.  plsql下然后再到plsqltools/Preferences下去从新选择一下:

    5.  关闭plsql,从新登录即可。

  • oralce 10g安装过程中解决问题--同样解决了LR的IP Wizard不可用问题

    2009-12-30 15:49:42

    今天在安装oracle 10g的标准版,但是安装过程中出现以下检测不通过:(该问题非常严重会直接导致oracle安装不成功)

    ---------------------------------------------------

    正在检查网络配置需求...

    检查完成。此次检查的总体结果为: 未执行 <<<<

    建议案: Oracle 支持在具有 DHCP 分配的 IP 地址的系统上进行安装。但在安装之前, 必须将 Microsoft LoopBack Adapter 配置为系统的主网络适配器。有关在配置有 DHCP 的系统上安装软件的详细信息, 请参阅 Installation Guide

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

    看到DHCP想到LRIP wizard无法使用提示信息里也有DHCP字样,而在网上搜索oracle的该安装问题的解决办法之后,发现同样也把LRip 诈骗功能无法使用的问题也解决了。具体方法如下:

     

      控制面板 -> 添加硬件,在向导中选择“是,已经连接了此硬件” -> “添加新的硬件设备” -> “安装我手动从列表中选择的硬件” -> “网络适配器” -> Microsoft Loopback Adapter”,添加完成后,到网络连接那里刷新,会发现新建了个“本地连接 2,用的就是这个假的“Microsoft Loopback Adapter”(实际上根本就没有连接这个硬件,只是欺骗一下 Oracle 而已)。把这个本地连接的IP设置一下(例如192.168.0.8),重启电脑,重新让Oracle检测一遍,顺利通过。

  • websphere总结

    2009-12-30 09:35:23

    ========
     如果把eclipse的项目转移成wasd项目
    ========
    1、J2EE视图
        新建-项目
        (左边)J2EE (右边)企业应用程序项目 next
        创建J2EE1.3企业应用程序项目
        项目名称:fszg    项目位置默认
        新建模块 - 仅选择web项目 fszgWeb 完成
        完成
    2、把 common-src src generated test 放到 fszgWeb\JavaSource
    把framework,pages,build.xml,index.html 放到 fszgWeb\WebContent
    再把lib目录下的所有文件都拷贝到 fszgWeb\WebContent\WEB-INF\lib下面
    3、设置项目属性中 JAVA构建路径
        在库中,把IBM自带的rt.jar文件去除掉,讲JDK的rt.jar文件拷贝到项目中,并添加到构建库
        在源中,点击文件夹按钮,把之前项目中的eclipse的项目源都添加进去的
    4、项目属性中 Web 上下文根 改成fszg (默认原来的是fszgWeb)
    5、在导出的过程中,会碰到,#文件错误,到class下面把他们都删除掉,继续导出就可以了;


    ============
    应用安装目录
    ============
    管理地址:
    http://190.168.0.161:9090/admin

    ·操作注意点:
    1、应用程序服务器 -> server1 -> web容器 -> HTTP传输 ->
    9080 -> 应用访问名
    9090 -> 控制台端口
    其余的两个端口是跳转用的

    2、刚才就是发布一个应用以后,要更新下web服务插件
    3、修改了hibernate.property等类似的文件,在 企业应用程序里面,重启下该服务

    4、ear包,导入,然后step by step default ,另外在捆绑到server1 n中,注意保存的时候,不要点任何东西,否则部署的项目一定有问题- 保存到主配置 - 保存
    然后更新 Web服务器插件 - 确定
    5、关机前记得 stopserver先把服务关掉;

    实施部门专业术语:
    数据源 (配置文件)
    重启应用
    重启服务

    启动服务指令:
    E:\IBM\WebSphere\AppServer\bin>stopserver server_n
    E:\IBM\WebSphere\AppServer\bin>startserver server_n

  • QTP连接oracle数据库的脚本

    2009-09-02 15:29:19

    07年底做过一个qtp的项目,脚本都忘记的差不多了,自己美来得及备份就被派出去了,还好有个同事将之前的代码做过总结,赶紧偷过来,哈哈
     
     
    DBOperation.vbs
    '-----------------------------------------------------------------
    'function:数据库连接
    'call method:在调用文件中先定义Res,Cmd
    'For example:Dim  Res,Cmd
    '             DBConnect()
    '-----------------------------------------------------------------
    Public Sub DBConnect()
          Dim StrCon
          Set Res = CreateObject("ADODB.Recordset")  
          Set Cmd = CreateObject("ADODB.Command")
          'Oracle
          StrCon ="DRIVER={Oracle in OraHome92};SERVER=test;UID=userid;PWD=password;DBQ=test;DBA=W;APA=T;EXC=F;XSM=Default;FEN=T;QTO=T;FRC=10;FDL=10;LOB=T;RST=T;GDE=F;FRL=Lo;BAM=IfAllSuccessful;MTS=F;MDI=Me;CSR=F;FWC=F;PFC=6000;TLO=O;"
          Cmd.activeconnection=StrCon
          Cmd.CommandType =1
    End Sub
    '-----------------------------------------------------------------
    'function:执行SQL语句
    'Input parameter: StrSql
    'For example:Dim sql
    '             sql="select * from admin_groups"
    '             ExecuteSql(StrSql)           
    '---------------------------------------------------------

    Public Sub  ExecuteSql(StrSql)
     Cmd.CommandText=StrSql
     Set  Res = Cmd.Execute()

    End Sub

    '---------------------------------------------------------
    'function:关闭数据库
    'For example:DBClose()
    '---------------------------------------------------------
    Public Sub DBClose()
     Set Res=nothing
     Set Cmd.activeconnection=nothing
     Set Cmd=nothing
    End Sub

    调用例子:

    ExecuteFile  "c:\DBOperation.vbs"

    Dim  Res,Cmd

    DBConnect()  '调用连接数据库函数

    sql ="select  count(*) from admin_groups"

    ExecuteSql(sql) '调用执行sql函数

      Do while not Res.eof

          Msgbox(Res(0))

          Res.MoveNext

      Loop

    DBClose()  '调用关闭数据库

  • 第一个ruby脚本--登陆功能

    2009-07-31 15:00:51

      用ruby进行自动化测试学习的第一步:
      目标:编写登陆功能的脚本,最简单的方式
      脚本:

      require 'watir'
     ie = Watir::IE.new                                   
     ie.goto('http://*****')
     ie.text_field(:name, 'username').set('邵菲')
     ie.text_field(:name, 'password').set('sf111111')
     ie.button(:name, 'Submit').click
      sleep(3)#点击登录按钮后登陆需要一点时间,所以最好加上停顿的时间
      if ie.contains_text("******")  #判断页面是否包含相应文字
      puts "登陆成功"
    else
      puts "登陆失败"
    end
    ie.close                                                   
     

       心得:
         1、最开始编写ruby脚本,请不要使用类。(虽然用watirerecorder去录制的时候默然是以类的形式展示的)
         2、watirerecorder录制的脚本你是要及时进行修改的,用这个录制只是方便知道各对象ID

    ======================华丽丽的分隔线===========================

      目标:编写登陆功能的脚本,将登陆写成一个具体的方法,通过调用的方式去实现
      脚本
          require 'watir'

      #登陆的方法
      class Login_counter
        def initialize(username,password,outputt)#初始化参数
          @username,@password,@outputt=username,password,outputt
        end
       
        def Login_sf
         
          $ie.text_field(:name, 'username').set(@username)
          $ie.text_field(:name, 'password').set(@password)
          $ie.button(:name, 'Submit').click
          sleep(3)
          if $ie.contains_text(@outputt)  #判断页面是否包含相应文字
              puts "登陆成功"
          else
              puts "登陆失败"
          end
        end
      end

     $ie = Watir::IE.new                                   
     $ie.goto('http://counter.sit.alipay.net/logon.htm')
      username="邵菲"
      password="sf111111"
      utputt="您现在登录的是支付宝结算中心业务平台"
      f=Login_counter.new(username,password,outputt)
      f.Login_sf
    $ie.close    

      心得:
        
    1、因为ruby是从上向下执行脚本内容的所以类方法定义需要在调用之前去定义
           2、ie变量是局部变量,在class里是无法调用的,需要用全局变量$ie

    =====================华丽丽的分割线===============

         目标:通过测试数据驱动的方式去实现登陆自动化测试
         方法:将测试数据存于excel中,将excel的数据读取到数组,通过取数组值赋参数
          脚本:

    require 'watir'
    require 'jcode'
    require 'win32ole'
    $KCODE = 'e'
    #----------------------要想读取中文就需要加上以下脚本------------------------------------
    #require 'jcode'
    #$KCODE='e' # 将汉字代码设为EUC。在Windows中是 's'
    #print 'abcdef'.tr( 'a-z', 'A-Z' ), "\n"
    #----------------------------------------------------------
      #-----------------------------登陆的方法
      class Login_counter
        def initialize(username,password,outputt)
          @username,@password,@outputt=username,password,outputt
        end
       
        def Login_sf
         
          $ie.text_field(:name, 'username').set(@username)
          $ie.text_field(:name, 'password').set(@password)
          $ie.button(:name, 'Submit').click
          sleep(3)
          if $ie.contains_text(@outputt)  #判断页面是否包含相应文字
              puts "登陆成功"
          else
              puts "登陆失败"
          end
        end
      end
         
       #-------------------------在这里需要加入读取excel的方法
    excel = WIN32OLE::new('excel.Application')
    workbook = excel.Workbooks.Open('C:\Documents and Settings\wb-shaof\桌面\ruby\testdata.xls')
    worksheet = workbook.Worksheets(1) #定位到第一个sheet
    worksheet.Select
     #将excel的值读入到一个数组中
    line = '1'
    data = []
    while worksheet.Range("a#{line}")['Value']
       data << worksheet.Range("a#{line}:d#{line}")['Value']#<<为连接符,对数组来是说增加元素.这里的data为三维数组,最开始初始化的时候已经是数组
       line.succ! #succ函数为返回下一个值,和line=line+1(前提:line=1)效果一样
    end
    excel.Quit #退出excel
    p data

    #-----------------------------------取出data数组的值,赋给登陆功能的各个参数,然后循环去取

     

       #-------------------------------


      $ie = Watir::IE.new                                   
     $ie.goto('http://counter.sit.alipay.net/logon.htm')
      username="邵菲"
      password="sf111111"
      utputt="您现在登录的是支付宝结算中心业务平台"
      f=Login_counter.new(username,password,outputt)
      f.Login_sf
      $ie.close  


     

  • RUBY学习笔记

    2009-07-23 10:02:08

    在运行.rb文件的时候报以下错误:

    c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/windowhelper.rb:44:in `check_autoit_installed': The AutoIt dll must be correctly registered for this feature to work properly (Watir::Exception::WatirException)

    解决办法:

    先看C:\ruby\lib\ruby\gems\1.8\gems\watir-1.6.2\lib\watir\AutoItX3.dll是不是存在这个文件

    如果存在,则运行

    regsvr32 "C:\ruby\lib\ruby\gems\1.8\gems\watir-1.6.2\lib\watir\AutoItX3.dll"

  • 获取运行时对象的属性值(原创)

    2007-10-24 21:45:44

       今天在录制脚本的时候遇到一个问题,就是某个weblist对象,用Object Spy取查看,运行时对象的value属性值和测试对象的value的值不一样,而在我的脚本中,两个不同的值我都用到,最后找到解决办法如下:

    取得测试对象的value的值可以用下面的方式:

    a=Browser("Find a Flight: Mercury").Page("Find a Flight: Mercury").WebList("fromMonth").GetROProperty("value")

    取得运行时对象的value的值方法如下:
    a=Browser("Find a Flight: Mercury").Page("Find a Flight: Mercury").WebList("fromMonth").object.value

    这个方法灵感来源于erics的空间的这句话:“

    如果希望改变应用程序中对象的属性值,应该通过“Object.object”方法,来改变对象的Run-time属性。

    ”,感谢erics

  • QTP实现随机产生不重复的查询条件

    2007-10-16 22:16:34

       查询功能的测试,对于查询条件组合的实现,是通过随机产生查询条件个数n,并随机取得这n个条件,并且要求不能重复,对于这部分代码实现如下:

    conArrayNum=array ("mem_info.HICN","mem_info.FIRST_NAME","mem_info.LAST_NAME","mem_info.MEMID","mem_info.CONTRACT_NUMBER","mem_info.ENROLLMENT_STATUS","MEM_CURRENT.PROV_GROUP_NUM","RT_PROVIDER.RX_ID","MV_SUSPECT.SUSPECT")'存放查询条件的数组
    maxNum=9
    rndNumber = RandomNumber(0, maxNum)'随机产生查询条件个数
    msgbox(rndNumber)

    Dim x,y,'y表示随机取得的条件所存放数组ConArray的下标
    For  x=1 to rndNumber

     k=RandomNumber(0, maxNum-1)'随机取得条件数组的位置

     y=0

    '每次随机产生的条件会有重复,该方法用来排除产生相同的条件的情况

     If  x=1 Then
          ConArray(0)=k’第一个条件,不用考虑重复问题,直接存入输组中

     else  '当取第二个条件时,就要开始和前面已经产生的存放在ConArray数组中的数据进行比较,相同则重新去取随机数
       Do while y<x-1
        If ConArray(y)=k Then
          k=RandomNumber(0, maxNum-1)
          y=-1
                  End If
        
          y=y+1
       Loop
            ConArray(y)=k

      End If

    NEXT

  • QTP实践总结

    2007-10-08 09:32:03

    在QTP的使用过程中碰到一些问题,总结如下:

    1、QTP的注释用',多行注释的办法,是选中要注释的部分,按Ctrl+M,取消注释则用Ctrl+Shift+M

    2、如果某个test存在多个action的情况,并且其中某个action在datatable中设置了多条数据,想仅仅循环运行当前action的话可以右键单击->Action call properties->Run on all rows

    3、获得checkpoint返回值的办法:加check()比如:

    a=browser("Login Page").Page("Login Page").WebEdit("J_username").check (checkpoint("j_username"))

    4、Datatable中取得某一列的值用以下方法:

    msgbox “GetParameter-i:”&DataTable.GetSheet("51sheet").GetParameter(1).value

    5、数据库检查点:SERVER为SID,UID为用户,PW为用户密码,DBQ数据库和SID对应上

    6、参数和字符串连接用“&”

    7、VB中条件语句里,条件中的两个字符串变量比较要注意空格问题,用trim()

    比如:If trim(webdata)=trim(dbdata) then .....

     

  • 我做的QTP入门培训材料

    2007-09-23 20:20:29

      刚进公司的第一个项目就是做的QTP脚本的开发,而组长的第一个任务就是做一个QTP的培训,因为个人也是菜鸟级人物,QTP也是自学中,刚刚入门不久,所以做的培训稿仅仅适用于入门级别,而且拿来当例子的部分也是很简单的,不过也是我的劳动成果,而且我们组长看了之后说看完培训稿之后至少知道是怎么回事,怎么去简单应用了的,因此在这里拿出来和大家分享,希望大家能多提提建议。

      需要的朋友,留下邮箱地址,我发邮件给你们,这里好像不能上传附件...

    ----------------------------------------------------------

    我已经很久没关注过自己这篇日志了。没想到还有这么多人找我要。
    这样吧。我有空把这个以日志形式发到我自己的博客,大家自己看好了。我尽量在本周末加上。

  • QTP无法识别对象的补充(原创)

    2007-06-11 22:41:12

      对于QTP无法识别的对象的问题,经过开发人员人员的帮忙终于找到原因,其实对于目前网络上找到的一些资料所说的几种解决办法都无法真正解决目前我们公司的这个系统的框架中的对象的识别问题,特别是对于树控件的识别,因为我们公司的系统的树控件是自己开发并且封装好的,和微软的树结构不一样,所以对于它的识别,并不是以前所说的那些办法能解决的,对于该问题的解决可以参考以下:

    Browser("用户登入").Page("用户登入").WebEdit("WebEdit").Set "test7"
    Browser("用户登入").Page("用户登入").WebEdit("password").SetSecure "466d488e60e40cbbf4312876ab4ca3b24e5e"
    Browser("用户登入").Page("用户登入").Image("imageField").Click 10,9
    Browser("用户登入").Page("非税收入").Image("expand").Click
    Browser("用户登入").Page("非税收入").WebButton("…").Click
    Browser("用户登入").Window("区划选择 -- 网页对话框").Activate
    set htmDoc=Browser("用户登入").Window("区划选择 -- 网页对话框").Page("区划选择").Object
    set treeNode=htmDoc.getElementById("partTree").getTreeNodeById("330302")
    treeNode.setActive()
    treeNode.changeSelectedState 1,1
    treeNode.reload()

    Browser("用户登入").Window("区划选择 -- 网页对话框").Page("区划选择").WebButton("确 定").Click

  • 《常见的功能测试发法》的一点不同意见

    2007-06-02 22:26:57

    在网上看到以下一篇文章,我的理解可能不太一样:

    功能测试是对产品的各功能的验证,而对于产品的各功能点如何区分我的理解是产品的某个功能点可能会通过好多个操作来实现,比如:选择某个对象->点[新增]按钮->编辑数据->按[保存]按钮这么一个过程,而对于某个功能点的验证需要通过验证界面上各个元素和界面上的各个操作来实现的。所以我觉得对于某个产品的功能点的验证是界面测试和操作功能测试的结合。而我们在描述用例的时候,应该区分界面上的和具体功能上的来进行。

    当然,每个人的理解和测试习惯都会不一样,这里我仅仅说了自己的一点愚见,大家给多提提好的建议哦!

    常用的功能测试方法

        功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能。常用的测试方法如下:

       1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确。

       2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确。

       3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确。

       4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错.

       5. 字符类型检查: 在应该输入指定类型的内容的地方输入其他类型的内容(如在应该输入整型的地方输入其他字符类型),看系统是否检查字符类型,会否报错.

       6. 标点符号检查: 输入内容包括各种标点符号,特别是空格,各种引号,回车键.看系统处理是否正确.

       7. 中文字符处理: 在可以输入中文的系统输入中文,看会否出现乱码或出错.

       8. 检查带出信息的完整性: 在查看信息和update信息时,查看所填写的信息是不是全部带出.,带出信息和添加的是否一致

       9. 信息重复: 在一些需要命名,且名字应该唯一的信息输入重复的名字或ID,看系统有没有处理,会否报错,重名包括是否区分大小写,以及在输入内容的前后输入空格,系统是否作出正确处理.

       10. 检查删除功能:在一些可以一次删除多个信息的地方,不选择任何信息,按”delete”,看系统如何处理,会否出错;然后选择一个和多个信息,进行删除,看是否正确处理.

       11. 检查添加和修改是否一致: 检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型的项,修改也必须为整型.

       12. 检查修改重名:修改时把不能重名的项改为已存在的内容,看会否处理,报错.同时,也要注意,会不会报和自己重名的错.

       13. 重复提交表单:一条已经成功提交的纪录,back后再提交,看看系统是否做了处理。

       14. 检查多次使用back键的情况: 在有back的地方,back,回到原来页面,再back,重复多次,看会否出错.

       15. search检查: 在有search功能的地方输入系统存在和不存在的内容,看search结果是否正确.如果可以输入多个search条件,可以同时添加合理和不合理的条件,看系统处理是否正确.

       16. 输入信息位置: 注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方.

       17. 上传下载文件检查:上传下载文件的功能是否实现,上传文件是否能打开。对上传文件的格式有何规定,系统是否有解释信息,并检查系统是否能够做到。

       18. 必填项检查:应该填写的项没有填写时系统是否都做了处理,对必填项是否有提示信息,如在必填项前加*

       19. 快捷键检查:是否支持常用快捷键,如Ctrl+C Ctrl+V Backspace等,对一些不允许输入信息的字段,如选人,选日期对快捷方式是否也做了限制。

       20. 回车键检查: 在输入结束后直接按回车键,看系统处理如何,会否报错.

Open Toolbar