QTP场景之恢复增强

我们使用过qtp的都知道,qtp有场景恢复功能,可以处理应用程序一些意外情况,比如死机,出错窗口的弹出、、、、、但是在应用过程中发现无法监控qtp本身的情况,比如msgbox、出错信息都不方便灵活运用。

  虽然vbs也提供了一种出错机制,如:

  On Error Resume Next

  语句来处理但是依然要求测试工程师要有预见性才能让其用起来。因此很是有局限性,那么能不能有一个东西可以即应用程序又可以监控qtp呢。当然可以做到的,下面我就讲下具体的实现方法。

  1) 进程监控

  首先我们要实现一个在内存中总是存在的vbs进程,并使用该进程监控所有的程序包括qtp的运行情况。

  当然很简单只要写一个“死”循环,当然这个得要有一个出口否则可就真的死掉了。然后在这个循环中调用window的api函数

  我们用UserWrap.Register "USER32.DLL", "FindWindow", "I=ss", "f=s", "R=l"

  来注册api的函数

  hWnd=UserWrap.FindWindow(vbNullString,"运行错误")

  调用函数,具体实现见下:

  Set UserWrap = CreateObject("DynamicWrapper")

  UserWrap.Register "USER32.DLL", "FindWindow", "I=ss", "f=s", "R=l"

  Do

  hWnd=UserWrap.FindWindow(vbNullString,"运行错误")

      If hWnd<>0 Then 

      set ws=CreateObject("wscript.shell")

      If Find_Process("ept_runerr.exe")=False Then 

      oAutoIt.Run "F:\HP\QuickTest Professional\Tests\call\ept_runerr.exe"'运行处理模块程序

      End If 

      Else

      'MsgBox "未找到窗口"

      End If 

  Loop

  复制代码

  当然用过vbs的人都晓得,vbs由于微软限制不能直接调用window的api函数,我们需要有一个动态库文件dynwrap.dll我们只 需要将该动态库注册到我们的系统中就可以了使用以上脚本了。注册方法即:regsvr32 /i /s dynwrap.dll,将该内容保存为bat文件运行即可了。

  2) 系统监控

  有了上面的监控方式我们可以继续将vbs的功能延伸开,去监控cpu和内存包括硬盘的使用情况。来满足我们对运行性能进行系统的评估。

  首先定义一个获取资源的函数如下:

  Function getsystem(cpu,ram) ‘该函数反回cpu和内存的使用情况

      

  On Error Resume Next

      Set objProc  = GetObject("winmgmts:\\.\root\cimv2:win32_processor='cpu0'")

      cpu=  objProc.LoadPercentage & "%"

      strComputer = "."

      Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

      Set colOS = objWMI.InstancesOf("Win32_OperatingSystem")

      For Each objOS In colOS

      strReturn = "内存总数: " &  Round(objOS.TotalVisibleMemorySize  / 1024) & " MB" & vbCrLf &"内存可用数: " &  Round(objOS.FreePhysicalMemory / 1024) & " MB" & vbCrLf &"内存 使用率 :" &  Round(((objOS.TotalVisibleMemorySize-objOS.FreePhysicalMemory)/objOS.TotalVisibleMemorySize)*100)  & "%"

          

          ram= Round(((objOS.TotalVisibleMemorySize-objOS.FreePhysicalMemory)/objOS.TotalVisibleMemorySize)*100) & "%"

      Next

  End Function 

  复制代码

  下面将接收到的信息保存为excel文件

  Dim excelapp,excelwork   '初始化excel参数和文件

  Dim x,y

  Set ExcelApp = CreateObject("Excel.Application") 

  Set excelwork=ExcelApp.Workbooks.Add()

  ExcelApp.Visible = False

  ExcelApp.DisplayAlerts = False  

  x=1

  y=1

  excelwork.Worksheets("sheet1").activate'初始化excel参数和文件

  Do

  on error resume next

      WScript.Sleep 300 

      getsystem cpu,ram

      excelwork.Worksheets("sheet1").Cells(1,y).value=Time()

      excelwork.Worksheets("sheet1").Cells(2,y).value=cpu

      excelwork.Worksheets("sheet1").Cells(3,y).value=ram

      WScript.Sleep 300 

      x=x+1

      y=y+1

      xim=xim+1

      'MsgBox xim

      If tmp=False Then  '保存cpu和内存使用情况

          excelwork.saveas "c:\c.xls" 

          tmp=True 

      Else

          excelwork.saveas "c:\c1.xls" 

          tmp=False

      End If 

  Loop

  excelwork.Close 

  复制代码

  这样cpu和内存的使用情况就实时的展现在我的面前。当然像再深入的话可以将这些信息以图表的形式展现出来,这里就不加以说明了

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值