支持PDA测试
对PDA测试的支持是TestComplete 7 的另外一大亮点。在TestComplete 7中,有专门的扩展用于支持PDA应用程序的测试。
支持的版本包括:Windows Pocket PC 2003, Windows Mobile 5.0 和 Windows Mobile 6.0。在Object Browser中,可以查看远程PDA上的进程和对象。
不容忽视的RIA
新版本的TestComplete对RIA应用程序的支持进一步增强,现在,你可以用TestComplete测试Flash、Flex、Silverlight的程序。
TestComplete 7支持运行于IE(v5~8)、Firefox(v1.5~3.0)上的Flash和Flex程序。需要注意的是,对于Firefox,要求Flash Player插件的版本是9.0.124.0或以后的版本。
TestComplete 7支持Silverlight 2 的应用程序测试。通过UI Automation接口访问Silverlight界面控件。
在这方面,TestComplete比QTP等其他自动化测试工具领先不少(QTP仅支持Flex程序的测试,而且是通过Adobe的Flex Builder提供的插件来完成的)。在RIA应用日趋流行的今天,对RIA应用程序的支持是自动化测试工具不容忽视的一项内容。
第三方控件
在TestComplete 7中,添加了很多第三方控件的支持,例如Developer Express XtraEditors 和 XtraBars 、Infragistics NetAdvantage 、Syncfusion Essential Studio 、MFC Feature Pack for Visual C++ 2008 、Telerik RadControls for ASP.NET等。
第三方控件是自动化测试过程中碰到问题比较多的地方,TestComplete对众多第三方控件的支持无疑为其增色不少。在Grid类型的控件方面,TestComplete现在又添加了对以下控件的支持:
Borland TStringGrid
Developer Express XtraVerticalGrid、PropertyGridControl 和 XtraTreeList
Microsoft MFC PropertyGrid
Rogue Wave Stingray Objective Grid .NET
Syncfusion GridControl 和 ScheduleGrid
Xceed Grid for .NET
尤其值得注意的是,TestComplete 7 现在支持采用Qt和wxWidgets框架构建的跨平台应用程序。TestComplete支持MinGW、Microsoft Visual Studio .NET 2003, Microsoft Visual Studio 2005 和Microsoft Visual Studio 2008编译的Qt4.5程序。
另外,如果碰到一些自定义的.NET和WPF控件,还可以使用TestComplete提供的SDK来开发插件,这些插件可以大大提供TestComplete与自定义控件的交互能力。
测试命令行应用程序
正当大家在为TestComplete对新技术的支持如此神速而惊叹的时候,TestComplete7还不失时机地添加了对命令行程序的扩展支持。这对于大家测试一些遗留的骨灰级程序,或者是一些后台服务器上的一些应用程序会比较有用。
TestComplete 7为我们提供了一种比较特别的命令行应用程序测试的方式,可通过类似于如下所示的代码来访问命令行应用程序的窗口:
Set p = Sys.Process("MyApp")
Set w = p.Window("ConsoleWindowClass", "*")
...
然后,可以通过如下方式向命令行应用程序发送字符串,就像在命令行中敲入命令一样:
Set p = Sys.Process("MyApp")
Set w = p.Window("ConsoleWindowClass", "*")
Call w.Keys("MyString [Enter]");
...
下一步就是获取命令行应用程序的响应了,在TestComplete中可以通过wText来获取,下面代码展示了一个完整的小例子:
Sub MyTest
Dim p, w, txt, cnt, i, s
Set p = Sys.Process("MyApp")
Set w = p.Window("ConsoleWindowClass", "*")
Call w.Keys("MyString [Enter]")
' 获取命令行窗口的文本
txt = w.wText
' 指定分割符
aqString.ListSeparator = vbNewLine
' 获取文本列表的长度
cnt = aqString.GetListLength(txt)
For i = 0 To cnt - 1
' 获取一行文本的字符串
s = aqString.GetListItem(txt, i)
' 把字符串写入日志
Call Log.Message(s)
Next
End Sub
这种方式获取的是所有文本,如果想以一种交互式的方式来测试命令行应用程序的话,还可以利用WScript.Shell,例如下面的代码所示:
Sub Main
Dim WshShellObj, WshShellExecObj, out
Set WshShellObj = CreateObject("WScript.Shell")
Set WshShellExecObj = WshShellObj.Exec("cmd.exe")
' Flush the stream
out = readTillChar(WshShellExecObj, ">")
Log.Message(out)
' Send the "ver" command and the new line character
WshShellExecObj.StdIn.Write("ver"+VbCrLf)
out = readTillChar(WshShellExecObj, ">")
Log.Message(out)
End Sub
Function readTillChar(WshShellExecObj, endChar)
Dim out, curChar
Do While Not WshShellExecObj.StdOut.AtEndOfStream
curChar = WshShellExecObj.StdOut.Read(1)
out = out + curChar
If (curChar = endChar) Then
readTillChar = out
Exit Function
End If
Loop
End Function