摘 要:介紹黑盒測試的方法,對手工測試的不足以及自動化測試的特點進行研究。以XCRW18型貨車標簽編程器軟件(廠礦企業版)寫標簽數據測試為例,進行了測試問題的分析、測試用例的設計,并用VBScript編寫自動化腳本,在QTP平臺下實現了黑盒測試中的軟件測試自動化,不但節省了人力,而且提高了測試的效率和可信度。
關鍵詞:黑盒測試;自動化測試;測試用例;XCRW18型貨車標簽編程器軟件
中圖分類號:TP311.5 文獻標識碼:B 文章編號:1004373X(2008)1809003
Application of Software Test Automation in Blackbox Testing
YANG Dehong
(Invengo Information Technology Co.Ltd.,Shenzhen,518057,China)
Abstract:This paper introduces the technique of blackbox testing.The shortcoming of manual test and the characteristic of test automation are studied.The programming to tag testing of XCRW18 series freighttrain tag programmer software(mineral plant version)is introduced as an example of the method.The test object is analyzed,the test cases are designed,and software test automation in blackbox testing implemented with QTP is described in VBScript.It not only saves human resource,but also enhances efficiency of the test.
Keywords:blackbox testing;test automation;test case;XCRW18 series freighttrain tag programmer software
黑盒測試把被測對象看作一個不能打開的黑盒子,在完全不考慮其內部結構和內部特性的情況下,測試其是否能適當地接收輸入數據并產生正確地輸出信息,并且保持外部信息的完整性[1]。黑盒測試在軟件測試中占有重要的地位,但常規的手工黑盒測試,在軟件測試尤其是大中型軟件測試中不但測試效率和覆蓋率低下,而且測試的穩定性和可靠性差。本文在XCRW18型貨車標簽編程器軟件(廠礦企業版)黑盒測試中有效地運用了自動化測試技術,較好解決了上述問題。
1 黑盒測試常用技術與方法
黑盒測試方法主要應用于功能和性能方面的測試,其常用的技術和方法有:
(1) 邊界值分析方法:邊界值分析方法的基本思想是使用最小值(min)、略高于最小值(min+)、正常值(nom)、略低于最大值(max-)、最大值(max)處取輸入變量值。如果要測試被測對象的健壯性除了變量的5個邊界值外,還要通過采用一個超過最大值(max+)和一個略小于最小值(min-)的取值,看看超過極值時系統會有什么反應。如果被測對象是多個獨立變量的函數,這些變量受物理量的限制,則很適合邊界值分析。
(2) 等價類劃分法:把所有可能輸入數據劃分成若干個等價類,然后每類中抽取一組既有代表性,又可能發現程序中錯誤的數據作為測試數據,基于此測試的方法就稱為等價類劃分法。
(3) 全對偶設計方法:全對偶是在全組合結果基礎上進行優化,把其中有效的用例篩選出來,以達到采用最小的測試用例集,覆蓋最大測試域的測試效果,其核心思想就是測試用例的任意2個變量至少在測試結果里出現一次[2]。
2 軟件測試自動化技術
2.1 測試自動化原理和方法
軟件測試自動化是相對手工測試而存在的,主要是通過軟件測試工具、腳本等來實現,具有良好的可操作性、可重復性和高效性等特點。下面簡單介紹測試自動化的主要原理和方法[1]:
(1) 捕獲和回放:捕獲和回放是一種黑盒測試的自動化方法。捕獲和回放一般步驟如下:首先將用戶每一步操作都記錄下來;其次將所有記錄轉換為一種腳本語言描述的過程,以模擬用戶的操作;然后回放時將腳本語言所描述的過程轉換為屏幕上的操作;最后將被測系統的輸出記錄下來與預先給定的標準結果比較。該方法比較適合在迭代開發過程中進行回歸測試,可以大大減少黑盒測試的工作量。
(2) 腳本技術:腳本是一組測試工具執行的指令集合,可以直接用腳本語言編寫也可以通過錄制測試的操作產生,然后對產生的腳本進行加強。后者可以減少腳本編程的工作量。腳本技術不僅可以在功能測試中模擬用戶的操作,然后進行比較,而且可以在性能、負載測試上虛擬用戶同時進行相同或者不同的操作,給系統或服務器足夠的數據、操作,以檢驗系統或服務器的響應速度、數據吞吐能力等。
2.2 測試自動化特點
相比手工測試,測試自動化有以下幾個特點[4]:
(1) 可以對程序的新版本自動執行回歸測試。這是測試自動化的最主要的任務。在需要頻繁修改大量程序的環境中,自動化進行回歸測試的開銷是最小的。
(2) 可以執行更多更頻繁的測試。自動化測試的一個特點是可以在較短的時間內進行更多的測試。
(3) 可以執行一些手工測試困難或不可能進行的測試。如對于200個用戶的聯機系統,用手工進行并發操作的測試幾乎是不可能的,但自動測試工具可以模擬來自200個用戶的輸入??蛻舳擞脩敉ㄟ^定義可以自動回放的測試,隨時都可以運行用戶腳本,即使是不了解整個商業應用復雜內容的技術人員也可以勝任。
(4) 可以更好地利用資源。將繁瑣的任務自動化,如重復輸入相同的測試輸入,可以提高準確性和測試人員的積極性,將測試人員解脫出來轉而投入更多精力設計更好的測試用例。并且自動化測試可以不停地進行測試,可以利用整夜或周末空閑的機器執行自動測試,有效地利用了計算機的資源。
(5) 測試具有一致性和可重復性。測試自動化可以重復進行多次相同的測試,因此可以獲得測試的一致性,這在手工測試中是很難保證的。有些測試可能在不同的硬件配置下執行,使用不同的操作系統或不同的數據庫,此時要求多平臺產品的跨平臺質量的一致性,這在手工測試的情況下很難做到。
(6) 測試的重用性。自動化測試的測試用例經過一次執行之后,在以后的測試中可以不斷重用而無需人工參與,這一點在手工測試中是無法做到的。
(7) 更快地將軟件推向市場。一旦一系列的測試已經被自動化,可以比手工測試更快地重復執行,大大縮短了測試時間。
(8) 增加軟件信任度。一旦得知軟件通過強有力的自動測試后,軟件發布時對其的信任度也會提高。
3 測試自動化應用實例
3.1 寫標簽數據的測試
本例(見圖1)主要測試寫標簽數據中“屬性”、“車種”、“車型”、“車號”、“換長”、“制造廠”、“制造時間”設置為不同值時是否能正常寫入標簽信息。這幾個變量值都有范圍的限制。

其中,屬性的代碼必須為“!”;車種代碼由1位大寫字母組成;車型代碼由5位大寫字母和數字組合而成,實際字符代碼左邊對齊,余下的域由空格填齊;車號代碼由7位字母加數字表示,第1位為字母Q(大寫),實際數字編碼由右邊對齊,左邊余下的域由“0”填齊;換長由2位數字表示,范圍為0.0~9.9;制造廠由1位代碼表示,范圍為A~Z和0~9;制造時間由3位數字和字母表示,前2位為數字,表示年的十位和個位,后1位表示月份,范圍為1~9和A~C。
結合邊界值分析方法和等價類方法,對TB/T24351993 《鐵路貨車車種車型車號編碼》中所有車型以及XCRW18型貨車標簽編程器軟件(廠礦企業版)提供的國鐵車型數據進行了等價類劃分,共劃分為14類,每類中抽取1個數據作為車型測試數據,基本覆蓋了所有車種(由于車型中首字母表示對應的車種,確定了車型就能得到此車型對應的車種,所以這里主要分析了車型數據)。換長測試數據選取5個,分別是0.0,0.1,1.2,9.8,9.9。車號測試數據選取5個,分別是Q000000,Q000001,Q459162,Q999998,Q999999。制造年選取5個,分別是00年、01年、49年、98年、99年。制造月選取5個,分別是01月(1)、02月(2)、10月(A)、11月(B)、12月(C)。制造廠選取10個,分別是齊齊哈爾車輛廠(A)、哈爾濱車輛廠(B)、四方機車車輛廠(K)、內蒙一機廠(Y)、重慶鑄鍛廠(Z)、晉西機械廠(0)、波蘭廠(1)、克留柯夫廠(4)、預留1(8)、預留2(9)。如圖2所示。(注:括號內為寫入標簽內的信息)
通過以上邊界值分析和等價類劃分(主要考慮了有效等價類)后,確定了各變量值的取值個數,再通過全對偶設計方法就可以設計相應的測試用例,根據全對偶算法[2]得知可以設計140個測試用例,如圖3所示。
在每一個測試用例中,寫標簽數據的每一個變量值設置操作過程都相同,其他測試用例的執行是一個簡單的機械重復過程。這類情況非常適合自動化測試。

在采用自動化測試時,只需手工完成一個測試用例,用測試工具(如:Mercury QuickTest Professional)捕獲其操作過程并錄制成腳本,然后對錄制的腳本進行修改。修改后的核心腳本代碼(基于VBScript語言)如下:
… ′其他初始化代碼
k=DataTable.GetSheet (2).GetRowCount
For j=1 to k ′循環執行140個測試用例
VbWindow(\"frmMain\").VbComboBox(\"Combo6\").Select DataTable(\"車種\",dtLocalSheet) ′參數化車種
VbWindow(\"frmMain\").VbComboBox(\"Combo2\").Select DataTable(\"車型\",dtLocalSheet) ′參數化車型
VbWindow(\"frmMain\").ActiveX(\"MaskEdBox\").Type DataTable(\"換長\",dtLocalSheet) ′參數化換長
VbWindow(\"frmMain\").VbComboBox(\"Combo3\").Select DataTable(\"制造廠\",dtLocalSheet)′參數化制造廠
′參數化制造時間(合并了制造年月)
VbWindow(\"frmMain\").AcxCalendar(\"DTPicker\").SetDate DataTable(\"制造時間\",dtLocalSheet)
VbWindow(\"frmMain\").ActiveX(\"MaskEdBox_2\").Type DataTable(\"車號\",dtLocalSheet)′參數化車號
…
′清理寫標簽失敗時彈出的對話框
Dim ErrorWin
′創建對象名為ErrorWin的對象
Set ErrorWin=description.Create()
′對象屬性及值
ErrorWin( \"regexpwndtitle\").value=\"標簽編程器\"
Set child=desktop.ChildObjects (ErrorWin)
For i=1 to child.count
child(i-1).close′循環尋找ErrorWin對象,依次關閉
next
…
VbWindow(\"frmMain\").ActiveX(\"SBarCtrl\").Check CheckPoint(\"寫標簽成功\")′檢查是否寫標簽數據成功
…
DataTable.SetNextRow
Next
VbWindow(\"frmMain\").Close ′關閉測試對象
在腳本編寫完之后,只需將腳本重放就可以自動完成其他測試用例。在后期做回歸測試時,也只需將該腳本重放即可,而不需要做簡單重復且無創意的工作。
3.2 應用實例總結
本例中綜合運用3種黑盒測試方法設計高效的測試用例。在大中型軟件測試中,類似“寫標簽數據”的測試很多。當對其進行回歸測試時,采用手工方式工作量會非常大,不但會浪費人力物力而且會大大降低測試人員的積極性。相反,如果進行自動化測試,每一次回歸測試只需要將原來編寫的腳本重放一遍,非常方便。
4 結 語
軟件測試在軟件開發中具有重要地位,黑盒測試在軟件測試中也是舉足輕重的。將軟件測試自動化方法有效地應用到XCRW18型貨車標簽編程器軟件(廠礦企業版)黑盒測試中,不但節省了人力且提高了測試的效率和可信度。
參 考 文 獻
[1]朱少民.軟件測試方法與技術[M].北京:清華大學出版社,2005.
[2]文俊浩,朱燦,張楊.基于全對偶算法的自動化測試方法[J].重慶大學學報,2005,28(10):5961.
[3]Mark Fewster,Dorothy Graham.軟件測試自動化技術及實例詳解[M].舒智勇,譯.北京:電子工業出版社,2000.
[4]Paul C.Jorgensen.軟件測試[M].韓柯,杜旭濤,譯.北京:機械工業出版社,2003.
[5]TB/T 24351993,鐵路貨車車種車型車號編碼[S].2003.
[6]劉文,周群,張建軍.關于軟件測試\\ .現代電子技術,2004,30(14 ):5759.
作者簡介 楊德紅 男,1983年出生,云南大理人,工學學士,畢業于合肥工業大學,深圳市遠望谷信息技術股份有限公司軟件測試工程師。研究方向為軟件測試。