自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Perl多進程在自動化測試場景中應(yīng)用

開發(fā) 架構(gòu) 自動化
Perl多進程的概念你是否熟悉,Perl多進程的用戶接口是 fork() 函數(shù)以及對系統(tǒng) fork 函數(shù)封裝的一些 module。希望本文的介紹能讓你有所收獲。

我們在使用 Perl 語言編程時,如果一個任務(wù)的某一個段可以或者需要并發(fā)很多執(zhí)行,那么我們就會使用 Perl 的Perl多進程編程,例如同時向數(shù)據(jù)庫遞交多個記錄的查詢,同時完成多個系統(tǒng)信息的收集等等。

Perl多進程

Perl 語言是一種非常強大的腳本語言,其廣泛應(yīng)用于系統(tǒng)維護,CGI(Common Gateway Interface)編程,數(shù)據(jù)庫編程和自動化測試中。
多任務(wù)和并發(fā)處理一度被看作是判定優(yōu)異操作系統(tǒng)的一個特性;同樣任何優(yōu)秀從而流行的編程語言都會有并發(fā)的應(yīng)用,而且都有各自的實現(xiàn)方法。Perl 最開始在并發(fā)方面的應(yīng)用就是Perl多進程。

Perl多進程的用戶接口是 fork() 函數(shù)以及對系統(tǒng) fork 函數(shù)封裝的一些 module。我們在使用 Perl 語言編程時,如果一個任務(wù)的某一個段可以或者需要并發(fā)很多執(zhí)行,那么我們就會使用 Perl 的Perl多進程編程,例如同時向數(shù)據(jù)庫遞交多個記錄的查詢,同時完成多個系統(tǒng)信息的收集等等。
Perl 的Perl多進程是這樣實現(xiàn)的:主進程每 fork 一個子進程,會把當前(主進程的)內(nèi)存空間的所有變量都復(fù)制一份傳到新的進程里面,達到數(shù)據(jù)共享的目的。此外,主進程和子進程可以通過信號、管道等來通信。

在處理并發(fā)的方案中,Perl多進程依靠內(nèi)存空間獨享提供了優(yōu)秀的容錯性和健壯性。一個Perl多進程的系統(tǒng)不會由于其中一個進程的狀態(tài)不良而崩潰,每個進程都相對獨立地運作,很少會相互影響。
內(nèi)存空間獨享也造就了Perl多進程不可避免的劣勢:資源負荷以及通信復(fù)雜,對于 Perl 來說,每個子進程都可以看作主進程的拷貝,這多少有些內(nèi)存浪費,而且主進程的關(guān)鍵變量如果是“淺復(fù)制”到子進程的話,將會帶來一些意想不到的錯誤。另外,進程的創(chuàng)建和回收會帶來許多額外的負載,因此應(yīng)當盡量避免頻繁地創(chuàng)建進程。

Perl多進程之間的通信方式有 socket,管道,信號量等。在 Linux 平臺上,對于進程間大量信息的交互情況,最常用的是文件;這在用戶空間進程和系統(tǒng)內(nèi)核空間進程之間的通信中的最為常用。
在談起 PerlPerl多進程的時候,不可避免的要說說它與 Perl 多線程的關(guān)系。

自動化測試場景介紹

很多大型IT公司都以版本控制來發(fā)布一系列的企業(yè)級系統(tǒng)產(chǎn)品,為此,周期性地更新產(chǎn)品的每個新版本和已有產(chǎn)品版本間的兼容性和互操作性測試結(jié)果,對客戶而言,尤為重要。而這類測試由于重復(fù)性強,工作量大,所以經(jīng)常采用自動化。下面舉一個自動化測試中的常見場景例子。

假設(shè)有一個團隊從事企業(yè)級產(chǎn)品系統(tǒng)之間的兼容性和互操作性測試,需要在以1個月為周期的時間內(nèi)完成一組配置的兼容性測試,團隊成員很少,但是負責的設(shè)備卻很多,往往每個人需要負責數(shù)十臺甚至數(shù)百臺機器,那么就必須采用多任務(wù)并發(fā)處理的自動化測試。該團隊測試存儲網(wǎng)絡(luò)中的服務(wù)器,交換機和存儲之間的互操作性。服務(wù)器包括很多個硬件平臺,操作系統(tǒng)包括Linux,Unix,Windows和VMware等,光纖交換機、主機總線適配器卡和存儲產(chǎn)品都涵蓋多個廠商品牌。這個團隊就需要建立一個端到端的自動化測試流程來支撐其測試任務(wù)。

下面是一個典型測試環(huán)境的簡化圖示。

圖1.測試硬件環(huán)境概覽圖


其中,服務(wù)器有不同CPU架構(gòu)的眾多品牌;它們上面運行的測試操作系統(tǒng)有Linux、Windows、VMware和各類虛擬機。物理層的光纖交換機(FCPhysicalLayerSwitch)是測試工具儀器,用于控制光纖的鏈路通斷等異常測試。

下面是Perl多進程自動化測試環(huán)境框圖。


圖2.自動化測試環(huán)境框圖


用一臺運行RedHatEnterpriseLinux系統(tǒng)的xServer作為Testconsole,上面安裝IBMRationalBuildForge用于測試的執(zhí)行和管理。Testconsole通過以太網(wǎng)絡(luò)與各個server,switch,physical-layerswitch和storage進行通信,包括測試腳本的傳送,測試命令的信息交互。

這里說明一個測試用例,從而講述一個典型測試過程。“主機和光纖交換機之間的光纖斷開測試”:

Testconsole發(fā)命令到所有的主機,讓每個主機發(fā)現(xiàn)存儲磁盤,分區(qū),格式化文件系統(tǒng),mount或者分windows盤符,配置IO程序等;然后檢查各個被測應(yīng)用程序以及系統(tǒng)的運行狀態(tài),把結(jié)果返回Testconsole;
Testconsole發(fā)命令到所有的光纖交換機,讓每個光纖交換機檢查自身當前的運行狀態(tài),然后返回結(jié)果到Testconsole;
Testconsole發(fā)命令到所有的存儲,讓每個存儲機器檢查自身當前的運行狀態(tài),然后返回結(jié)果到Testconsole;
Testconsole在保證所有主機,交換機和存儲設(shè)備都進入要求的測試狀態(tài)后,開始進入測試,否則退出;
Testconsole發(fā)命令讓每個physical-layerswitch開始進行相關(guān)的光纖連接的斷開,然后等待一定的時間,再合上;
Testconsole發(fā)命令到所有的主機,檢測它們的狀態(tài),等待所有的主機都恢復(fù)正常;
重復(fù)5、6兩步,測試持續(xù)24小時,完成。

可見,在這樣的自動化測試過程中,很多次需要Testconsole和幾十個或者幾百個機器進行命令交互,檢查狀態(tài)或者執(zhí)行任務(wù)。這些操作當然可以是一個系統(tǒng)接著一個系統(tǒng)的執(zhí)行;但是大多數(shù)任務(wù)是可以并發(fā)的,或者是可以同時進行從而提高測試效率的,比如同時訪問多個主機去啟動IO程序、檢查機器狀態(tài),在登錄存儲上執(zhí)行一個腳本的同時在多個主機上面執(zhí)行一些應(yīng)用程序,同時登錄所有的光纖交換機執(zhí)行一些配置命令等。

另外,Testconsole和被測系統(tǒng)(Server、Switch、Storage等)之間的命令交互操作,需要使用PerlExpect模塊,或其它基于Expect的模塊例如Perl::SSH::Expect,Perl::Telnet::Expect等。很可惜,Expect模塊并不是線程安全的。

顯然,這就需要應(yīng)用Perl的Perl多進程技術(shù)到自動化測試中。

【編輯推薦】

  1. 術(shù)語匯編 Perl多進程概念詳解
  2. 常用Perl命令行參數(shù)應(yīng)用介紹
  3. 實例解析Perl多進程技術(shù)的應(yīng)用
  4. Perl命令行用法解析
  5. Perl多進程及其和多線程的關(guān)系解析

 

責任編輯:佚名 來源: ibm.com
相關(guān)推薦

2010-07-14 11:14:48

Perl多進程

2010-07-15 13:21:46

Perl多進程

2010-07-26 10:02:49

Perl多進程

2011-04-18 12:52:37

自動化測試功能測試軟件測試

2010-07-15 12:51:17

Perl多進程

2010-07-26 09:45:09

Perl多進程

2012-03-30 15:52:51

ibmdw

2019-07-18 11:00:45

自動化運維測試

2024-05-06 08:08:31

2024-01-08 13:31:00

Rust自動化測試

2010-07-15 13:13:21

Perl多進程

2024-11-01 15:05:12

2021-06-30 19:48:21

前端自動化測試Vue 應(yīng)用

2021-06-26 07:40:21

前端自動化測試Jest

2010-09-08 15:25:09

自動化測試技術(shù)網(wǎng)站鏈接測試

2023-05-18 14:01:00

前端自動化測試

2021-02-25 11:19:37

谷歌Android開發(fā)者

2011-08-16 15:36:47

iPhone應(yīng)用測試

2023-09-08 20:52:02

數(shù)字孿生測試驅(qū)動開發(fā)

2012-11-16 09:16:26

自動化運維
點贊
收藏

51CTO技術(shù)棧公眾號