本發(fā)明涉及一種性能測試裝置,尤其是一種可配置性能測試裝置。
背景技術(shù):
目前大部分測試團(tuán)隊對接口的性能測試,是基于編程方式實現(xiàn)接口的請求組裝、發(fā)送、接收和對返回響應(yīng)報文進(jìn)行驗證。不僅需要使用者有一定開發(fā)功底,而且學(xué)習(xí)使用成本較高,不便于在各團(tuán)隊普及性能測試。
而且雖然市面上也存在應(yīng)用廣泛且比較成熟的性能測試工具,但其也有各自的不足,無法滿足不同用戶的各種定制化的需求,比如:
Jmeter、LoadRunner和LoadTest都是市面上應(yīng)用廣泛且比較成熟的性能測試工具,其中Jmeter是純Java應(yīng)用,不支持需要引用到.net(美國微軟公司的開發(fā)平臺)提供的方法或動態(tài)鏈接庫的測試腳本開發(fā)。LoadRunner擴(kuò)展性低,無法二次開發(fā)。Visual Studio(美國微軟公司的開發(fā)工具包)的性能測試工具Loadtest功能設(shè)計比較簡單,并不適合復(fù)雜場景的性能測試。
并且目前的常規(guī)性能測試中需要性能測試人員在測試之后花費較多時間來統(tǒng)計測試結(jié)果,編寫測試報告。對于迭代較快,需要周期性進(jìn)行性能比對的項目,重復(fù)勞動較多。尤其是上述三種性能測試工具原生的報告,很難讓非性能測試專業(yè)領(lǐng)域的人員快速理解。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中性能測試裝置定制化導(dǎo)致的通用性低、性能測試功能不完整、不便于使用以及使用體驗差的缺陷,提供了一種可配置性能測試裝置,通過接口測試平臺、發(fā)包器和應(yīng)用服務(wù)器群組等構(gòu)建了通用的測試裝置,并且便于使用并具有更好使用體驗。
本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題的:
本發(fā)明提供了一種可配置性能測試裝置,其特點是,所述可配置性能測試裝置包括:
接口測試平臺、發(fā)包器、應(yīng)用服務(wù)器群組、數(shù)據(jù)收集服務(wù)器和數(shù)據(jù)庫;
其中所述接口測試平臺創(chuàng)建測試用例和/或測試場景,并保存測試任務(wù)信息至所述數(shù)據(jù)庫,生成測試請求并調(diào)用所述發(fā)包器;
所述發(fā)包器解析所述測試請求,從所述數(shù)據(jù)庫調(diào)用測試用例和/或測試場景,并構(gòu)建測試任務(wù);
所述發(fā)包器還通過所述應(yīng)用服務(wù)器群組執(zhí)行所述測試任務(wù)并生成測試數(shù)據(jù),統(tǒng)計計算所述測試數(shù)據(jù)得到統(tǒng)計數(shù)據(jù);
所述數(shù)據(jù)收集服務(wù)器統(tǒng)計計算應(yīng)用服務(wù)器群組執(zhí)行所述測試任務(wù)的資源數(shù)據(jù);
所述發(fā)包器統(tǒng)計所述統(tǒng)計數(shù)據(jù)并通過接口測試平臺推送;
所述數(shù)據(jù)庫存儲所述統(tǒng)計數(shù)據(jù)和測試數(shù)據(jù)。
本發(fā)明利用接口測試平臺統(tǒng)一用戶接口,并繼而通過發(fā)包器、應(yīng)用服務(wù)器群組等共同實現(xiàn)了配置全功能的性能測試,在簡化性能測試復(fù)雜度,提高性能測試效率的同時,還為用戶提供了更加直觀便捷地使用體驗。
較佳地,所述可配置性能測試裝置還包括任務(wù)處理服務(wù)器群組,所述任務(wù)處理服務(wù)器群組從接口測試平臺接收測試請求并調(diào)用所述發(fā)包器。
優(yōu)選地,所述任務(wù)處理服務(wù)器群組將測試請求放入任務(wù)隊列,并按照任務(wù)隊列的順序調(diào)用所述發(fā)包器。
本發(fā)明利用任務(wù)處理服務(wù)器群組來統(tǒng)一管理接口測試平臺獲取到的測試請求,強化請求處理效率。
較佳地,所述可配置性能測試裝置還包括存儲單元,所述發(fā)包器生成并存儲響應(yīng)報文至所述存儲單元。
優(yōu)選地,所述可配置性能測試裝置異步地對所述響應(yīng)報文進(jìn)行功能驗證,并將功能驗證的結(jié)果通過所述接口測試平臺推送。
請求和響應(yīng)是一一對應(yīng)的,響應(yīng)報文用于方便發(fā)現(xiàn)請求執(zhí)行中所存在的問題,但是在性能測試中,請求和響應(yīng)的數(shù)量是巨大的,若每一對請求和響應(yīng)中,請求要等待響應(yīng)驗證完畢會嚴(yán)重影響測試效率。
現(xiàn)有常規(guī)性能測試工具都是在得到響應(yīng)后同步校驗,邏輯過于復(fù)雜勢必會影響請求頻率,導(dǎo)致大壓力下出現(xiàn)的功能異常無法全面檢測到。而且也不記錄響應(yīng)結(jié)果,即使在腳本中實現(xiàn)記錄也是保存到本地文件,不方便做統(tǒng)一管理和異步驗證。
所以本發(fā)明中利用異步的功能測試,既不影響測試任務(wù)的執(zhí)行效率,又可以進(jìn)行全面的功能驗證。
較佳地,所述測試請求包括測試參數(shù)、測試邏輯和對應(yīng)于所述數(shù)據(jù)庫中測試用例或測試場景的主鍵。
優(yōu)選地,所述發(fā)包器基于測試參數(shù)、測試邏輯以及通過主鍵從所述數(shù)據(jù)庫中調(diào)用的測試用例和/或測試場景構(gòu)建測試任務(wù)。
優(yōu)選地,所述統(tǒng)計數(shù)據(jù)包括響應(yīng)時間、用戶吞吐量以及并發(fā)數(shù)等。
優(yōu)選地,所述資源數(shù)據(jù)包括使用內(nèi)存、CPU(中央處理器)和IO(輸入輸出)的資源利用率等。
較佳地,所述發(fā)包器多線程地請求所述應(yīng)用服務(wù)器群組執(zhí)行所述測試任務(wù)。
較佳地,所述應(yīng)用服務(wù)器群組和發(fā)包器采用分布式部署。
所謂分布式部署是將數(shù)據(jù)分散的存儲于多臺獨立的機(jī)器設(shè)備上,采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺存儲服務(wù)器分擔(dān)存儲負(fù)荷,利用位置服務(wù)器定位存儲信息,本發(fā)明利用分布式部署不但解決了傳統(tǒng)集中式存儲系統(tǒng)中單存儲服務(wù)器的瓶頸問題,還提高了系統(tǒng)的可靠性、可用性和擴(kuò)展性。
在符合本領(lǐng)域常識的基礎(chǔ)上,上述各優(yōu)選條件,可任意組合,即得本發(fā)明各較佳實例。
本發(fā)明的積極進(jìn)步效果在于:
本發(fā)明的可配置性能測試裝置通過接口測試平臺統(tǒng)一獲取測試請求,并繼而通過發(fā)包器、應(yīng)用服務(wù)器群組等共同實現(xiàn)了配置全功能的性能測試,提高了性能測試效率,還為用戶提供了更加直觀便捷地使用體驗。
本發(fā)明還通過對響應(yīng)報文的異步功能測試,在不影響測試任務(wù)的執(zhí)行效率的同時實現(xiàn)全面的功能驗證。
此外本發(fā)明還利用分布式部署,避免了傳統(tǒng)集中式存儲系統(tǒng)中單存儲服務(wù)器的瓶頸問題,還提高了系統(tǒng)的可靠性、可用性和擴(kuò)展性。
附圖說明
圖1為本發(fā)明的實施例1的可配置性能測試裝置的結(jié)構(gòu)示意圖。
具體實施方式
下面通過實施例的方式進(jìn)一步說明本發(fā)明,但并不因此將本發(fā)明限制在所述的實施例范圍之中。
本發(fā)明為了實現(xiàn)了配置全功能的性能測試,提高了性能測試效率,以及為用戶提供更加直觀便捷地使用體驗。通過接口測試平臺統(tǒng)一獲取測試請求,并繼而通過發(fā)包器、應(yīng)用服務(wù)器群組等構(gòu)成了可配置性能測試裝置。
本發(fā)明還利用對響應(yīng)報文的異步功能測試,實現(xiàn)了在不影響測試任務(wù)的執(zhí)行效率的同時,對響應(yīng)報文的全面的功能驗證。并且利用分布式部署提高了系統(tǒng)的可靠性、可用性和擴(kuò)展性。
下面通過下述實施例來對本發(fā)明進(jìn)行進(jìn)一步地詳細(xì)地說明。
實施例1
如圖1所示,本實施例的可配置性能測試裝置包括接口測試平臺1、發(fā)包器2、應(yīng)用服務(wù)器群組3、數(shù)據(jù)收集服務(wù)器4、數(shù)據(jù)庫5、任務(wù)處理服務(wù)器群組6和存儲單元7。
其中接口測試平臺1創(chuàng)建測試用例/測試場景,并保存測試任務(wù)信息至數(shù)據(jù)庫5,如圖1所示,本實施例的接口測試平臺1包括接口管理11和性能測試用例管理12,其中接口管理11能夠?qū)崿F(xiàn)全面支持各種接口類型,性能測試用例管理12用于對測試用例的管理,實現(xiàn)對待測接口和測試用例的統(tǒng)一管理維護(hù),所以性能測試的腳本無需編碼實現(xiàn),所有測試用例和測試場景通過配置就能執(zhí)行。
任務(wù)處理服務(wù)器群組6獲取接口測試平臺1生成的測試請求,并放入任務(wù)隊列,此后任務(wù)處理服務(wù)器群組6按照任務(wù)隊列的順序依次執(zhí)行測試請求。執(zhí)行測試請求首先調(diào)用分布式部署的發(fā)包器2,然后發(fā)包器2解析測試請求,從測試請求中提取測試參數(shù)、測試邏輯和需要調(diào)用的測試用例或測試場景的主鍵。
舉例來說,通過配置的測試請求中可以自定義并發(fā)數(shù),即通過啟線程個數(shù)控制并發(fā)數(shù),可設(shè)置恒定線程數(shù)或者逐步啟線程,滿足恒定壓力和逐步增壓兩種場景的測試。定義測試時長/迭代次數(shù),即可設(shè)置測試時長,到達(dá)測試時長,測試終止;也可設(shè)置迭代次數(shù),每個線程請求滿預(yù)定次數(shù),測試終止。其中時長和次數(shù)同時設(shè)置則以次數(shù)為準(zhǔn)。
還可以定義參數(shù)化方式,支持順序取值,隨機(jī)取值,唯一取值,滿足各種場景的需要。自定義斷言,即通過配置自定義設(shè)置斷言,如:字符串匹配,XML/Json(可擴(kuò)展標(biāo)記語言/JavaScrip對象表示法)節(jié)點匹配,模糊匹配。
還可以進(jìn)一步定義思考時間設(shè)置,即支持通過思考時間控制TPS(系統(tǒng)吞吐量),如設(shè)置每秒發(fā)送一次請求,若請求耗時200毫秒,則等待800毫秒再繼續(xù)發(fā)送請求;也可設(shè)置固定思考時間,如請求完成后等待一秒后再次發(fā)送請求。
然后從數(shù)據(jù)庫5調(diào)用對應(yīng)于主鍵的測試用例或測試場景。此后發(fā)包器2基于測試參數(shù)、測試邏輯以及通過主鍵從數(shù)據(jù)庫5中調(diào)用的測試用例或測試場景構(gòu)建測試任務(wù)。
其中本實施例中所述發(fā)包器2以多線程方式請求分布式部署的應(yīng)用服務(wù)器群組3執(zhí)行構(gòu)建完成的測試任務(wù)。本實施例的分布式部署的應(yīng)用服務(wù)器群組3和發(fā)包器2還可以采用異地部署的方式來實現(xiàn)。
其中可在發(fā)包器設(shè)置多測試用例批量運行,即支持多個測試用例的串行執(zhí)行和并行執(zhí)行。如需按序測試多個用例,可按序執(zhí)行多個用例,用例間會按照執(zhí)行順序排隊執(zhí)行;也可以將多個用例組成混合場景并行測試。
在另一個實施例中,發(fā)包器支持分布式部署多臺壓力測試機(jī),即應(yīng)用服務(wù)器群組,并通過控制負(fù)載均衡,將多個性能測試任務(wù)分發(fā)到不同的壓力測試機(jī)去執(zhí)行。
判斷待執(zhí)行性能測試任務(wù)與正在執(zhí)行或已排隊執(zhí)行的性能測試任務(wù),在目標(biāo)測試服務(wù)器和測試時間上是否有沖突,若有則放入同一隊列按序執(zhí)行,避免資源爭用導(dǎo)致的測試結(jié)果不準(zhǔn)確。若無沖突,則執(zhí)行負(fù)載均衡策略,分發(fā)到空閑的壓力測試機(jī)上。
發(fā)包器2調(diào)用應(yīng)用服務(wù)器群組3執(zhí)行測試任務(wù)并生成測試數(shù)據(jù),然后發(fā)包器2統(tǒng)計計算所述測試數(shù)據(jù)得到包括響應(yīng)時間、用戶吞吐量以及并發(fā)數(shù)等的統(tǒng)計數(shù)據(jù)。
數(shù)據(jù)收集服務(wù)器4統(tǒng)計計算應(yīng)用服務(wù)器群組執(zhí)行所述測試任務(wù)的資源數(shù)據(jù),包括使用內(nèi)存、CPU和IO的資源利用率等。
此后發(fā)包器2統(tǒng)計計算所述統(tǒng)計數(shù)據(jù)并通過接口測試平臺1推送至外部,本實施例中還可以進(jìn)一步采用郵件通知的方式來通知用戶,也可以通過特定的顯示界面來顯示相關(guān)測試報告。此外還可以采用其他適用的通知方式,并不局限于本實施例中的實現(xiàn)方式。
然后,數(shù)據(jù)庫5存儲所述統(tǒng)計數(shù)據(jù)和測試數(shù)據(jù)。并且在應(yīng)用服務(wù)器群組3執(zhí)行完測試任務(wù)并生成測試數(shù)據(jù)后,發(fā)包器2生成并存儲響應(yīng)報文,然后存儲至存儲單元7中。
此后,異步地對響應(yīng)報文進(jìn)行功能驗證,即在發(fā)包器2生成測試數(shù)據(jù)和響應(yīng)報文后,測試請求執(zhí)行完成,任務(wù)隊列中將隊列中的測試請求按照次序再調(diào)用發(fā)包器2,而對于響應(yīng)報文的驗證獨立執(zhí)行,并不影響測試請求的完成。此后將功能驗證的結(jié)果通過所述接口測試平臺推送至用戶,并且推送的方式和具體顯示方法等與上述的測試數(shù)據(jù)的推送方式相同。
如上所述,本實施例的性能測試裝置在測試用例和場景設(shè)置好后可重復(fù)使用,測試時簡單配置就能夠自動進(jìn)行性能測試,測試完成后自動統(tǒng)計性能測試報告,分析結(jié)果,并還可以郵件通知用戶,也可以到通過平臺推送出測試報告頁面查看報告,極大節(jié)省人力成本。此外,由于是自動執(zhí)行測試任務(wù),所以無需測試執(zhí)行人員在現(xiàn)場等待,自動執(zhí)行并出具報告。
此外通過平臺推送的方式可以設(shè)立權(quán)限來區(qū)分推送人員,例如用戶根據(jù)所在組別申請各自組別的權(quán)限,只能看到所在組別的測試用例和測試報告,避免干擾和誤改他人用例。可申請多個組別的權(quán)限。
本申請可用于眾多通用或?qū)S玫挠嬎阆到y(tǒng)環(huán)境或配置中。例如:個人計算機(jī)、服務(wù)器計算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費電子設(shè)備、網(wǎng)絡(luò)PC(個人電腦)、小型計算機(jī)、大型計算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境等等。
本申請也可以在由計算機(jī)執(zhí)行的計算機(jī)可執(zhí)行指令實現(xiàn),例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。
雖然以上描述了本發(fā)明的具體實施方式,但是本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,這些僅是舉例說明,本發(fā)明的保護(hù)范圍是由所附權(quán)利要求書限定的。本領(lǐng)域的技術(shù)人員在不背離本發(fā)明的原理和實質(zhì)的前提下,可以對這些實施方式做出多種變更或修改,但這些變更和修改均落入本發(fā)明的保護(hù)范圍。