第三方控件
在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
GUI Explorer
除了上面一些主要的改進和新特性外,TestComplete 7 還在很多細節的地方做了改進和提高,在Object Browser中,添加了一個GUI Explorer小工具,GUI Explorer可以幫助我們查看應用程序GUI界面控件的層次結構,例如,下圖展現的是Google主頁的GUI界面控件的層次結構:

GUI Explorer可以讓我們觀察界面上的對象,不管它是可見的還是隱藏的。在GUI Explorer中,窗體控件被畫成亮灰色,非窗口控件則畫成暗灰色,不可見的控件都是白色的,對于隱藏的控件,則畫出其邊界。
新加入了Table變量類型
TestComplete7引入了一個新類型的變量 – Table,其實就是一個二維數組。

Table可以在Project、Project Suites和Keyword test中使用。例如,下面的代碼展示了如何訪問Table中的數據:
Sub getTableData
columnCount = Project.Variables.Var1.ColumnCount
rowCount = Project.Variables.Var1.RowCount
For I=0 to rowCount-1
For J=0 to columnCount-1
Log.Message(Project.Variables.Var1.Item(J,I))
Next
Next
End Sub
小結
TestComplete 7 的亮相給我們帶來不少驚喜,例如對關鍵字測試的支持(雖然還有待改進,但是畢竟邁出了第一步)、對PDA、RIA應用的支持等。
此外,TestComplete一如既往地保持對新技術、工具、編譯器的及時支持,例如:IE8被及時地支持了,CodeGear RAD Studio 2009也被及時地支持了。在TestComplete 7 中,除了Microsoft 的Visual Studio Team System 和 AutomatedQA自己的 AQdevTeam外,現在還支持把bug錄到開源的Bugzilla(看來金融危機下,開源的東西開始被重視起來了)。
文章來源于領測軟件測試網 http://www.kjueaiud.com/