趙衛(wèi)東,王樹強(qiáng),張 峰
(山東科技大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,山東 青島 266000)
負(fù)載與壓力測(cè)試是指在一定的約束條件下,檢測(cè)系統(tǒng)所能承受的并發(fā)用戶量、運(yùn)行時(shí)間、數(shù)據(jù)量等參數(shù),以確定系統(tǒng)所能承受的最大負(fù)載和壓力,發(fā)現(xiàn)影響系統(tǒng)性能的缺陷。負(fù)載與壓力測(cè)試需要模擬系統(tǒng)真實(shí)的運(yùn)行環(huán)境并借助測(cè)試工具才能完成。業(yè)界已經(jīng)出現(xiàn)了很多成熟的自動(dòng)化測(cè)試工具,每一種工具都有其自身的特點(diǎn)。負(fù)載與壓力測(cè)試是軟件測(cè)試課程教學(xué)的重點(diǎn)和難點(diǎn)之一,實(shí)踐型和應(yīng)用性很強(qiáng)[1],涉及較多容易混淆的抽象概念,必須經(jīng)過有效的實(shí)踐教學(xué)環(huán)節(jié),學(xué)生才能真正理解和掌握負(fù)載與壓力測(cè)試相關(guān)知識(shí)和技能。
目前,很多高校只是讓學(xué)生使用一些過時(shí)或者不實(shí)用的工具,對(duì)一些小型的程序進(jìn)行簡(jiǎn)單的負(fù)載與壓力測(cè)試實(shí)驗(yàn),實(shí)踐教學(xué)缺乏合理設(shè)計(jì),實(shí)驗(yàn)內(nèi)容簡(jiǎn)單陳舊,被測(cè)系統(tǒng)沒有實(shí)際意義[2],對(duì)測(cè)試工具使用的深度和廣度不夠,實(shí)驗(yàn)教學(xué)方法落后,導(dǎo)致學(xué)生對(duì)負(fù)載與壓力測(cè)試實(shí)踐教學(xué)不感興趣,重視程度不夠,積極性不高,教學(xué)效果較差。
軟件性能測(cè)試是指利用測(cè)試工具模擬多種正?;虍惓X?fù)載條件來對(duì)系統(tǒng)的響應(yīng)時(shí)間、吞吐量等性能指標(biāo)進(jìn)行測(cè)試,目的是驗(yàn)證系統(tǒng)的性能是否能滿足用戶需求,發(fā)現(xiàn)影響性能的系統(tǒng)缺陷。性能測(cè)試包括負(fù)載與壓力測(cè)試、強(qiáng)度測(cè)試、并發(fā)測(cè)試、大數(shù)據(jù)量測(cè)試、配置測(cè)試和可靠性測(cè)試等。
負(fù)載測(cè)試是通過逐步增加系統(tǒng)負(fù)載,測(cè)試系統(tǒng)性能的變化,并最終確定在滿足性能指標(biāo)的前提下,系統(tǒng)所能承受的最大負(fù)載量。負(fù)載測(cè)試不關(guān)注系統(tǒng)穩(wěn)定性,也就是說不關(guān)注系統(tǒng)長時(shí)間運(yùn)行的情況,只是得到不同負(fù)載下相關(guān)性能指標(biāo),根據(jù)這些結(jié)果作出決策并得出正確的結(jié)論[3]。實(shí)際測(cè)試中,一般從比較小的負(fù)載開始,通過逐漸增加負(fù)載,觀察不同負(fù)載下應(yīng)用程序的響應(yīng)時(shí)間、所耗資源等性能指標(biāo)的變化,直到超時(shí)或關(guān)鍵資源耗盡,從而獲得系統(tǒng)所能承受的最大負(fù)載量。
壓力測(cè)試是通過逐步增加系統(tǒng)負(fù)載,測(cè)試系統(tǒng)性能的變化,并最終確定在什么負(fù)載條件下系統(tǒng)性能處于失效狀態(tài),并以此獲得系統(tǒng)能提供的最大服務(wù)級(jí)別的測(cè)試。其目標(biāo)是,測(cè)試在一定的負(fù)載下,系統(tǒng)長時(shí)間運(yùn)行的穩(wěn)定性。但是這個(gè)負(fù)載不一定是應(yīng)用系統(tǒng)本身造成的,比如利用腳本或工具事先吃掉服務(wù)器的一部分CPU、內(nèi)存或帶寬等,創(chuàng)造出負(fù)載環(huán)境來測(cè)試被測(cè)應(yīng)用系統(tǒng)在此環(huán)境下的事物處理能力、響應(yīng)時(shí)間等指標(biāo)。壓力測(cè)試尤其關(guān)注大業(yè)務(wù)量情況下長時(shí)間運(yùn)行系統(tǒng)性能的變化,例如系統(tǒng)是否反應(yīng)變慢、是否會(huì)內(nèi)存泄漏導(dǎo)致系統(tǒng)逐漸崩潰、是否能自行恢復(fù)等,它包括兩種情況。
(1)穩(wěn)定性壓力測(cè)試:在選定的壓力值下,長時(shí)間持續(xù)運(yùn)行。通過這類壓力測(cè)試,可以考查各項(xiàng)性能指標(biāo)是否在指定范圍內(nèi),有無內(nèi)存泄漏、有無功能性故障等。
(2)破壞性壓力測(cè)試:在穩(wěn)定性壓力測(cè)試中可能會(huì)出現(xiàn)一些問題,如系統(tǒng)性能明顯降低,但很難暴露出其真實(shí)的原因。通過破壞性不斷加壓的手段,往往能快速復(fù)現(xiàn)問題。
由于手工測(cè)試存在“機(jī)器設(shè)備和可用人數(shù)有限,測(cè)試人員不能統(tǒng)一同步”等問題,采用自動(dòng)化測(cè)試工具進(jìn)行負(fù)載與壓力測(cè)試是必然的選擇。目前,可供選擇的測(cè)試工具有很多,通過對(duì)比分析Load Runner、JMeter與Gatling 3種流行的自動(dòng)化測(cè)試工具(見表1),可以看出,盡管Load Runner不是開源產(chǎn)品,價(jià)格昂貴,靈活性不夠,但其具有的功能最全面,支持廣泛的協(xié)議和技術(shù),是一種適用于各種體系架構(gòu)的自動(dòng)負(fù)載測(cè)試工具,它能預(yù)測(cè)系統(tǒng)行為并優(yōu)化系統(tǒng)性能[4]。其有4個(gè)組件:虛擬用戶發(fā)生器(VuGen)、壓力調(diào)度與監(jiān)控器(Controller)、負(fù)載壓力產(chǎn)生器(Load Generator)、結(jié)果分析器(Analysis)。
綜上所述,Load Runner足以適應(yīng)各種情況下的測(cè)試需求,能最大限度地縮短測(cè)試時(shí)間、節(jié)約測(cè)試資源、優(yōu)化性能和加速應(yīng)用系統(tǒng)的發(fā)布周期,是執(zhí)行負(fù)載與壓力測(cè)試的強(qiáng)有力工具,也是學(xué)生進(jìn)行負(fù)載與壓力測(cè)試實(shí)驗(yàn)較好的工具。
基于 Load Runner 的負(fù)載壓力測(cè)試一般要經(jīng)過規(guī)劃測(cè)試、創(chuàng)建腳本、定義場(chǎng)景、執(zhí)行場(chǎng)景、分析結(jié)果5個(gè)階段。負(fù)載壓力測(cè)試實(shí)驗(yàn)教學(xué)的目的是讓學(xué)生理解響應(yīng)時(shí)間、吞吐量等主要性能指標(biāo),掌握 Load Runner 的基礎(chǔ)操作和負(fù)載壓力測(cè)試的基本流程,學(xué)會(huì)利用Load Runner對(duì)實(shí)際Web系統(tǒng)進(jìn)行負(fù)載壓力測(cè)試。為此,以常用的經(jīng)典系統(tǒng)Web Tours和自主研發(fā)的“設(shè)備巡檢管理系統(tǒng)”作為測(cè)試對(duì)象,采用循序漸進(jìn)的方式使學(xué)生逐步接觸真正的測(cè)試實(shí)踐[6],設(shè)計(jì)了如下3次實(shí)驗(yàn)。
實(shí)驗(yàn)一:Load Runner基礎(chǔ)實(shí)驗(yàn)。
實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)負(fù)載與壓力測(cè)試基本概念、常見性能指標(biāo)和Load Runner的測(cè)試流程。
實(shí)驗(yàn)內(nèi)容:①教師講解負(fù)載與壓力測(cè)試相關(guān)概念及平均事務(wù)響應(yīng)時(shí)間、吞吐量、并發(fā)用戶量、資源利用率等性能指標(biāo);②教師講解Web Tours系統(tǒng)及其性能要求;③以Web Tours為測(cè)試對(duì)象,教師演示Load Runner的虛擬用戶發(fā)生器、壓力調(diào)度與監(jiān)控器、負(fù)載壓力產(chǎn)生器、結(jié)果分析器等四大組件的功能與操作;④學(xué)生完成Load Runner安裝,利用虛擬用戶發(fā)生器錄制Web Tours系統(tǒng)用戶登錄、查找航班、選擇航班、預(yù)訂機(jī)票、查看航班路線并注銷的操作,回放腳本驗(yàn)證能否正常運(yùn)行;⑤利用虛擬用戶發(fā)生器模擬5個(gè)虛擬用戶,在此場(chǎng)景下,利用壓力調(diào)度與監(jiān)控器執(zhí)行所錄腳本;⑥控制負(fù)載壓力產(chǎn)生器將虛擬用戶數(shù)由5個(gè)逐步增加到10個(gè);⑦學(xué)生利用結(jié)果分析器查看最大運(yùn)行用戶數(shù)、總吞吐量、平均吞吐量和點(diǎn)擊次數(shù)的統(tǒng)計(jì)信息。
表1 測(cè)試自動(dòng)化工具對(duì)比
實(shí)驗(yàn)二:腳本編寫與測(cè)試環(huán)境配置技術(shù)實(shí)驗(yàn)。
實(shí)驗(yàn)?zāi)康模赫莆詹迦胧聞?wù)、參數(shù)化腳本等增強(qiáng)腳本的方法,掌握配置測(cè)試環(huán)境的方法。
實(shí)驗(yàn)內(nèi)容:①教師講解事務(wù)、集合點(diǎn)和思考時(shí)間等概念。②學(xué)生使用實(shí)驗(yàn)一錄制的腳本,找到腳本中的用戶登錄、查找航班、選擇航班、預(yù)訂機(jī)票、查看航班路線和注銷操作,在每個(gè)操作的開始位置和結(jié)束位置插入起始事務(wù)標(biāo)志和結(jié)束事務(wù)標(biāo)志,每個(gè)事務(wù)都要定義名稱;將用戶名、密碼和座位選項(xiàng)進(jìn)行參數(shù)化,模擬多個(gè)用戶的登錄訂票行為;在預(yù)訂機(jī)票操作后面插入集合點(diǎn)函數(shù),使10個(gè)用戶到達(dá)集合點(diǎn)時(shí),并發(fā)運(yùn)行后面的腳本。③將增強(qiáng)的腳本添加到壓力調(diào)度與監(jiān)控器中創(chuàng)建3個(gè)場(chǎng)景,分別設(shè)置好虛擬用戶的活動(dòng)和行為,包括重復(fù)一系列操作的次數(shù)以及各步驟之間的思考時(shí)間等。④第一個(gè)場(chǎng)景進(jìn)行負(fù)載測(cè)試,學(xué)生制定不同負(fù)載得出相關(guān)性能指標(biāo);第二個(gè)場(chǎng)景進(jìn)行穩(wěn)定性壓力測(cè)試,學(xué)生控制負(fù)載壓力產(chǎn)生器配置加壓方式,即設(shè)置每隔一定時(shí)間啟動(dòng)的用戶數(shù)和每個(gè)用戶持續(xù)運(yùn)行的時(shí)間,將這種負(fù)載保持長時(shí)間運(yùn)行;第三個(gè)場(chǎng)景進(jìn)行破壞性壓力測(cè)試,通過不斷增加每秒點(diǎn)擊次數(shù),測(cè)試服務(wù)器的性能瓶頸;⑤執(zhí)行負(fù)載壓力測(cè)試場(chǎng)景;⑥學(xué)生在相關(guān)圖中查看系統(tǒng)運(yùn)行用戶數(shù)、事務(wù)響應(yīng)時(shí)間和每秒點(diǎn)擊次數(shù)的變化情況,分析系統(tǒng)的穩(wěn)定性,評(píng)估系統(tǒng)性能。
實(shí)驗(yàn)三:負(fù)載與壓力測(cè)試綜合實(shí)驗(yàn)。
實(shí)驗(yàn)?zāi)康模壕C合運(yùn)用Load Runner工具完成對(duì)實(shí)際Web系統(tǒng)的負(fù)載與壓力測(cè)試,提高項(xiàng)目實(shí)踐能力。
實(shí)驗(yàn)內(nèi)容:①教師講解如何規(guī)劃負(fù)載與壓力測(cè)試,分析測(cè)試需求,制定測(cè)試方案;②教師講解“設(shè)備巡檢管理系統(tǒng)”和性能需求;③學(xué)生根據(jù)系統(tǒng)概述,分析測(cè)試需求,錄制、回放、編寫和調(diào)試腳本,配置真實(shí)的測(cè)試環(huán)境,收集實(shí)驗(yàn)數(shù)據(jù);④對(duì)數(shù)據(jù)進(jìn)行分析,預(yù)見系統(tǒng)的負(fù)載承受力,評(píng)估系統(tǒng)性能,找出系統(tǒng)瓶頸。
針對(duì)傳統(tǒng)實(shí)驗(yàn)教學(xué)存在的“理論和實(shí)踐教學(xué)脫節(jié)”“學(xué)生缺乏主動(dòng)性”“自主分析和解決問題的能力差”等突出問題,可以采用項(xiàng)目驅(qū)動(dòng)、反轉(zhuǎn)課堂、理論和實(shí)驗(yàn)相結(jié)合等先進(jìn)教學(xué)理念,從以下幾個(gè)方面進(jìn)行實(shí)驗(yàn)教學(xué)方法的改革。
1)注重實(shí)驗(yàn)和理論教學(xué)相結(jié)合。
將負(fù)載與壓力測(cè)試的有關(guān)理論教學(xué)與實(shí)驗(yàn)統(tǒng)一安排,采用邊學(xué)理論邊做實(shí)驗(yàn)的方法,將理論知識(shí)和實(shí)踐環(huán)節(jié)高度結(jié)合,相互驗(yàn)證。每一次實(shí)驗(yàn)課都包括理論講解、實(shí)驗(yàn)演示、上機(jī)實(shí)驗(yàn)3方面。教師講解能起到先導(dǎo)作用,即讓學(xué)生弄清楚實(shí)驗(yàn)基礎(chǔ)理論,學(xué)生通過實(shí)際上機(jī)實(shí)驗(yàn)正確地使用測(cè)試技術(shù),進(jìn)而對(duì)理論加深理解,變成他們真正掌握的知識(shí)。學(xué)生邊學(xué)邊做,看似減緩了教學(xué)進(jìn)度,實(shí)際是在“做中學(xué)、學(xué)中做”,真正提高了課堂教學(xué)效率,學(xué)生的學(xué)習(xí)興趣和主動(dòng)性提高了,對(duì)所學(xué)內(nèi)容理解的更加具體和深入,自學(xué)能力與應(yīng)用知識(shí)和技能解決實(shí)際工程問題的能力得以加強(qiáng)。
2)引入項(xiàng)目驅(qū)動(dòng)的實(shí)驗(yàn)教學(xué)模式。
采用自主開發(fā)的實(shí)際系統(tǒng)“設(shè)備巡檢管理系統(tǒng)”作為被測(cè)系統(tǒng)。教師對(duì)系統(tǒng)進(jìn)行剪裁,整理出與測(cè)試相關(guān)的知識(shí)點(diǎn),首先講解項(xiàng)目開發(fā)的背景、性能要求及其性能測(cè)試的企業(yè)流程;對(duì)學(xué)生進(jìn)行分組,由組長負(fù)責(zé),組員共同討論確定測(cè)試計(jì)劃和設(shè)計(jì)測(cè)試方案,小組成員執(zhí)行測(cè)試,發(fā)現(xiàn)問題,并給出解決問題的技術(shù)方案。通過具體的項(xiàng)目實(shí)戰(zhàn),學(xué)生盡快地熟悉軟件測(cè)試工作過程,能夠?qū)ν暾捻?xiàng)目進(jìn)行測(cè)試[7],引導(dǎo)激發(fā)學(xué)生的興趣,增強(qiáng)學(xué)生的實(shí)際項(xiàng)目經(jīng)驗(yàn),深刻理解所學(xué)專業(yè)知識(shí)和技能的實(shí)際應(yīng)用價(jià)值,提前體驗(yàn)從一名在校學(xué)生向IT工程師的角色轉(zhuǎn)變。
3)反轉(zhuǎn)課堂,激發(fā)學(xué)生學(xué)習(xí)主動(dòng)性。
建立信息平臺(tái),將學(xué)生在實(shí)驗(yàn)中遇到的問題分類記錄到平臺(tái)上,以便學(xué)生能及時(shí)查找問題答案,對(duì)于平臺(tái)中沒有記錄的問題,鼓勵(lì)學(xué)生課堂討論,讓課堂成為研究和解決問題的場(chǎng)所,真正實(shí)現(xiàn)反轉(zhuǎn)課堂。只有給學(xué)生創(chuàng)造自主發(fā)現(xiàn)和解決問題的氛圍和環(huán)境,才能使反轉(zhuǎn)課堂不只是一句口號(hào)。設(shè)置積分制,鼓勵(lì)學(xué)生補(bǔ)充QA庫,對(duì)于優(yōu)秀的問題和解決方案,可以獲得較高的積分。
4)改革實(shí)驗(yàn)教學(xué)考核方式。
從4個(gè)方面對(duì)學(xué)生進(jìn)行綜合考核。第一,考核學(xué)生實(shí)驗(yàn)準(zhǔn)備的情況,教師對(duì)學(xué)生遇到的問題進(jìn)行指導(dǎo),評(píng)價(jià)學(xué)生對(duì)實(shí)驗(yàn)的認(rèn)識(shí)是否充分。第二,考核學(xué)生課堂表現(xiàn)以及實(shí)驗(yàn)采用的方法,教師檢查學(xué)生實(shí)驗(yàn)過程,判斷學(xué)生是否理解涉及的知識(shí)點(diǎn),能否對(duì)實(shí)驗(yàn)方法進(jìn)行優(yōu)化和改進(jìn)。第三,采用答辯的方式考核學(xué)生實(shí)驗(yàn)結(jié)果,教師點(diǎn)評(píng)結(jié)果,對(duì)學(xué)生完成實(shí)驗(yàn)的情況作出指導(dǎo)及建議。第四,考核學(xué)生撰寫的實(shí)驗(yàn)報(bào)告,教師讓學(xué)生定期上交實(shí)驗(yàn)報(bào)告,評(píng)價(jià)學(xué)生對(duì)課程理論和項(xiàng)目實(shí)踐的掌握情況。根據(jù)以上學(xué)生各個(gè)實(shí)驗(yàn)環(huán)節(jié)的表現(xiàn),按比例對(duì)實(shí)驗(yàn)成績(jī)進(jìn)行綜合評(píng)價(jià),以表揚(yáng)和鼓勵(lì)在實(shí)驗(yàn)中表現(xiàn)優(yōu)秀的學(xué)生,指出實(shí)驗(yàn)過程中存在的各種不足,真正形成崇尚獨(dú)立自主和積極主動(dòng)的實(shí)驗(yàn)教學(xué)氛圍。
從2014年開始,面向我校軟件工程專業(yè)本科三年級(jí)3個(gè)班的學(xué)生,持續(xù)對(duì)所設(shè)計(jì)的負(fù)載與壓力測(cè)試實(shí)驗(yàn)教學(xué)方案進(jìn)行了4年的應(yīng)用。實(shí)際應(yīng)用效果表明,學(xué)生的實(shí)驗(yàn)課成績(jī)有了較大幅度的提升,見表2,優(yōu)秀率從10%提升到20%,不及格率從15%下降到5%;學(xué)生學(xué)習(xí)積極性和主動(dòng)性顯著改善,見表3,學(xué)生參與課堂討論的比例從24%提升到83%,學(xué)生補(bǔ)充QA庫的比例從16.8%提升到39.3%。
表2 學(xué)生實(shí)驗(yàn)成績(jī)
表3 學(xué)生參與課堂討論和補(bǔ)充QA庫的比例
選用流行的企業(yè)級(jí)軟件性能測(cè)試工具Load Runner,以真實(shí)的Web系統(tǒng)為測(cè)試對(duì)象,模擬軟件負(fù)載與壓力測(cè)試的實(shí)際流程,詳細(xì)設(shè)計(jì)了負(fù)載與壓力測(cè)試的實(shí)驗(yàn)內(nèi)容。以激發(fā)學(xué)生的學(xué)習(xí)興趣和主動(dòng)性為目的,采用實(shí)驗(yàn)和理論教學(xué)相結(jié)合、反轉(zhuǎn)課堂等先進(jìn)的教學(xué)方法,從多個(gè)方面改革了實(shí)驗(yàn)教學(xué)方法。
通過4年不間斷的實(shí)際教學(xué)應(yīng)用,經(jīng)過教學(xué)數(shù)據(jù)對(duì)比分析,參與課堂討論的學(xué)生比例、補(bǔ)充QA庫的學(xué)生比例得到了很大提高,這表明學(xué)生實(shí)踐的積極性和主動(dòng)性有了顯著的改觀,取得了良好的教學(xué)效果,達(dá)到了提高學(xué)生學(xué)習(xí)興趣和實(shí)際動(dòng)手能力的目標(biāo),對(duì)相關(guān)計(jì)算機(jī)課程實(shí)踐教學(xué)的改革具有參考和借鑒價(jià)值。