成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

Perl多進(jìn)程

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

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

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

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

自動(dòng)化測試場景介紹

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

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

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

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


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

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


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


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

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

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

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

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

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

【編輯推薦】

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

 

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

2010-07-14 11:14:48

Perl多進(jìn)程

2010-07-15 13:21:46

Perl多進(jìn)程

2010-07-26 10:02:49

Perl多進(jìn)程

2011-04-18 12:52:37

自動(dòng)化測試功能測試軟件測試

2010-07-15 12:51:17

Perl多進(jìn)程

2010-07-26 09:45:09

Perl多進(jìn)程

2012-03-30 15:52:51

ibmdw

2019-07-18 11:00:45

自動(dòng)化運(yùn)維測試

2024-05-06 08:08:31

2024-01-08 13:31:00

Rust自動(dòng)化測試

2010-07-15 13:13:21

Perl多進(jìn)程

2024-11-01 15:05:12

2021-06-30 19:48:21

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

2021-06-26 07:40:21

前端自動(dòng)化測試Jest

2010-09-08 15:25:09

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

2023-05-18 14:01:00

前端自動(dòng)化測試

2021-02-25 11:19:37

谷歌Android開發(fā)者

2011-08-16 15:36:47

iPhone應(yīng)用測試

2022-11-24 13:43:40

2021-04-22 15:46:42

物聯(lián)網(wǎng)智能辦公IoT
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 黑人精品欧美一区二区蜜桃 | 一区二区三区四区不卡视频 | 日韩日b视频 | avmans最新导航地址 | 在线视频亚洲 | 欧美精品乱码久久久久久按摩 | 日本精品一区二区三区在线观看视频 | 欧美1区2区 | 一二三区视频 | 日韩视频一区在线观看 | 在线观看国产 | 亚洲最大成人综合 | 精品国产精品三级精品av网址 | 欧美大片久久久 | 麻豆精品国产免费 | 中文字幕人成人 | 综合久久av | 久久国产秒 | 成人h免费观看视频 | 亚洲一区二区三区在线免费观看 | 国产不卡视频在线 | 狠狠撸在线视频 | 欧美1区 | 午夜精品网站 | 蜜桃av一区二区三区 | 日韩欧美三区 | 在线日韩| 男人的天堂在线视频 | 精品日韩一区二区 | 天天综合久久 | 久久久久久久夜 | 亚洲精品专区 | 亚洲日日操| 日韩欧美三区 | 成人午夜精品 | www.久久久久久久久久久 | 久久免费视频2 | h片在线免费看 | 91免费在线播放 | 亚洲综合免费 | 欧美一区二区三区在线观看视频 |