一種云計算環(huán)境下的自動化測試數(shù)據(jù)生成方法【
技術領域:
】[0001]本發(fā)明屬于性能測試的
技術領域:
,特別涉及一種云計算環(huán)境下的自動化測試數(shù)據(jù)生成方法?!?br>背景技術:
】[0002]軟件測試是保證并提高軟件質(zhì)量的重要手段,它是軟件生命周期中不可或缺的重要環(huán)節(jié)。軟件測試過程中,測試數(shù)據(jù)的生成是其核心問題,也是軟件測試的關鍵與難點所在。生成合適的測試數(shù)據(jù)是高效地進行軟件測試的基礎。量子蛙跳算法為軟件測試數(shù)據(jù)生成提供了豐富的理論和方法,能有效提高軟件測試的效率。[0003]任何一個測試都離不開手工測試,基于測試用例,在測試初期我們需要手工測試,但是手工測試也有它的很大局限性,首先不可能覆蓋每一條路徑,單元測試還不存在重復性問題,一旦到了回歸測試,測試工作的工作量將會變的非常大,許多與時序、死鎖、資源沖突、多線程等有關的錯誤,通過手工測試很難捕捉到進行系統(tǒng)負載、性能測試時,需要模擬大量數(shù)據(jù)或大量并發(fā)用戶等各種應用場合時,這也是手工測試無法模擬的。如果整個測試過程的測試數(shù)據(jù)量是龐大的,而且數(shù)據(jù)變化頻繁,需要在短時間內(nèi)(1天)完成,僅僅依賴測試人員手工地測試數(shù)據(jù),在測試管理工具中進行輸入、修改、刪除等操作,幾乎不可能做到,而且效率低,容易產(chǎn)生測試數(shù)據(jù)不一致,這樣就給其它測試人員提供了不可靠的測試數(shù)據(jù),造成測試結果的失效。[0004]JMeter是Apache組織開發(fā)的基于java的測試工具,相比其他HTTP測試工具,JMeter最主要的特點在于擴展性強,目前已大量應用在各個公司的性能測試過程中。它提供了一個利用本地ProxyServer(代理服務器)來錄制生成測試腳本的功能,實現(xiàn)了強大的測試功能并能夠提供聚合報告,當build-項任務時,在若干任務中查找所需的任務,運行結束后生成HTML報告(report),并查看測試的輸出結果。生成的報告上顯示了每次測試運行的結果,包括測試狀態(tài)、時間、數(shù)據(jù)執(zhí)行順序以及所有測試花費的時間,使用戶或測試開發(fā)者直觀的掌握整體測試狀況、查看測試報告結果。同時,Jenkins是一個開源項目,提供了一種易于使用的持續(xù)集成系統(tǒng),使開發(fā)者從繁雜的集成中解脫出來,專注于更為重要的業(yè)務邏輯實現(xiàn)上。同時Jenkins能實施監(jiān)控集成中存在的錯誤,提供詳細的日志文件和提醒功能,還能用圖表的形式形象地展示項目構建的趨勢和穩(wěn)定性。其只需要定義一些觸發(fā)條件便可支持基于任務的持續(xù)構建,并且有一套自己的插件開發(fā)規(guī)范,而目前基于性能持續(xù)集成(持續(xù)集成)的有一個開源性能插件DynamicParameters。在此基礎上,搭建JMeter和Jenkins測試平臺,該平臺提供了Java編程語言的測試驅(qū)動函數(shù)庫。用Jenkins提供的api通知Jenkins編譯工程項目,并在工程設置中填寫項目信息和自動觸發(fā)Jmeter插件需要加載的測試結果路徑,編寫自動化測試腳本,調(diào)用Jmeter測試工具對項目進行測試,并生成測試結果。這樣方便了軟件開發(fā)測試工作者隨時對比測試結果,從測試結果對比中,找出程序代碼的缺陷以提高程序代碼的健壯性。[0005]JMeter可以模擬大量的客戶端向服務器發(fā)送請求來測試服務器的強度,并分析服務器的整體性能。Jmeter運行時生成多個線程模擬多個用戶執(zhí)行請求,每次請求都記錄了請求的響應時間、請求發(fā)起時間、請求結果等信息,產(chǎn)生的結果文件為后綴為.jtl的xml格式文件。所以這個文件具有文件大、性能持續(xù)集成測試記錄條數(shù)多等特性,同時,友好的GUI界面方便用戶使用,開源,適用于大中型Web系統(tǒng)性能測試,并且免費,學習曲線低。不過它和其他java應用程序一樣,執(zhí)行過程中需要占用大量內(nèi)存。[0006]為了最大限度的靈活性,在JMeter架構下采用正則表達式創(chuàng)建斷言,通過帶有斷言的腳本以驗證程序代碼能否返回期望的結果,實現(xiàn)了對應用程序的功能測試。僅僅需要幾句簡單的命令語句,就可以完成一個jmeter文件對一個jar類型文件(yang,table)的控制。同時,jmeter文件可以隨著測試進行、軟件的應用性能完善以及文件更新,實時的修改代碼和更新數(shù)據(jù)以更適合測試的要求。然而,當排隊等待測試的數(shù)據(jù)量很大時,則需要耗掉大量的時間才能完成一個周期的測試,無法滿足開發(fā)測試人員檢驗產(chǎn)品性能的需求,為測試工作帶來了諸多的不便;同時,如果一個待測試的文件(table)腳本中的數(shù)據(jù)過多時,將其載入jmeter工具的反應時間過長,且操作十分遲鈍。因此,就急需一種能夠快速處理大量數(shù)據(jù)文件的腳本的方法,同時需要服務器及時清理內(nèi)存垃圾,減少磁盤空間的占用,提高測試結果數(shù)據(jù)的解析和讀取效率。然而,由于多個用戶共享內(nèi)存,這樣就需要向終端申請資源(即內(nèi)存),如果被分配的內(nèi)存不足,將會導致測試失敗,而系統(tǒng)的內(nèi)存資源是十分有限的,并不能滿足軟件開發(fā)工作者不斷的需求,而云計算軟件測試能夠有效地利用云平臺動態(tài)可擴展的海量資源,節(jié)省測試時間和降低測試成本,是一種較好的測試解決方案。但是現(xiàn)有的云計算軟件測試平臺和服務在使用時需要收取費用,部分整體化解決方案價格昂貴,而且,這些云測試平臺和解決方案是商業(yè)公司或測試即服務(TestingasaService,TaaS)提供商專有的,它們的底層設計對外是不開放的,外部研究人員很難進行相關問題的深入研究?!?br/>發(fā)明內(nèi)容】[0007]本發(fā)明要解決的技術問題是:克服現(xiàn)有技術在軟件測試中處理速度慢、內(nèi)存空間緊缺、測試易失敗的不足,基于量子蛙跳算法和云計算技術,提供一種云計算環(huán)境下的自動化測試數(shù)據(jù)生成方法及系統(tǒng)。[0008]本發(fā)明的技術問題可以通過以下技術方案實現(xiàn):[0009]-種云計算環(huán)境下的自動化測試數(shù)據(jù)生成方法,包含測試計劃定義、將待測試數(shù)據(jù)上傳到云測試平臺、測試執(zhí)行、測試報告生成與分析4個步驟;[0010]所述的測試計劃定義是,在建立一個測試計劃時,在JMeter的GUI界面上該測試計劃以樹形結構顯示,而測試計劃的內(nèi)容存儲為一個xml格式的文件,所述的xml格式的文件是對樹形測試計劃的形式化描述;當測試執(zhí)行模塊執(zhí)行測試計劃時,就會依據(jù)所述的xml格式的文件的描述判定應該在內(nèi)存中建立什么樣的對象來反映用戶建立的測試計劃,并根據(jù)不同的對象產(chǎn)生各自的行為對待測試系統(tǒng)進行訪問;[0011]所述的將待測試數(shù)據(jù)上傳到云測試平臺是,在云測試平臺上實現(xiàn)對所有待測數(shù)據(jù)采用量子蛙跳算法獲得最優(yōu)測試數(shù)據(jù)進行分組測試,進行軟件測試各模塊的統(tǒng)計、關聯(lián)分析,然后應用大數(shù)據(jù)處理數(shù)據(jù);所有測試相關的應用程序、測試工具、測試用例、測試環(huán)境都先部署到云測試平臺上,借助云計算技術進行測試;[0012]所述的測試執(zhí)行是,將上傳到云測試平臺的數(shù)據(jù)通過JMeter開啟多線程模擬多用戶的操作,其中每個線程都調(diào)用測試計劃中的元件對象并執(zhí)行這些對象定義的操作;[0013]所述的測試報告生成與分析是,在測試執(zhí)行過程中實時的收集平均響應時間、系統(tǒng)吞吐量,并將結果以聚合報告的形式顯示給測試人員,供其進行分析和參考。[0014]本發(fā)明所述的云測試平臺具體是由四個層次構成的,即云資源層、云資源管理層、服務管理層和用戶管理層。[0015]本發(fā)明旨在以Jmeter自動化測試工具和Jenkins持續(xù)集成軟件為基底,構造一個云計算軟件測試平臺架構,以解決測試過程中內(nèi)存緊缺的現(xiàn)象,采用一個大數(shù)據(jù)緩沖池,將性能持續(xù)集成測試記錄按每次性能持續(xù)集成測試請求載入內(nèi)存的緩沖隊列中,在云平臺上實現(xiàn)測試,用量子蛙跳算法獲得最優(yōu)測試數(shù)據(jù)進行分組測試,進行軟件測試各數(shù)據(jù)的統(tǒng)計、關聯(lián)分析,然后應用云計算技術處理數(shù)據(jù),最終加快數(shù)據(jù)處理測試速度,節(jié)省內(nèi)存空間。[0016]本發(fā)明有以下有益效果:[0017]1、本發(fā)明使用持續(xù)集成中的任何一個環(huán)節(jié)都是自動完成的,無需太多的人工干預,有利于當前第1頁1 2