我们使用过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和内存的使用情况就实时的展现在我的面前。当然像再深入的话可以将这些信息以图表的形式展现出来,这里就不加以说明了
4417

被折叠的 条评论
为什么被折叠?



