胡麗香
(江蘇省軟件產(chǎn)品檢測中心,江蘇 南京 210012)
為了提高軟件總體開發(fā)效率,相同行業(yè)或相同領(lǐng)域的軟件研發(fā)在發(fā)展過程中將趨于成熟,開發(fā)過程也越來越規(guī)范,軟件的架構(gòu)也愈加穩(wěn)定,成熟穩(wěn)定的軟件架構(gòu)是軟件測試自動化的基礎(chǔ),這種軟件程序也可以被稱為樣本程序。除了穩(wěn)定的軟件架構(gòu),自動化軟件測試的實(shí)現(xiàn)還需要各行業(yè)軟件運(yùn)行過程中積累的海量行業(yè)數(shù)據(jù),并從中提取有效的樣本數(shù)據(jù)作為生成測試用例的樣本庫,結(jié)合軟件架構(gòu)和相對應(yīng)的樣本庫構(gòu)建自動化測試平臺[1]。
隨著互聯(lián)網(wǎng)行業(yè)的不斷發(fā)展,云計算成為近年來受到廣泛歡迎的一種互聯(lián)網(wǎng)技術(shù)。云計算作為一種依托于Web服務(wù)的計算,能夠?qū)⒃瓉肀仨氃诒镜剡M(jìn)行測試的軟件通過網(wǎng)絡(luò)在服務(wù)器端進(jìn)行測試并返回測試結(jié)果。能夠很大程度上實(shí)現(xiàn)算力資源發(fā)的共享,降低了企業(yè)的硬件投入成本,提高了算力資源的利用率。因而云計算也成為互聯(lián)網(wǎng)計算未來的發(fā)展方向,能夠在云平臺上根據(jù)不同用戶的不同需求進(jìn)行動態(tài)的算力資源分配[2]。
自動化測試工具用于在沒有測試工程師參與的環(huán)境中對軟件進(jìn)行測試,其出現(xiàn)大大的降低了軟件測試領(lǐng)域的門檻,為企業(yè)的發(fā)展提供了更多的可能性,基于云計算的軟件自動化測試是基于云計算環(huán)境大的一種新型測試方式,如眾所周知的CloudTesting平臺就是一個配置在云端的自動化測試平臺,該平臺支持多種瀏覽器,用戶可在本地編寫好測試腳本后通過CloudTesting平臺對所需測試的軟件進(jìn)行測試,并能夠根據(jù)自身的需要實(shí)現(xiàn)自動的資源配置。下圖為云計算的軟件自動化測試示意圖。
圖1 云計算的軟件自動化測試
基于云計算的軟件自動測試平臺主要包括測試腳本記錄、測試過程記錄以及測試結(jié)果記錄三個方面,一般來說,云自動化測試平臺可根據(jù)被測試系統(tǒng)進(jìn)行兼容性測試,如在Windows和Linux不同系統(tǒng)平臺中的運(yùn)行情況,再者應(yīng)當(dāng)能夠很好的記錄開發(fā)過程中出現(xiàn)的各種問題,保證測試后對軟件改進(jìn)的信息支撐作用[3]。
為保證基于云計算的軟件自動化測試平臺能夠?qū)崿F(xiàn)以上幾種功能,該云測試平臺應(yīng)具備:具備互聯(lián)網(wǎng)訪問能力,以及擁有互聯(lián)網(wǎng)訪問入口,以便于用戶進(jìn)入測試平臺;支持多操作系統(tǒng)、多瀏覽器內(nèi)核,以便于用戶測試在不同環(huán)境中軟件的表現(xiàn)。依據(jù)需求以及系統(tǒng)資源配置,對基于云計算的軟件自動化測試平臺門戶層、Taas層以及IaaS層進(jìn)行如下設(shè)計[4]。
首先,在門戶層,相關(guān)測試用戶應(yīng)當(dāng)能夠根據(jù)自身需求對測試資源繼續(xù)請求以及配置,并在建立測試項(xiàng)目后上傳測試算例以及查看歷史測試記錄。其次,在TaaS層,云平臺的后端應(yīng)用服務(wù)器中應(yīng)當(dāng)有一定大的與處理機(jī)制,以保證測試代碼的高效使用,通過預(yù)處理機(jī)制,對相關(guān)測試代碼進(jìn)行分級分組測試,提高測試質(zhì)量。最后,在IaaS層,部署云緩存管理節(jié)點(diǎn)以保證云平臺后端的虛擬機(jī)資源,存儲相關(guān)測試資源,另外在IaaS層還應(yīng)該擁有云測試中心和測試虛擬機(jī)池用于監(jiān)控測試過程和生成測試報告[5]。
通過對門戶層、TaaS層以及IaaS層進(jìn)行相應(yīng)分設(shè)計搭建起云自動測試平臺后,需要對云自動測試平臺的測試流程進(jìn)行梳理,以保證軟件測試的順利實(shí)施。云自動化測試平臺的測試流程主要由測試腳本的編寫、測試腳本的提交、測試腳本的解析、測試任務(wù)的分發(fā)、執(zhí)行測試腳本以及生成測試報告并反饋等六個部分組成。
第一步需要根據(jù)實(shí)際的待測試系統(tǒng)需求編寫相應(yīng)的測試算例,按照需要測試的功能點(diǎn)所做的業(yè)務(wù)規(guī)劃進(jìn)行測試任務(wù)的分解,并依據(jù)具體的測試任務(wù)編寫相應(yīng)的測試腳本。在完成測試腳本的編寫后便是測試腳本的提交,用戶登入云自動化測試平臺后,根據(jù)測試的類別可選擇相應(yīng)的測試資源進(jìn)行配置。之后便是云平臺對測試腳本進(jìn)行解析,后端服務(wù)器接到測試請求后,會對腳本信息進(jìn)行解析和預(yù)處理,并根據(jù)待測試系統(tǒng)的實(shí)際情況將測試任務(wù)盡可能的進(jìn)行恰當(dāng)?shù)姆纸?,以便于部署到多臺虛擬機(jī)中進(jìn)行并行化計算,當(dāng)完成測試任務(wù)的分解后,便是后端的虛擬機(jī)根據(jù)所分配到的任務(wù)進(jìn)行計算,并在完成計算后提交結(jié)果到一個用于匯總最終信息的機(jī)器中,并生成測試報告以便于用于進(jìn)行查詢被測試系統(tǒng)的質(zhì)量[6]。
本文基于Selenium為基礎(chǔ)框架,通過從工具庫抽取待測試模塊的數(shù)據(jù)流和行為參數(shù),匹配出測試數(shù)據(jù),生成測試用例,然后組裝出自動化測試腳本,配置測試工具的參數(shù),調(diào)用測試程序,輸出測試結(jié)果和相應(yīng)的測試問題報告,完成自動化測試。
可用于實(shí)現(xiàn)自動化測試的編程語言有很多種,目前軟件測試工程師使用的語言主要有Python、Java等。其中Java語言開發(fā)應(yīng)用最為廣泛,目前在各個領(lǐng)域的軟件開發(fā),Java都是比較主流的選擇,它具有很好兼容性的優(yōu)點(diǎn),因此很多主流的測試工具都是用Java開發(fā)出來的[7]。
作為一種語法簡單、適合初學(xué)編程者的編程語言,近幾年來Python生態(tài)的發(fā)展很迅猛,在數(shù)據(jù)分析、Web開發(fā)、人工智能以及自動化測試等領(lǐng)域都有涉及。Python語言優(yōu)勢在于靈活,而測試行業(yè)就是用戶需求不斷變化,可以充分利用Python廣泛的第三方庫來快速靈活的開發(fā)或更新自動化測試工具,提高測試效率。Python語言的劣勢是執(zhí)行效率比較慢,在測試行業(yè)中這一點(diǎn)并不明顯。
采用Selenium作為自動化測試工具主要看重其強(qiáng)于其他測試工具的四個優(yōu)點(diǎn)。第一,它支持多種語言(Python、PHP、Java等)、平臺(Windows、Linux等)以及各類瀏覽器(Firefox、IE、Safari等);第二,它可集成各種開發(fā)平臺,如TestNG、SauceLabs和Jenkins等;第三,可移動測試;第四,具有大型插件庫,可通過各種插件擴(kuò)展其更多功能[8]。
本文通過梳理軟件自動測試現(xiàn)狀以及云計算背景下的相關(guān)應(yīng)用情況,為基于云計算的軟件自動化測試平臺設(shè)計提供了理論依據(jù)和應(yīng)用場景,之后介紹了基于云計算的軟件自動化測試平臺的框架,同時對基于云計算的軟件自動化測試平臺相關(guān)設(shè)計要素進(jìn)行了分析,并從門戶層、TaaS層以及IaaS層三個層次對其進(jìn)行了設(shè)計,使得該平臺具備測試資源的動態(tài)分配、測試腳本的分布式執(zhí)行以及測試結(jié)果的生成協(xié)助用戶有效的進(jìn)行系統(tǒng)優(yōu)化的功能。最后根據(jù)云計算的軟件自動化測試平臺在實(shí)際應(yīng)用場景中的應(yīng)用對其使用流程進(jìn)行梳理分析,將該云計算的軟件自動化測試平臺從測試算例的編寫到最終的測試報告生成一整條完整流程進(jìn)行了解剖,使其成為有測試需求的用戶進(jìn)行測試的有效工具,也為該平臺最后能夠落地使用提供了依據(jù)。