馬敏,王敏,肖凌瑤
(湖北廣播電視大學(xué),武漢430000)
隨著近年來移動終端的迅速普及,高速網(wǎng)絡(luò)的快速發(fā)展,越來越多的用戶通過網(wǎng)絡(luò)學(xué)習(xí)、辦公、娛樂、購物。然而用戶訪問的高并發(fā)、高集中也給系統(tǒng)服務(wù)器帶來極大的負(fù)荷。最新的例子是今年二月中旬開始的“停課不停學(xué)”,由于大量學(xué)生在上課時段集中訪問,網(wǎng)絡(luò)教學(xué)平臺“雨課堂”、“職教云”、“藍(lán)墨云班課”等集體“癱瘓”。系統(tǒng)性能的好壞直接影響用戶的體驗、產(chǎn)品的市場占用率、公司的盈利,因此系統(tǒng)的性能測試也越來越受到各大公司的重視。順應(yīng)行業(yè)需求,越來越多的高校軟件工程專業(yè)或其它計算機應(yīng)用相關(guān)專業(yè)開設(shè)了《性能測試》課程。
作為一門理論知識廣泛,實踐性也很強的專業(yè)課程,《性能測試》總學(xué)時是36 個課時,2 個學(xué)分。該課程主要內(nèi)容包括性能測試的基本概念、常見性能指標(biāo)、性能測試執(zhí)行及結(jié)果分析等。該課程標(biāo)準(zhǔn)要求在前期軟件設(shè)計及軟件測試技能基礎(chǔ)上提升高質(zhì)量程序設(shè)計技能、掌握性能測試的基本技能、學(xué)會性能測試工具的使用方法。著重培養(yǎng)學(xué)生的熟練度、規(guī)范性、集成和項目能力[1]。如何在有限的學(xué)時內(nèi),讓學(xué)生達(dá)到課程目標(biāo),滿足企業(yè)測試崗位要求是一個值得研究的問題。
目前市面上關(guān)于軟件測試的教材很多,但專注于性能測試的較少,并且以理論為主,配合實戰(zhàn)案例的很少。這與高職強調(diào)實用、重視操作的培養(yǎng)目標(biāo)不符。
性能測試概念較多,例如吞吐率、點擊率、請求響應(yīng)時間、事務(wù)響應(yīng)時間等。以大二的學(xué)生開發(fā)水平和項目經(jīng)歷理解這些抽象的概念難度較大[2]。
性能測試是一門理論廣度深度,實際操作要求都很高的課程,既需要學(xué)生掌握軟件測試的基本理論和流程,又需要學(xué)生快速理解不同產(chǎn)品的業(yè)務(wù)邏輯和常見性能指標(biāo)。然而由于學(xué)生缺乏實際的項目經(jīng)驗,加之現(xiàn)有的教材普遍停留與理論探討階段致使學(xué)生學(xué)習(xí)性能測試往往停留在表面,沒有領(lǐng)會其中的要領(lǐng)。
近年來,微信小程序以其便捷出色的用戶體驗成為移動端主流應(yīng)用。我學(xué)院受第三方公司委托,組織本學(xué)院教師,成功開發(fā)了“我的國際農(nóng)場”小程序。該項目主要是為了滿足日本關(guān)西地區(qū)面向中國市場推廣本地的農(nóng)副產(chǎn)品和觀光旅游的需求。介紹日本茨城縣地方種植戶、加工廠、販賣店及旅游公司、運動俱樂部(足球、高爾夫等)、旅館,提供線上及線下的農(nóng)場共享,旅日觀光等服務(wù)。
《性能測試》課程案例選用“我的國際農(nóng)場”這個實際商用作為被測系統(tǒng),幫助學(xué)生體驗真實的項目測試過程,避免所學(xué)與所用脫節(jié)。結(jié)合業(yè)內(nèi)流行的抓包工具Fiddler 和性能測試工具LoadRunner,錄制和修改腳本。通過設(shè)計測試場景,執(zhí)行性能測試,分析測試結(jié)果,引導(dǎo)學(xué)生理解性能測試[3-5]。
《性能測試》課程知識點多而繁雜,實戰(zhàn)性很強,但是僅有36 學(xué)時。如何保證教學(xué)的效率,讓學(xué)生掌握實用的崗位技能是教學(xué)案例設(shè)計的需要考慮的重點。因此通過將教學(xué)案例選取本學(xué)院自研的商用小程序“我的國際農(nóng)場”,對標(biāo)業(yè)內(nèi)主流的測試工具和測試方法進(jìn)行設(shè)計,確保學(xué)生所學(xué)內(nèi)容滿足職業(yè)需求。
本課程中事務(wù)、集合點、檢查點是非常重要的基本概念,但是現(xiàn)有教材偏重抽象理論,沒有貫穿這三個基本知識點的案例,因此需要為這幾個知識點設(shè)計基于LoadRunner+Fiddler 的項目教學(xué)案例。
測試手機可采用學(xué)生的個人手機,建議用版本低于Android 7.0 的設(shè)備。
PC 采用學(xué)院機房Win10 系統(tǒng)主機,為了不影響抓包工具正常使用,PC 需要關(guān)閉防火墻,退出殺毒軟件。手機與PC 需要處于同一局域網(wǎng)中,PC 上安裝抓包工具Fiddler 官網(wǎng)最新版本和LoadRunner 12.02 社區(qū)版。配置手機網(wǎng)絡(luò)代理為PC 的IP 地址,端口號設(shè)為8888。Fiddler 設(shè)置偵聽端口為8888,與手機配置的端口號一致,否則無法與手機正常連接。由于小程序發(fā)送接收HTTPS 消息,因此需要勾選“Decrypt HTTPS traffic“并安裝證書。需要特別注意的是,F(xiàn)iddler 配置后需要重啟,否則可能無法抓包。
性能測試必須基于產(chǎn)品需求。小程序“我的國際農(nóng)場”需求說明書中要求,50 個用戶同時登錄小程序并瀏覽商品列表,用戶平均登錄時間不超過2 秒,商品展示網(wǎng)頁正常顯示。因此性能測試場景應(yīng)該圍繞這個需求設(shè)計,生成50 個虛擬用戶進(jìn)行登錄和瀏覽操作。為了確認(rèn)網(wǎng)頁的正常跳轉(zhuǎn),需要進(jìn)行文本檢查點設(shè)置。企業(yè)項目測試中,為了盡可能真實地模擬用戶的操作,50 個虛擬用戶通常使用不同的賬號登錄,需要用到參數(shù)化。由于本次教學(xué)內(nèi)容不包括參數(shù)化的知識點,因此50 個虛擬用戶均以相同的賬號登錄。
首先打開已經(jīng)配置好的抓包工具Fiddler 開始錄制,然后手機登錄微信小程序“我的國際農(nóng)場”,點擊“我的工廠”菜單,頁面跳轉(zhuǎn)后瀏覽商品列表。將所有session 消息保存為login.saz。如圖1 所示。
圖1 Fiddler抓包消息
使用LoadRunner 打開腳本,刪除無關(guān)內(nèi)容,根據(jù)需求設(shè)置登錄集合點、查詢商品列表事務(wù)和檢查點。案例要求對登錄進(jìn)行壓力測試,因此需要在登錄相關(guān)代碼前設(shè)置集合點,并且統(tǒng)計登錄事務(wù)的耗時。注意事務(wù)開始和結(jié)束是同一個事務(wù)名稱,否則無法統(tǒng)計事務(wù)時間。為了驗證商品列表正確地顯示出來了,選擇商品“日本娃娃”作為頁面文字檢查點,如圖2。為了驗證修改后的腳本的正確性,在單用戶模式下運行腳本。如失敗,結(jié)合運行日志進(jìn)行修改,直至成功。
上面的腳本是單個用戶的腳本。本次測試要求的是模擬50 個虛擬用戶,因此需要打開LoadRunner 控制器,設(shè)置虛擬用戶數(shù)量為50,腳本僅迭代一次。并添加服務(wù)器資源監(jiān)控,關(guān)注測試執(zhí)行過程中相關(guān)性能指標(biāo)的變化情況。常用的資源監(jiān)控有CPU 利用率、內(nèi)存指標(biāo)、TPS 等。設(shè)置完成后,點擊運行,開始運行場景,同時觀察資源監(jiān)控波形圖的變化。如多用戶場景運行失敗,需返回修改腳本或者場景設(shè)置。
圖2 性能測試腳本
腳本成功執(zhí)行完畢后,打開LoadRunner 分析器,通過分析圖3,得出初步的測試結(jié)論:
圖3 運行用戶-事務(wù)平均響應(yīng)時間
從圖3 可看出,測試50 個人同時登錄平均時間小于1 秒?!暗卿浭聞?wù)”平均響應(yīng)時間與虛擬用戶數(shù)量成正比關(guān)系。當(dāng)并發(fā)虛擬用戶數(shù)量達(dá)到最大值50,“登錄事務(wù)”平均響應(yīng)時間也隨之達(dá)到最大值0.055 秒.根據(jù)小程序“我的國際農(nóng)場”的產(chǎn)品需求,50 人登錄時間小于2 秒即可。從測試日志也可看到返回頁面包含“日本娃娃”關(guān)鍵字,檢查點測試通過。綜上所述,該小程序?qū)τ?0 人以內(nèi)的并發(fā)“登錄事務(wù)”具有較好的處理能力,不存在明顯的性能瓶頸。需要注意的是,在企業(yè)實際性能測試項目中,需要結(jié)合多個圖表,針對當(dāng)前測試環(huán)境進(jìn)行瓶頸分析,并與開發(fā)人員溝通確認(rèn)。教學(xué)中可簡化為分析典型圖表,得出初步結(jié)論即可。
實施本教學(xué)案例的過程中,學(xué)生使用測試工具遇到的問題頗多。例如,F(xiàn)iddler 無法抓到有效數(shù)據(jù)包,HTTPS 協(xié)議解析不成功,LoadRunner 系統(tǒng)資源監(jiān)控的設(shè)置方法等。腳本的編寫方面,設(shè)置集合點和檢查點的位置是一個難點,同學(xué)出錯幾率高,設(shè)置位置錯誤造成測試結(jié)果不準(zhǔn)確。測試結(jié)果圖表分析對于大多數(shù)同學(xué)是一個門檻,需要至少兩節(jié)課進(jìn)行理論到實例的講解鋪墊,可重點突出“拐點法”。
由于學(xué)生在實際操作過程中遇到的問題很多,因此在課堂上建議劃分多個學(xué)習(xí)組進(jìn)行團(tuán)隊互助學(xué)習(xí)交流。每個學(xué)習(xí)組由4-5 個同學(xué)組成,每個組指定一位專業(yè)成績優(yōu)異的同學(xué)擔(dān)任組長,負(fù)責(zé)組織和協(xié)調(diào)工作,并代表本小組做測試匯報。
通過在《性能測試》課程中引入基于業(yè)內(nèi)主流測試工具LoadRunner+Fiddler 的小程序測試案例,幫助學(xué)生在實際項目實踐中融會貫通抽象的理論知識。學(xué)生在團(tuán)隊學(xué)習(xí)中主動投入,積極討論,共同解決疑難問題,提高了學(xué)習(xí)的興趣和信心,達(dá)到了較好的學(xué)習(xí)效果。
我學(xué)院目前已經(jīng)在《功能測試》、《性能測試》課程中采用這種案例設(shè)計模式。接下來,我學(xué)院將在其他編程類課程中融入此類型案例。實踐證明這種跟隨業(yè)內(nèi)主流技術(shù),基于真實商業(yè)項目的教學(xué)案例更符合對理論廣度和實踐能力有較高要求的專業(yè)課程,更貼合企業(yè)的崗位需求,有利于增強學(xué)生的就業(yè)競爭力。