国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于彈性伸縮集群的云負(fù)載測試技術(shù)

2020-07-09 22:13:09顏碩彥晉文明李昌建
現(xiàn)代信息科技 2020年2期

顏碩彥 晉文明 李昌建

摘? 要:為保障線上軟件系統(tǒng)服務(wù)質(zhì)量的可靠性,有必要對其進行有效的負(fù)載測試。隨著云計算技術(shù)的發(fā)展,基于云端資源發(fā)起的負(fù)載測試可以方便大規(guī)??蛻舳素?fù)載的生成,且容易實施。然而,目前研究缺少相關(guān)實現(xiàn)參考,導(dǎo)致這樣的云測試系統(tǒng)難以構(gòu)建。文章提出了一套基于OpenStack的云負(fù)載測試平臺實現(xiàn)方案,介紹了基于彈性伸縮集群的云負(fù)載測試技術(shù),為實現(xiàn)基于云的負(fù)載測試系統(tǒng)提供了實現(xiàn)參考。

關(guān)鍵詞:負(fù)載測試;云測試系統(tǒng);OpenStack;彈性伸縮;測試集群

中圖分類號:TP311? ? ? 文獻標(biāo)識碼:A 文章編號:2096-4706(2020)02-0098-04

Abstract:For online software systems,it is often necessary to conduct load testing to ensure the reliability of their services. With the development of cloud computing technology,launching load testing based on cloud resources can facilitate large-scale client-side load generation,and testing is easy conduct. However,existing research lack of relevant implementation reference,which results in these cloud testing systems are difficult to build. This paper proposes a set of cloud load testing platform implementation scheme based on OpenStack,introduces the cloud load testing technology based on elastic scaling cluster,and provides a reference for realizing the cloud-based load testing system.

Keywords:load testing;cloud testing system;OpenStack;elastic scaling;test cluster

0? 引? 言

負(fù)載測試作為軟件測試的一種,是為了檢測系統(tǒng)在負(fù)載方面的相關(guān)問題從而對系統(tǒng)進行評估的過程[1],是保障大型線上軟件系統(tǒng)服務(wù)質(zhì)量可靠性的有效手段[2]。隨著云計算技術(shù)的發(fā)展,一些測試人員把負(fù)載測試遷移到云上[3],依托于云端資源發(fā)起負(fù)載測試可以方便大規(guī)??蛻舳素?fù)載的生成,同時降低負(fù)載測試的實施難度。文獻[4]設(shè)計了一種準(zhǔn)入控制和任務(wù)調(diào)度算法,實現(xiàn)云性能測試服務(wù)平臺資源的共享管理和動態(tài)分配。文獻[5]為保證分布式系統(tǒng)測試的可靠性,提出了云測試環(huán)境D-Cloud,實現(xiàn)自動化系統(tǒng)配置和測試流程。文獻[6]提出了一個用于Web服務(wù)的負(fù)載測試平臺,使得負(fù)載測試過程盡可能接近實際運行場景。文獻[7]提出的云測試平臺能夠?qū)崿F(xiàn)按需分配硬件資源,無需重新配置測試環(huán)境。

現(xiàn)有研究主要關(guān)注云測試系統(tǒng)的任務(wù)調(diào)度、測試自動化、負(fù)載測試真實性等方面,對系統(tǒng)實現(xiàn)層面的研究較少,導(dǎo)致云測試系統(tǒng)的構(gòu)建缺乏實現(xiàn)參考。鑒于此,基于校內(nèi)的“基于云計算服務(wù)設(shè)施測試系統(tǒng)”項目的研究成果,本文提出了一套基于OpenStack的云負(fù)載測試平臺實現(xiàn)方案,介紹了基于彈性伸縮集群的云負(fù)載測試技術(shù),依托于測試云中彈性伸縮的測試集群來發(fā)起負(fù)載測試,保證用于發(fā)起客戶端負(fù)載的云測試主機數(shù)量總是彈性地根據(jù)實際測試需求動態(tài)分配,避免了測試資源的浪費。本文為構(gòu)建經(jīng)濟高效的云負(fù)載測試系統(tǒng)提供了一套實現(xiàn)參考。

1? 云負(fù)載測試平臺體系結(jié)構(gòu)

本文提出了一個面向云環(huán)境的云負(fù)載測試平臺體系結(jié)構(gòu),平臺按照CloudTest、TestAgent、WebAPP、VM Monitor等幾大物理模塊進行組織,其總體物理結(jié)構(gòu)如圖1所示。

CloudTest為測試控制中心,控制整個測試的執(zhí)行流程,并提供各類測試活動的管理功能。TestAgent為測試執(zhí)行程序,是發(fā)起客戶端負(fù)載、具體實施負(fù)載測試的主要模塊。WebAPP為待測目標(biāo)應(yīng)用,用于模擬負(fù)載測試的服務(wù)器。VM Monitor為監(jiān)控程序,用于監(jiān)控云虛擬主機的資源使用。Dashboard為前端程序,它是一個基于ExtJS框架編寫的Web頁面,提供用戶與平臺交互的視圖。

本文將測試云部署在以O(shè)penStack[8]為代表的底層云計算IaaS(基礎(chǔ)服務(wù)設(shè)施)上,通過在云虛擬主機上運行TestAgent測試執(zhí)行程序,在IaaS云上構(gòu)建一個PaaS(平臺即服務(wù))層,對外提供統(tǒng)一的測試服務(wù)TaaS(測試即服務(wù))層。相關(guān)結(jié)構(gòu)的示意圖如圖2所示,底層通過OpenStack等軟件棧搭建一個包含物理主機和虛擬主機的IaaS云環(huán)境。測試系統(tǒng)在虛擬主機上安裝TestAgent測試執(zhí)行程序來發(fā)起測試,并通過一個TestManager調(diào)度各個TestAgent和向IaaS云發(fā)送控制命令,構(gòu)建一個專用于測試的服務(wù)層。TestAgent可完成虛擬用戶模擬、客戶端性能數(shù)據(jù)采集等工作。上層云測試平臺只需與TestAgent和IaaS控制中心溝通,而無需直接面對物理設(shè)備。對最終用戶而言,只需訪問測試云的管理中心TestManager即可完成所有測試工作,而無需處理復(fù)雜的底層操作細(xì)節(jié)。

OpenStack是一個開源的云計算管理平臺項目,提供了一套IaaS解決方案,通過計算組件(Nova)、對象存儲組件(Swift)、身份服務(wù)(Keystone)組件和鏡像服務(wù)組件(Glance)等主要組件來協(xié)同完成計算資源分配、調(diào)度和回收等工作。OpenStack使用Dashboard組件為用戶提供了如圖3所示的Web界面,管理員可以賦予用戶權(quán)限去操作這個Web界面來上傳鏡像、配置實例和創(chuàng)建虛擬實例等。在物理主機上搭建OpenStack需要部署不同組件,不同組件的功能如表1所示。

2? 基于云的彈性伸縮測試集群

云負(fù)載測試平臺通過在測試云中構(gòu)建云測試集群來發(fā)起客戶端負(fù)載,對待測目標(biāo)應(yīng)用進行網(wǎng)絡(luò)調(diào)用。云測試集群由一定數(shù)目的云測試主機構(gòu)成,其中云測試主機是指部署在OpenStack上且安裝有測試執(zhí)行程序TestAgent的虛擬主機實例。OpenStack支持iso、qcow2、ova等多種類型的鏡像,使用測試主機鏡像(qcow2鏡像)來創(chuàng)建云測試主機。如圖4所示的流程提供了制作測試主機的OpenStack鏡像的主要流程,該鏡像主要由測試執(zhí)行程序Linux操作系統(tǒng)、TestAgent測試執(zhí)行程序以及測試執(zhí)行環(huán)境三部分構(gòu)成,其中Linux操作系統(tǒng)提供鏡像程序運行的平臺,測試執(zhí)行環(huán)境用于提供TestAgent運行的環(huán)境支撐。云測試主機的創(chuàng)建除了需要鏡像的支撐,還需要一系列基礎(chǔ)資源的支持,如網(wǎng)絡(luò)、路由、Flavor、安全組等。本文定義云測試主機為一個五元組,其中N為Network,表示虛擬網(wǎng)絡(luò);R為Router,表示虛擬路由;F為Flavor,表示硬件資源配置;S為Security Group,表示安全組策略;I為Image,表示鏡像。

為保證測試云靈活地生成各類不同規(guī)模的客戶端負(fù)載,同時避免資源浪費,本文提出了一種測試集群的彈性伸縮機制,來更好地利用基礎(chǔ)測試資源。該彈性伸縮機制需要事先估計負(fù)載測試任務(wù)在目標(biāo)負(fù)載規(guī)模下所需要的云測試主機數(shù)量,并對云測試主機進行自適應(yīng)的申請、釋放控制等,以適應(yīng)實際的測試需要。

首先根據(jù)負(fù)載測試所需云測試主機的數(shù)量在測試云中分配虛擬測試主機,構(gòu)建用于發(fā)起負(fù)載的客戶端集群。該步驟中,將按需進行虛擬測試主機分配。假設(shè)需要K個虛擬主機來作為客戶端發(fā)起負(fù)載測試,而當(dāng)前測試云中僅有少于K的活躍云測試主機,則測試過程將要求測試云彈性地分配更多云測試主機,確??捎玫脑茰y試主機數(shù)量大于K。而如果當(dāng)前云測試主機數(shù)量大于K,且有L個云測試主機已經(jīng)相當(dāng)長時間內(nèi)未被使用,則測試云將自動釋放這些虛擬測試主機以減少當(dāng)前的資源占用。如此,用于發(fā)起客戶端負(fù)載的云測試主機的數(shù)量總是彈性地根據(jù)實際測試需要來控制,而不用像傳統(tǒng)的性能測試需要事先構(gòu)建一個規(guī)模固定的測試集群。

在實施負(fù)載測試的過程中,測試云始終對各個云測試主機的實際資源使用情況進行監(jiān)控。一旦發(fā)現(xiàn)某云測試主機上的CPU、內(nèi)存等占用達到上限閾值,則自動調(diào)用測試云的API來分配更多的云測試主機。如此,即使測試起初所判定需要的云測試主機數(shù)量不夠準(zhǔn)確,也能夠自適應(yīng)地對云測試主機數(shù)量進行調(diào)整,始終保證當(dāng)前擁有的云測試主機能夠滿足指定規(guī)模負(fù)載的發(fā)起需要??蛻舳藴y試主機的分配和彈性伸縮過程如圖5所示。云測試主機的彈性分配和釋放最終通過底層云環(huán)境的控制接口實現(xiàn)。在OpenStack云中,Nova模塊提供虛擬主機的申請和釋放REST接口,通過發(fā)送REST服務(wù)調(diào)用命令為Nova后臺服務(wù),即可實現(xiàn)測試云的主機控制功能。對于虛擬測試主機而言,其彈性伸縮是通過測試云的相關(guān)控制邏輯來實現(xiàn)的,而不是通過云自身直接提供的彈性伸縮機制。

3? 云負(fù)載測試的執(zhí)行

云負(fù)載測試平臺按照測試腳本、測試用例的概念體系來管理負(fù)載測試活動。在每個測試腳本中,使用testBegin()和testEnd()原語調(diào)用標(biāo)識腳本的開始和結(jié)束,該原語對的執(zhí)行時間范圍也是腳本的執(zhí)行時間,可用該時間來了解被測應(yīng)用的性能。FunkLoad測試腳本基于Python的WebUnit框架來描述用戶對Web應(yīng)用的訪問,該腳本主要記錄對Web應(yīng)用進行訪問過程中的HTTP報文,通過重放這些HTTP報文,實現(xiàn)回歸測試。以圖6所示的FunkLoad腳本為例,一個腳本可用actionBegin()和actionEnd()原語切分為若干不同的子活動,即一個較大的腳本可能包含一系列相對獨立的活動。例如,對Web應(yīng)用的訪問可能包括login、view、submit等多個不同步驟。如此,可以為每個步驟搜集執(zhí)行時間、數(shù)據(jù)通信量的統(tǒng)計信息,更具細(xì)粒度地考查被測應(yīng)用的執(zhí)行表現(xiàn)。

測試用例表達對待測目標(biāo)應(yīng)用的測試配置,此處的測試用例主要是負(fù)載測試,包含負(fù)載測試的相關(guān)環(huán)境和執(zhí)行配置選項,包以及負(fù)載測試過程中的負(fù)載變化策略等。每個測試用例包含一個或多個測試腳本,這些測試腳本描述了對待測目標(biāo)應(yīng)用的不同訪問方式,多個測試腳本構(gòu)成了對云應(yīng)用的測試剖面,反映一個負(fù)載測試主要關(guān)注待測目標(biāo)應(yīng)用中哪些功能的性能表現(xiàn)。用戶選取測試腳本、創(chuàng)建測試用例來完成負(fù)載測試活動的配置。

用戶配置好的負(fù)載測試活動被提交至測試控制中心,控制中心根據(jù)負(fù)載測試活動中的負(fù)載規(guī)模在測試云上請求分配一定數(shù)目的云測試主機,并將負(fù)載測試活動分配到對應(yīng)的云測試主機上執(zhí)行。云測試主機在接收到負(fù)載測試活動后,解析配置的負(fù)載變化策略的信息,按照負(fù)載變化策略在指定的時間節(jié)點上生成預(yù)設(shè)規(guī)模的客戶端負(fù)載,每個負(fù)載依賴于相應(yīng)的腳本執(zhí)行引擎,發(fā)起對待測目標(biāo)應(yīng)用的網(wǎng)絡(luò)調(diào)用,待測目標(biāo)應(yīng)用執(zhí)行客戶端負(fù)載中的動作并給出響應(yīng),由云測試主機收集測試執(zhí)行數(shù)據(jù)并匯總給測試控制中心,形成對待測目標(biāo)應(yīng)用性能的分析與評估。在測試執(zhí)行過程中,測試控制中心會收集測試集群中每個云測試主機匯報的監(jiān)控數(shù)據(jù),分析監(jiān)控數(shù)據(jù)來判斷云測試主機的資源是否達到閾值上限,從而進行動態(tài)的伸縮。

4? 結(jié)? 論

本文提出了一套基于OpenStack的云負(fù)載測試平臺實現(xiàn)方案,分別介紹了云負(fù)載測試平臺體系結(jié)構(gòu)、測試集群的構(gòu)建和負(fù)載測試活動的執(zhí)行,實現(xiàn)了一種基于彈性伸縮集群的云負(fù)載測試技術(shù),在測試過程中保證用于發(fā)起客戶端負(fù)載的云測試主機數(shù)量,彈性地根據(jù)實際測試需求動態(tài)分配,避免了測試資源的浪費,為構(gòu)建經(jīng)濟高效的云負(fù)載測試系統(tǒng)提供了實現(xiàn)參考。

參考文獻:

[1] JIANG Z,HASSAN A. A Survey on Load Testing of Large-Scale Software Systems [J]. IEEE Transactions on Software Engineering,2015,41(11):1.

[2] SCHULZH,ANGERSTEINT,HOORN A V. Towards Automating Representative Load Testing in Continuous Software Engineering [C]//ICPE18:ACM/SPEC International Conference on Performance Engineering. Association for Computing Machinery,2018:123-126.

[3] HARIKRISHNA P,AMUTHANA. A survey of testing as a service in cloud computing [C]// 2016 International Conference on Computer Communication and Informatics (ICCCI). IEEE,2016.

[4] 李萱,王偉,張文博,等.基于云的Web應(yīng)用性能測試服務(wù)平臺 [J].計算機系統(tǒng)應(yīng)用,2013,22(10):33-38.

[5] HANAWA T,BANZAI T,KOIZUMI H,et al. Large-Scale Software Testing Environment Using Cloud Computing Technology for Dependable Parallel and Distributed Systems [C]// Third International Conference on Software Testing,Verification and Validation,ICST 2010,Paris,F(xiàn)rance,April 7-9,2010,Workshops Proceedings. IEEE Computer Society,2010.

[6] YAN M,SUN H,WANG X,et al. Building a TaaS platform for web service load testing [C]// 2012 IEEE International Conference on Cluster Computing. IEEE,2012:576-579.

[7] 丁小盼,周浩,賀珊,等.基于OpenStack的云測試平臺及其性能分析研究 [J].軟件,2015,36(1):6-10.

[8] 李知杰,趙健飛.OpenStack開源云計算平臺 [J].軟件導(dǎo)刊,2012,11(12):10-12.

作者簡介:顏碩彥(1994-),男,漢族,江蘇淮安人,碩士研究生,研究方向:軟件分析與測試;晉文明(1994-),男,漢族,安徽當(dāng)涂人,碩士研究生,研究方向:軟件分析與測試。

宝清县| 万年县| 文化| 丁青县| 张家界市| 莱阳市| 赤城县| 耒阳市| 宣化县| 沛县| 昌邑市| 会泽县| 区。| 黔南| 启东市| 金华市| 无为县| 乡宁县| 合作市| 方城县| 潞城市| 凤山县| 潢川县| 竹北市| 漳州市| 麟游县| 阜南县| 林周县| 曲阳县| 宜昌市| 尉犁县| 咸丰县| 六盘水市| 商丘市| 凯里市| 镇原县| 铁岭市| 开鲁县| 拉孜县| 绥江县| 三门峡市|