国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

實例解析Perl多進(jìn)程技術(shù)在自動化測試中的應(yīng)用

開發(fā) 架構(gòu) 自動化
在IT產(chǎn)品系統(tǒng)測試的自動化項目中,經(jīng)常有并行處理多個子任務(wù)的需求,為了提高測試效率,就需要用到Perl多進(jìn)程或者多線程編程。

本文和大家重點討論一下Perl多進(jìn)程技術(shù)在自動化測試中的應(yīng)用,主要包括Perl多Perl線程介紹,自動化測試場景介紹和應(yīng)用Perl多進(jìn)程技術(shù)到自動化測試腳本三大部分內(nèi)容,希望通過本文的介紹你對Perl多線程技術(shù)有深刻的認(rèn)識。

Perl多進(jìn)程技術(shù)在自動化測試中的應(yīng)用

在IT產(chǎn)品系統(tǒng)測試的自動化項目中,經(jīng)常有并行處理多個子任務(wù)的需求,為了提高測試效率,就需要用到Perl多進(jìn)程或者多Perl線程編程。文章介紹了Perl多進(jìn)程的用法和適用場景,以及Perl多進(jìn)程和多Perl線程的關(guān)系。同時結(jié)合企業(yè)級IT產(chǎn)品系統(tǒng)測試的自動化特點,介紹了Perl多進(jìn)程在這方面的應(yīng)用。

Perl多進(jìn)程

Perl語言是一種非常強大的腳本語言,其廣泛應(yīng)用于系統(tǒng)維護(hù),CGI(CommonGatewayInterface)編程,數(shù)據(jù)庫編程和自動化測試中。

多任務(wù)和并發(fā)處理一度被看作是判定優(yōu)異操作系統(tǒng)的一個特性;同樣任何優(yōu)秀從而流行的編程語言都會有并發(fā)的應(yīng)用,而且都有各自的實現(xiàn)方法。Perl最開始在并發(fā)方面的應(yīng)用就是多進(jìn)程。

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

Perl的多進(jìn)程是這樣實現(xiàn)的:主進(jìn)程每fork一個子進(jìn)程,會把當(dāng)前(主進(jìn)程的)內(nèi)存空間的所有變量都復(fù)制一份傳到新的進(jìn)程里面,達(dá)到數(shù)據(jù)共享的目的。此外,主進(jìn)程和子進(jìn)程可以通過信號、管道等來通信。

在處理并發(fā)的方案中,多進(jìn)程依靠內(nèi)存空間獨享提供了優(yōu)秀的容錯性和健壯性。一個多進(jìn)程的系統(tǒng)不會由于其中一個進(jìn)程的狀態(tài)不良而崩潰,每個進(jìn)程都相對獨立地運作,很少會相互影響。

內(nèi)存空間獨享也造就了多進(jìn)程不可避免的劣勢:資源負(fù)荷以及通信復(fù)雜,對于Perl來說,每個子進(jìn)程都可以看作主進(jìn)程的拷貝,這多少有些內(nèi)存浪費,而且主進(jìn)程的關(guān)鍵變量如果是“淺復(fù)制”到子進(jìn)程的話,將會帶來一些意想不到的錯誤。另外,進(jìn)程的創(chuàng)建和回收會帶來許多額外的負(fù)載,因此應(yīng)當(dāng)盡量避免頻繁地創(chuàng)建進(jìn)程。

多進(jìn)程之間的通信方式有socket,管道,信號量等。在Linux平臺上,對于進(jìn)程間大量信息的交互情況,最常用的是文件;這在用戶空間進(jìn)程和系統(tǒng)內(nèi)核空間進(jìn)程之間的通信中的最為常用。

在談起Perl多進(jìn)程的時候,不可避免的要說說它與Perl多Perl線程的關(guān)系。

Perl的多Perl線程和多Perl線程的關(guān)系

如果我們需要執(zhí)行一些各異的小任務(wù),他們可能數(shù)量較多,但生存周期都比較短,或者他們可能共享大量數(shù)據(jù),只有小部分的變量是自身的。這個時候,很自然就想到了多Perl線程。

從Perl5.005開始,多Perl線程的概念被引入Perl語言了;不過僅僅是概念而已。在Perl5.005中,Perl線程模型默認(rèn)共享所有的數(shù)據(jù),而且數(shù)據(jù)的共享訪問需要明確的同步操作。這個模型被稱為“5005threads”,其實就是多進(jìn)程,只不過換了個“多Perl線程”的概念。

到了Perl5.6,一個新的Perl線程模型引入了,各個Perl線程的數(shù)據(jù)默認(rèn)是私有的,而且共享數(shù)據(jù)的訪問需要顯式地調(diào)用相關(guān)的函數(shù)來保證同步。這個模型稱為“ithreads”。在Perl5.6中,ithreads模型并沒有提供一些API供用戶調(diào)用,僅作為一個內(nèi)部的API供擴展使用。

到了Perl5.8,ithreads模型通過Perl的threads模塊供用戶使用,但是Perl5.8同時也保留了5005threads模型。這里,用戶可以通過配置來選擇使用哪一種模型。

對于最新的Perl5.10,5005threads模型就不再使用了,已從Perl解釋器中移除了。所以要使用真正意義的、穩(wěn)定的多Perl線程模塊,建議使用Perl5.10解釋器。2009年3月release的SLES11的安裝包已經(jīng)默認(rèn)使用Perl5.10了。至此,多進(jìn)程和多Perl線程應(yīng)該是區(qū)別開來了。

Perl的threads模塊提供的多Perl線程,應(yīng)用于我們經(jīng)典的多Perl線程編程例如SocketServer編程、硬件驅(qū)動或者適配層編程十分有效,然而對于非Perl線程安全的一些函數(shù)或者模塊調(diào)用就無能為力了,會導(dǎo)致不可預(yù)知的錯誤或者主進(jìn)程的吊死、崩潰。#p#

自動化測試場景介紹

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

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

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

 

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

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

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

 

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

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

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

Testconsole發(fā)命令到所有的主機,讓每個主機發(fā)現(xiàn)存儲磁盤,分區(qū),格式化文件系統(tǒng),mount或者分windows盤符,配置IO程序等;然后檢查各個被測應(yīng)用程序以及系統(tǒng)的運行狀態(tài),把結(jié)果返回Testconsole;
Testconsole發(fā)命令到所有的光纖交換機,讓每個光纖交換機檢查自身當(dāng)前的運行狀態(tài),然后返回結(jié)果到Testconsole;
Testconsole發(fā)命令到所有的存儲,讓每個存儲機器檢查自身當(dāng)前的運行狀態(tài),然后返回結(jié)果到Testconsole;
Testconsole在保證所有主機,交換機和存儲設(shè)備都進(jìn)入要求的測試狀態(tài)后,開始進(jìn)入測試,否則退出;
Testconsole發(fā)命令讓每個physical-layerswitch開始進(jìn)行相關(guān)的光纖連接的斷開,然后等待一定的時間,再合上;
Testconsole發(fā)命令到所有的主機,檢測它們的狀態(tài),等待所有的主機都恢復(fù)正常;
重復(fù)5、6兩步,測試持續(xù)24小時,完成。
可見,在這樣的自動化測試過程中,很多次需要Testconsole和幾十個或者幾百個機器進(jìn)行命令交互,檢查狀態(tài)或者執(zhí)行任務(wù)。這些操作當(dāng)然可以是一個系統(tǒng)接著一個系統(tǒng)的執(zhí)行;但是大多數(shù)任務(wù)是可以并發(fā)的,或者是可以同時進(jìn)行從而提高測試效率的,比如同時訪問多個主機去啟動IO程序、檢查機器狀態(tài),在登錄存儲上執(zhí)行一個腳本的同時在多個主機上面執(zhí)行一些應(yīng)用程序,同時登錄所有的光纖交換機執(zhí)行一些配置命令等。

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

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


應(yīng)用Perl多進(jìn)程技術(shù)到自動化測試腳本

在自動化測試中,利用RationalBuildForge作為測試管理和監(jiān)控工具,90%以上的測試腳本都采用Perl腳本。采用了模塊化編程,并大量使用CPAN提供的module。由于很多module都不是Perl線程安全的,同時為了提高腳本開發(fā)效率,也會在一個腳本中直接調(diào)用另外一個腳本,所以選擇在自動化測試框架中應(yīng)用Perl多進(jìn)程。

自動化測試腳本使用多進(jìn)程大致分為兩種情況。一種是Testconsole需要同時操作十幾個設(shè)備,例如用于主機和存儲互連的光纖交換機,用于光纖物理層斷開測試的交換機APCON等。這類測試的特點是需要同時操作10幾個或者20幾個的測試對象,對它們的操作是配置操作,而且配置腳本都會成功,主進(jìn)程只需要所有子進(jìn)程執(zhí)行完畢就認(rèn)為所有子任務(wù)已經(jīng)完成,然后可以進(jìn)行后續(xù)的操作。因此采用一種較為簡單的多進(jìn)程編程方式。下面是針對這種情況的多進(jìn)程處理的代碼示例。

清單1.Perl多進(jìn)程處理的代碼     
 

  1. our@cmd=("./apcon_2052.exp119.11.217.27A15B15",  
  2. "./apcon_2058.exp119.11.217.65adminteamw0rkA05A06",  
  3. "./apcon_2052.exp119.11.217.27B09D09");  
  4. our$zombies=0;  
  5. our$kid_proc_num=0;  
  6.  
  7. $SIG{CHLD}=sub{$zombies++};  
  8.  
  9. for(my$i=0;$i<@cmd;$i++){  
  10. my$pid=fork();  
  11. if(!defined($pid)){exit1;}  
  12. unless($pid){  
  13. system"$cmd[$i]";  
  14. exit0;  
  15. }  
  16. $kid_proc_num++;  
  17. }  
  18.  
  19. while(1){  
  20. if($zombies>0){  
  21. $zombies=0;  
  22. my$collect;  
  23. while(($collect=waitpid(-1,WNOHANG))>0){  
  24. $kid_proc_num--;  
  25. }  
  26. }  
  27. if($kid_proc_num==0){last;}  
  28. else{next;}  
  29. }  
  30.  

 


以上的代碼采用多進(jìn)程方式同時處理了對3個測試設(shè)備的配置操作,然后主進(jìn)程等待所有配置操作完成,再進(jìn)行后續(xù)的測試。

另外一種情況較為復(fù)雜,就是經(jīng)常需要針對數(shù)百個主機和存儲進(jìn)行配置、狀態(tài)查詢等,而且配置結(jié)果和查詢狀態(tài)需要返回主進(jìn)程處理,然后根據(jù)結(jié)果數(shù)據(jù)再決定如何繼續(xù)。對于這種情況,主進(jìn)程需要生成數(shù)百個子進(jìn)程,而且每個子進(jìn)程都有大量的信息返回給主進(jìn)程來處理。這樣處理數(shù)百個子進(jìn)程的生成:由于多進(jìn)程方式占用系統(tǒng)資源較多,因此設(shè)定一個允許主進(jìn)程同時運行的最多子進(jìn)程數(shù)目,然后在有子進(jìn)程結(jié)束時,主進(jìn)程再生成新的子進(jìn)程至所有的子任務(wù)完成。這樣處理主進(jìn)程和子進(jìn)程的通信和信息交互:由于測試Perl腳本運行平臺為Linux,它是帶有BSD風(fēng)格的POSIX兼容的系統(tǒng),會提供可靠的信號,所以仍然使用系統(tǒng)提供信號的來獲取子進(jìn)程結(jié)束的消息;對于子進(jìn)程的返回信息,采用為每個子進(jìn)程產(chǎn)生一個臨時文件用于存儲返回的所有信息,最后主進(jìn)程來處理這些文件從而獲取每個子任務(wù)的結(jié)果信息。如下是為這種情況設(shè)計的多進(jìn)程處理方式的軟件流圖。

 

圖3.軟件流圖

小結(jié)

根據(jù)常見的設(shè)備系統(tǒng)測試自動化平臺的特點和要求,把Perl的多進(jìn)程技術(shù)應(yīng)用到了測試腳本中,極大地提高了測試效率。

Perl多進(jìn)程已經(jīng)很長的發(fā)展歷史,而且應(yīng)用廣泛,技術(shù)成熟。多進(jìn)程在健壯性和容錯性方面表現(xiàn)更好,每個進(jìn)程都擁有獨立的內(nèi)存空間,并行的幾個進(jìn)程一般來說不會相互干擾;當(dāng)然,相應(yīng)的,多進(jìn)程的系統(tǒng)開銷也比較大,而且進(jìn)程間通信也變得復(fù)雜一些。妥善地處理多進(jìn)程生成和進(jìn)程間的通信,會很好地改善自動化測試的運行效率以及穩(wěn)定性。

【編輯推薦】

  1. Perl多線程的兩種實現(xiàn)方式
  2. Perl線程的生命周期
  3. Perl二維數(shù)組用法全程剖析
  4. 追溯Perl線程的歷史
  5. 學(xué)習(xí)筆記 深入剖析Perl線程的生命周期

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-07-26 09:53:08

Perl多進(jìn)程

2010-07-15 13:21:46

Perl多進(jìn)程

2010-07-15 13:13:21

Perl多進(jìn)程

2010-07-26 10:02:49

Perl多進(jìn)程

2019-07-18 11:00:45

自動化運維測試

2010-07-15 12:51:17

Perl多進(jìn)程

2011-04-18 12:52:37

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

2010-09-08 15:25:09

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

2024-05-06 08:08:31

2012-03-30 15:52:51

ibmdw

2024-01-08 13:31:00

Rust自動化測試

2010-07-15 15:54:10

Perl守護(hù)進(jìn)程

2010-07-26 09:45:09

Perl多進(jìn)程

2021-06-30 19:48:21

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

2010-07-26 14:06:43

Perl substr

2013-04-07 17:38:08

2021-06-26 07:40:21

前端自動化測試Jest

2023-09-26 11:18:53

樓宇自動化分項計量

2023-05-18 14:01:00

前端自動化測試

2012-11-16 09:16:26

自動化運維
點贊
收藏

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

亚洲国产精品传媒在线观看| 国产视频自拍一区| 日韩中文字幕视频| 国内外成人激情视频| 亚洲视频在线免费| 欧美激情一级二级| 阿v免费在线观看| 欧美手机在线视频| 亚洲高清国产精品| 视频二区欧美| 国产精品网站在线| 91精品婷婷色在线观看| 成人97在线观看视频| h片在线观看视频免费免费| 岛国大片在线播放| 亚洲茄子视频| 97超级碰碰| 老司机精品福利在线观看| 国产精品调教| 国产精品白丝在线| av在线免费观看国产| 天堂在线亚洲视频| 免费久久99精品国产自| 欧美~级网站不卡| 国产精品对白刺激久久久| 99久久夜色精品国产亚洲1000部| 亚洲一区二区久久久久久久| 亚洲东热激情| 亚洲在线www| 午夜在线a亚洲v天堂网2018| 中文字幕久精品免| 免费日韩av片| 国产精品久久久久久久久久久久| 国产精品xxxav免费视频| 精品日韩一区二区三区免费视频| 在线看片福利| 日韩亚洲欧美在线观看| 成人国产在线| 欧美性视频在线| 狼人天天伊人久久| 久精品国产欧美| 美国十次av导航亚洲入口| 日韩中文字幕久久| 成人在线免费小视频| 国产一区二区在线观看免费播放| 久久成人综合网| 日韩精品一区二区三区色欲av| 国产日韩欧美麻豆| 看黄色免费网站| 精品处破学生在线二十三| 操欧美女人视频| 日韩区国产区| 国产精品毛片大码女人| 久久精品视频91| 欧美日韩一区二区在线视频| 深夜福利一区| 3d蒂法精品啪啪一区二区免费| 蜜桃av一区二区三区| 久久久久久久久久久久久国产精品| 在线精品视频小说1| 91蝌蚪精品视频| 乱色588欧美| 亚洲高清三级视频| 日本午夜免费一区二区| 性欧美精品一区二区三区在线播放 | 97视频在线观看播放| 中文精品电影| 黄色91av| 91精品办公室少妇高潮对白| yy6080久久伦理一区二区| 免费久久久一本精品久久区| 午夜精品一区二区三区电影天堂 | 欧美日韩在线中文字幕| 久久青草福利网站| 国产成人亚洲综合a∨婷婷| 在线免费观看a视频| 国产欧美日韩精品在线观看| 亚洲一区二区三区不卡国产欧美| 成人性生交大片免费看在线播放| 久久99久久久久久久噜噜 | 免费日韩av电影| 欧美日韩高清一区二区三区| 菠萝蜜一区二区| 黄页网站在线观看| 国产精品久久久久免费a∨大胸| 亚洲一区在线观看视频| 影音先锋男人在线资源| 亚洲一区二区三区乱码| 亚洲成色999久久网站| 台湾亚洲精品一区二区tv| 羞羞在线观看网站| 99久久精品无码一区二区毛片| 国产精品国产自产拍在线| 日韩大片在线| 婷婷色在线资源| 91极品尤物在线播放国产| 美女久久久久久久| 亚洲国产三级在线| 亚洲激情偷拍| h片在线观看视频免费免费| 日本中文字幕片| 国产乱码精品一区二区三区中文| 精品一区二区免费看| 一个人看的www视频在线免费观看| 欧美精品99久久| 欧美在线一级视频| 粉嫩av一区二区三区| 亚洲ab电影| 日韩大尺度黄色| 国产黄色网页| 亚洲国产精品女人| 国产成人极品视频| 亚洲国产欧美一区二区三区同亚洲 | 免费观看久久久4p| 久久99国产成人小视频| a级网站在线播放| 久久视频这里有精品| 亚洲一区二区三区在线免费观看| 中文字幕不卡av| 91精品办公室少妇高潮对白| 美腿丝袜亚洲综合| 国产a久久精品一区二区三区| 成人影音在线| 欧美性videos| 国产精品久久久久7777| 精品久久久久久一区| 7878成人国产在线观看| 亚洲精品欧洲| 性欧美lx╳lx╳| 激情网站在线| 日韩a级作爱片一二三区免费观看| 免费不卡av在线| 欧美做爰性生交视频| 久久这里只有精品99| 欧美一区二区视频观看视频| 亚洲欧洲一区二区三区| 国产欧美日韩在线视频| 久久蜜桃av一区二区天堂| 国产美女精品人人做人人爽| 日本va欧美va瓶| 日本女人一区二区三区| 视频一区免费在线观看| yy6080久久伦理一区二区| 91在线视频| 在线观看完整版免费| 黄色av网站在线| 亚洲欧美自拍另类日韩| www.1024| 亚洲高清福利| 理论视频在线| 在线视频1区| 日韩av资源站| 免费在线观看的电影网站| 福利在线视频网站| av毛片在线看| 三级视频在线播放| 在线中文字幕观看| sese在线视频| 忘忧草在线www成人影院| 精品一区二区三区视频在线播放| 久久久久观看| 久久久久91| 99国产精品久久久| 亚洲一区av在线| 日韩av网站电影| 欧美亚洲在线观看| 看高清中日韩色视频| 欧美韩国日本在线| 成年人视频在线免费观看| 欧美黑人疯狂性受xxxxx野外| 经典三级久久| 国产伦精品一区二区三区视频 | 国产专区欧美专区| www亚洲国产| 中文字幕理伦片免费看| 水蜜桃在线视频| 综合日韩在线| 狠狠狠色丁香婷婷综合激情| 日韩高清在线不卡| 日本一区二区不卡视频| 中文字幕在线一区免费| 欧美精品一区二区高清在线观看| 69久久夜色精品国产69乱青草| 成人免费午夜电影| 亚洲国产一二三精品无码| 成人免费淫片95视频观看网站| 欧美人与动牲性行为| 精品三级在线观看视频| 丁香婷婷综合激情五月色| 欧美videossexotv100| 91精品国产综合久久香蕉最新版| ijzzijzzij亚洲大全| 欧美hdxxx| 亚洲区综合中文字幕日日| 中文字幕第一区综合| 久久久女人电视剧免费播放下载| 久久久com| 飘雪影院手机免费高清版在线观看 | 在线免费观看不卡av| 九九热99久久久国产盗摄|