黃小林 申珅
摘要:該文使用LoadRunner對(duì)徐州工程學(xué)院網(wǎng)絡(luò)教學(xué)平臺(tái),進(jìn)行初步的性能測(cè)試。首先,對(duì)項(xiàng)目分析,設(shè)計(jì)完善測(cè)試方案;然后錄制相關(guān)腳本,并對(duì)腳本進(jìn)行相應(yīng)的優(yōu)化處理,模擬多用戶并發(fā),設(shè)計(jì)場(chǎng)景,對(duì)場(chǎng)景進(jìn)行調(diào)試,對(duì)測(cè)試用例進(jìn)行系統(tǒng)化整理以及細(xì)致的分析;最后反饋缺陷資料和測(cè)試分析報(bào)告。該文主要研究如何設(shè)計(jì)和實(shí)現(xiàn)軟件自動(dòng)化測(cè)試技術(shù)。
關(guān)鍵詞:LoadRunner;自動(dòng)化測(cè)試;腳本;性能測(cè)試;Web
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2017)36-0242-03
Abstract: Online teaching platform of Xuzhou Institute of Technology is tested a preliminary performance test using LoadRunne in the paper. Firstly, the test program are designed and improved by analyzing project. Then we record the relevant scrip and optimize the script, simulate multi-user concurrency, design the scene, and debug the scene, furthermore we organize the test cases systematically and analyze meticulously. Finally, the information of feedback defect and test analysis report are obtained.
Key words: automated testing; Script; multi-user concurrency; performance testing; Web
隨著Web應(yīng)用技術(shù)的發(fā)展,用戶對(duì)Web服務(wù)應(yīng)用的質(zhì)量要求更高[1]?,F(xiàn)代軟件規(guī)模的大型化,軟件結(jié)構(gòu)的復(fù)雜化增加了軟件測(cè)試的難度。因此,有效地保證軟件的質(zhì)量,需要將軟件開發(fā)和軟件測(cè)試相結(jié)合,并且加強(qiáng)自動(dòng)化測(cè)試在整個(gè)測(cè)試領(lǐng)域的應(yīng)用。
與以往的軟件相比,網(wǎng)站數(shù)據(jù)量大,業(yè)務(wù)量大,用途廣泛等特點(diǎn)。同時(shí),Web 服務(wù)器可能在同一時(shí)間內(nèi)會(huì)接受大量來自不同地域的數(shù)據(jù)請(qǐng)求,一旦Web 服務(wù)器崩潰,會(huì)造成巨大的損失,這就對(duì)網(wǎng)站的穩(wěn)定性提出了要求[2]。本文針對(duì)Web網(wǎng)站的性能測(cè)試進(jìn)行研究,以“徐州工程學(xué)院網(wǎng)絡(luò)教學(xué)平臺(tái)”為例,用LoadRunner 測(cè)試工具,對(duì)其進(jìn)行外部性能壓力測(cè)試[4]。
1 性能測(cè)試工具
LoadRunner 是適用于各種體系架構(gòu),可以預(yù)測(cè)系統(tǒng)行為,并優(yōu)化系統(tǒng)性能。LoadRunner 的測(cè)試對(duì)象是Web服務(wù)整個(gè)系統(tǒng),它通過錄制腳本來模擬實(shí)際用戶的操作,大量的虛擬用戶模擬高并發(fā)操作,在操作的同時(shí)實(shí)時(shí)監(jiān)測(cè)系統(tǒng)性能,更快的發(fā)現(xiàn)問題[3]。
事務(wù):事務(wù)可以說是系統(tǒng)的業(yè)務(wù)流程,判斷系統(tǒng)的性能,需要去定義多個(gè)事務(wù),去判斷各個(gè)業(yè)務(wù)流程的性能使用情況。場(chǎng)景:場(chǎng)景就是每次測(cè)試時(shí)發(fā)生的事件,由多個(gè)事務(wù)組成,可以根據(jù)性能要求去定義不同的場(chǎng)景。Vuser:虛擬用戶Vuser 去替代真實(shí)用戶,Vuser 模擬真實(shí)用戶的操作,去使用系統(tǒng),更好地錄制腳本。一個(gè)復(fù)雜的場(chǎng)景,可能會(huì)包含幾十個(gè)甚至上千個(gè) Vuser。Vuser腳本:錄制的腳本其實(shí)就是模擬真實(shí)用戶在實(shí)際情況中的操作,就是虛擬用戶在場(chǎng)景中所需要去執(zhí)行的操作。
2 項(xiàng)目分析
測(cè)試對(duì)象是網(wǎng)絡(luò)教學(xué)平臺(tái),是學(xué)生和老師互動(dòng)的平臺(tái),拓展和補(bǔ)充教學(xué)資源。該網(wǎng)站的主要功能是:通過課程名稱、授課教師、課程類型和所屬院系去查詢課程,從而讓學(xué)生更全面的了解這些課程,進(jìn)入課程,學(xué)生之間、學(xué)生和老師之間能夠互動(dòng),發(fā)表各自對(duì)于本課程的想法。
2.1 項(xiàng)目測(cè)試思路
對(duì)于網(wǎng)站進(jìn)行壓力測(cè)試的時(shí),首先了解網(wǎng)站的基本功能點(diǎn),測(cè)試服務(wù)器的承受能力,再對(duì)其施加高強(qiáng)度。壓力測(cè)試的目的就是為了判斷一個(gè)操作是否可以正常完成,并且在執(zhí)行過程中是否會(huì)出現(xiàn)錯(cuò)誤。壓力測(cè)試時(shí),網(wǎng)站是否能正常運(yùn)行。壓力測(cè)試必須滿足以下四個(gè)關(guān)鍵條件。
重復(fù):測(cè)試工作就是一遍又一遍根據(jù)某個(gè)功能去反復(fù)執(zhí)行某些操作。并發(fā):并發(fā)就是多個(gè)用戶同時(shí)進(jìn)行操作的現(xiàn)象。引入并發(fā),意味著多線程,那么一個(gè)線程中的內(nèi)容就非常有可能被其他線程中斷,所以,錯(cuò)誤很難被發(fā)現(xiàn),只有在一個(gè)指令集以特定的順序執(zhí)行時(shí)才會(huì)被發(fā)現(xiàn)。量級(jí):壓力測(cè)試應(yīng)該考慮軟件系統(tǒng)重每個(gè)操作的負(fù)載量。隨機(jī)變化:所有的壓力測(cè)試都會(huì)存在一些隨機(jī)性。通過改變操作的時(shí)間間隔、重復(fù)次數(shù)、或者是改變事務(wù)的順序,進(jìn)行不同的壓力測(cè)試。
2.2 項(xiàng)目測(cè)試特點(diǎn)
1) 主要任務(wù)為用戶登錄,用戶申請(qǐng)以及課程搜索。2)負(fù)載期內(nèi),將有大量用戶同時(shí)注冊(cè)和登錄,相應(yīng)模塊(登錄,搜索課程,頁面切換以及選課申請(qǐng))的工作強(qiáng)度也將增加。3)結(jié)合學(xué)生數(shù)量,以及對(duì)于網(wǎng)絡(luò)教學(xué)平臺(tái)的使用情況來說,某些特殊時(shí)段登錄/活動(dòng)人數(shù)預(yù)計(jì)為10-100人。
2.3 項(xiàng)目測(cè)試用例設(shè)計(jì)
本次測(cè)試所用到的 6 個(gè)測(cè)試用例。具體描述:測(cè)試用例I為用戶并發(fā)注冊(cè)測(cè)試;測(cè)試用例II為用戶隨機(jī)注冊(cè)測(cè)試;測(cè)試用例III、 IV、 V、 VI為服務(wù)器瓶頸測(cè)試。
3 項(xiàng)目性能測(cè)試的實(shí)現(xiàn)
3.1 創(chuàng)建用戶腳本
本項(xiàng)目測(cè)試對(duì)象是Web 網(wǎng)站,腳本錄制時(shí)選擇Web(HTTP/HTML)協(xié)議[5]。在URL Address 中填寫徐州工程學(xué)院網(wǎng)絡(luò)教學(xué)平臺(tái)的網(wǎng)址。用戶登錄,在腳本錄制界面,設(shè)置相關(guān)參數(shù),在登錄時(shí),輸入用戶名和密碼,錄制完成后,VuGen 組件會(huì)自動(dòng)生成腳本。接著,如需查看錄制時(shí)相關(guān)信息,點(diǎn)擊“Recording Log”按鈕就可以查看腳本錄制日志,最后,如果腳本錄制完成,對(duì)其進(jìn)行回放,回放完成,點(diǎn)擊“Replay Log”按鈕,可以查看腳本回放日志[6,7]。endprint
3.2 完善測(cè)試腳本
當(dāng)錄制完用戶腳本之后,需要對(duì)腳本進(jìn)行完善,保證其使用效果。完善測(cè)試腳本包括事務(wù)設(shè)置、集合點(diǎn)和腳本檢驗(yàn)這三種[8]。
1) 事務(wù)設(shè)置
LoadRunner能夠?qū)⒏鱾€(gè)事務(wù)區(qū)分開,分別標(biāo)記各個(gè)事務(wù)的性能狀況,從事務(wù)的開始點(diǎn)計(jì)時(shí),直到事務(wù)的結(jié)束點(diǎn),計(jì)時(shí)結(jié)束。點(diǎn)擊“事務(wù)按鈕”進(jìn)入腳本編寫區(qū),在事務(wù)開始點(diǎn),點(diǎn)擊“事務(wù)開始”按鈕插入事務(wù), “Ir_start_transaction(“l(fā)ogin”)”為事務(wù)開始的代碼,在選擇事務(wù)結(jié)束點(diǎn),點(diǎn)擊“事務(wù)結(jié)束”按鈕,“Ir_end_transaction(“l(fā)ogin”,LR_AUTO)”為事務(wù)結(jié)束的代碼。
以測(cè)試用例III的用戶登錄為例子,插入事務(wù)的代碼。這個(gè)事務(wù)起點(diǎn)為徐州工程學(xué)院網(wǎng)絡(luò)教學(xué)平臺(tái)首頁,結(jié)束點(diǎn)為我的課程頁面,事務(wù)運(yùn)行結(jié)束即為登錄成功。
2) 集合點(diǎn)
LoadRunner 可以通過插入集合點(diǎn)的方式,來方便用戶區(qū)分功能點(diǎn),當(dāng)運(yùn)行到這個(gè)集合點(diǎn)時(shí),需要提交數(shù)據(jù),控制器需要對(duì)這些數(shù)據(jù)進(jìn)行檢查,判斷其是否達(dá)到最初設(shè)置的條件。多個(gè)集合點(diǎn)時(shí),需要達(dá)到一定的用戶數(shù)量,才會(huì)讓所有用戶同時(shí)提交數(shù)據(jù)。
在測(cè)試用例I、 II、 III、 IV中并沒有加入集合點(diǎn)這個(gè)功能,而是通過事務(wù)之間的時(shí)間間隔去取代的。在測(cè)試用例V和測(cè)試用例VI中,為了保障測(cè)試時(shí)的負(fù)載情況,使用了集合點(diǎn)這一功能,對(duì)于先到達(dá)集合點(diǎn)的用戶,讓其停留等候,只有在所有用戶都完成了相關(guān)任務(wù)并且到達(dá)集合點(diǎn),才在控制器的命令下所有用戶同時(shí)實(shí)現(xiàn)功能。在集合點(diǎn)按鈕界面,點(diǎn)擊“Insert”下拉菜單,選擇“Rendezvous”按鈕,插入集合點(diǎn),在腳本編寫區(qū)生成插入集合點(diǎn)的代碼,為了保證負(fù)載情況,其中“Lr_rendezvous(“SubmitQueryData”)”為集合點(diǎn)代碼。
3) 腳本檢驗(yàn)
對(duì)腳本進(jìn)行優(yōu)化處理之后,腳本就可以初步運(yùn)行了。運(yùn)行之后,VuGen會(huì)先對(duì)腳本進(jìn)行編譯,判斷腳本是否存在語法錯(cuò)誤。根據(jù)運(yùn)行設(shè)置,開始從Generator中調(diào)試相關(guān)的腳本,腳本會(huì)根據(jù)Runtime Setting中的設(shè)置開始運(yùn)行,并輸出相關(guān)日志。當(dāng)腳本運(yùn)行完成,如果沒有錯(cuò)誤,而且從關(guān)鍵日志看,所有參數(shù)替換和動(dòng)態(tài)關(guān)聯(lián)都成功,那么就表示腳本已經(jīng)完全通過,可以使用。
3.3 測(cè)試方案執(zhí)行
1) 創(chuàng)建負(fù)載測(cè)試場(chǎng)景
本次創(chuàng)建測(cè)試方案為手動(dòng)方案,以測(cè)試用例 VI 為例,闡述如何創(chuàng)建負(fù)載測(cè)試場(chǎng)景,模擬 100 個(gè)用戶依次登錄網(wǎng)絡(luò)教學(xué)平臺(tái),并且在一定時(shí)間內(nèi)高強(qiáng)度訪問服務(wù)器。首先, 我們需要將 Load Generator 與 Controller 建立連接,在負(fù)載生成器中,可以看出目前使用的負(fù)載生成器為 local host,其狀態(tài)為 Down,平臺(tái)為 Windows7。點(diǎn)擊“Connect”按鈕,將Load Generator組件與Controller 組件建立連接,負(fù)載生成器狀態(tài)就會(huì)變成 Ready。然后,模擬真實(shí)環(huán)境,通過配置加壓的方式, LoadRunner 測(cè)試工具讓用戶逐步登錄并且逐步退出系統(tǒng)。同時(shí),確定測(cè)試場(chǎng)景持續(xù)的時(shí)間和場(chǎng)景是以何種方式停止,可以更加準(zhǔn)確地反映實(shí)際情況。
2) 運(yùn)行負(fù)載測(cè)試
負(fù)載測(cè)試場(chǎng)景創(chuàng)建完畢,可以開始運(yùn)行。根據(jù)上述的情況,將測(cè)試用例III 設(shè)置為設(shè)置 10 個(gè)Vuser,每10秒往上遞增1個(gè) Vuser,持續(xù)一分鐘,按每 10 秒停止 1 個(gè) Vuser,設(shè)置完負(fù)載參數(shù),可以開始運(yùn)行負(fù)載測(cè)試。如圖1所示為負(fù)載場(chǎng)景運(yùn)行視圖,可以看出負(fù)載場(chǎng)景在運(yùn)行期間的運(yùn)行狀況,根據(jù)每個(gè)窗格可以查看不同的信息。
在場(chǎng)景運(yùn)行結(jié)束,場(chǎng)景狀態(tài)窗格會(huì)顯示運(yùn)行結(jié)果。如果運(yùn)行中出現(xiàn)錯(cuò)誤,在場(chǎng)景狀態(tài)窗格,顯示錯(cuò)誤事務(wù)數(shù)和失敗的數(shù)量。從場(chǎng)景狀態(tài),可以看出,紅色的區(qū)域?yàn)閳?bào)錯(cuò)的地方。
本例Login 這個(gè)事務(wù),點(diǎn)擊“通過的事務(wù)”按鈕,通過的數(shù)量為 2396。點(diǎn)擊“失敗的事務(wù)”按鈕,失敗的數(shù)量為 4。點(diǎn)擊“錯(cuò)誤消息”按鈕,查看場(chǎng)景運(yùn)行過程中出現(xiàn)的一些錯(cuò)誤。點(diǎn)擊“Details”按鈕,可以查看錯(cuò)誤的詳細(xì)信息。
4 測(cè)試報(bào)告
LoadRunner 測(cè)試工具將使用Analysis組件對(duì)運(yùn)行結(jié)果進(jìn)行分析處理, 主要生成各種報(bào)告圖。在測(cè)試用例I、 II、 III、 IV、 V和VI中,測(cè)試結(jié)束,都會(huì)生成摘要報(bào)告。如圖2所示為測(cè)試用例 III 的 Analysis 摘要報(bào)告,上半部分可以看出統(tǒng)計(jì)信息摘要部分,顯示本次測(cè)試最大并發(fā)數(shù)為10,總吞吐量為249498501字節(jié),平均每秒的吞吐量是1030985字節(jié),總的請(qǐng)求數(shù)為88454,平均每秒的請(qǐng)求為365.512。從下半部分可以看出,事務(wù)摘要顯示的是, login這個(gè)事務(wù)的最小響應(yīng)時(shí)間為0.037s, 最大響應(yīng)時(shí)間為3.343s, 平均響應(yīng)時(shí)間為0.132s, 標(biāo)準(zhǔn)響應(yīng)時(shí)間為0.148s,90%響應(yīng)時(shí)間為0.166s,其中通過的events為3150個(gè),未通過的為0個(gè)。測(cè)試間的login事務(wù)的90%的響應(yīng)時(shí)間為0.166s, 而平均響應(yīng)時(shí)間為0.132s,90%的響應(yīng)時(shí)間,略大于平均響應(yīng)時(shí)間,這說明,只有10個(gè)用戶的時(shí)候,該網(wǎng)絡(luò)教學(xué)平臺(tái)的響應(yīng)時(shí)間比較短,性能較好。
如圖3 所示為網(wǎng)絡(luò)響應(yīng)摘要所示,LoadRunner共模擬了88454次請(qǐng)求,與統(tǒng)計(jì)信息摘要中的總請(qǐng)求數(shù)相同,其中“Http 200”的是88447次。 “Http 302”的是7次, “Http 200”表示服務(wù)器成功處理了請(qǐng)求, 并且請(qǐng)求被正確響應(yīng), “Http 302”表示服務(wù)器成功處理了請(qǐng)求,但是沒有返回任何內(nèi)容。說明在本次過程中,發(fā)生的請(qǐng)求大部分都能正確響應(yīng),但還是有部分沒有得到任何返回內(nèi)容,但是沒有影響到測(cè)試結(jié)果。
5 結(jié)論endprint
通過對(duì)網(wǎng)絡(luò)教學(xué)平臺(tái)這個(gè)網(wǎng)站進(jìn)行分析,對(duì)其功能進(jìn)行初步了解,然后設(shè)計(jì)出一套完善的測(cè)試方案。使用LoadRunner 性能測(cè)試工具,通過錄制測(cè)試腳本的方法, 能夠更加真實(shí)地模擬多個(gè)用戶操作,組合出較為真實(shí)的用戶場(chǎng)景,并且進(jìn)行相關(guān)的調(diào)試工作,收集并整理測(cè)試數(shù)據(jù),對(duì)相關(guān)數(shù)據(jù)進(jìn)行合理的概括與分析,最終生成相關(guān)資料和測(cè)試報(bào)告。
參考文獻(xiàn):
[1] Bozic J, Garn B, Kapsalis I, et al. Attack Pattern-Based Combinatorial Testing with Constraints for Web Security Testing[C].IEEE International Conference on Software Quality, Reliability and Security. IEEE, 2015:207-212.
[2] Novak S, Stefanovi? D, Popovi? M, et al. Web based system for automatic testing[C]. IEEE International Workshop on Consumer Electronics. IEEE, 2017:30-31.
[3] Khan R, Amjad M. Web application's performance testing using HP LoadRunner and CA Wily introscope tools[C]. International Conference on Computing, Communication and Automation. IEEE, 2017.
[4] 布朗.軟件測(cè)試:原理與實(shí)踐[M].北京:機(jī)械工業(yè)出版社,2012:78-131.
[5] 高麗萍. 云環(huán)境下自動(dòng)化測(cè)試的研究與實(shí)現(xiàn)[D]. 西安:西安工業(yè)大學(xué), 2016:20-32.
[6] 鄭潤(rùn)萍. 基于LoadRunner的Web軟件性能瓶頸分析調(diào)優(yōu)研究與實(shí)踐[D]. 廣州:華南農(nóng)業(yè)大學(xué), 2016:34-41.
[7] 魏娜娣,李文斌,裴軍霞.軟件性能測(cè)試[M].北京:清華大學(xué)出版社,2012:45-72.
[8] Abbas R, Sultan Z, Shahid N. Comparative Analysis of Automated Load Testing Tools: Apache JMeter, Microsoft Visual Studio (TFS), LoadRunner, Siege[C]. Internation Conference on Communication Technologies Comtech. 2017.endprint