發布時間:2023-03-20 16:15:19
序言:寫作是分享個人見解和探索未知領域的橋梁,我們為您精選了8篇的軟件測試論文樣本,期待這些樣本能夠為您提供豐富的參考和啟發,請盡情閱讀。
1Web應用程序性能測試實驗
這部分實驗目的是使學生熟練掌握使用Jmeter測試Web應用程序的一般流程和方法。實驗任務測試績效考核子系統中的評分模塊。評分人登錄系統后進入評分環節,選擇其未完成的評分項目(若有多個未評分項,則需要全部對其評分)。每個評分項中包含對多個部門的評分,部門數大于等于3個時需符合正態分布,如可評出優秀3個、良好6個、合格4個、基本合格2個,否則可任意評分。按照循序漸進的原則,設計了3個步驟:一是Jmeter的基本應用,包括腳本錄制、添加http請求、添加斷言以及查看測試結果等;二是Jmeter的邏輯控制結構,如分支和循環等;三是Jmeter的高級應用,如參數值可變以及參數個數可變等。
1.1Jmeter的基本應用
Jmeter可以手工添加腳本,但更方便的是使用腳本錄制軟件Badboy[9]。Badboy錄制的腳本可以保存為Jmeter格式,然后在Jmeter中直接打開和修改。腳本主要是一系列的http請求,其中可以設置請求的URL,請求方法(get/post)及請求參數等,如圖1所示。通過添加斷言(如是否含有特定字符串)檢查請求是否返回正確結果。添加查看結果樹并運行測試腳本查看程序的測試結果。
1.2Jmeter的控制結構
Jmeter具有豐富的邏輯控制結構,包括控制器,switch控制器,while控制器以及forEach控制器等。實驗重點練習控制器和forEach控制器。控制器判斷Jmeter變量是否滿足給定條件,若滿足則執行其包含的測試元素,否則不執行。ForEach控制器對Jmeter變量的每一個取值都執行一遍其包含的測試元素。圖2是一個控制器,其條件為變量COUNT小于10且變量VAR等于字符串“abcd”。圖2Jmeter的控制器圖Jmeter的變量引用使用${變量名}的方式,變量一般提取自返回頁面中的某些信息,如滿足特定條件記錄的行數或某個特定位置的字符串取值等。變量提取可采用正則表達式或Xpath進行匹配,講解其匹配原則并現場演示。圖3利用正則表達式提取需評選優秀的單位個數,其中引用名稱youxiu就是變量名。匹配失敗則取設置的缺省值0。如對于頁面中返回的html代碼“…您當前可以評出優秀<spanid="ltYSMsg">3</span>個…”可提取出優秀個數為3。
1.3Jmeter的高級應用
本部分著重解決實際測試過程中的一些常見問題,如參數內容可變及參數個數可變等。測試登錄環節時需模擬不同的用戶登錄行為,即圖1的http請求中txtUserName一項的值應是變化的。Jmeter提供的CSVDataSetConfig可解決這一問題,如圖4所示。將所有評分人的信息存儲在一個CSV文件中,把其中的列名填入VariableNames項,之后將圖1中的txtUserName值改為userAccount(即CSV文件的第1列)實現參數值的動態變化。進入評分項后需根據情況選擇優秀和良好等的個數,且要反映在http請求的參數中。由于參評單位的個數因評分人和評分項各異,因此無法在GUI界面中一一添加。需動態添加的參數包括評分列表中的name及其value,value的取值從優秀到基本合格依次為1234。為簡單起見,我們按順序對單位進行評分。如系統要求評出3個優秀,則測試中前3個部門打優秀,其余依次類推。由于同一部門的優秀良好等單選按鈕的name值相同(如圖5所示),我們選擇提取該組唯一的ID號,然后將其轉換為name,其對應關系是用$代替下劃線(如ID號為gbBSCExamList_ctl02_rbExamerLevel,name為gbBSCExamList$ctl02$rbExamerLevel)。Jmeter的Beanshellpreprocessor可在提交http請求前動態調整參數個數及參數值。下面給出了Beanshellpreprocessor的代碼。其中ExamerLevel_matchNr為Jmeter的系統變量,提供了正則表達式匹配項ExamerLevel匹配成功的個數(即參評單位的個數)。如前所述匹配數量小于3時可任意評分,為簡單起見我們均將其評為優秀。N=Integer.parseInt(vars.get("ExamerLevel_match-Nr"));(N>=3){YX=Integer.parseInt(vars.get("youxiu"));LH=Integer.parseInt(vars.get("lianghao"))+YX;HG=Integer.parseInt(vars.get("hege"))+LH;BHG=Integer.parseInt(vars.get("jibenhege"))+HG;for(i=1;i<=N;i++){item=vars.get("ExamerLevel_"+i);item=item.replace("_","$");(i<=YX){sampler.addArgument(item,"1");}else(i<=LH){sampler.addArgument(item,"2");}else(i<=HG){sampler.addArgument(item,"3");}else(i<=BHG){sampler.addArgument(item,"4");}}}else{for(i=1;i<=N;i++){item=vars.get("ExamerLevel_"+i);item=item.replace("_","$");sampler.addArgument(item,"1");}}設計了含35個并發線程的線程組,模擬實際35個評分人的評分過程。全部線程在1秒鐘之內啟動,比實際情況更嚴格。得到聚合報告如圖6所示,其中點擊考核評分頁面響應時間最長,為335毫秒。且測試過程中無錯誤發生,說明系統評分模塊可靠。
2數據庫性能優化實驗
除應用程序外,數據庫設計的優劣亦影響系統性能。這部分實驗目的是使學生熟練掌握使用SQLServer測試數據庫性能的一般流程和方法,并進行簡單的數據庫調優。為減少復雜性,設計一個簡單的由三張表組成的人員組織結構數據庫:user、or-gan及userorgan表。其中user表含4586條記錄,or-gan表含1722條記錄,userorgan表含6804條記錄(一人可在多部門任職)。實驗任務根據賬號查詢其姓名及所在單位信息。
2.1SQL語句執行計劃對應用程序中頻繁執行的SQL語句檢查執行計劃非常重要。初始時,三張表均未建立任何索引,下面SQL語句的執行計劃如圖7所示。由圖7知,三張表均采用全表掃描的方式。對大表全表掃描可能涉及多次磁盤I/O,非常費時,應盡力避免此種情況。SQLServer報告由于缺少索引影響了查詢性能,并給出了相關建議。selectA.vcAccount,A.vcName,C.vcNamefromtest.dbo.[user]Ainnerjointest.dbo.[useror-gan]BonA.vcAccount=B.cnvcempidinnerjointest.dbo.organConB.cnvcorgid=C.nNodeIDwhereA.vcAccount='testuser'為表格建立以下索引:indexIND_USERACCOUNTontest.dbo.[user](vcAccount)clusteredindexPK_ORGANontest.dbo.[organ](nNodeID)indexIND_USERORGANontest.dbo.[userorgan](cnvcempid,cnvcorgid)再次運行后顯示執行計劃如圖8所示。可見所有表掃描均已替換為相應的索引查找,且SQLServ-er未報告缺少索引影響查詢性能。兩次執行查詢的磁盤I/O和CPU時間見表1,可見為表添加正確的索引可提高查詢性能。
2.2索引建立原則總結
建立索引的一般滿足原則如下[10](篇幅所限,未給出實例):(1)為主鍵所在的列創建索引。為經常進行連接但未指定為外鍵的字段建立索引。(2)在頻繁進行排序或分組的字段上建立索引。(3)在條件表達式中經常用到的不同值較多的字段上建立索引,在不同值較少的字段上不建立索引,如性別字段。不在查詢很少引用的列上創建索引。(4)若經常同時使用多個字段排序,可在這些字段上建立復合索引。要盡量使關鍵查詢形成索引覆蓋,其前導字段一定是使用最頻繁的字段。(5)查看索引并刪除不使用的索引。需頻繁進行數據查入操作的數據庫應有較少的索引,需頻繁進行讀取操作的數據庫應有更多的索引。(6)在聚集索引中,避免包括不必要的列,盡可能使用較小的數據類型。(7)在支持排序和范圍查詢的字段上考慮使用聚集索引。(8)具有高選擇性的列是索引的好候選列,具有高密度的列是索引最糟糕的候選列。
3結語
1 關于計算機軟件測試的介紹
1.1 軟件測試的概念
軟件測試是指在軟件運行之前,對軟件的產品介紹和代碼進行審核,從而保障軟件的正常運行。軟件測試不僅代表軟件系統出現問題的可能性,同時還表示軟件能夠完成預定功能的程度,這兩部分對于軟件測試都有重要的意義。
1.2 軟件測試的特點
1.2.1軟件測試的動態性
軟件測試是在規定輸入值的情況下運行的,是一種動態的檢測軟件的運行狀態的過程。
1.2.2軟件測試的有限性
在對軟件進行測試的過程中,測試的次數是有限的,不可能無限制的測試下去,同時,整個測試過程還要具有可管理性,即在測試時需要平衡測試需求與測試資源之間的關系。
1.2.3軟件測試的預測性
進行軟件測試之前,應該判斷測試的結果是否妥當,常常采用預示程序來預測運行的可能結果,但預測程序也是軟件測試技術的一大難點。
2 軟件測試技術的過程分析
2.1軟件測試的方案
在進行軟件測試之前,都需要制定一個合適有效的軟件測試方案,以確定軟件測試的目的和過程,為軟件測試的完成提供一個清晰有效的目標。
2.2 軟件測試的開發設計
軟件測試設計就是在軟件開發的過程中進行的軟件質量測試工作,在測試時需要提供規范的應用說明、程序設計情況,同時,軟件測試設計在軟件測試過程中有著重要的作用。測試設計的基本步驟為:首先利用先進的技術手段設計分析樣式,然后討論測試結果,并做成有效的測試方案,最后確定每一項測試任務都完成了,從而保障測試結果的有效性。
2.3 軟件測試的準備
在測試方案開始前,需要先進行測試準備,列舉測試方案中所需要的重點問題,這些問題常常有測試數據集、驅動程序和實際執行測試所需的軟件等,同時需要為整個測試過程尋找合適的測試環境和測試工具。
2.4 軟件測試的實施
參照之前設計的軟件測試方案,利用測試用例對軟件測試的項目進行全面有效的測試,并將測試情況與實際運行情況對比起來研究,從而判斷測試是否成功,并進行下一步測試工序。在測試的過程中對軟件的質量問題進行記錄,并進行有效的修改,修改之后再按照之前的測試步驟重新進行測試,觀察問題是否會再次出現,從而確保軟件的質量。同時,應制定合適的測試計劃,定期將軟件運行測試,以保障之前測試的問題不會在出現。每完成一個測試部分,比較整個運行結果與測試方案的不同之處,并針對不同之處進行有效的調整。
2.5 軟件測試的報告
將軟件測試階段得到的運行結果拿來觀察和處理,觀察測試觀點是否完整,確認方法是否有效,并依次評定軟件測試過程中的測試用例和軟件質量等級,并進行測試報告總結。
3 軟件工程中存在的測試問題
軟件工程出現后,軟件的運行質量越來越受到人們的關注,軟件測試技術也開始慢慢發展,但在軟件工程中常常出現一些測試問題,導致軟件的質量受到影響。下面筆者就軟件工程中常見的測試問題進行闡述。
(1)目前很多軟件開發公司沒有比較正規的軟件開發手段,沒有產品說明書,因此,在進行軟件測試時需要先利用試探性測試技術。而利用試探性測試技術需要先了解軟件的特性,并對軟件的運行情況進行有效的記錄,全面描述軟件的功能特點,然后應用常用的幾種軟件測試技術來找出軟件的質量問題。但在這樣的情況下,一些錯誤、非法的沒有利用價值的數據容易被作為輸入數據,這樣測試軟件的輸出結果存在較大問題,對于軟件測試的進行有較大的影響。
(2)在進行軟件測試時,首先要對軟件的邏輯流程進行了解,描述軟件的詳細狀態,但在一些規模很大、結構復雜的軟件測試中,了解軟件的運行情況是很困難的,這時,就需要降低軟件測試的狀態以及數量。但是在測試中,必須對每種狀態都進行測試,但在實際測試中往往忽略這一問題,這將會大大影響到軟件測試的效果,并產生一定的后果。
4 計算機軟件測試的常用技術
軟件測試技術對于計算機軟件行業的發展有重要的促進意義,關系到計算機軟件的運行質量,同時,還能方便人們的日常生活。計算機軟件測試主要有兩種手段,即白盒測試和黑盒測試,下文筆者將對此進行闡述。
4.1 白盒測試
白盒測試即邏輯驅動測試或結構測試,該方法是對系統的內部構造進行測試,檢測整個應用軟件內部是否正常運行的手段,在測試中,把待測系統當作一開放的盒子,通過對系統的內部程序結構進行測試來檢測它的邏輯路徑,從而根據在不同區域的檢測信息來測試軟件的實際運行情況是否與預期結果相同。目前,采用白盒測試技術常用的方法有:基本路徑測試法、邏輯覆蓋法、靜態結構分析法和代碼檢查法等。與其他的軟件測試技術相比,白盒測試技術需要充分了解到系統的內部構造,以便對系統的全部邏輯路徑進行檢測。在應用這種測試技術時,首先要檢查系統的內部構造,并從整個應用的邏輯來
統計檢測數據。另外,白盒測試技術對于軟件測試人員快速發現軟件運行異常情況,提高軟件的運行效率有重要的現實意義。 4.2 黑盒測試
黑盒測試即功能測試,該方法是對軟件產品的功能進行測試,從而觀察軟件能否正常運行的手段,在測試中,把測試系統看成封閉的黑盒子,不需要考慮整個軟件系統的內部特征,只需要依靠傳輸數據來得出檢測結果。黑盒測試主要對軟件的界面和功能進行測試,僅僅只需要考慮系統的外部結構,從而達到有效進行軟件測試的目的。同時,黑盒測試主要測試軟件的功能,常常用于檢測這樣幾種錯誤:運行界面、程序初始化和終止、數據庫的訪問情況、軟件性能和功能等錯誤。在黑盒測試之前,需要采取合適有效的測試方案,以保障軟件測試有計劃的進行。相比其他的軟件測試技術,黑盒測試操作方便,設計代碼也很簡單,能夠從用戶的角度出發去解決問題,并實現軟件的功能。