中國聯(lián)通研究院 北京 100032
云計算[1-2]是當(dāng)前信息技術(shù)領(lǐng)域的熱點之一,已在工業(yè)界和學(xué)術(shù)界內(nèi)備受關(guān)注。它是一種全新的計算模式,通過互聯(lián)網(wǎng)以服務(wù)的方式向用戶提供動態(tài)可伸縮的虛擬化計算資源。用戶在使用計算資源的過程中,僅需與服務(wù)供應(yīng)商進行少量的交互,可以更好地專注于自身的上層業(yè)務(wù)邏輯,不必關(guān)心復(fù)雜的底層硬件邏輯、網(wǎng)絡(luò)協(xié)議、軟件架構(gòu)等細(xì)節(jié)。云計算帶來的以服務(wù)方式將虛擬化的計算資源供給用戶使用的模式,給傳統(tǒng)信息技術(shù)產(chǎn)業(yè)帶來巨大影響,改變了傳統(tǒng)軟件生產(chǎn)組織和軟件架構(gòu)設(shè)計方式。這也對傳統(tǒng)的軟件測試方法與技術(shù)形成了新的挑戰(zhàn),如何開展云計算環(huán)境下的軟件測試是國內(nèi)外業(yè)界與學(xué)界面臨的熱點問題。
云測試是上述背景下出現(xiàn)的軟件測試新模式。目前,該領(lǐng)域的研究主要集中在如何將測試遷移到云中,利用云計算技術(shù)整合和部署大量的計算資源,開展測試活動。研發(fā)基于云計算的軟件測試平臺,助力傳統(tǒng)測試活動,以少量的資源,在緊張的開發(fā)與測試時間間隔內(nèi),高效地完成測試任務(wù),對企業(yè)的信息化建設(shè)具有深遠(yuǎn)的戰(zhàn)略意義。本文概述云計算在測試領(lǐng)域應(yīng)用研究的進展,報告我們在此方面的嘗試,以期推動云計算在軟件測試方面的應(yīng)用研究。
隨著軟件設(shè)計技術(shù)的發(fā)展、軟件規(guī)模的增加和軟件開發(fā)周期的緊縮,軟件測試在整個軟件開發(fā)周期中所占比重日益增大。作為保障軟件質(zhì)量與可靠性的關(guān)鍵一環(huán),軟件測試的重要性日益增長。
云測試的研究在國內(nèi)外仍處于初級階段,比較有代表性的定義是Gao等在云測試綜述[3]中提出的“云測試是在云環(huán)境和基礎(chǔ)設(shè)施中利用云計算技術(shù)解決方案進行的測試活動”。根據(jù)該定義,云測試是具有以下特征的測試活動,即將軟件測試活動遷移到了云端,利用云計算技術(shù)按需提供與測試相關(guān)的軟硬件資源,以服務(wù)的方式向用戶提供按使用付費的測試業(yè)務(wù)(Testing as a Service)。云測試的研究包括兩個方面:1)如何有效利用云環(huán)境中的資源測試其他軟件;2)如何測試部署在“云”中的軟件。第一方面的研究主要涉及與云測試密切相關(guān)的資源調(diào)度、優(yōu)化、建模等方面的問題,以便為其他軟件搭建廉價、便捷、高效的測試環(huán)境,加快整個軟件測試的進程。在這一類型的測試中,其他的軟件可以是傳統(tǒng)意義上的本地軟件,也可以是“云”中的應(yīng)用軟件服務(wù);第二方面的研究涉及到云平臺內(nèi)部結(jié)構(gòu)、功能擴展和資源配置等多方面的測試問題,測試部署在云平臺中的各種云軟件[4]。
云測試在基礎(chǔ)設(shè)施、測試環(huán)境部署、測試過程管理、付費方式等諸多方面顛覆了傳統(tǒng)軟件測試。具體體現(xiàn)在以下5個方面。
1) 基礎(chǔ)設(shè)施。傳統(tǒng)軟件測試需要用戶自行購買各種測試基礎(chǔ)設(shè)施,包括服務(wù)器硬件、網(wǎng)絡(luò)設(shè)備、系統(tǒng)軟件與測試軟件等;云測試則由云服務(wù)提供商通過云計算平臺提供測試基礎(chǔ)設(shè)施服務(wù),用戶無需自行購買。
2) 測試環(huán)境部署。傳統(tǒng)軟件測試需要手工配置和部署測試環(huán)境,人工分配測試資源等,既有硬件上架、調(diào)試等復(fù)雜過程,又涉及操作系統(tǒng)、軟件的費時費力安裝;云測試支持測試資源按需分配,測試環(huán)境按需搭建和一鍵式回收。
3) 測試過程管理。傳統(tǒng)軟件測試采用分散管理模式,項目管理、軟件質(zhì)量保證水平參差不齊,不方便集中管控;云測試便于集中管理,對測試資源進行統(tǒng)一整合,動態(tài)分配,減少重復(fù)性工作,提高測試效率。
4) 付費方式。傳統(tǒng)軟件測試需要一次性付費,軟硬件投入巨大,對于中小型用戶是個很高的門檻;云測試則僅按需購買,按照測試項目規(guī)模、測試目標(biāo)、測試時間等租賃付費,降低了軟件測試的入圍門檻。
5) 商業(yè)擴展。傳統(tǒng)軟件測試資源利用率低,易產(chǎn)生資源閑置,可擴展性較差;云測試以服務(wù)的形式共享測試資源與測試工具,通過云端對外開放,可擴展性強。
本文的云測試平臺涵蓋了測試活動的全生命周期,通過虛擬化技術(shù),支持測試環(huán)境的按需搭建,同時將測試工具掛載到了云端,支持測試工具在組織機構(gòu)內(nèi)的共享,降低了軟件的授權(quán)(license)投入,便于版本控制和統(tǒng)一管理。云測試的整體流程如圖1所示。
我們使用OpenStack[5]和兩臺Dell R710服務(wù)器,組成虛擬資源池。這兩臺服務(wù)器CPU均為Intel Xeon E5506,分別為節(jié)點controller和節(jié)點computer,通過交換機連接,處于同一局域網(wǎng)內(nèi)。選用Ubuntu 12.04 LTS Server 64bit作為平臺的基礎(chǔ)操作系統(tǒng),使用devStack[6]的multi-node方式部署OpenStack的Grizzly版本。
圖1 云測試的生命周期
此外,我們使用OpenStack中的KVM(Kernel based Virtual Machine)[7]技術(shù)制作了常見操作系統(tǒng)的云鏡像,如Linux的各種發(fā)行版本、Windows系列等。用戶通過OpenStack API指定虛擬機配置、操作系統(tǒng)等規(guī)格參數(shù)申請該虛擬資源,如圖2所示。申請成功后,用戶可以通過遠(yuǎn)程連接使用虛擬資源,如Linux系統(tǒng)支持的OpenSSH或者VNC,Windows平臺支持的“遠(yuǎn)程桌面”。
圖2 虛擬化資源使用管理框架
通過使用虛擬化資源,不僅可以省去硬件上架、調(diào)試、安裝等復(fù)雜環(huán)節(jié),更實現(xiàn)了物理資源的統(tǒng)一管理。虛擬資源管理模塊,可根據(jù)項目的人數(shù)、實際需求、機器利用率等按需分配資源,支持大量并行測試項目按需申請、隨需隨用、隨用隨收等測試環(huán)境的動態(tài)管理,大幅提高硬件資源利用率。
我們調(diào)研了部門以往和現(xiàn)行的測試項目,歸納出常用的操作系統(tǒng)(如HP UX 11.31、AIX 6.1、RHEL 5.5、Win2008)、應(yīng)用軟件(如Oracle EE 10.2.0.5、Tuxedo 10.3.0.0、WebLogic 10.3.0.0、WebSphere ASND 7.0、Tomcat 6、JDK6)以及它們的高頻組合,并把這些都固化到了相應(yīng)的云鏡像中。利用這些云鏡像,通過資源申請階段用戶的參數(shù)設(shè)定,可以快速地自動搭建初始的測試環(huán)境。同時,允許用戶上傳安裝包、安裝腳本和配置文件等,以透明的方式自動安裝未固化進云鏡像的其它軟件,如圖3所示。此外,用戶可以通過遠(yuǎn)程連接工具(譬如圖3中針對Windows系統(tǒng)的遠(yuǎn)程桌面)登錄到虛擬機手動配置。
圖3 測試資源自動化部署
通過自動配置與安裝操作系統(tǒng)和通用軟件,避免手動安裝費時費力易出錯的情況,提高了測試環(huán)境部署安裝效率。
使用傳統(tǒng)方式搭建測試環(huán)境是非常昂貴的,要完全模擬生產(chǎn)環(huán)境,諸多資源缺一不可。通過虛擬資源池和預(yù)制的云鏡像,我們的云測試平臺允許用戶根據(jù)自己的不同需求自動搭建所需的測試環(huán)境,測試人員只需通過網(wǎng)絡(luò)就可以登陸測試環(huán)境開始測試。測試環(huán)境的按需搭建,指數(shù)級地縮短了測試準(zhǔn)備時間,極大地提高了測試效率。此外,不同測試階段的環(huán)境都可以通過生成快照(snapshot)的方式,使得測試人員能夠一鍵恢復(fù)不同測試階段的測試環(huán)境,便于維護測試環(huán)境和執(zhí)行回歸測試。
利用云計算技術(shù),我們實現(xiàn)資源的自動調(diào)度分配、測試環(huán)境按需自動化搭建等核心功能。進一步地,我們將測試資源與工具封裝并以服務(wù)的方式開放出去,實現(xiàn)了測試即服務(wù)的模式。
合法用戶在登錄成功后根據(jù)業(yè)務(wù)需求填寫處理器、內(nèi)存、存儲、軟件、接入權(quán)限等資源申請,用戶通過審核獲取資源后,就可以在云上快速搭建測試環(huán)境,設(shè)計測試流程,利用遠(yuǎn)程登錄等手段登錄云端的測試環(huán)境,執(zhí)行測試。我們實現(xiàn)了資源分配的自動化和并行化,按需搭建測試環(huán)境,同時,在業(yè)務(wù)測試過程中實時監(jiān)控已分配資源的使用情況,向監(jiān)控模塊發(fā)送監(jiān)控信息報告。監(jiān)控模塊實現(xiàn)了初步的虛擬機器健康管理和預(yù)診斷,適時發(fā)出資源追加申請,實現(xiàn)資源利用率的最大化。
為降低軟件授權(quán)方面的成本,云端也掛載了各種測試工具,以最大并發(fā)數(shù)購買授權(quán),測試人員共同使用有限的機器和授權(quán)。同時,這些工具也以服務(wù)的形式對外提供服務(wù),以工具的使用時間和強度對租賃者收費。目前,平臺提供的測試工具有LoadRunner、QTP、JMeter和Selenium,用戶登錄后選擇所需測試工具付費后可登錄已配置好測試工具的虛擬機使用工具執(zhí)行測試,如圖4所示。
圖4 用戶租賃QTP付費后使用
本文利用云計算技術(shù),將測試活動遷移入云端,包括虛擬資源按需分配統(tǒng)一調(diào)度、測試環(huán)境的按需搭建和集中管控、測試工具的共享和開放,涵蓋資源分配、操作系統(tǒng)安裝、通用軟件安裝、測試環(huán)境部署、后續(xù)配置等測試活動的全生命周期。但所述云測試平臺在測試流程管理方面功能不夠全面,顆粒度不夠精細(xì),后續(xù)可通過集成相關(guān)的測試流程管理工具(譬如TestLink)進一步完善這些方面。概括來說,這是一次有益的嘗試,具體體現(xiàn)在:使用虛擬資源,可提高資源利用率,減少硬件投入;測試環(huán)境按需一鍵式部署和回收,縮短了開發(fā)與測試的間隔;測試環(huán)境易于維護和管控,方便版本管理和回歸測試;以服務(wù)的形式共享測試工具,減少軟件授權(quán)的投入;測試資源與測試工具通過云端對外開放,創(chuàng)造了新的運營模式。
參考文獻
[1]Mell P,Grance T.The NIST Definition of Cloud Computing[R].National Institute of Standards and Technology Pubulication 800-145,2011
[2]Sriram I,Khajeh-Hosseini A.Research Agenda in Cloud Technologies[C]//the 1st ACM Symposium on Cloud Computing(SOCC),2010:1-11
[3]Gao J,Bai X,Tsai W T.Cloud Testing-Issues,Challenges,Needs and Practice[J].Software Engineering:An International Journal,2011(1):9-23
[4] 李喬,柯棟梁,王小林.云測試研究現(xiàn)狀綜述[J].計算機應(yīng)用研究,2012(12):4401-4425
[5]OpenStack,Home[EB/OL].[2015-03-10].http://www.openstack.org/,2015
[6]Devstack,Home[EB/OL].[2015-03-10].http://devstack.org/,2015
[7]KVM,Home[EB/OL].[2015-03-10].http://www.linux-kvm.org/page/Main_Page,2015