軟件測試技術(shù)實驗指導(dǎo)書2016版_第1頁
軟件測試技術(shù)實驗指導(dǎo)書2016版_第2頁
軟件測試技術(shù)實驗指導(dǎo)書2016版_第3頁
軟件測試技術(shù)實驗指導(dǎo)書2016版_第4頁
已閱讀5頁,還剩90頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

精選文庫 - 軟件測試技術(shù)軟件測試技術(shù)實驗指導(dǎo)書實驗指導(dǎo)書 吳鴻韜吳鴻韜 河北工業(yè)大學(xué)計算機(jī)科學(xué)與軟件學(xué)院河北工業(yè)大學(xué)計算機(jī)科學(xué)與軟件學(xué)院 20162016 年年 9 9 月月 精選文庫 - 目目 錄錄 第一章第一章 實驗要求實驗要求.1 第二章第二章 白盒測試實踐白盒測試實踐.3 第三章第三章 黑盒測試實踐黑盒測試實踐.6 第四章第四章 自動化單元測試實踐自動化單元測試實踐.7 第五章第五章 自動化功能測試實踐自動化功能測試實踐.35 第六章第六章 自動化性能測試實踐自動化性能測試實踐.56 附錄附錄 1 實驗報告封皮參考模版實驗報告封皮參考模版.71 附錄附錄 2 小組實驗報告封皮參考模版小組實驗報告封皮參考模版.72 附錄附錄 3 軟件測試計劃參考模版軟件測試計劃參考模版.73 附錄附錄 4 測試用例參考模版測試用例參考模版.77 附錄附錄 5 單元測試檢查表參考模版單元測試檢查表參考模版.81 附錄附錄 6 測試報告參考模版測試報告參考模版.82 附錄附錄 7 軟件測試分析報告參考模版軟件測試分析報告參考模版.87 精選文庫 - 第一章第一章 實驗要求實驗要求 一、實驗意義和目的 軟件測試是軟件工程專業(yè)的一門重要的專業(yè)課,本課程教學(xué)目的是通過實際 的測試實驗,使學(xué)生系統(tǒng)地理解軟件測試的基本概念和基本理論,掌握軟件測 試和軟件測試過程的基本方法和基本工具,熟練掌握軟件測試的流程、會設(shè)計 測試用例、書寫測試報告,為學(xué)生將來從事實際軟件測試工作和進(jìn)一步深入研 究打下堅實的理論基礎(chǔ)和實踐基礎(chǔ)。 本實驗指導(dǎo)書共設(shè)計了 2 個設(shè)計型、3 個驗證型實驗和一個綜合型實驗,如 表 1 所示。設(shè)計型實驗包括白盒測試實踐和黑盒測試實踐,驗證型實驗包括自 動化單元測試實踐、自動化功能測試和自動化性能測試實踐,主要目標(biāo)是注重 培養(yǎng)學(xué)生軟件測試的實際動手能力,增強(qiáng)軟件工程項目的質(zhì)量管理意識。通過 實踐教學(xué),使學(xué)生掌握軟件測試的方法和技術(shù),并能運用測試工具軟件進(jìn)行自 動化測試。綜合型實驗以軟件設(shè)計與編程實踐課程相關(guān)實驗題目為原型、 在開發(fā)過程中進(jìn)行測試設(shè)計與分析,實現(xiàn)軟件開發(fā)過程中的測試管理,完成應(yīng) 用軟件的測試工作,提高軟件測試技能,進(jìn)一步培養(yǎng)綜合分析問題和解決問題 的能力。 表 1 實驗內(nèi)容安排 實驗內(nèi)容學(xué)時實驗性質(zhì)實驗要求 實驗一 白盒測試實踐 4設(shè)計 必做 實驗二 黑盒測試實踐 4 設(shè)計必做 實驗三 自動化單元測試實踐 4 驗證必做 實驗四 自動化功能測試實踐 4 驗證必做 實驗五 自動化性能測試實踐 4 驗證必做 實驗六、綜合測試實踐課外綜合選做 二、實驗環(huán)境 NUnit、JUnit、LoadRunner、Quick Test Professional、VC6.0、Visual 精選文庫 - Studio 2010、SQL 數(shù)據(jù)庫。 三、實驗過程要求 每次實驗前詳細(xì)閱讀實驗指導(dǎo)書,熟悉實驗?zāi)康暮蛯嶒瀮?nèi)容,制訂測試計劃, 設(shè)計測試用例。實驗后整理并提交測試報告,項目結(jié)束后要提交測試總結(jié)。 實驗過程中,實驗者必須服從指導(dǎo)教師和實驗室工作人員的安排,遵守紀(jì)律 與實驗制度,愛護(hù)設(shè)備及衛(wèi)生。在指定的實驗時間內(nèi),必須到實驗室內(nèi)做實驗。 四、實驗成績評價 實驗課程的總成績由實驗考勤和實驗報告成績組成,主要是三個方面: (1)上機(jī)實驗考勤:每次上機(jī)應(yīng)主動在指導(dǎo)老師處簽到,冒簽等不誠信行 為一旦被發(fā)現(xiàn),取消本次實驗成績。如果學(xué)生需要請假,必須提前出具正式假 條。 (2)實驗過程考核:每次實驗課,指導(dǎo)教師根據(jù)實驗過程情況,隨機(jī)抽查, 進(jìn)行當(dāng)次實驗的答辯。 (3)實驗報告提交:應(yīng)根據(jù)指導(dǎo)教師要求按時提交每次實驗的電子版實驗 報告。實驗報告中包含軟件測試流程中所需要提交的所有相關(guān)文檔,附件中給 出的相關(guān)文檔模版的內(nèi)容和格式僅供參考。如果發(fā)現(xiàn)學(xué)生抄襲、偽造實驗數(shù)據(jù), 或?qū)嶒瀳蟾婧驮O(shè)計報告抄襲、雷同,則涉及的所有學(xué)生的該課程實驗成績記為 0 分。 各部分所占比例如表 2 所示。 表 2 實驗成績分配表 實驗內(nèi)容分值 實驗考勤 10% 實驗過程 10% 實驗一 白盒測試實踐實驗報告 10% 實驗二 黑盒測試實踐實驗報告 10% 實驗三 自動化單元測試實踐實驗報告 20% 實驗四 自動化功能測試實踐實驗報告 20% 實驗五 自動化性能測試實踐實驗報告 20% 精選文庫 - 精選文庫 - 第二章第二章 白盒測試實踐白盒測試實踐 一、實驗?zāi)康?1、構(gòu)建編碼規(guī)范,依據(jù)編碼規(guī)范進(jìn)行編碼; 2、利用代碼審查方法進(jìn)行單元測試實踐; 3、掌握白盒測試方法,運用白盒測試方法設(shè)計測試用例,進(jìn)行測試實踐; 二、實驗內(nèi)容 本實驗要求采用任一所熟悉的開發(fā)語言,依據(jù)所構(gòu)建的編碼規(guī)則,設(shè)計并 實現(xiàn)任一給定題目或自選題目(注意:最后給出的是基于對話框的程序) ,進(jìn)而 利用白盒測試技術(shù)設(shè)計測試用例,結(jié)合代碼審查方法,進(jìn)行單元測試。 參考題目 1、三角形問題、三角形問題 接受三個整數(shù) a、b 和 c 作為輸入,用做三角形的邊。程序的輸出是由這三 條邊確定的三角形類型:等邊三角形、等腰三角形、不等邊三角形。 (說明:三 邊邊長小于 200) 2、電話號碼問題、電話號碼問題 某城市電話號碼由三部分組成。它們的名稱和內(nèi)容分別是: 地區(qū)碼:空白或三位數(shù)字; 前 綴:非0或1的三位數(shù)字; 后 綴:4 位數(shù)字。 假定被測程序能接受一切符合上述規(guī)定的電話號碼,拒絕所有不符合規(guī)定 的電話號碼。 3、保險公司計算保費費率的程序保險公司計算保費費率的程序 某保險公司的人壽保險的保費計算方式為: 投保額保險費率 其中,保險費率依點數(shù)不同而有別,10 點及 10 點以上保險費率為 0.6%,10 點以下保險費率為 0.1%;而點數(shù)又是由 投保人的年齡、性別、婚姻 狀況和撫養(yǎng)人數(shù)來決定,具體規(guī)則如表 2-1 所示。 精選文庫 - 表 2-1 4、某公司薪水計算程序 某軟件的一個模塊的需求規(guī)格說明書中描述,如圖 2-1 所示: (1)年薪制員工:嚴(yán)重過失,扣年終風(fēng)險金的 4%;過失,扣年終風(fēng)險金 的 2%。 (2)非年薪制員工:嚴(yán)重過失,扣當(dāng)月薪資的 8%;過失,扣當(dāng)月薪資的 4%。 5、公交一卡通自動充值軟件,如圖 2-2 所示 年齡 性別婚姻撫養(yǎng)人數(shù) 20-39 40-59 其它 M F 已婚 未婚 6 點 4 點 2 點 5 點 3 點 3 點5 點 1 人扣 0.5 點 最多扣 3 點 (四舍五入取整) 精選文庫 - 圖 2-1 圖 2-2 6、兩位整數(shù)加法計算器 精選文庫 - 圖 2-3 7、電子商務(wù)網(wǎng)站用戶注冊功能(推薦) 參考任意電子商務(wù)網(wǎng)站(如京東,當(dāng)當(dāng)?shù)龋┑挠脩糇怨δ?,?B/S 或 C/S 架構(gòu)實現(xiàn)該功能,并應(yīng)用白盒測試相關(guān)理論對其進(jìn)行測試。 三、實驗要求 1、獨立完成; 2、提交編碼規(guī)范,根據(jù)編碼規(guī)范進(jìn)行程序設(shè)計和測試; 3、提交源代碼,源代碼中應(yīng)包含必要的注釋; 4、提交測試用例說明書及缺陷報告 第三章第三章 黑盒測試實踐黑盒測試實踐 一、實驗?zāi)康?1、 掌握并運用黑盒測試用例設(shè)計方法進(jìn)行測試用例設(shè)計,進(jìn)行測試實踐。 二、實驗內(nèi)容 掌握黑盒測試的基本理論,能夠利用白盒測試?yán)碚撛O(shè)計測試用例,并在所 開發(fā)的軟件中進(jìn)行測試。白盒測試技術(shù)要求掌握語句覆蓋、分支覆蓋、路徑覆 蓋等白盒測試用例設(shè)計方法。針對實驗二所設(shè)計并實現(xiàn)的程序,利用多種黑盒 測試技術(shù)設(shè)計測試用例,進(jìn)行單元測試。 本實驗要求采用任一所熟悉的開發(fā)語言,依據(jù)所構(gòu)建的編碼規(guī)則,設(shè)計并 精選文庫 - 實現(xiàn)任一給定題目或自選題目(注意:最后給出的是基于對話框的程序) ,進(jìn)而 利用黑盒測試技術(shù)設(shè)計測試用例,結(jié)合代碼審查方法,進(jìn)行單元測試。 參考題目 1、三角形問題、三角形問題 接受三個整數(shù) a、b 和 c 作為輸入,用做三角形的邊。程序的輸出是由這三 條邊確定的三角形類型:等邊三角形、等腰三角形、不等邊三角形。 (說明:三 邊邊長小于 200) 2、電話號碼問題、電話號碼問題 某城市電話號碼由三部分組成。它們的名稱和內(nèi)容分別是: 地區(qū)碼:空白或三位數(shù)字; 前 綴:非0或1的三位數(shù)字; 后 綴:4 位數(shù)字。 假定被測程序能接受一切符合上述規(guī)定的電話號碼,拒絕所有不符合規(guī)定 的電話號碼。 3、保險公司計算保費費率的程序保險公司計算保費費率的程序 某保險公司的人壽保險的保費計算方式為: 投保額保險費率 其中,保險費率依點數(shù)不同而有別,10 點及 10 點以上保險費率為 0.6%,10 點以下保險費率為 0.1%;而點數(shù)又是由 投保人的年齡、性別、婚姻 狀況和撫養(yǎng)人數(shù)來決定,具體規(guī)則如表 2-1 所示。 4、某公司薪水計算程序 某軟件的一個模塊的需求規(guī)格說明書中描述,如圖 2-1 所示: (1)年薪制員工:嚴(yán)重過失,扣年終風(fēng)險金的 4%;過失,扣年終風(fēng)險金 的 2%。 (2)非年薪制員工:嚴(yán)重過失,扣當(dāng)月薪資的 8%;過失,扣當(dāng)月薪資的 4%。 5、公交一卡通自動充值軟件,如圖 2-2 所示 精選文庫 - 6、兩位整數(shù)加法計算器,如圖 2-3 所示。 7、電子商務(wù)網(wǎng)站用戶注冊功能(推薦) 參考任意電子商務(wù)網(wǎng)站(如京東,當(dāng)當(dāng)?shù)龋┑挠脩糇怨δ埽?B/S 或 C/S 架構(gòu)實現(xiàn)該功能,并應(yīng)用黑盒測試相關(guān)理論對其進(jìn)行測試。 三、實驗要求 1、獨立完成; 2、提交測試用例說明書及缺陷報告 第四章第四章 自動化單元測試實踐自動化單元測試實踐 一、實驗?zāi)康?1、熟悉 NUnit/JUnit/VS2010 等自動化測試工具,能熟練應(yīng)用自動化單元測試 工具進(jìn)行單元測試 二、實驗內(nèi)容 自動化測試是對手工測試的有益補(bǔ)充,可以通過自動化測試工具提高測試 效率,改善軟件產(chǎn)品質(zhì)量。NUnit 是為.Net 開發(fā)環(huán)境準(zhǔn)備的自動化單元測試框 架,JUnit 是針對 Java 語言設(shè)計的自動化單元測試工具,它們的作用就是幫助 測試人員方便的完成單元測試工作。Visual Studio 2010 集成開發(fā)環(huán)境通過集 成 Visual Studio Ultimate 2010 和 VS Test Professional 2010 等工具對軟 件測試提供了強(qiáng)有力的支持,可以創(chuàng)建和管理單元測試,UI 測試,web 測試, 負(fù)載測試等。針對實驗二所設(shè)計并實現(xiàn)的程序,本項目要求根據(jù)所設(shè)計測試用 精選文庫 - 例,利用 NUnit/JUnit/VS2010 等自動化測試工具進(jìn)行自動化單元測試,并給出 代碼覆蓋情況。 三、實驗要求 1、獨立完成; 2、提交測試腳本 3、提交測試代碼及缺陷報告。 四、NUnit 概述 1、Nunit 主界面 NUnit 是一個單元測試框架,專門針對于.NET 來寫的. 圖 4-1 NUnit 運行的效果 圖 4-2 NUnit 運行的另外一個效果 從中我們可以非常容易發(fā)現(xiàn),右邊是個狀態(tài)條,圖 4-1 是紅色的,圖 4-2 是綠 色的.為什么會這樣呢?因為如果所有測試案例運行成功,就為綠色,反之如果有 一個不成功,則為紅色,但也有黃色的.左面的工作域內(nèi)則是我們寫的每一個單元 測試.在右邊面板的中間,可以看到測試進(jìn)度條。進(jìn)度條的顏色反映了測試執(zhí)行 精選文庫 - 的狀態(tài): 綠色綠色 描述目前所執(zhí)行的測試都通過 黃色黃色 意味某些測試忽略,但是這里沒有失敗 紅色紅色 表示有失敗 底部的狀態(tài)條表示下面的狀態(tài): 狀態(tài)狀態(tài).說明了現(xiàn)在運行測試的狀態(tài)。當(dāng)所有測試完成時,狀態(tài)變?yōu)?Completed.運行測試中,狀態(tài)是Running: ( 是正在運行的測試名稱)。 TestTest CasesCases 說明加載的程序集中測試案例的總個數(shù)。這也是測試樹里葉 子節(jié)點的個數(shù)。 TestsTests RunRun 已經(jīng)完成的測試個數(shù)。 FailuresFailures 到目前為止,所有測試中失敗的個數(shù). TimeTime 顯示運行測試時間(以秒計) File 主菜單有以下內(nèi)容: NewNew ProjectProject 允許你創(chuàng)建一個新工程。工程是一個測試程序集的集合。 這種機(jī)制讓你組織多個測試程序集,并把他們作為一個組對待。 OpenOpen 加載一個新的測試程序集,或一個以前保存的 NUnit 工程文件。 CloseClose 關(guān)閉現(xiàn)在加載的測試程序集或現(xiàn)在加載的 NUnit 工程。 SaveSave 保存現(xiàn)在的 Nunit 工程到一個文件。如果正工作單個程序集,本菜 單項允許你創(chuàng)建一個新的 NUnit 工程,并把它保存在文件里。 SaveSave AsAs 允許你將現(xiàn)有 NUnit 工程作為一個文件保存。 ReloadReload 強(qiáng)制重載現(xiàn)有測試程序集或 NUnit 工程。NUnit-Gui 自動監(jiān)測現(xiàn) 加載的測試程序集的變化。 2、一些常用屬性 在 NUnit 里,有以下幾種屬性: Test Fixture Test TestFixtureAttribute 本屬性標(biāo)記一個類包含測試,當(dāng)然 setup 和 teardown 方法可有可無.(關(guān)于 精選文庫 - setup 和 teardown 方法在后面介紹) 做為一個測試的類,這個類還有一些限制 必須是 Public,否則 NUnit 看不到它的存在. 它必須有一個缺省的構(gòu)造函數(shù),否則是 NUnit 不會構(gòu)造它. 構(gòu)造函數(shù)應(yīng)該沒有任何副作用,因為 NUnit 在運行時經(jīng)常會構(gòu)造這個類多 次,如果要是構(gòu)造函數(shù)要什么副作用的話,那不是亂了. TestAttribute Test 屬性用來標(biāo)記一個類(已經(jīng)標(biāo)記為 TestFixture)的某個方法是可以測 試的.這個測試方法可以定義為: public void MethodName() 從上面可以看出,這個方法沒有任何參數(shù),其實測試方法必須沒有參數(shù)測試方法必須沒有參數(shù).如果 我們定義方法不對的話,這個方法不會出現(xiàn)在測試方法列表中.也就是說在 NUnit 的界面左邊的工作域內(nèi),看不到這個方法.還有一點就是這個方法不返回還有一點就是這個方法不返回 任何參數(shù)任何參數(shù), ,并且必須為并且必須為 Public.Public. 例如: 1using System; 2using NUnit.Framework; 3 4namespace MyTest.Tests 5 6 TestFixture 7 public class SuccessTests 8 9 Test public void Test1() 10 /* */ 11 12 13 14 在 NUnit 中,用 Assert(斷言)進(jìn)行比較,Assert 是一個類,它包括以 下方法:AreEqual,AreSame,Equals, Fail,Ignore,IsFalse,IsNotNull,具體請參看 NUnit 的文檔。 3、如何在.NET 中應(yīng)用 NUnit 第 1 步.增加一個 NUnit 框架引用 精選文庫 - 在 Microsoft Visual Studio .NET 里創(chuàng)建這個例子時,你需要增加一個 NUnit.framework.dll引用,如下: 在 Solution Explorer 右擊引用,然后選 擇增加引用 NUnit.framework 組件,在 Add Reference 對話框中按 Select 和 OK 按鈕。 第 2 步.為工程加一個類. 為工程加一個 Cmp 類,作為被測代碼。這里是這個例子的代碼。 using System; public class Cmp public static int Largest(int list) int index, max=Int32.MaxValue; if (list.Length = 0) throw new ArgumentException(Empty list); for (index = 0; index max) max = listindex; return max; 第 3 步.建立測試代碼 using NUnit.Framework; TestFixture public class TestLargest Test public void LargestOf3() Assert.AreEqual(9, Cmp.Largest(new int 8,9,7); Test ExpectedException(typeof(ArgumentException) public void Empty() 精選文庫 - Cmp.Largest(new int ); 第 4 步.編譯運行測試. 現(xiàn)在生成 solution。成功編譯后,開始應(yīng)用程序。NUnit-Gui,測試程序集 的結(jié)構(gòu)如圖 4-3 所示: 圖 4-3 測試程序集的測試在 NUnit-Gui 中的視圖 按 Run 按鈕。樹的節(jié)點變?yōu)榫G色,而且測試運行器窗口上的進(jìn)度條變綠, 綠色代表成功通過。 ExpectedException 這里是一個驗證這個假設(shè)的測試.有的時候,我們知道某些操作會有異常出 現(xiàn),例如, 在實例中增加除法,某個操作被 0 除,拋出的異常和.NET 文檔描述的 一樣.參看以下源代碼. 1 Test 2 ExpectedException(typeof(DivideByZeroException) 3public void DivideByZero() 4 5 int zero = 0; 6 int infinity = a/zero; 7 Assert.Fail(Should have gotten an exception); 8 精選文庫 - 除了Test屬性之外, DivideByZero方法有另外一個客戶屬性: ExpectedException. 在這個屬性里,你可以在執(zhí)行過程中捕獲你期望的異常類 型,例如在本例就是 DivideByZeroException.如果這個方法在沒有拋出期望異 常的 情況下完成了,這個測試失敗.使用這個屬性幫助我們寫程序員測試驗證邊 界條件(Boundary Conditions). Ignore 屬性 由于種種原因,有一些測試我們不想運行.當(dāng)然,這些原因可能包括你認(rèn)為這 個測試還沒有完成,這個測試正在重構(gòu)之中,這個測試的需求不是太明確.但你有 不想破壞測試,不然進(jìn)度條可是紅色的喲.怎么辦?使用Ignore屬性.你可以保持 測試,但又不運行它們. namespace ClassLibrary1 using NUnit.Framework; TestFixture public class TestLargest Test public void LargestOf3_1() Assert.AreEqual(9, CMP.Largest(new int 8, 9, 7 ); Test public void LargestOf3_2() Assert.AreEqual(9, CMP.Largest(new int 8, 7, 9 ); Test Ignore ExpectedException(typeof(ArgumentException) public void Empty() CMP.Largest(new int ); Ignore屬性可以附加到一個獨立的測試方法,也可以附加到整個測試類 (TestFixture).如果Ignore屬性附加到TestFixture,所有在 fixture 的測試 都被忽略. 精選文庫 - Category 屬性 對于測試來說,你有的時候需要將之分類,此屬性正好就是用來解決這個 問題的。 你可以選擇你需要運行的測試類目錄,也可以選擇除了這些目錄之外 的測試都可以運行。在命令行環(huán)境里 /include 和/exclude 來實現(xiàn)。在 GUI 環(huán) 境下,就更簡單了,選擇左邊工作域里的 Catagories Tab,選擇 Add 和 Remove 既可以了。 圖 4-4 在一個程序員測試中使用 Ignore 屬性 namespace ClassLibrary1 using NUnit.Framework; TestFixture public class TestLargest Test Category(class2) public void LargestOf3_1() Assert.AreEqual(9, CMP.Largest(new int 8, 9, 7 ); Test Category(class2) public void LargestOf3_2() 精選文庫 - Assert.AreEqual(9, CMP.Largest(new int 8, 7, 9 ); Test Category(class1) ExpectedException(typeof(ArgumentException) public void Empty() CMP.Largest(new int ); NUnit-GUI 界面 圖 4-5 使用 Catagories 屬性的界面 四、VS2010 單元測試 1、創(chuàng)建被測代碼 public class Cmp public static int Largest(int list) if (list.Length = 0) throw new ArgumentException(Empty list); int index, max = Int32.MinValue; for (index = 0; index max) 精選文庫 - max = listindex; return max; 2、創(chuàng)建單元測試 圖4-6 TestMethod public void TestMethod1() int list = 7, 8, 9 ; int expected = 9; int actual; actual = Cmp.Largest(list); Assert.AreEqual(expected, actual); TestMethod ExpectedException(typeof(ArgumentException) public void Empty() 精選文庫 - Cmp.Largest(new int ); 2、 運行測試 通過“調(diào)試”菜單- “開始執(zhí)行”測試代碼,測試結(jié)果顯示如圖所示 圖 4-7 3、 查看代碼覆蓋率 運行測試并查看代碼覆蓋率 (1)在“解決方案資源管理器”的“解決方案項”下,雙擊運行配置文件 Local.testsettings。隨即出現(xiàn) “測試設(shè)置測試設(shè)置”對話框。 (2)單擊 “數(shù)據(jù)和診斷數(shù)據(jù)和診斷”,選中選中“代碼覆蓋率代碼覆蓋率”。 圖 4-8 精選文庫 - (3)雙擊“代碼覆蓋率代碼覆蓋率”,選中被測程序,保存配置文件修改并退出,選中被測程序,保存配置文件修改并退出 圖 4-9 (4)運行測試 (5)“測試”菜單“窗口”,選擇“代碼覆蓋率”,隨即打開 “代代 碼覆蓋率結(jié)果碼覆蓋率結(jié)果”窗口。 “代碼覆蓋率結(jié)果代碼覆蓋率結(jié)果”窗口中的 “層次結(jié)構(gòu)層次結(jié)構(gòu)”列將顯示 一個節(jié)點,該節(jié)點包含最新測試運行中得到的所有代碼覆蓋率數(shù)據(jù)。展開此節(jié) 點,得到如圖所示代碼覆蓋率結(jié)果圖。此表中的列顯示了各個方法、類和整個 命名空間的覆蓋率統(tǒng)計數(shù)據(jù)。 圖 4-10 (6)雙擊選中的方法,將打開 Class1.cs 源代碼文件并定位到 該 方法 所在的位置。在此文件中,可以看到代碼突出顯示效果。用淺藍(lán)色突出顯示的 精選文庫 - 代碼行已在測試運行中執(zhí)行過,用淺褐色突出顯示的代碼行已部分執(zhí)行過,而 用紅褐色突出顯示的代碼行則還沒有執(zhí)行過??梢酝ㄟ^滾動查看此文件中其他 方法的覆蓋率。 圖 4-11 五、Junit 框架的使用 1、Junit 使用方法示例 1 1)把 Junit 引入當(dāng)前項目庫中 新建一個 Java 工程coolJUnit,打開項目 coolJUnit 的屬性頁 - 選 擇“Java Build Path”子選項 - 點選“Add Library”按鈕 - 在彈出的 “Add Library”對話框中選擇 JUnit(圖 3-15) ,并在下一頁中選擇版本 Junit 4 后點擊“Finish”按鈕。這樣便把 JUnit 引入到當(dāng)前項目庫中了。 圖 4-12 為項目添加 JUnit 庫 精選文庫 - 2)新建單元測試代碼目錄 單元測試代碼是不會出現(xiàn)在最終軟件產(chǎn)品中的,所以最好為單元測試代碼 與被測試代碼創(chuàng)建單獨的目錄,并保證測試代碼和被測試代碼使用相同的包名。 這樣既保證了代碼的分離,同時還保證了查找的方便。遵照這條原則,在項目 coolJUnit 根目錄下添加一個新目錄 testsrc,并把它加入到項目源代碼目錄 中。 (見 圖 4-13、4-14) 。 圖 4-13 新建測試代碼目錄 圖 4-14 添加測試代碼目錄 3)在工程中添加類 精選文庫 - 添加類 SampleCaculator,類中有兩個方法,分別計算加減法。編譯代碼。 4)寫單元測試代碼 為類SampleCalculator添加測試用例。在資源管理器 SampleCalculator.java文件處右擊選new選Junit Test Case(見圖4-15), Source foler選擇testsrc目錄,點擊next,選擇要測試的方法,這里把a(bǔ)dd和 subtration方法都選上,最后點finish完成。 圖4-15 新建測試用例 Junit自動生成測試類SampleCalculatorTest,修改其中的代碼。其中 assertEquals斷言,用來測試預(yù)期目標(biāo)和實際結(jié)果是否相等。 assertEquals( Sting message, expected, actual ) package .gzhu; public class SampleCalculator /計算兩整數(shù)之和 public int add(int augend, int addend) return augend + addend; /計算兩整數(shù)之差 public int subtration(int minuend, int subtrahend) return minuend - subtrahend; 精選文庫 - expected是期望值(通常都是硬編碼的),actual是被測試代碼實際產(chǎn)生 的值,message是一個可選的消息,如果提供的話,將會在發(fā)生錯誤時報告這個 消息。 如想用斷言來比較浮點數(shù)(在Java中是類型為float或者double的數(shù)),則 需指定一個額外的誤差參數(shù)。 assertEquals(Sting message, expected, actual, tolerance) 其它斷言參見課本和參考書介紹。測試方法需要按照一定的規(guī)范書寫: 1. 測試方法必須使用注解 org.junit.Test 修飾。 2. 測試方法必須使用 public void 修飾,而且不能帶有任何參數(shù)。 5)查看運行結(jié)果 在測試類上點擊右鍵,在彈出菜單中選擇 Run As JUnit Test。運行結(jié)果 如下圖,綠色的進(jìn)度條提示我們,測試運行通過了。 package .gzhu; import static org.junit.Assert.*; import org.junit.Test; public class SampleCalculatorTest SampleCalculator calculator = new SampleCalculator(); Test public void testAdd() int result = calculator.add(50, 20); assertEquals(70,result); Test public void testSubtration() int result = calculator.subtration(50, 20); assertEquals(30,result); 精選文庫 - 圖4-16 示例1運行結(jié)果 2、Junit 使用方法示例 2 1)在工程中添加類 類 WordDealUtil 中的方法 wordFormat4DB( )實現(xiàn)的功能見文件注釋。 2)寫單元測試代碼 package .gzhu; package .gzhu; import java.util.regex.Matcher; import java.util.regex.Pattern; public class WordDealUtil /* * 將Java對象名稱(每個單詞的頭字母大寫)按照 * 數(shù)據(jù)庫命名的習(xí)慣進(jìn)行格式化 * 格式化后的數(shù)據(jù)為小寫字母,并且使用下劃線分割命名單詞 *例如:employeeInfo 經(jīng)過格式化之后變?yōu)?employee_info * param name Java對象名稱 */ public static String wordFormat4DB(String name) Pattern p = Ppile(A-Z); Matcher m = p.matcher(name); StringBuffer strBuffer = new StringBuffer(); while(m.find() /將當(dāng)前匹配子串替換為指定字符串, /并且將替換后的子串以及其之前到上次匹配子串之后的字符串段添加 到一個StringBuffer對象里 m.appendReplacement(strBuffer, _+m.group(); /將最后一次匹配工作后剩余的字符串添加到一個StringBuffer對象里 return m.appendTail(strBuffer).toString().toLowerCase(); 精選文庫 - 3)進(jìn)一步完善測試用例 單元測試的范圍要全面,如對邊界值、正常值、錯誤值的測試。運用所學(xué) 的測試用例的設(shè)計方法,如:等價類劃分法、邊界值分析法,對測試用例進(jìn)行 進(jìn)一步完善。繼續(xù)補(bǔ)充一些對特殊情況的測試: /測試 null 時的處理情況 Test publicpublic voidvoid wordFormat4DBNull() String target = nullnull; String result = WordDealUtil.wordFormat4DB(target); assertNull(result); /測試空字符串的處理情況 Test publicpublic voidvoid wordFormat4DBEmpty() String target = ; String result = WordDealUtil.wordFormat4DB(target); assertEquals(, result); /測試當(dāng)首字母大寫時的情況 Test publicpublic voidvoid wordFormat4DBegin() String target = EmployeeInfo; String result = WordDealUtil.wordFormat4DB(target); package .gzhu; import static org.junit.Assert.*; import org.junit.Test; public class WordDealUtilTest Test public void testWordFormat4DB() String target = employeeInfo; String result = WordDealUtil.wordFormat4DB(target); assertEquals(employee_info, result); 精選文庫 - assertEquals(employee_info, result); /測試當(dāng)尾字母為大寫時的情況 Test publicpublic voidvoid wordFormat4DBEnd() String target = employeeInfoA; String result = WordDealUtil.wordFormat4DB(target); assertEquals(employee_info_a, result); /測試多個相連字母大寫時的情況 Test publicpublic voidvoid wordFormat4DBTogether() String target = employeeAInfo; String result = WordDealUtil.wordFormat4DB(target); assertEquals(employee_a_info, result); 4)查看分析運行結(jié)果,修改錯誤代碼 再次運行測試。JUnit 運行界面提示我們有兩個測試情況未通過測試(見 圖 6) ,當(dāng)首字母大寫時得到的處理結(jié)果與預(yù)期的有偏差,造成測試失敗 (failure) ;而當(dāng)測試對 null 的處理結(jié)果時,則直接拋出了異常測試錯 誤(error) 。顯然,被測試代碼中并沒有對首字母大寫和 null 這兩種特殊情 況進(jìn)行處理,修改如下: /修改后的方法 wordFormat4DB public static String wordFormat4DB(String name) if(name = null) return null; Pattern p = Ppile(A-Z); Matcher m = p.matcher(name); StringBuffer sb = new StringBuffer(); 精選文庫 - while(m.find() if(m.start() != 0) m.appendReplacement(sb, (_+m.group().toLowerCase(); return m.appendTail(sb).toString().toLowerCase(); 圖 4-17 示例 2 運行結(jié)果 六、Junit-eclipse 代碼覆蓋率工具下載安裝 在 eclipse 主界面菜單欄打開 help 然后點擊 Software updates(不同版本有的 是 Install New Software) 。 精選文庫 - 圖 4-18 點擊 Add 按鈕 圖 4-19 在 Name 一欄中輸入 eclemma,在 Location 一欄中輸入 精選文庫 - 圖 4-20 點擊 OK 按鈕 圖 4-21 在 Name 一欄中選中 Eclemma,點擊 Next 精選文庫 - 圖 4-22 圖 4-23 繼續(xù) Next 精選文庫 - 圖 4-24 選擇我接受,點擊 Finish 圖 4-25 安裝完成后重啟 eclipse 圖 4-26 至此代碼覆蓋率工具安裝完成 在 eclipse 中輸入你要測試的代碼,在 workspace 中右擊需要測試的類在 New 菜 單下點擊 Junit Test Case 精選文庫 - 圖 4-27 點擊 Next 精選文庫 - 圖 4-28 選中你所要測試的類,點擊 Finish 會生成一個測試類*Test.java 精選文庫 - 將測試類中的 fail(“Not yet implemented” ) ;全部刪除 運行測試類 精選文庫 - 圖 4-29 點擊代碼覆蓋率按鈕 圖 4-30 輸入你所要測試的數(shù)據(jù) 圖 4-31 精選文庫 - 圖 4-32 代碼覆蓋率如圖圖 4-32 所示。 第五章第五章 自動化功能測試實踐自動化功能測試實踐 一、實驗?zāi)康?1、熟悉 QTP 自動化功能測試流程 2、能夠利用 QTP 進(jìn)行 B/S 或者 C/S 架構(gòu)程序的自動化功能測試 二、實驗內(nèi)容 功能測試是針對應(yīng)用系統(tǒng)進(jìn)行測試,是基于產(chǎn)品功能說明書,是在已知產(chǎn) 品所應(yīng)具有的功能,從用戶角度來進(jìn)行功能驗證,以確認(rèn)每個功能是否都能正 常使用。本項目主要使用 QuickTest 對 MercuryTours 網(wǎng)站進(jìn)行功能測試,要求 錄制預(yù)訂機(jī)票的完整過程,然后執(zhí)行測試腳本并分析結(jié)果。 三、實驗要求 1、 獨立完成; 2、 提交測試腳本 3、 提交測試用例說明書及缺陷報告。 四、QuickTest 簡介 Mercury QuickTest Professional 是一款先進(jìn)的自動化測試解決方案,用 于創(chuàng)建功能和回歸測試。它自動捕獲、驗證和重放用戶的交互行為。使用 QuickTest Professional 關(guān)鍵字視圖、自動文檔(Auto-documentation)和活 動屏幕(Active Screen) ,無需一行代碼,就可以創(chuàng)建和修改測試腳本,同時 滿足了技術(shù)型和非技術(shù)型用戶的需求,讓各個公司有能力部署更高質(zhì)量的應(yīng)用。 QuickTest 主要應(yīng)用在回歸測試中。QuickTest 針對的是 GUI 應(yīng)用程序,包 精選文庫 - 括傳統(tǒng)的 Windows 應(yīng)用程序,以及現(xiàn)在越來越流行的 Web 應(yīng)用。 1 1、QuickTestQuickTest 窗口窗口 在開始錄制測試腳本之前,先熟悉 QuickTest 的窗口。QuickTest 的主窗 口如圖 5-1 所示。 圖 5-1 QuickTest 的主窗口 QuickTest 的主窗口包含下列的組件: Title bar:顯示目前測試腳本的名稱。 Menu bar:顯示 QuickTest 的菜單。 File toolbar:管理測試腳本常用的工具列。File toolbar 如圖 5-2 所示。 圖 5-2File toolbar Test toolbar:錄制測試腳本常用的工具列。Test toolbar 如圖 5-3 所示。 精選文庫 - 圖 5-3Test toolbar Debug toolbar:對測試腳本除錯常用的工具列。Debug toolbar 如 圖 5-4 所示。 圖 5-4 Debug toolbar Action toolbar:包含常用的功能按鈕,以及一個顯示測試動作 (action)的下拉式清單(list) ,方便你檢視整個測試腳本中的 測試動作。 Test pane:包含 Keyword View 以及 Expert View。 Active Screen pane:包含 Active Screen。 Data Table:當(dāng)你

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論