抓“虫”专家——佳佳

发布新日志

  • QC 安装需求总结

    2012-02-26 19:48:21

    QC9.0 安装
    操作系统不适用于 win2008

    SQL2005不适用于 winXP,安装比报错,且只能安装SQL 客户端上

  • HTTP 错误 404 - 文件或目录未找到。Internet 信息服务 (IIS)

    2010-08-16 15:42:45

    HTTP 错误 404 - 文件或目录未找到。Internet 信息服务 (IIS)

     

    首先,运行asp文件必须建立虚拟目录。进入:控制面板à 管理工具 à IIS(Internet 服务器)。选择“默认网站” à “新建”à“虚拟目录”,选择“下一步”创建虚拟目录。

     

    1 iis运行界面

    Win2003 server默认情况下不能禁止了asp文件服务,也就是说不能运行asp文件。所以还需要进行以下修改:

     

    第一步,启用Asp

    进入:控制面板 à 管理工具à IIS(Internet 服务器) à Web服务扩展à Active Server Pages à 允许

     

    控制面板 à 管理工具à IIS(Internet 服务器) à Web服务扩展à 在服务端的包含文件à 允许

     

    2 启用asp服务


    第二步,启用父路径支持

    IISà网站à主目录(右键选择“属性”) à配置à选项à启用父路径

        

     

    3-4 启用父路径 

    第三步,权限分配

    IIS-网站-(具体站点)-(右键)权限-Users完全控制

    5 用户user的权限设置

     

  • Zz:第十二讲 测试策略—界面测试与安全测试

    2010-07-22 14:03:30

    第十二讲 测试策略—界面测试与安全测试

    本讲目标

        了解测试策略

        精通整体界面测试

        精通界面元素测试

        掌握基本安全防护系统测试

        理解用户管理和访问控制

    测试策略

        功能测试

        界面测试

        兼容性测试

        易用性测试

        安装/卸载测试

        数据库测试

        文档测试

        安全测试

        性能测试

        可靠性测试

        压力测试

        负载测试

        强度测试

    界面(GUI)测试

        界面测试主要核实用户与软件之间的交互,验证用户界面中的对象是否按照预期的方式运行,并符合国家或行业的标准。

        整体界面测试

        界面元素测试

    1.      整体界面测试

    1.1 易用性

    按钮名称应该易懂,用词准确,摒弃模棱两可的字眼,要与同一界面上的其他按钮易于区分,能望文知意最好。理想的情况是用户不用查阅帮助就能知道该界面的功能并进行相关的正确操作。

    1.2 规范性

        通常界面设计都按Windows界面的规范来设计,可以说:界面遵循规范化的程度越高,则易用性相应的就越好。小型软件一般不提供工具箱。

        符合行业的专业规范

    1.3 合理性

        界面能体现软件功能

        主界面能体现软件所有功能

        屏幕对角线相交的位置是用户直视的地方

        正上方四分之一处为易吸引用户注意力的位置

        左边内容容易引起用户注意

    1.4 美观与协调性

        界面应该大小适合美学观点,感觉协调舒适,能在有效的范围内吸引用户的注意力。

    1.5 一致性

        布局

        标签和讯息的措辞

        界面外观

        操作方法

        颜色

        快捷键在各个配置项上语义

    2.    界面元素测试

        窗口测试

        菜单测试

        图标测试

        鼠标测试

        文字测试

    2.1 窗口测试

        窗口有标题,可以进行打开、关闭、创建、缩放、移动、删除、重叠等操作。

    2.2 菜单测试

         菜单按图形方式可以产生丰富多彩的菜单形式,例如条形菜单、水平和垂直的弹出式菜单、下拉菜单、T形菜单等。

         菜单是否易用主要体现在它能否提供线索帮助用户识别,而不是强迫用户去记忆。

    2.3 图标测试

         使用图标可以形象、逼真的反映菜单的功能,从而使理解、学习和操作变得更加易用。

    2.4 鼠标测试

         用户会把鼠标移近、移出窗口,或当光标在窗口中,用户按下、释放鼠标键,鼠标是否准确、灵活。

    2.5 文字测试

         正确性

         美观性

         一致性

     

    *  网页颜色原理和象征意义

    红色:热情、奔放、喜悦、庄严
        黄色:高贵、富有、灿烂、活泼
        黑色:严肃、夜晚、沉着
        白色:纯洁、简单、洁净
        蓝色:天空、清爽、科技
        绿色:植物、生命、生机
        灰色:庄重、沉稳
        紫色:浪漫、富贵
        棕色:大地、厚朴

     

    *  界面测试典型用例

     

    2.6     辅助系统测试

         帮助

         向导

         信息提示

    2.6.1 帮助测试

         软件应该提供所有规格说明和各种操作命令用法的帮助系统,使用户在使用中遇到困难时可以自己寻求解决方法。

    2.6.2 向导测试

    使用向导可以使用户得到必要的引导,直接去找自己要去的地方。另外,新用户在系统中可能迷失方向,系统的向导可以引导用户怎样操作。

    2.6.3 信息提示测试

         信息提示是计算机用信息的形式对用户的某些操作所作的反应。在一些操作中,如果系统没有反馈显示信息,用户就无法判断是否为计算机所接受,是否正确,以及操作的效果是什么。

         信息提示可采用多种方式:文本、图形和声音等。

    *  总结

         精通整体界面测试

         精通界面元素测试

         精通辅助系统测试

         掌握基本安全防护系统测试

         理解用户管理和访问控制

     

  • 【原创】QC 使用EXCEL 导出 BugCase

    2010-03-01 10:10:42

    QC使用EXCEL导出缺陷,如果导出的都是乱码,在没有办法处理的情况下,可以通过先导出.txt文本格式后,在用.excel表格格式打开。
    具体步骤如下:
    step 1:

    step 2:

    step 3:

    step 4:

    step 5:
  • QTP 脚本中关于ActiveX 控件[ZZ]

    2010-03-01 10:09:50

    录制一段脚本代码,在Expert View 窗口中编辑录制的脚本代码时,会碰到弹出一个对话窗口,提示为“当前安全设置禁止运行该页中的ActiveX 控件,因此,该页可能无法正常显示”类似的东西,而在人工操作时却没有这样的现象。
         问题主要出在于QTP设置本身,之所以在编辑录制好的脚本时,QTP出现关于Active的对话提示窗口,问题在于QTP的设置,要消除该提示窗口。应对QTP作如下设置:toos---options..------Active Screen----Advanced-------点选Load ActiveX controls
    作过如上设置之后,重新录制脚本,录制完成后,在QTP的Expert View中编辑脚本代码,QTP就不会再弹出关于Active控件的对话框了。
  • QTP 小常识【ZZ】

    2010-03-01 10:06:32

    1 检查页面是否存在
    对象exist可以检查某一个页面是否存在。
    代码:
    if Browser("…").Page(“…").Exist then
    ‘在运行结果中显示的报告, “micPass”的状态是通过, micFail是不通过
       reporter.ReportEvent micPass ,“页面存在“,”通过“  
       else
       reporter.ReportEvent micFail ,"页面不存在“,"不通过"
    end if

    7.2 防止程序中断的方法
    在回放脚本的时候,有时因为错误导致运行的脚本中断,不能自动运行。为了能达到真正无人职守的状态可以在脚本的最前面加上如下的代码: 
    On error resume next  ‘遇到错误返回到脚本的下一行继续执行。
    On error goto 0 ‘错误处理的控制权,平时是由QTP控制的(这个叫默认的),当有on error resume next 时,是交给on error处理,当on error goto 0时,就换给QTP

    7.3 同步点的设定
    等待某一对象出现后继续执行,为了防止qtp找不到对象而设定同步点。有2种方法:1种是用wait加等待的时间,如wait 5(qtp等待5秒钟后继续执行)。另一种方法是等待要执行对象的出现,如果出现就继续执行,否则一直等待,代码如下:
    y=......waitproperty("visible",true,10000)
    If y=true then
       ‘执行下一条语句
       else
        ’对象不出现就一直等待,直到过了10000秒后程序找不到对象报错
    End if

    7.4 截屏
    在优化脚本时,如果想查看某一页面在执行后的页面效果,可以采取截屏的办法截取当前的操作页面并保存到本地。代码:
        desktop. capturebitmap “c:\***.bmp“,ture     ’在脚本中想要查看的一行插入,运行后图片保存到设置的路径下
    7.5 导入execl文件并参数化数据方法
    Qtp自带了datatable表,可以把要参数化的数据写在里面,但这样写脚本和数据不能分离,后期不好维护脚本。现在采用从外部导入execl文件的方法导入数据。代码如下:
       datatable.ImportSheet “D:\...\data.xls”,“sheet1”,“global“ 
       ‘第一个参数是要导入文件的路径,第二个是execl的第一个表格,第三个参数是在execl的全局范围内查找

       另外datatable对象还有很多操作,比如:获取表中字段的行数,插入表数据,删除数据等,下面是获取表中数据的代码:datatable("A","dtglobalsheet)
    7.6 为描述性编程自动创建注释
       当希望在每一个新建action时都增加一些头部说明,比如作者、创建日期、说明等信息,那么用action template 来实现最简单快捷。 方法:用记事本等文本编辑器,输入如下类似的内容:           'Company:东方般若            'Date: Date          然后将文件保存为ActionTemplate.mst,并存放到QTP安装目录下的dat目录。

    7.7 导入vbs文件
    想要实现脚本的函数化,并更好的维护它,可以把一些公用的函数写到vbs里面,用qtp来调用它。
    实现调用vbs的方法有2种:
    1.函数executefile加vbs文件的路径
      executefile “c:\...\funcation.vbs”

    2.设置QTP test/settings/resources/+函数目录

    7.8 时间差函数

    统计两个日期时间段之间的间隔,还有多少小时
    Dim timediff
    timediff=datediff(“H”,now,“2008-8-8” )
    Print timediff
    7.9 获取web下拉框中数据的行数和数据值
    1.获取行数:首先将webtable添加到对象库中,查看对象库里有该webtable的属性后
    count=Browser("…").Page("age").Frame("…").WebTable("...").RowCount
       Msgbox count ‘查看行数
    2.获取数据值,
       for i=1 to  count    
    value=Browser("…").Page("age").Frame("…").WebTable("...").getcelldata(i,1)
       msgbox value
       next
    获取到列表中的数值后,qtp的对象库中没有这个WebElement的对象,一般采用描述性编程的方法获取对象,比如:用getcelldata获取的表中数据的innertext属性是“普通岗”,那么就可以用如下代码:
    for i=1 to  count    
       value=Browser("…").Page("age").Frame("…").WebTable("...").getcelldata(i,1)
     
       Browser(“…”).Page(“Page”).Frame(“…”). WebElement(“innertext:=“&value,”index:=1”).click
    next

    7.10 对象获得焦点
    判断某个webedit输入框是否获取了焦点,如果没有获取就给它焦点,然后输入数值。代码如下:

    if not browser("**").page(“**").webedit(“
    **").object.isdisabled  then
             .object.focus
             .object.set "输入数值“

    7.11 获取对象当前属性值
    用GetROProperty可以获取对象的当前属性值,比如一些对象的属性经常发生变化,用getroproterty就能定位对象当前的属性状态来执行相应的操作。
    Dim pro
    pro= browser("**").page(“**").webedit(“
      **“). GetROProperty(“property”,value)
    Msgbox pro ‘弹出窗口,查看获取的属性。

    7.12 Systemutil对象的应用
    利用systemutil可以实现的功能:回放qtp脚本时禁止鼠标和键盘的输入;打开应用程序或web;通过句柄关闭进程;通过进程名关闭进程等。下面的代码是打开百度网页:
      systemutil.run “iexplore.exe”,“http://www.baidu.com”,“”,“”,“”,3        ‘打开百度的首页,最后面的参数“3” 代表打开ie后最大化

       SystemUtil.CloseProcessByName(“iexplore.exe”)      ‘关闭ie

       
    7.13 Action的使用
    action分为内部调用和外部调用2种方法:内部调用使用split划分;外部调用时被调用的action设置成share,并共享对象库。
       split action:RunAction "action", oneIteration
    7.14.  随即数

    在测试中有时会用到随即数,有多种方法:
       
    第一种 :n=randomnumber.value(1,255)  ’n的值从1到255之间随即产生

    第二种 :randomize      ‘更新反回的数据          dim n
                 n=int (10*rnd())
                 msgbox n        ‘n为10以内的整数


    7.15 “is+*”类型功能
       isarray'是否是数组 isconnected'判断QTP是否连接到TD isdate'是否是合法的日期类型 isempty'判断是否初始化 isNull'判断是否为空值 isNumeric'判断是否是数字型 isobject'判断是否一个功能对象 isready'判断设备是否准备就绪 isRootFolder'是否是根目录
    7.16 对象库

    打开对象库resources->object repository,或者用快捷方式:ctrl+r来打开。

    1.Qtp中的对象库和脚本是一一对应的,如果脚本中某个对象在对象库中不存在,则无法回放成功,会提示找不到对象。

    2.对无法识别的对象用spy工具获得后添加到对象库中。

    3.有时候脚本回放失败就是找不到对象的原因,可以通过用spy工具查看找不到对象的属性,然后打开对象库,比较二者的属性信息,如果属性有不相同的说明就是属性的原因,可以通过更改属性的方式统一对象属性。

    7.17 调试脚本

    1.脚本编写完毕,可以用按ctrl+f7来查看脚本是否有语法错误。

    2. Msgbox和print:在回放脚本时可以方便的查看自己想看到的信息。


    3.设置断点:为了测试某一小段脚本的功能,而当整个action很长的时
    候,可以设置断点单步debug。
    7.18 强制退出
    遇到问题退出可以用exittest或 exit for,例如下面代码:

    Public function text_exit()
         for i=0 to 10
                if i=3 then
                    exittest
                    ‘exit for
                end if
         next
    End function

    Text_exit()
          
    7.19 连接数据库_增删改
    Dim conn,strSql    '定义变量
    set conn = CreateObject("ADODB.Connection")   '创建连接
    conn.ConnectionString="Provider=SQLOLEDB.1;Password=isaac121379;Persist Security Info=True;User ID=sa;Initial Catalog=WisdomCRM;Data source=192.168.12.29"   '设置连接字符串
    conn.open  '开启连接
    'strSql="insert into UM_User  values(1,'UserID')"  '设置插入语句
    strSql="drop  table TM_Task_14_Target"
    'strSql="select *  from UM_User"

    If conn.state=0 Then   '如果连接状态为0,表示连接失败,写入reporter对象中,否则表示连接成功
        Reporter.ReportEvent micFail,"testing","数据库连接失败"
        conn.close
        Set conn = nothing
    else
       Reporter.ReportEvent micPass,"testing","数据库连接成功"
       conn.execute strSql    '执行更新语句
       conn.close
       Set conn = nothing
    End If
    7.20 连接数据库_查
    Dim conn,res,strSql    '定义变量
    set conn = CreateObject("ADODB.Connection")   '创建连接
    conn.ConnectionString="Provider=SQLOLEDB.1;Password=isaac121379;Persist Security Info=True;User ID=sa;Initial Catalog=WisdomCRM;Data source=192.168.12.29"  '设置连接字符串
    conn.open  '开启连接
    Set res = CreateObject("ADODB.RecordSet")   '创建一个记录集对象
    strSql="select * from UM_User"  '设置查询雨具
    If conn.state=0 Then   '如果连接状态为0,表示连接失败,写入reporter对象中,否则表示连接成功
        Reporter.ReportEvent micFail,"testing","数据库连接失败"
        res.close                               '关闭结果集和连接,并且置为空
        Set res = nothing
        conn.close
        Set conn = nothing
    else
       Reporter.ReportEvent micPass,"testing","数据库连接成功"
       res.open strSql,conn    '执行查询语句
       res.MoveFirst        '将记录集游标指到记录集的最开始
       Do
          Reporter.ReportEvent micPass,"file",cstr(res(0))+" : "+cstr(res(1))  '循环遍历查询结果,并且保持到reproter对象中,直到记录集到达末尾,循环结束
          res.MoveNext
       Loop until res.eof = true
       res.close
       Set res = nothing
       conn.close
       Set conn = nothing
    End If
    低级录制
    在无法识别对象时使用
    利用Vbs运行外部程序
    WSH也就是用来解析Vbs的宿主,本身包含了几个个常用对象:
    1、scrīpting.FileSystemObject  —>  提供一整套文件系统操作函数
    2、scrīpting.Dictionary  —>  用来返回存放键值对的字典对象
    3、Wscrīpt.Shell  —>  提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置
    4、Wscrīpt.NetWork  —>
    提供网络连接和远程打印机管理的函数。(其中,所有scrīpting对象都存放在SCRRUN.DLL文件中,所有的Wscrīpt对象都存放在WSHOM.ocx文件中。)
    现在我们需要的是第三个对象,好了,让我们先连接一下对象看看,在记事本的编辑窗口中输入:
    Set ōbjShell = CreateObject(“Wscrīpt.Shell”)
    objShell.Run “notepad”
    Objshell.run “calc”
    自建日志
    Public Sub logfile(message)
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fileSystemObj, fileSpec
    Dim currentTime
    currentDate = Date
    currentTime = Time
    testName = "log"
    Set fileSystemObj = CreateObject("scrīpting.FileSystemObject")
    fileSpec ="f:\log.txt"
    If Not (fileSystemObj.FileExists(filespec)) Then
    Set logFile = fileSystemObj.CreateTextFile(fileSpec, ForWriting, True)
    logFile.WriteLine("###############################################")
    logFile.WriteLine (currentDate & currentTime & " Test: " & environment.Value("TestName") )
    logFile.WriteLin("######################################")
    logFile.Close
    Set logFile = Nothing
    End If
    Set logFile = fileSystemObj.OpenTextFile(fileSpec, ForAppending, False, True)
    logFile.WriteLine (currentDate & " "& currentTime & " " & message)
    logFile.Close
    Set logFile = Nothing
    Set fileSystemObj = Nothing
    End Sub
    logfile(“ok")
    Vb6生成dll
    Environment对象
    检查页面文字显示颜色
    Set Elements = Browser(“WisdomCRM客户关系管理系统”).Object.Document.all.tags(“div”)’tags(“td”)为在td中检查
    For each Element in Elements
      If Element.InnerText="执行团队" Then
        strhtml=Element.Innerhtml
        n=instr(strhtml,"color=red")
        If n=0 Then
          msgbox "Text color is red!"
       exit for
        End If
      End If
    Next
    关闭重复的页面
    Dim loginwin
    Set loginwin = descrīption.Create()                                                  '创建对象名为loginwin的对象
    loginwin( "name").value="WisdomCRM客户关系管理系统"   ',对象属性及值


    Set child=desktop.ChildObjects (loginwin)
    cout=child.count
    msgbox cout
    For i=1 to cout
       child(i-1).close  '循环寻找这个对象
    Next
    获取当前测试的路径
    Path = environment("TestDir")'获取当前测试的路径
    msgbox path
    获取本机ip
    set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
    ("select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

    for each IPConfig in IPConfigSet
    if Not IsNull(IPConfig.IPAddress) then
    for i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
    Msgbox IPConfig.IPAddress(i)
    next
    end if
    next
    点亮对象
    highlight
    fireEvent用法
    针对Link对象,onmouseover时间, 还有onchange, onclick, ondblclick, onblur, onfocus, onmousedown, onmouseup, onmouseout, onsubmit, onreset, onpropertychange事件可以使用
    sendkeys实例
    Set wshshell=createobject(“wscrīpt.shell”)
    其使用格式为:object.SendKeys string “object”:表示WshShell对象 “string”:表示要发送的按键指令字符串,需要放在英文双引号中。 1.基本键   一般来说,要发送的按键指令都可以直接用该按键字符本身来表示,例如要发送字母“x”,使用“WshShell.SendKeys "x"”即可。当然,也可直接发送多个按键指令,只需要将按键字符按顺序排列在一起即可,例如,要发送按键“happy”,可以使用“WshShell.SendKeys "happy"”。
    sendkeys实例
    2.特殊功能键 对于需要与Shift、Ctrl、Alt三个控制键组合的按键,SendKeys使用特殊字符来表示: Shift---------WshShell.SendKeys "+" Ctrl---------WshShell.SendKeys "^" Alt---------WshShell.SendKeys "%" 由于“+”、“^”这些字符用来表示特殊的控制按键了,如何表示这些按键呢? 只要用大括号括住这些字符即可。例如: 要发送加号“+”,可使用“WshShell.SendKeys "{+}"” 另外对于一些不会生成字符的控制功能按键,也同样需要使用大括号括起来按键的名称,例如要发送回车键,需要用“WshShell.SendKeys "{ENTER}"”表示,发送向下的方向键用“WshShell.SendKeys "{DOWN}"”表示。 Space---------WshShell.SendKeys " " Enter---------WshShell.SendKeys "{ENTER}" ←---------WshShell.SendKeys "{RIGHT}" ↑---------WshShell.SendKeys "{UP}" F1---------WshShell.SendKeys "{F1}" Tips:如果需要发送多个重复的单字母按键,不必重复输入该字母,SendKeys允许使用简化格式进行描述,使用格式为“{按键 数字}”。例如要发送10个字母“x”,则输入“WshShell.SendKeys "{x 10}"”即可。

    先录制取得初始脚本,再做简单的修改和参数化,再进行封装形成可重用的函数,最后回放调试,形成了最终的脚本。

  • QTP对象识别常用方法介绍(转)

    2010-03-01 10:04:18

    转自一起测试网

    1 手动更改测试对象属性值,以匹配应用程序中对象的新静态属性。
    在对象库中手动修改测试对象的属性

    2 使用SetTOProperty方法
    可以在运行会话期间使用SetTOProperty方法修改测试对象属性,而不必更改对象库中的属性值。
    这种方法不是手动到对象库中修改,而是通过添加脚本来实现,尽管它的效果与手工修改类似,但是因为它可以充分利用编程的灵活性,因此可以实现更为复杂的对象识别。

    在原先出错的语句前面加上语句:
    object.WinEdit("Customer Name:").SetTOProperty "attached text","Name:"
    在运行会话期间设置WinEdit("Customer Name:")对象的"attached text"属性的属性值为"Name:"。这里要注意在运行会话期间这几个字,它并没有把这个属性真的修改了,只是临时改变了对象库中的值,打开对象库发现"attached text"属性值依然是 "Customer Name:"

    3 参数化测试对象属性为数据表参数
    如果期望属性值在每个测试循环中以可预见的方式发生变化,则可以用数据表参数来参数化测试对象的属性。

    4 使用正则表达式
    可以使用正则表达式基于您定义的条件或模式标识对象。如果对象的属性是动态变化的,但是它遵循某种规则,如"Fax Order No.[数字]"的格式,这样我们可以使用正则表达式来标识对象。
    这里面要注意的是正则表达式定义的模式要能够满足测试的需求,即既能够覆盖对象属性可能的取值范围,又要保证通过它可以识别的对象是唯一的,因此这种方法适合属性动态变化但是遵循某种可以使用正则表达式定义的模式。

    5 修改QTP用来标识对象的一组属性
    可以修改QTP用来标识对象的一组属性;这样,即便对象的某些属性发生变化,它也能够标识对象。

    6 使用描述性编程
    可以通过编程实现复杂的对象的操作。
    这种方法更加通用且有效,因为描述性编程处理对象有很大的弹性,因此可以使用复杂的编程处理更复杂的对象。
    例如:在Flight Finder页面中,旅客个数的选择决定姓名输入框的个数,如选择旅客个数为2,就会出现两对姓名输入框,很明显前面介绍的几种方法都无法解决这个问题

    在对象库中,对象被以QTP自己的方式描述,同样我们可以使用自定义的语句来描述它,只要能够清楚地交代QTP目标对象的样子,就可以识别出对象来。

    常用的描述对象的方式有以下两种:
    1 直接在语句中使用property:=value描述对象,这是最常用的方式,常规语法为:
    TestObject("PropertyName1:=propertyValue","...","PropertyNameX:="PropertyValueX")
    2 使用Description对象
    这种方法把对对象的描述封装在一个特殊的Description对象中,这样就可以把前面的对对象的描述通过对象操作来完成。

    SetMyDescription = Descriotion.Create()
    MyDescription("propertyName1").Value = "PropertyValue1"
    MyDescription("propertyName2").Value = "PropertyValue2"
    ....
    MyDescription("propertyNameX").Value = "PropertyValueX"

    7 尝试使用虚拟对象
    可以通过将应用程序的任何区域定义为一个虚拟对象,指示QTP将该区域识别为对象。通过虚拟对象,可以在QTP无法识别的对象上录制和运行测试或组件。
    点击操作的对象是Flash一样的东西,使用QTP录制不到这种对象,但是我们要做的就是点击这个对象进入到另一个操作界面,只要让QTP像操作按钮一样点击它一下我们就可以继续我们的测试工作了,这时我们就可以使用虚拟对象的功能,把点击的区域虚拟成一个button对象,QTP会把这个虚拟对象记录在虚拟对象集中
    (虚拟对象管理器中显示的虚拟对象集合存储在您的计算机中,而不是随包含虚拟对象步骤的测试或组件存储。这意味着如果您在测试或组件步骤中使用虚拟对 象,则仅当在包含正确的虚拟对象定义的计算机中运行时,该对象在运行会话过程中才能被识别。要将您的虚拟对象集合定义复制到另一个计算机,请将您的 <QuickTest 安装文件夹>\dat\VoTemplate 文件夹的内容(或该文件夹中的单个 .vot 集合文件)复制到目标计算机上的相同文件夹中 <QuickTest 安装文件夹>\dat\VoTemplate 文件夹只有在已经定义虚拟对象的情况下才会出项)

    8 切换录制模式
    低级录制模式使您可以在应用程序中的任何对象上录制,而无论QTP是否识别特定对象或特定操作。
    虚拟对象是根据你划分的区域识别的

    在低级录制模式下,QTP能够按照屏幕上的x坐标和y坐标录制该对象,将所有父类对象录制为Windows测试对象,将所有的其他对象录制为WinObject测试对象。它们在ActiveScreen中显示为标准Windows对象。

  • QC安装后无法启动之解决方案

    2010-03-01 09:54:55


    问题描述:

    安装选择内置jboss,提示输入登录windows用户名、密码,域为空。
    我是超级管理员登录到本机安装的,服务器没有添加到域,所以第一次安装时域为空
    系统提示说:本地网络无法访问!
    没有理会,继续安装!
    sqlserver登录选择集成SQL密码验证登录,安装顺利!
    安装结束后jboss无法启动,点击任务栏右下角启动,提示:can't start quality center!


    问题分析:

    QC在安装过程中最容易出问题的就是数据库(SQL、Oracle)和Jboss服务器
    数据库(SQL/Oracle),JBOSS, QC三个启动都是独立的,托盘QC启动成功并不表示成功启动jboss,
    不加qcbin试试看,能确认jboss是否启动成功。

    数据库以SQL举例:
    · SQL无法正常启动原因:
            1. SQL安装有问题
            2. 可能是用户名和密码不匹配
    · JBOSS正常启动必须具备以下条件:
            1. 安装用户必须是管理员,并且带密码(这是安装jboss的必要条件)
            2. JDK手动自己安装JDK且配置环境变量

    · Windows操作系统准备:
            1. 我的电脑->属性-> 高级-> 性能设置-> 数据执行保护->仅为基本Windows程序和服务启用DEP(2003默认安装要修改此项)
            2. 保证以下端口号可用:8080,8083,1088,1089,4444,1433等
            3. 新建一个拥有超级管理员权限的用户,域就输入服务器计算机名称


    安装前准备:
    如果JBOSS启动失败往往有以下几个原因造成的
    1. 安装用户必须是管理员,并且带密码,这是安装jboss的必要条件
    2. 我的电脑->属性-> 高级-> 性能设置-> 数据执行保护->仅为基本Windows程序和服务启用DEP(2003默认安装要修改此项)
    3. 保证以下端口是空着8083,1088,1089,4444
    4. 新建一个拥有超级管理员权限的用户,域就输入服务器计算机名全称。


    OK,如果你按照上面的方法做了,绝对OK!

  • 敏捷开发

    2010-03-01 09:38:43

    人与人之间的交互是复杂的,并且其效果从来都是难以预期的,但却是工作中最重要的方面。

      敏捷软件开发宣言:

    •   个体和交互 胜过 过程和工具
    •   可以工作的软件 胜过 面面俱到的文档
    •   客户合作 胜过 合同谈判
    •   响应变化 胜过 遵循计划

      虽然右项也有价值,但是我们认为左项具有更大的价值。

      敏捷宣言遵循的原则:

    •   我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。
    •   即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。
    •   经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。
    •   在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。
    •   围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。
    •   在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。
    •   工作的软件是首要的进度度量标准。
    •   敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。
    •   不断地关注优秀的技能和好的设计会增强敏捷能力。
    •   简单是最根本的。
    •   最好的构架、需求和设计出于自组织团队。
    •   每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。

      当软件开发需求的变化而变化时,软件设计会出现坏味道,当软件中出现下面任何一种气味时,表明软件正在腐化。

    •   僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。
    •   脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。
    •   牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。
    •   粘滞性: 做正确的事情比做错误的事情要困难。
    •   不必要的复杂性: 设计中包含有不具任何直接好处的基础结构。
    •   不必要的重复性: 设计中包含有重复的结构,而该重复的结构本可以使用单一的抽象进行统一。
    •   晦涩性: 很难阅读、理解。没有很好地表现出意图。

      敏捷团队依靠变化来获取活力。团队几乎不进行预先设计,因此,不需要一个成熟的初始设计。他们更愿意保持设计尽可能的干净、简单,并使用许多单元测试和验收测试作为支援。这保持了设计的灵活性、易于理解性。团队利用这种灵活性,持续地改进设计,以便于每次迭代结束生成的系统都具有最适合于那次迭代中需求的设计。

      为了改变上面软件设计中的腐化味,敏捷开发采取了以下面向对象的设计原则来加以避免,这些原则如下:

    •   单一职责原则(SRP)

      就一个类而言,应该仅有一个引起它变化的原因。

    •   开放-封闭原则(OCP)

      软件实体应该是可以扩展的,但是不可修改。

    •   Liskov替换原则(LSP)

      子类型必须能够替换掉它们的基类型。

    •   依赖倒置原则(DIP)

      抽象不应该依赖于细节。细节应该依赖于抽象。

      接口隔离原则(ISP)

      不应该强迫客户依赖于它们不用的方法。接口属于客户,不属于它所在的类层次结构。

    •   重用发布等价原则(REP)

      重用的粒度就是发布的粒度。

    •   共同封闭原则(CCP)

      包中的所有类对于同一类性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包中的所有类产生影响,而对于其他的包不造成任何影响。

    •   共同重用原则(CRP)

      一个包中的所有类应该是共同重用的。如果重用了包中的一个类,那么就要重用包中的所有类。

    •   无环依赖原则(ADP)

      在包的依赖关系图中不允许存在环。

    •   稳定依赖原则(SDP)

      朝着稳定的方向进行依赖。

    •   稳定抽象原则(SAP)

      包的抽象程度应该和其稳定程度一致。

      上述中的包的概念是:包可以用作包容一组类的容器,通过把类组织成包,我们可以在更高层次的抽象上来理解设计,我们也可以通过包来管理软件的开发和发布。目的就是根据一些原则对应用程序中的类进行划分,然后把那些划分后的类分配到包中。

      敏捷设计是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。

  • QC中文乱码解决方案

    2009-11-10 16:29:41

    更改数据库排序规则

    方法一:

    1.       连接到指定数据库,选择QC数据库;

    2.       右键【属性】,点击【选项】——>排序规则——>Chinese_PRC_CI_AS

    方法二:

    直接打开QC数据库新建查询:

    Alter database dbname collate Chinese_PRC_CI_AS

  • 【转】翻页功能设计

    2009-02-12 11:06:06

    翻页功能我们常碰到的一般有以下几个功能:
    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,显示第一页的数据

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

Open Toolbar