文/張赟
云技術的出現在很大程度上改變了服務的模式,軟件服務已經開始拓展到基礎設施和平臺層面,這從根本上改變了軟件的消費和生產模式,也影響著軟件的設計與架構。所以,在云計算的背景下,想要適應計算機軟件的發展需求,就必須對計算機軟件技術進行相應的變革。此外,在云計算的背景下,相關的軟件測試工作必須采用云平臺中的存儲資源,且在云平臺上進行,這也是當前基本的發展趨勢。總的來說,我國在云計算軟件測試技術上的發展與部分發達國家相比還存在比較大的差距。在這種情況下,筆者對基于云計算的計算機軟件測試技術進行分析和研究,能夠在一定程度上推動同行業從業者的研究熱情,推動相關技術的進一步發展。
現在,在基于云計算的計算機軟件測試的概念問題上,學術界還存在著不小的爭議,但是總的來說,可以分為以下幾種:第一種,這一測試是指在云環境既有資源的基礎上,通過建設基礎設施,盡可能降低發生問題的概率,從而進一步提高計算機軟件技術。第二種,它是指在云計算的基礎上,通過應用程序來模擬用戶流量。第三種,該項測試技術由兩個部分組成,第一部分是指通過運用現有的云資源,對實際負荷和用戶流量進行模擬。第二部分是指為了保證計算機的軟件性能,在云基礎設施建設的基礎上,進行綜合性的調試。當前,第三種定義是比較獲我國學術界認可的。此外,以上的幾種定義主要是從廣義的角度出發,從狹義的角度來說,該項技術是指在云計算平臺的基礎上,軟件開發商對軟件進行測試的行為。實際上,該項技術是為了完成各類測試目標,而借助云計算平臺,獲取需要的測試資源。
基于云計算的計算機軟件測試技術(以新的測試技術指代)與傳統的技術相比,其主要擁有以下幾個明顯的特征。
新的測試技術采用的服務形式是階段性的,這讓用戶可以按照自己的具體情況來做出相應的選擇。而傳統的軟件測試的前期費用較高,因為必須一次性付費,這相較于新的測試技術,就不夠人性化。
新的測試技術的基礎設施不需要自己購買,主要由云供應商供應。而傳統的軟件測試則需要自己購買諸如硬盤、網絡設備等基礎設施。
傳統的軟件測試需要公司自己配備專業的工作人員,而新的測試技術得測試人員大部分由云供應商提供。

表1:傳統與基于云計算的軟件測試技術的區別

圖1:基于測試用戶角色的云計算軟件測試分類

圖2:從測試任務角度出發的云計算軟件測試分類
傳統的軟件測試技術在測試環境的部署和測試資源的配置上需要借助人工手動完成。而新的測試技術借助云平臺就可以自動完成相關工作,大大節約了人力支出。
新測試技術的管理方式是集成化的,這讓項目管理能夠被高度的集中,為軟件測試的質量提供了保障。兩者具體的區別可見表1。
當前,主要分成基于用戶測試的分類和基于測試任務的分類這兩個方面來對新測試技術進行研究。從不同的角度來看,新的測試技術可以被分成不同的類型。接下來,筆者將從上述兩方面入手,對新的測試技術的分類進行分析。
此種分類方法通常是從系統開發人員、用戶以及云計算供應商的角度來對軟件測試進行分類。此外,基于云計算的計算機軟件測試按照不同的測試用戶角色,可以分成以下類型,具體如圖1所示。
云上測試是指通過云供應商在云平臺上部署的服務運用來測試軟件系統的規范性。通常來說,都是由云的系統開發商來開展云上測試的;云內測試通常是指測試特定的云能力或從內部視角出發去測試軟件。具體而言,云內測試包括內部管理、自動、安全功能以及SaaS功能的測試。需要注意的是,通常只有云供應商才有權限開展相關工作;云中測試是指在云平臺中進行測試,以驗證軟件的SaaS功能;云外測試是指從外部視角出發,測試和驗證云計算中部分職能功能的測試。
現在,最基本的對新測試技術進行分類的方法就是從測試任務的角度進行分類。基于云計算的軟件測試從測試任務的角度劃分可以分為八種類型。它們是:安全測試、延遲測試、瀏覽器性能測試、兼容性測試、功能測試、性能測試、負載測試和壓力測試,具體來說如圖2所示。
安全測試是指對非SaaS和SaaS軟件的系統安全性進行測試;延遲測試是指應用程序部署在云平臺上后,對系統的響應延遲進行測試;瀏覽器性能測試是指在不同瀏覽器中,對非SaaS和SaaS軟件的性能進行測試;兼容性測試是指利用存在于云計算平臺上的多種瀏覽器、多種數據庫以及多種操作系統的環境來對軟件兼容性進行測試;功能測試是指對非SaaS和SaaS軟件的各系統功能進行測試;性能測試是指經由云平臺而得到的有關系統軟件的性能指標;負載測試是指把被測試軟件處于滿負荷情況的時候,對系統的負荷能力進行測試,以便第一時間發現軟件設計和架構中存在的問題;壓力測試是指測試云平臺的大數據計算能力。通過壓力測試,可以得到系統所能提供的最高服務并從根本上提高系統的性能。
基于云計算的軟件測試與傳統的軟件測試平臺之間存在很大的區別。因為基于云計算的軟件測試涉及到更加豐富的內容,所以整個平臺的架構也會變得更加復雜。具體的測試架構類型如下所示:
此平臺是在IBM提供的云平臺基礎上,由瑞士洛桑理工大學建立的軟件測試系統。此系統即可在私有云的基礎上運行,也可以在公共云的基礎上運行。此外,Cloud9可以在很短的時間內方便地對軟件進行全面的自動化測試。初步結果表明,在最先進的符號執行引擎上,其速度提高了一到兩個數量級。最后,Cloud9是一種隨需應變的軟件測試服務:它運行在計算云上,就像Amazon EC2一樣,并能夠在更大的動態范圍擴展其資源的使用
此平臺是由日本駐波大學開發。在這個平臺中,已經完成了虛擬故障插入技術的內置,能夠完成大規模的分布式測試。
在YETI項目當中,英國的約克大學通過部署相關實踐性活動在云計算服務平臺中,構建了關于YETI的云測試系統構架。同時,該大學也對云測試當中性能與安全的相關問題進行了深入的分析和探究。此外,YETI是以亞馬孫的EC2平臺作為基礎而建立得,其可以對Java的相關程序起到有效的支持,并進行自動化的測試。
雖然這三種架構目前得到了比較廣泛的運用,但是他們都還存在著一定的缺陷,需要專業的技術人員對他們進行進一步的優化。
作為當前信息技術發展的前沿,云計算技術的發展極大地影響著軟件測試技術的發展。然而,總體而言,我國目前關于云計算的計算機軟件測試技術的發展與部分發達國家相比還存在較為嚴重的滯后,需要整個行業一起努力對其進一步進行完善。筆者在本文中簡略的介紹了基于云計算的計算機軟件測試技術,并對其基本架構進行了分析,希望能夠在一定程度上推動我國云計算計算機軟件測試技術的發展。