王芬,羅春鳳
(廣州華南商貿(mào)職業(yè)學(xué)院,廣東廣州 510000)
伴隨著信息化的發(fā)展,軟件已經(jīng)融入人們的工作和生活,人們對軟件質(zhì)量的要求日益提高。為了滿足用戶對軟件質(zhì)量的要求,軟件研發(fā)人員需不斷對軟件進(jìn)行測試,不斷優(yōu)化軟件的功能和性能,確保軟件有效且安全地運(yùn)行,軟件測試技術(shù)也需要相應(yīng)不斷提高。本文介紹了如何對Web 系統(tǒng)進(jìn)行自動(dòng)化功能測試和性能測試。
Web Tours 是一款基于ASP.net 平臺(tái)的網(wǎng)站,基于先進(jìn)的.NET Framework,默認(rèn)支持SQL Server、Access、MySQL 等多種數(shù)據(jù)庫,基于IE、Opera、Chrome、Firefox等瀏覽器,主要提供網(wǎng)上訂票、查看訂票信息、預(yù)定機(jī)票等功能。
下載 strawberry-perl,下載地址為http://strawberryperl.com/,下載網(wǎng)站如圖1 所示。
圖1 下載網(wǎng)站
安裝strawberry-perl,安裝界面如圖2 所示。
圖2 安裝界面
啟動(dòng)服務(wù),解壓Web Tours 文件包,雙擊StartServer文件啟動(dòng)服務(wù),啟動(dòng)服務(wù)器界面如圖3 所示。
圖3 啟動(dòng)服務(wù)器界面
雙擊“運(yùn)行”就會(huì)進(jìn)入如圖4 所示的服務(wù)器界面。
圖4 服務(wù)器界面
打開谷歌瀏覽器,在地址欄輸入http://127.0.0.1:1080/WebTours/,默認(rèn)賬戶為jojo,密碼為bean,也可注冊自己的賬號(hào),登錄界面如圖5 所示。使用默認(rèn)賬號(hào)jojo,密碼bean,登錄后的界面如圖6 所示。
圖5 登錄界面
圖6 登錄后的界面
網(wǎng)站的功能如下:①注冊功能,點(diǎn)擊sign up now跳轉(zhuǎn)到注冊用戶頁面,注冊新用戶名和密碼;②登錄功能,輸入注冊后的用戶名、密碼登錄進(jìn)入主頁;③首頁界面,包括功能導(dǎo)航、信息介紹2 部分;④搜索航班功能;⑤選擇航班功能,可以選擇合適的航班;⑥支付功能,根據(jù)表格填寫相應(yīng)的個(gè)人信息;⑦訂票成功功能;⑧訂票查詢功能,可以取消航班(cancel flights);⑨退出系統(tǒng)功能(sign off)。
在一個(gè)大型軟件項(xiàng)目開發(fā)中軟件測試的工作量通常是很大的,甚至占據(jù)總工作量的40%。完全靠手工測試,例如靜態(tài)測試要檢查幾百萬行代碼和動(dòng)態(tài)測試要執(zhí)行幾萬個(gè)測試用例,其中包含許多簡單重復(fù)勞動(dòng),導(dǎo)致工作效率低、測試速度慢,因此早期的軟件測試進(jìn)度非常緩慢。為了解決這一問題,軟件測試迫切需要一個(gè)標(biāo)準(zhǔn)、兼容、成熟的方案,而自動(dòng)化軟件測試能很好地解決這個(gè)問題。在測試需求的基礎(chǔ)上進(jìn)行自動(dòng)化測試,編寫測試腳本和執(zhí)行測試用例得到測試結(jié)果,最后進(jìn)行測試總結(jié)和分析。
常見的性能測試主要有以下幾個(gè)方面:①測試網(wǎng)絡(luò)連接速度??蛻舳诉B接到服務(wù)器可以通過多種網(wǎng)絡(luò)連接方式,不同的連接方式產(chǎn)生不同的傳輸速度,例如有的網(wǎng)站系統(tǒng)不會(huì)自動(dòng)保存數(shù)據(jù),頁面連接超時(shí)用戶需重新刷新頁面和保存數(shù)據(jù)。②負(fù)載測試。負(fù)載測試是測試Web 系統(tǒng)在某個(gè)時(shí)間段內(nèi)滿足性能指標(biāo)的情況下所能容納的最大在線人數(shù),主要是尋找系統(tǒng)能保持正常運(yùn)行的極限和測試同時(shí)在線人員對系統(tǒng)功能操作的響應(yīng)時(shí)間。③壓力測試。壓力測試主要測試超出Web 系統(tǒng)的最大數(shù)據(jù)處理量或最大的容納人數(shù)時(shí)導(dǎo)致系統(tǒng)資源接近飽和甚至崩潰的邊緣后系統(tǒng)所能承受的最大極限。
早期軟件測試是通過人工觀測的方式觀察軟件界面變化來判斷被測應(yīng)用軟件的界面顯示和界面邏輯是否存在問題,這樣做浪費(fèi)了人力。斷言(Assert)是在測試步驟中設(shè)置檢查點(diǎn)對軟件運(yùn)行結(jié)果進(jìn)行預(yù)期判斷,如果實(shí)際測試結(jié)果符合預(yù)期則判斷正確,否則判斷錯(cuò)誤,故而可以利用斷言代替人工檢查軟件UI界面是否顯示正確。利用斷言對復(fù)雜邏輯的驗(yàn)證能力,本文將在Selenium 自動(dòng)化測試代碼中加入斷言(Assertin)代碼,在JMeter 性能測試腳本中添加Response Assertion 驗(yàn)證用戶是否登錄成功,豐富斷言的功能。
3.2.1 數(shù)據(jù)驅(qū)動(dòng)[3]
常見的自動(dòng)化測試模式分別是數(shù)據(jù)驅(qū)動(dòng)測試、關(guān)鍵字驅(qū)動(dòng)測試和行為驅(qū)動(dòng)測試。其中數(shù)據(jù)驅(qū)動(dòng)測試實(shí)現(xiàn)輸入、輸出數(shù)據(jù)與測試代碼分離,有利于測試代碼維護(hù)和測試數(shù)據(jù)管理。測試數(shù)據(jù)和開發(fā)腳本可以同步進(jìn)行,減少編寫測試腳本的工作量,測試人員可以將時(shí)間放在正在開發(fā)的功能上從而提高工作效率。數(shù)據(jù)驅(qū)動(dòng)的優(yōu)點(diǎn)是將測試數(shù)據(jù)與測試腳本區(qū)分開使其獨(dú)立存在,降低依賴關(guān)系。不需要重新編寫測試腳本,測試數(shù)據(jù)可以根據(jù)測試需求的改變而變化,減少測試人員的工作量。通過數(shù)據(jù)使數(shù)據(jù)驅(qū)動(dòng)與腳本、應(yīng)用程序同步運(yùn)行方便驗(yàn)證測試結(jié)果。
3.2.2 Selenium 框架[4]
Selenium 是一套基于Web 應(yīng)用軟件開發(fā)的測試框架,它支持Firefox、Chrome、IE、Edge 等多種瀏覽器。Selenium 框架使得自動(dòng)化測試瀏覽器的兼容性成為可能。Selenium 框架底層能夠模擬用戶對瀏覽器進(jìn)行點(diǎn)擊、輸入、打開、驗(yàn)證等操作,Selenium 框架是從終端用戶的角度測試應(yīng)用程序。執(zhí)行測試腳本時(shí),瀏覽器自動(dòng)按照腳本代碼進(jìn)行各種操作,可以使用Python、Java、Perl 和Ruby 等不同語言編寫自動(dòng)化測試腳本[5]。
3.2.3 WebDriver 原理
WebDriver 是一種用于Web 應(yīng)用程序的自動(dòng)化測試工具,具有Selenium2.0 的新特點(diǎn)。相比Selenium1.0,WebDriver 的API(Application Program Interface)能更好地支持Web 動(dòng)態(tài)頁面測試開發(fā)腳本。WebDriver 有一套完整的類庫,它不依賴其他測試框架,能直接支持瀏覽器的內(nèi)核測試。由于不同瀏覽器對于頁面元素的使用不同導(dǎo)致所使用的WebDriver 不同,例如Chrome 瀏覽器支持的驅(qū)動(dòng)是Chrome driver,F(xiàn)irefox瀏覽器支持的驅(qū)動(dòng)是Gecko Driver,IE 瀏覽器支持的驅(qū)動(dòng)是Internet Explorer Driver。
3.2.4 將數(shù)據(jù)驅(qū)動(dòng)測試應(yīng)用于Web Tours 機(jī)票預(yù)訂系統(tǒng)[6]
測試用戶賬號(hào)如圖7 所示,自動(dòng)化測試代碼如圖8所示。
圖7 測試用戶賬號(hào)
圖8 自動(dòng)化測試代碼
3.2.5 測試結(jié)果分析
模擬正確的用戶名和密碼,用戶可以登錄成功;模擬錯(cuò)誤的賬號(hào)或密碼,用戶登錄提示用戶名或者密碼錯(cuò)誤,登錄不成功。登錄模塊功能邏輯正確,符合用戶對系統(tǒng)的應(yīng)用需求。代碼模擬瀏覽器操作如圖9所示,多用戶登錄Web Tours 代碼運(yùn)行結(jié)果如圖10 所示,Selenium 自動(dòng)化功能測試斷言實(shí)現(xiàn)如圖11 所示。
圖9 代碼模擬瀏覽器操作
圖10 多用戶登錄Web Tours 代碼運(yùn)行結(jié)果
圖11 Selenium 自動(dòng)化功能測試斷言實(shí)現(xiàn)
3.3.1 測試實(shí)施
運(yùn)用測試工具JMeter+BadBoy 工具測試腳本設(shè)計(jì),先由BadBoy 工具錄制用戶登錄Web Tours 系統(tǒng)腳本再導(dǎo)出jmx 文件,再導(dǎo)入到Jmeter 工具進(jìn)行調(diào)試測試腳本[7]。Badboy 錄制登錄腳本如圖12 所示。
圖12 Badboy 錄制登錄腳本
3.3.2 導(dǎo)入并修改腳本
在測試計(jì)劃中先添加2 個(gè)Listener,如View Results Tree 和Aggregate Report 查看運(yùn)行結(jié)果數(shù)據(jù),再添加post processors 中的Regular Expression Extractor 處理登錄usersessions 并關(guān)聯(lián)數(shù)據(jù),最后添加CSV Data Set Config 元件參數(shù)化處理多用戶登錄賬號(hào)、密碼,斷言驗(yàn)證實(shí)例結(jié)果,腳本處理過程如圖13—圖16 所示。
圖13 關(guān)聯(lián)處理usersessions
圖14 參數(shù)化登錄數(shù)據(jù)
圖15 讀取CSV 文件數(shù)據(jù)
圖16 Jmeter 性能測試斷言實(shí)現(xiàn)
3.3.3 測試結(jié)果
測試結(jié)果如圖17 所示。
圖17 用戶登錄成功
本文主要研究發(fā)現(xiàn)以下內(nèi)容:①選擇適合的自動(dòng)化測試方法和性能測試方法,在登錄模塊系統(tǒng)測試和性能測試過程中運(yùn)用;②使用數(shù)據(jù)驅(qū)動(dòng),從外部文件讀取輸入數(shù)據(jù),通過使變量參數(shù)化處理將測試數(shù)據(jù)傳入測試腳本,不同的測試數(shù)據(jù)對應(yīng)不同的測試用例,實(shí)現(xiàn)數(shù)據(jù)和腳本分離;③通過響應(yīng)斷言判斷響應(yīng)文本是否包含期望字符串以驗(yàn)證用戶登錄是否成功。