国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于LINUX平臺(tái)的自動(dòng)化測(cè)試的研究與應(yīng)用

2009-09-30 06:18李金麗
今日科苑 2009年11期
關(guān)鍵詞:自動(dòng)化測(cè)試

李金麗

摘要:本文面向Linux平臺(tái)和平臺(tái)下不同類型應(yīng)用的特點(diǎn),研究了自動(dòng)化測(cè)試的技術(shù)和工具,并從功能測(cè)試和性能測(cè)試的角度對(duì)Linux平臺(tái)下測(cè)試工作的自動(dòng)化進(jìn)行7分析和說明。文中提供的方法和技術(shù)已經(jīng)成功應(yīng)用于上海中標(biāo)軟件有限公司服務(wù)器產(chǎn)品和桌面產(chǎn)品的測(cè)試工作中。

關(guān)鍵詞:Linux;自動(dòng)化測(cè)試;軟件應(yīng)用

引言

現(xiàn)代軟件規(guī)模的逐漸增加,使得軟件測(cè)試的工作量越來越大,同時(shí)軟件開發(fā)周期的縮短又要求盡量提高測(cè)試效率,而受開發(fā)資金的限制測(cè)試資源不可能大幅度增加,一切使得傳統(tǒng)的手工測(cè)試已經(jīng)無法滿足現(xiàn)代軟件開發(fā)的要求。另一方面,許多公司已經(jīng)把軟件測(cè)試作為保證軟件質(zhì)量、提高軟件可靠性的主要手段之一,花費(fèi)在軟件測(cè)試上的資源已經(jīng)占到整個(gè)軟件研發(fā)成本的50~60%,軟件測(cè)試能否按時(shí)完成已經(jīng)成為軟件能否按時(shí)交付的瓶頸。所有這一切都使得對(duì)軟件測(cè)試實(shí)施自動(dòng)化勢(shì)在必行。

目前,市場(chǎng)上自動(dòng)化測(cè)試工具不少,按用途可分為:功能測(cè)試工具,性能測(cè)試工具,測(cè)試管理工具等。就實(shí)現(xiàn)技術(shù)原理而言主要分為兩類:一類是捕捉/回放技術(shù),一類是編寫測(cè)試腳本技術(shù)。捕捉/回放技術(shù)的腳本由捕捉時(shí)自動(dòng)生成。捕捉階段,工具記錄用戶的一系列鼠標(biāo)點(diǎn)擊和鍵盤按鍵操作,并將這些操作轉(zhuǎn)化為腳本。回放時(shí)把這些腳本作為輸入在被測(cè)程序上執(zhí)行,根據(jù)執(zhí)行后的狀態(tài)信息和輸出結(jié)果與原始記錄的比對(duì)來判定是否存在差異。編寫腳本技術(shù)需要用戶以一個(gè)指定的腳本語言編寫測(cè)試腳本,對(duì)于測(cè)試腳本的維護(hù)、測(cè)試執(zhí)行的驅(qū)動(dòng)以及測(cè)試結(jié)果的統(tǒng)計(jì)等可由用戶自行實(shí)現(xiàn),也可以使用專門的測(cè)試工具或者測(cè)試框架幫助完成。通過測(cè)試自動(dòng)化的實(shí)施,可以使測(cè)試人員從大量的重復(fù)測(cè)試中解放出來。

在Linux平臺(tái)下進(jìn)行自動(dòng)化測(cè)試,可以使用的商業(yè)測(cè)試工具并不是很多,但是由于開源軟件產(chǎn)業(yè)的蓬勃發(fā)展,在各個(gè)開源社區(qū)維護(hù)的開源項(xiàng)目中提供了大量的、針對(duì)不同類型應(yīng)用以及不同類型測(cè)試的測(cè)試工具,這些工具可以滿足基本的自動(dòng)化測(cè)試需求,同時(shí)可以結(jié)合具體應(yīng)用的特點(diǎn),通過進(jìn)一步改造工具來完成測(cè)試自動(dòng)化的目的。

本文所進(jìn)行的自動(dòng)化測(cè)試的研究對(duì)象主要針對(duì)Linux平臺(tái)及平臺(tái)之上的應(yīng)用,測(cè)試的類型主要包括功能測(cè)試和性能測(cè)試。

自動(dòng)化測(cè)試曲研究與應(yīng)用

自動(dòng)化測(cè)試的前提是無論采用何種測(cè)試技術(shù)和測(cè)試方法,組織已經(jīng)積累了針對(duì)各種類型應(yīng)用的包括完整的測(cè)試輸入、測(cè)試執(zhí)行步驟和預(yù)期輸出的測(cè)試用例。

由于Linux是一個(gè)命令行組成的操作系統(tǒng),因此采用腳本編程,按照預(yù)設(shè)的執(zhí)行邏輯批量地執(zhí)行命令行,是實(shí)施自動(dòng)化測(cè)試時(shí)首先需要考慮的手段。為了實(shí)現(xiàn)更復(fù)雜的測(cè)試工作的自動(dòng)化,也可以選擇或者自行開發(fā)測(cè)試工具或測(cè)試框架。在選擇工具或框架時(shí),通常需要考慮是否具備如下幾個(gè)要素:a,測(cè)試執(zhí)行人員可以選擇運(yùn)行哪些測(cè)試組件/測(cè)試用例b,提供定義用例執(zhí)行結(jié)果的輸出方式,如提供成功、失敗、未執(zhí)行等函數(shù)供調(diào)用c,可以加載用戶自定義的函數(shù)庫(kù)d,提供用例執(zhí)行的配置文件或者場(chǎng)景文件e,提供調(diào)試的機(jī)制f,提供日志輸出方式g,提供結(jié)果統(tǒng)計(jì)輸出等等。

在Linux平臺(tái)下,借助工具或者其他手段實(shí)施測(cè)試的自動(dòng)化時(shí),需要關(guān)注以下幾點(diǎn):

(一)各種技術(shù)應(yīng)用的前提。對(duì)于在開源社區(qū)和一些開源項(xiàng)目中獲得的測(cè)試工具,首先需要了解工具適用于哪些類型應(yīng)用的測(cè)試,以及工具發(fā)布后的發(fā)布說明和FAQ。開源的工具通常不像商業(yè)工具那樣成熟穩(wěn)定,因此找出工具的適用范圍以及探索工具的實(shí)現(xiàn)程度是進(jìn)行自動(dòng)化測(cè)試應(yīng)用的前提。

(二)各種技術(shù)應(yīng)用的環(huán)境需求。對(duì)于各類工具,需要關(guān)注編譯和運(yùn)行時(shí)對(duì)各種包和庫(kù)及其版本的依賴關(guān)系以及對(duì)預(yù)先安裝的應(yīng)用的依賴關(guān)系。這些在用戶手冊(cè)中都有詳盡的說明。

(三)服務(wù)器性能監(jiān)視器。大部分測(cè)試工具沒有提供服務(wù)器端的性能監(jiān)控功能,測(cè)試工程師需要根據(jù)實(shí)際的需求編寫性能監(jiān)控腳本來配合工具的使用。

下面結(jié)合曾經(jīng)參與進(jìn)行過的Linux平臺(tái)下的自動(dòng)化測(cè)試的研究,面向不同類別的測(cè)試用例自動(dòng)化的需求,將主要從功能測(cè)試,如GUI測(cè)試、命令行客戶端的測(cè)試,以及性能測(cè)試等幾個(gè)方面對(duì)Linux平臺(tái)下的測(cè)試工作的自動(dòng)化進(jìn)行分析和說明。

GZW自動(dòng)化洲試

對(duì)于GUI測(cè)試的自動(dòng)化,通常的測(cè)試工具所使用的捕捉/回放技術(shù)有兩種,一種是通過記錄界面的鼠標(biāo)事件(如點(diǎn)擊、移動(dòng))和鍵盤事件來完成錄制和回放,另外一種則是錄制和回放都是基于控件的識(shí)別和操作進(jìn)行的,每個(gè)腳本的執(zhí)行都是控件對(duì)象的屬性改變或事件觸發(fā)。我們從開源社區(qū)可以獲得如上兩種類型的運(yùn)行于Linux平臺(tái)之上的典型測(cè)試工具,如Knee和LDTP等。

(一)Xnee工具

在Linux操作系統(tǒng)的xll環(huán)境下,Xnee能夠錄制、回放和分發(fā)用戶的動(dòng)作。Xnee的捕捉/回放技術(shù)是記錄鼠標(biāo)事件和鍵盤事件。進(jìn)入錄制模式時(shí),Xnee記錄發(fā)送至和來自X server之間的協(xié)議數(shù)據(jù)拷貝,并生成Xneesession文件。在回放模式下,Xnee讀取Xnee Session中的事件,模仿整個(gè)錄制過程(即用戶操作過程)完成和x server之間的通訊,被錄制的應(yīng)用軟件(Xclient)則接收來自xserver的消息,完成預(yù)設(shè)的動(dòng)作。

(二)LDTP測(cè)試工具/框架

Linux Desktop Testing Project(LDTP)測(cè)試工具/框架能夠基于用戶在應(yīng)用界面的選擇進(jìn)行腳本的錄制。LDTPI具使用了Gnome環(huán)境下的Accessibility庫(kù)即輔助選項(xiàng)庫(kù)(at-spi)。使用輔助選項(xiàng)能夠獲得應(yīng)用通過AT-SPI協(xié)議提供的關(guān)于用戶界面的信息和界面控件的當(dāng)前狀態(tài)或者屬性。LDTPI具/框架的體系結(jié)構(gòu)如下:

AT-SPI的基礎(chǔ)思想就是為用戶界面的可視化元素提供對(duì)應(yīng)的輔助對(duì)象,而錄制完成的每個(gè)腳本的執(zhí)行都是基于這些輔助對(duì)象進(jìn)行的。對(duì)于希望利用LDTPI具進(jìn)行測(cè)試的應(yīng)用,需要激活輔助選項(xiàng)。

(三)GUI自動(dòng)化測(cè)試工具的應(yīng)用

在實(shí)際的GUI自動(dòng)化測(cè)試中,LDTPI具應(yīng)用的場(chǎng)景會(huì)更廣泛一些。LDTPI具可以識(shí)別窗口中的對(duì)象(如按鈕),測(cè)試腳本使用LDTP的API接口,每個(gè)API接口對(duì)UI對(duì)象進(jìn)行操作存在兩個(gè)最基本的入口,即窗口和對(duì)象,窗口通過窗口的類型和名稱(即標(biāo)題)識(shí)別,對(duì)象通過希望操作的控件的類型和名稱(標(biāo)簽或者關(guān)聯(lián)的標(biāo)簽)識(shí)別。我們同樣可以通過at-pokel具展現(xiàn)激活了輔助選項(xiàng)的應(yīng)用程序窗口的對(duì)象及對(duì)象屬性。在測(cè)試Linux桌面產(chǎn)品和服務(wù)器

產(chǎn)品的過程中,使用LDTPI具可以測(cè)試任何啟用輔助選項(xiàng)的Gnome應(yīng)用,如Mozilla,OpenOffice.org、Evolution郵件客戶端,Nautilus文件瀏覽器等等,此外還可以測(cè)試UI界面基于Swing的Java應(yīng)用,以及KDE4.O上基于QT4.0的應(yīng)用等等。

而Xneel具所針對(duì)的應(yīng)用程序類型就沒有特別的限制,對(duì)于一些簡(jiǎn)單的窗口驗(yàn)證測(cè)試和界面的穩(wěn)定性測(cè)試等則比較有效。Xnee相對(duì)于基于控件方式捕獲和回放的工具而言,不用擔(dān)心存在控件不能被識(shí)別的問題。

從使用的情況來看,各個(gè)工具也都因?yàn)閷?shí)現(xiàn)技術(shù)而存在一定的缺陷,如兩個(gè)工具均不能插入驗(yàn)證點(diǎn),從而不能實(shí)現(xiàn)用例級(jí)別的結(jié)果驗(yàn)證;LDTP對(duì)于界面的個(gè)別元素捕獲不到以及不能對(duì)不支持輔助選項(xiàng)的應(yīng)用進(jìn)行測(cè)試等等;而Xneel具生成的腳本可編輯性差,同時(shí)由于錄制生成的腳本中的事件和屏幕坐標(biāo)相關(guān),因此當(dāng)出現(xiàn)窗口彈出位置發(fā)生變化等問題時(shí),就需要考慮回放時(shí)應(yīng)該如何來處理這些變化。

命令行客戶端的測(cè)試

(一)應(yīng)用于命令行客戶端測(cè)試的技術(shù)分析

Linux操作系統(tǒng)的精髓就是命令行,對(duì)于可以通過命令行批處理方式進(jìn)行測(cè)試的客戶端,Shell腳本語言是程序員測(cè)試時(shí)的首選,Shell提供了用戶與內(nèi)核進(jìn)行交互操作的一種接口。

而對(duì)于測(cè)試交互式類型的客戶端應(yīng)用,Expect則比較擅長(zhǎng)。Expect是基于tcl的用于測(cè)試交互式程序的工具包,它提供了創(chuàng)建交互式進(jìn)程和讀寫它們的輸入和輸出的命令。Expect很適合編寫測(cè)試程序,不管被測(cè)的軟件是批處理式的(比如GCC),還是交互式的(比如GDB),它都可以很方便的捕捉程序的輸出并且將程序的輸入自動(dòng)化。

對(duì)于編寫完成的測(cè)試腳本,需要選擇合適的框架來統(tǒng)一管理測(cè)試腳本,驅(qū)動(dòng)測(cè)試腳本按照流程執(zhí)行,以及為測(cè)試執(zhí)行結(jié)果提供統(tǒng)一的輸出等等。經(jīng)過比較,各種測(cè)試框架中選出了DejaGnu和TET,因?yàn)檫@兩個(gè)框架使用廣泛、活躍度比較高、有活躍的社區(qū)組織支持。TET支持多種腳本語言,它提供對(duì)c/c++、Java、perl、shell,ksh,python,ruby,php,tcl/expect等眾多語言的支持,支持分布式測(cè)試。Dejagnu即GNU測(cè)試框架,它提供了運(yùn)行測(cè)試的統(tǒng)一前臺(tái),對(duì)于使用者而言,DejaGnu實(shí)際上就是一個(gè)Tel庫(kù),它提供了豐富的函數(shù)庫(kù),使得用戶可以方便地編寫自己的測(cè)試驅(qū)動(dòng)程序。該框架的缺點(diǎn)是缺省只支持調(diào)用Expect編寫的測(cè)試程序,如果需要調(diào)用其他語言編寫的測(cè)試程序,則需要對(duì)框架進(jìn)行擴(kuò)展。

(二)實(shí)際應(yīng)用

在Linux操作系統(tǒng)之上存在很多命令行客戶端及交互式類型的客戶端,如常見的網(wǎng)絡(luò)服務(wù)程序sshl ftp,telnet,數(shù)據(jù)庫(kù)客戶端mysql,配置管理軟件CVS。等等。使用上述的測(cè)試技術(shù)可以完成對(duì)這類應(yīng)用程序的測(cè)試自動(dòng)化。

在中標(biāo)軟件的測(cè)試實(shí)踐中選擇了Dejagnu框架,該框架符合POSIx1003,3測(cè)試框架標(biāo)準(zhǔn),并定義了測(cè)試用例執(zhí)行結(jié)果的輸出函數(shù),如pass,fail,xpass,xfail等等,因此可以使用框架的用例輸出定義在日志中記載測(cè)試結(jié)果。

性能測(cè)試

性能測(cè)試是通過自動(dòng)化的測(cè)試工具模擬多種正常、峰值以及異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試。性能測(cè)試方法一般有基準(zhǔn)測(cè)試、容量規(guī)劃測(cè)試、峰谷測(cè)試和滲入測(cè)試等等,對(duì)于可再現(xiàn)性,基準(zhǔn)測(cè)試是最好的方法,而如果需要從當(dāng)前用戶負(fù)載的角度考慮測(cè)試系統(tǒng)的上限,則應(yīng)該使用容量規(guī)劃測(cè)試。

(一)性能測(cè)試工具的選擇

測(cè)試團(tuán)隊(duì)在規(guī)劃性能測(cè)試時(shí),出于對(duì)測(cè)試數(shù)據(jù)的可信度考慮,可以選擇商業(yè)測(cè)試工具,如Loadrunner、Rati onalR 0b Ot、QAL Oad、Benchmark Factory等工具,另外SPEC(the Standard PerformanceEvaluation Corporation標(biāo)準(zhǔn)性能評(píng)估機(jī)構(gòu))提供的系列基準(zhǔn)測(cè)試套件都是企業(yè)進(jìn)行基準(zhǔn)測(cè)試的最佳選擇。

如果成本是首要考慮的因素,那么就不妨在一些開源測(cè)試站點(diǎn)(如http://www.opensourcetesting,org)和Linux開源社區(qū)的項(xiàng)目中尋找能夠完成特定目標(biāo)的性能測(cè)試工具。這些工具大部分針對(duì)性比較強(qiáng),部署簡(jiǎn)單,當(dāng)然很少工具能夠與成熟的商業(yè)測(cè)試工具媲美。不過開源工具也具有自己的特點(diǎn),如小巧,輕便,在各自擅長(zhǎng)的領(lǐng)域可以提供優(yōu)秀的解決方案等等。因此可以考慮準(zhǔn)備一組開源測(cè)試工具,利用不同工具的特長(zhǎng)完成性能測(cè)試自動(dòng)化的需要。采用開源測(cè)試工具得到的性能測(cè)試數(shù)據(jù),主要用于進(jìn)行同類產(chǎn)品之間的橫向?qū)Ρ纫约巴划a(chǎn)品不同版本之間的縱向?qū)Ρ取?/p>

(二)性能測(cè)試工具的應(yīng)用

下面將從不同的測(cè)試需求出發(fā)。討論如何利用開源測(cè)試工具進(jìn)行性能測(cè)試的自動(dòng)化。

1、服務(wù)器整機(jī)系統(tǒng)的性能測(cè)試

性能測(cè)試是衡量一個(gè)操作系統(tǒng)效率的關(guān)鍵步驟,對(duì)于Linux操作系統(tǒng),Linux內(nèi)核是其最核心的部分,其性能直接決定了操作系統(tǒng)的性能,內(nèi)核性能測(cè)試的方法是針對(duì)Linux內(nèi)核五大子系統(tǒng):進(jìn)程調(diào)度子系統(tǒng)、內(nèi)存管理子系統(tǒng)、虛擬文件子系統(tǒng)、進(jìn)程通信子系統(tǒng)和網(wǎng)絡(luò)子系統(tǒng)的特點(diǎn),測(cè)量出Linux內(nèi)核完成工作量負(fù)載的響應(yīng)時(shí)間、CPU時(shí)間和CPU利用率等參數(shù),作為衡量標(biāo)準(zhǔn)。在實(shí)際測(cè)試中我們采用了如下一些基準(zhǔn)測(cè)試工具:

1Lmbench:用來測(cè)試1inux操作系統(tǒng)的cpu計(jì)算處理能力、進(jìn)程調(diào)度、內(nèi)存讀寫性能;測(cè)試主要可使用bw_dhrv和bw—mem,lat proc三個(gè)測(cè)試命令,分別對(duì)應(yīng)于整數(shù)性能測(cè)試,讀寫內(nèi)存測(cè)試,進(jìn)程調(diào)度測(cè)試。

2Bonnie++:磁盤I/O測(cè)試工具,主要用于測(cè)試磁盤和文件系統(tǒng)的性能。它可以測(cè)試文件的創(chuàng)建,讀,寫和刪除等操作,既可以測(cè)試小文件,也可以測(cè)試大的單個(gè)文件。

3Web應(yīng)用服務(wù)器的性能測(cè)試

在中標(biāo)軟件的web郵件服務(wù)器測(cè)試中采用了Apache組織的開源項(xiàng)目工具JMeter。JMeter可以用于測(cè)試靜態(tài)或者動(dòng)態(tài)資源的性能(文件、Servlets、Perl腳本、java對(duì)象、數(shù)據(jù)庫(kù)和查詢、ftp服務(wù)器或者其他的資源)。JMeter用于模擬在服務(wù)器、網(wǎng)絡(luò)或者其他對(duì)象上附加高負(fù)載以測(cè)試他們提供服務(wù)的受壓能力,或者分析他們提供的服務(wù)在不同負(fù)載條件下的總性能情況。用戶可以使用JMeter提供的圖形化界面分析性能指標(biāo)或者在高負(fù)載情況下測(cè)試服務(wù)器/腳本/對(duì)象的行為。

4數(shù)據(jù)庫(kù)性能測(cè)試

基于開源的數(shù)據(jù)庫(kù)性能測(cè)試工具并不是很多,這些工具本身都預(yù)先提供了一組測(cè)試用例如The DatabaseOpensource Test Suite(DOTS)工具,提供了8個(gè)基本用例和2個(gè)高級(jí)用例,并支持對(duì)DB2、Oracle、Sybase、MySQL和Pos tgreSQL等多種類型數(shù)據(jù)庫(kù)進(jìn)行壓力測(cè)試和負(fù)載測(cè)試,另外一些工具則預(yù)先構(gòu)造了支持不同負(fù)載模式測(cè)試的配置,如最新版本的Hammerora(The Open Sourceoracle Load Test T001)工具就提供了專門針對(duì)Oracle數(shù)據(jù)庫(kù)進(jìn)行測(cè)試的設(shè)定基準(zhǔn)測(cè)試TPC—C和TPC—H的模式選項(xiàng)以及編寫驅(qū)動(dòng)腳本等功能。從實(shí)踐過程來看,預(yù)置測(cè)試用例的工具存在的缺陷是用戶無法對(duì)這些用例根據(jù)實(shí)際測(cè)試需求進(jìn)行拓展,而可編程性強(qiáng)的測(cè)試工具則在支持的數(shù)據(jù)庫(kù)類型上存在一定的限制。

結(jié)束語

針對(duì)Linux平臺(tái)和平臺(tái)下的應(yīng)用進(jìn)行自動(dòng)化測(cè)試,需要測(cè)試人員熟悉Linux平臺(tái)下的腳本開發(fā)技術(shù),并以開源社區(qū)中存在的大量的功能和性能測(cè)試工具作為自動(dòng)化測(cè)試的研究起點(diǎn)。各個(gè)測(cè)試團(tuán)隊(duì)需要根據(jù)自身的測(cè)試需求對(duì)各種工具和技術(shù)進(jìn)行分析和選擇,同時(shí)根據(jù)實(shí)踐活動(dòng)判斷工具可以完成的測(cè)試內(nèi)容以及目前尚存的缺陷。這些都將為我們應(yīng)用工具進(jìn)行更大規(guī)模的自動(dòng)化測(cè)試提供必要的基礎(chǔ)。

猜你喜歡
自動(dòng)化測(cè)試
Hadoop性能測(cè)試自動(dòng)化研究
數(shù)據(jù)驅(qū)動(dòng)和關(guān)鍵字驅(qū)動(dòng)的研究與應(yīng)用
淺談空調(diào)控制器自動(dòng)化測(cè)試
基于多總線結(jié)構(gòu)的電路板測(cè)試系統(tǒng)設(shè)計(jì)研究
航空航天與國(guó)防電子新形勢(shì)下自動(dòng)化測(cè)試系統(tǒng)的應(yīng)用
平昌县| 襄汾县| 桐柏县| 沾益县| 福安市| 潼关县| 德阳市| 历史| 深圳市| 临夏县| 侯马市| 吉安县| 台湾省| 肇州县| 长泰县| 临泉县| 永济市| 东乌珠穆沁旗| 台湾省| 肃北| 同仁县| 水城县| 错那县| 日照市| 兴城市| 敦煌市| 陆丰市| 宝山区| 商洛市| 菏泽市| 鹤庆县| 金山区| 常德市| 英超| 海盐县| 柳江县| 右玉县| 漠河县| 丹阳市| 平阳县| 阿荣旗|