圖 2. 自動化測試環境框圖

用一臺運行 Red Hat Enterprise Linux 系統的 x Server 作為 Test console,上面安裝 IBM Rational Build Forge 用于測試的執行和管理。Test console 通過以太網絡與各個 server,switch,physical-layer switch 和 storage 進行通信,包括測試腳本的傳送,測試命令的信息交互。
這里說明一個測試用例,從而講述一個典型測試過程!爸鳈C和光纖交換機之間的光纖斷開測試”:
Test console 發命令到所有的主機,讓每個主機發現存儲磁盤,分區,格式化文件系統,mount 或者分 windows 盤符,配置 IO 程序等;然后檢查各個被測應用程序以及系統的運行狀態,把結果返回 Test console;
Test console 發命令到所有的光纖交換機,讓每個光纖交換機檢查自身當前的運行狀態,然后返回結果到 Test console;
Test console 發命令到所有的存儲,讓每個存儲機器檢查自身當前的運行狀態,然后返回結果到 Test console;
Test console 在保證所有主機,交換機和存儲設備都進入要求的測試狀態后,開始進入測試,否則退出;
Test console 發命令讓每個 physical-layer switch 開始進行相關的光纖連接的斷開,然后等待一定的時間,再合上;
Test console 發命令到所有的主機,檢測它們的狀態,等待所有的主機都恢復正常;
重復 5、6 兩步,測試持續 24 小時,完成。
可見,在這樣的自動化測試過程中,很多次需要 Test console 和幾十個或者幾百個機器進行命令交互,檢查狀態或者執行任務。這些操作當然可以是一個系統接著一個系統的執行;但是大多數任務是可以并發的,或者是可以同時進行從而提高測試效率的,比如同時訪問多個主機去啟動 IO 程序、檢查機器狀態,在登錄存儲上執行一個腳本的同時在多個主機上面執行一些應用程序,同時登錄所有的光纖交換機執行一些配置命令等。
另外,Test console 和被測系統(Server、Switch、Storage 等)之間的命令交互操作,需要使用 Perl Expect 模塊,或其它基于 Expect 的模塊例如 Perl::SSH::Expect, Perl::Telnet::Expect 等。很可惜,Expect 模塊并不是線程安全的。
顯然,這就需要應用 Perl 的多進程技術到自動化測試中。
應用 Perl 多進程技術到自動化測試腳本
在自動化測試中,利用 Rational Build Forge 作為測試管理和監控工具,90% 以上的測試腳本都采用 Perl 腳本。采用了模塊化編程,并大量使用 CPAN 提供的 module。由于很多 module 都不是線程安全的,同時為了提高腳本開發效率,也會在一個腳本中直接調用另外一個腳本,所以選擇在自動化測試框架中應用 Perl 多進程。
文章來源于領測軟件測試網 http://www.kjueaiud.com/