• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    LoadRunner在中間件測試中的使用方法與研究

    2017-04-18 23:43:18肖洋曾明
    電腦知識與技術(shù) 2016年35期
    關(guān)鍵詞:中間件軟件測試

    肖洋+曾明

    摘要:中間件是介于客戶端和服務(wù)器端的一類輕量級軟件,難以通過常規(guī)測試方法對其進(jìn)行需求驗證,本文通過某型中間件測試項目實踐的歸納總結(jié),結(jié)合理論分析和測評工具LoadRunner的輔助檢驗,得出一套中間件的基本測試思路和方法,并已在同類軟件測試中進(jìn)行推廣應(yīng)用,取得良好的測試效果,有效提升測試質(zhì)量和效率,屬于測試方法上的探索與創(chuàng)新。

    關(guān)鍵詞:中間件;軟件測試;LoadRunner;C++;C#

    中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)35-0273-03

    1 引言

    中間件是一種獨立的系統(tǒng)軟件或者服務(wù)程序,位于操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫之上而在應(yīng)用軟件之下。分布式應(yīng)用軟件可以借助中間件在不同的技術(shù)之間交換資源,中間件多數(shù)應(yīng)用于C/S(Client/Server)、B/S(Browser/Server)以及無服務(wù)器節(jié)點的三類分布式軟件之中。

    LoadRunner是一種預(yù)測系統(tǒng)行為和性能的負(fù)載測試工具,通過以模擬上千萬用戶實施并發(fā)負(fù)載及實時性能監(jiān)測的方式來確認(rèn)和查找問題。

    在分布式系統(tǒng)測試中,LoadRunner只適用于沒有中間件的B/S軟件,對于有中間件的B/S軟件,在工具使用時一般將中間件視作服務(wù)器程序的一部分,測試結(jié)果是對服務(wù)器和中間件檢測的共同結(jié)果而不單指中間件。而C/S軟件一般不使用LoadRunner進(jìn)行測試,因為其操作很難被錄制完整,目前主要有兩種方法測試C/S類軟件,一種方法是靠功能測試的方法來檢驗軟件的性能、強(qiáng)度等核心指標(biāo),比如同時加載運(yùn)行多個客戶端程序,另一種方法是在調(diào)用中間件的代碼前后插樁獲取時間,通過多次調(diào)用取均值等方式進(jìn)行考量,但是這兩種方法都很難說明中間件在多用戶并發(fā)下的處理能力,掩蓋了中間件的真實效能,只能是一個粗略甚至是錯誤的評價(比如由于其他原因造成10毫秒內(nèi)數(shù)據(jù)不能被顯示)。

    本文通過長期的資料查詢和自動化測試工具使用研究,立足現(xiàn)有工具LoadRunner的基礎(chǔ)上,采用測試+開發(fā)的模式,總結(jié)出一套單獨測試中間件類軟件的方法,可適用于B/S、C/S以及無服務(wù)器模式下中間件的性能、強(qiáng)度等測試。

    2 中間件測試中的分析實踐

    2.1 中間件的簡介

    中間件是普遍是軟件系統(tǒng)的核心組成部分,基本都要求高性能、實時、低延遲,本次測試的中間件軟件結(jié)構(gòu)如圖1所示:

    中間件采用C++語言開發(fā),底層采用實時CORBA作為通信基礎(chǔ),是一個標(biāo)準(zhǔn)動態(tài)鏈接庫(DLL)。該軟件支持對象、消息和數(shù)據(jù)流三種模式的數(shù)據(jù)傳輸,能夠?qū)崿F(xiàn)無服務(wù)器節(jié)點、分布式運(yùn)行,并能夠監(jiān)視運(yùn)行狀態(tài)。

    2.2 LoadRunner工作原理

    LoadRunner工具主要分為三個部分。

    1) Vuser生成器

    Vuser生成器用于錄制測試操作,生成一個虛擬用戶,虛擬用戶可以模擬真實用戶的各類操作,可以參數(shù)化設(shè)置,從而達(dá)到利用不同數(shù)據(jù)測試應(yīng)用程序的目的,錄制主要適用于Web類的軟件。

    2) Controller控制器

    Controller控制器屬于LoadRunner上的核心部件,可以利用Vuser生成器虛擬的用戶,建立一個多用戶的測試方案,可以利用各類參數(shù)進(jìn)行并發(fā)設(shè)置,從而達(dá)到持續(xù)且循環(huán)的負(fù)載測試。

    同時,Controller可以實時監(jiān)控應(yīng)用軟件的運(yùn)行性能。

    3) Analyzer分析器

    Analyzer分析器主要用于獲取并發(fā)測試后在Vuser生成器中設(shè)定的參數(shù)值,以及應(yīng)用軟件的運(yùn)行性能分析。

    簡而言之,LoadRunner通過Vuser錄制一個用戶的操作,Controller利用參數(shù)化,模擬多個不同的用戶同時并發(fā)操作,整個軟件的多個指標(biāo)可以在Analyzer中量化得出。

    2.3 測試方法的分析與設(shè)計

    各類平臺可以通過中間件加入或者退出系統(tǒng)。按照中間件的某項要求,整個系統(tǒng)中至少支持255個以上的中間件可以同時運(yùn)行,常規(guī)測試方法無法應(yīng)對如此大的并發(fā)要求檢查,而LoadRunner無法錄制這類無服務(wù)器節(jié)點軟件的各類操作,第一步就不可行。但是由于其Controller在并發(fā)控制上的強(qiáng)大功能,只有尋找一種方法,既能避開C/S軟件行為不好錄制模擬的缺點,又能使用其大規(guī)模并發(fā)控制的優(yōu)勢,這是整個測試方法的關(guān)鍵。如果可行,則能夠單獨模擬中間件的各種行為,并能將其視作一個Vuser,進(jìn)而納入LoadRunner的測試方式。

    經(jīng)過分析,LoadRunner可以采用標(biāo)準(zhǔn)C語言的方式加載DLL文件,與實裝設(shè)備軟件調(diào)用中間件的方式?jīng)]有差異,但是LoadRunner無法模擬中間件中回調(diào)函數(shù)的使用(C語言不支持回調(diào)函數(shù)),該函數(shù)是中間件的核心功能,無法繞開,經(jīng)過多次實踐,單獨開發(fā)了一個測試輔助程序,利用中間件借口,替代其回調(diào)功能,那么就可以采用直接調(diào)用中間件函數(shù)的方式完整實現(xiàn)其各種功能,從而解決其無法錄制的問題,代碼見圖3。

    在Controller模擬多個中間件時,在調(diào)用中間件的過程中,發(fā)現(xiàn)有內(nèi)存沖突的現(xiàn)象,并不符合實際運(yùn)行環(huán)境中的一個臺位一個中間件的使用情況,因此,通過設(shè)置使每個成員能夠獲取自己獨立的進(jìn)程,讓中間件成員之間不會產(chǎn)生內(nèi)存資源沖突,并通過并發(fā)集合點等功能的設(shè)置,達(dá)到檢查各類性能指標(biāo)的目的。到此,整個測試方法設(shè)計完成。

    2.4 測試結(jié)果的驗證

    通過將中間件以及輔助程序封裝成一個Vuser,利用Controller并發(fā)調(diào)用,設(shè)計各類測試用例驗證中間件性能、強(qiáng)度等指標(biāo)能力,從LoadRunner的實際表現(xiàn)來看,至少有以下幾類軟件缺陷是其它測試方法無法或者很難驗證的(驗證的代價過大):

    1) 最大節(jié)點數(shù)檢驗

    中間件要求同一網(wǎng)絡(luò)中至少支持255個中間件同時運(yùn)行,在強(qiáng)度測試中發(fā)現(xiàn)軟件只能支持到52個中間件的加入。后經(jīng)開發(fā)人員確認(rèn)為成員管理模塊設(shè)計分配的內(nèi)存單位計算錯誤所致,而在通常使用中,一般只有十幾個平臺加入,該問題幾乎不會被發(fā)現(xiàn)。

    2) 信息處理能力的檢驗

    中間件有多個處理能力指標(biāo),比如對象間交互事件發(fā)布/訂購的幀周期≤1s(可靠傳輸),在性能測試中發(fā)現(xiàn),在多個成員并發(fā)發(fā)送消息時,幀周期雖然滿足要求,但是數(shù)據(jù)有丟失或者阻塞,這種問題在單獨的代碼插樁中很難被發(fā)現(xiàn)。

    在實際中,中間件主要是協(xié)調(diào)上層軟件的操作,一個操作一個消息,很難模擬出大規(guī)模用戶并發(fā)消息時的場景,但是Controller可以持續(xù)不斷進(jìn)行壓力負(fù)載測試,從而發(fā)現(xiàn)其在強(qiáng)度測試上的問題。

    3) 軟件算法正確性的檢驗

    由于中間件是被LoadRunner封裝成一個Vuser,而又保留其DLL的特性,因此可以通過一些極端方式檢驗?zāi)承┧惴ǖ恼_性,比如測試時間同步函數(shù)。要求時間同步精度≤10ms,經(jīng)過測試發(fā)現(xiàn)其精度常在10ms左右浮動,后做了1000次、2000次的時間同步,發(fā)現(xiàn)其數(shù)據(jù)逐步發(fā)散,顯示其同步算法有問題,如圖4所示,而這類缺陷,開發(fā)人員由于無法模擬出多個中間件并發(fā)的情況,很難對其進(jìn)行檢驗。

    篇幅所限,其余功能、接口等方面的測試就不再贅述。

    3 在C\S系統(tǒng)中的應(yīng)用推廣實踐

    被測系統(tǒng)是一個由.NET + SQL Server開發(fā)的C/S系統(tǒng),系統(tǒng)要求并發(fā)用戶訪問數(shù)≥100個,對此一般有兩種測試方法:

    第一種是傳統(tǒng)的測試方法,由于LoadRunner有直接調(diào)用exe文件的功能,可以直接加載100個客戶端,但是在測試過程中,由于100個客戶端框架所占內(nèi)存耗費極大,根本達(dá)不到100個用戶操作系統(tǒng)就會崩潰,另一方面同時運(yùn)行不代表同時并發(fā),即使實現(xiàn)加載也不代表并發(fā)性能。

    第二種就是通過2.3所述的方法來進(jìn)行分析,可知測試的關(guān)鍵是如何將客戶端封裝成一個Vuser,經(jīng)過資料研究,發(fā)現(xiàn)可以通過.NET的LR插件對客戶端進(jìn)行二次開發(fā),將其編譯成一個可供Controller調(diào)用的Vuser,在二次開發(fā)中,可以將耗費資源的框架類等注釋掉,調(diào)試完成后就可生成一個Vuser,然后進(jìn)行各類測試。

    在Java開發(fā)的各類軟件中,可以使用同樣的分析方法,采用加載class的方式,實現(xiàn)對接口函數(shù)的調(diào)用,從而設(shè)計出一個可供Controller調(diào)用的Vuser。

    4 總結(jié)

    本文主要是從中間件測試的實踐中,發(fā)現(xiàn)LoadRunner在測試并發(fā)性能指標(biāo)時的獨特優(yōu)勢,從而總結(jié)出一套將被測軟件封裝成Vuser的分析方法,再利用Controller實現(xiàn)多用戶并發(fā)從而發(fā)現(xiàn)普通測試方法不易發(fā)現(xiàn)的問題。

    本方法難度在于具體實踐中各個類型軟件封裝的方法不一樣,比如中間件編程語言有C++、C#、Java、Perl、Python等等,形式可以是DLL、COM、EXE等等,該方法大多需要編程輔助,需要熟悉各類編程語言,完全掌握有難度,但是如果能把握其中原理,遇到該類測試時知道解決思路,按照封裝Vuser的思想認(rèn)真進(jìn)行分析研究,雖然在初期進(jìn)展緩慢,在完成封裝后,測試進(jìn)度和測試質(zhì)量都能上一個層次,對于自身技術(shù)實力的增長也有好處,是值得花費時間和精力進(jìn)行研究的。

    猜你喜歡
    中間件軟件測試
    基于OBE的軟件測試課程教學(xué)改革探索
    航天軟件測試模型構(gòu)建與應(yīng)用
    軟件(2020年3期)2020-04-20 01:45:34
    EXCEL和VBA實現(xiàn)軟件測試記錄管理
    電子制作(2018年16期)2018-09-26 03:27:18
    RFID中間件技術(shù)及其應(yīng)用研究
    電子制作(2018年14期)2018-08-21 01:38:10
    基于VanConnect中間件的設(shè)計與開發(fā)
    電子測試(2018年10期)2018-06-26 05:54:02
    關(guān)于軟件測試技術(shù)應(yīng)用與發(fā)展趨勢研究
    電子測試(2017年15期)2017-12-18 07:19:20
    基于Android 平臺的OSGi 架構(gòu)中間件的研究與應(yīng)用
    電子制作(2017年13期)2017-12-15 09:00:21
    中間件在高速公路領(lǐng)域的應(yīng)用
    智能電能表軟件測試技術(shù)概述
    《軟件測試》課程教學(xué)策略研究
    河南科技(2014年10期)2014-02-27 14:09:37
    秭归县| 林州市| 浙江省| 邵阳县| 马公市| 东乡族自治县| 东明县| 准格尔旗| 阿巴嘎旗| 吉林省| 东台市| 潮州市| 桑植县| 崇州市| 宁波市| 中卫市| 涞水县| 和顺县| 香港| 深圳市| 宜章县| 湄潭县| 得荣县| 三门县| 怀安县| 临夏县| 隆安县| 东至县| 黎城县| 云南省| 武冈市| 明水县| 奇台县| 独山县| 清流县| 库尔勒市| 海南省| 兰西县| 永春县| 原阳县| 额敏县|