版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單元測(cè)試軟件測(cè)試技術(shù)主要內(nèi)容
單元測(cè)試概述單元測(cè)試的環(huán)境單元測(cè)試的內(nèi)容單元測(cè)試策略單元測(cè)試方法Junit使用6.1單元測(cè)試概述1.概念單元測(cè)試又稱模塊測(cè)試,是針對(duì)軟件設(shè)計(jì)的最小單位——程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作。單元測(cè)試的內(nèi)容包括單元的內(nèi)部結(jié)構(gòu)、單元的功能和可觀測(cè)的行為。2.測(cè)試對(duì)象:“單元”結(jié)構(gòu)化編程語言單元測(cè)試對(duì)象是函數(shù)或者子過程。面向?qū)ο笳Z言單元測(cè)試對(duì)象是類或者類的方法。如一個(gè)菜單、屏幕顯示界面或?qū)υ捒虻?.目標(biāo)(1)檢查代碼實(shí)現(xiàn)是否符合設(shè)計(jì)測(cè)試依據(jù)是詳細(xì)設(shè)計(jì)描述(2)盡早發(fā)現(xiàn)錯(cuò)誤6.2
單元測(cè)試環(huán)境基本單元本身不是一個(gè)獨(dú)立的程序,自己不能運(yùn)行,要靠其它部分來調(diào)用和驅(qū)動(dòng)。驅(qū)動(dòng)模塊(driver)
樁模塊(stub)驅(qū)動(dòng)模塊(Driver)被測(cè)基本單元的主程序,它接收測(cè)試數(shù)據(jù),并把數(shù)據(jù)傳送給被測(cè)單元,最后輸出實(shí)測(cè)結(jié)果。樁模塊(Stub)用來代替被測(cè)基本單元調(diào)用的其他基本單元。單元測(cè)試環(huán)境單元測(cè)試環(huán)境測(cè)試結(jié)果驅(qū)動(dòng)模塊樁模塊1被測(cè)模塊測(cè)試用例樁模塊3樁模塊2舉例:BACDE待測(cè)試模塊被測(cè)模塊B
驅(qū)動(dòng)模塊(模擬模塊A)樁模塊(模擬模塊E)測(cè)試用例測(cè)試結(jié)果舉例:6.3單元測(cè)試的內(nèi)容單元測(cè)試主要對(duì)模塊的五個(gè)基本特性進(jìn)行評(píng)價(jià)錯(cuò)誤處理模塊接口局部數(shù)據(jù)結(jié)構(gòu)
重要的執(zhí)行路徑邊界條件模塊一、模塊接口測(cè)試對(duì)通過被測(cè)模塊的數(shù)據(jù)流進(jìn)行測(cè)試,檢查進(jìn)出模塊的數(shù)據(jù)是否正確。檢查列表
:調(diào)用本模塊的輸入?yún)?shù)是否正確;本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確;全局量的定義在各模塊中是否一致;
二、模塊局部數(shù)據(jù)結(jié)構(gòu)測(cè)試檢查局部數(shù)據(jù)結(jié)構(gòu)能否保持完整性檢查列表
:不正確或不一致的數(shù)據(jù)類型說明變量沒有初始化變量名拼寫錯(cuò)或書寫錯(cuò)數(shù)組越界非法指針全局?jǐn)?shù)據(jù)對(duì)模塊的影響三、模塊邊界條件測(cè)試檢查臨界數(shù)據(jù)是否正確處理檢查列表:普通合法數(shù)據(jù)是否正確處理普通非法數(shù)據(jù)是否正確處理邊界內(nèi)最接近邊界的(合法)數(shù)據(jù)是否正確處理邊界外最接近邊界的(非法)數(shù)據(jù)是否正確處理四、模塊獨(dú)立執(zhí)行路徑測(cè)試對(duì)模塊中重要的執(zhí)行路徑進(jìn)行測(cè)試。檢查由于計(jì)算錯(cuò)誤、判定錯(cuò)誤、控制流錯(cuò)誤導(dǎo)致的程序錯(cuò)誤。檢查列表:死代碼錯(cuò)誤的計(jì)算優(yōu)先級(jí)精度錯(cuò)誤(比較運(yùn)算錯(cuò)誤、賦值錯(cuò)誤)表達(dá)式的不正確符號(hào)循環(huán)變量的使用錯(cuò)誤五、模塊內(nèi)部錯(cuò)誤處理測(cè)試檢查內(nèi)部錯(cuò)誤處理設(shè)施是否有效檢查列表:是否檢查錯(cuò)誤出現(xiàn)出現(xiàn)錯(cuò)誤,是否進(jìn)行錯(cuò)誤處理
拋出錯(cuò)誤、通知用戶、進(jìn)行記錄錯(cuò)誤處理是否有效6.4
單元測(cè)試策略自頂向下的單元測(cè)試自底向上的單元測(cè)試孤立單元測(cè)試自頂向下的單元測(cè)試方法:先對(duì)最頂層的基本單元進(jìn)行測(cè)試,把所有調(diào)用的單元做成樁模塊。然后再對(duì)第二層的基本單元進(jìn)行測(cè)試,使用上面已測(cè)試的單元做驅(qū)動(dòng)模塊。依此類推直到測(cè)試完所有基本單元。BACDE待測(cè)試模塊自頂向下的單元測(cè)試(續(xù))優(yōu)點(diǎn):在集成測(cè)試前提供早期的集成途徑。在執(zhí)行上和詳細(xì)設(shè)計(jì)的順序一致。不需要開發(fā)驅(qū)動(dòng)模塊。缺點(diǎn):隨著測(cè)試的進(jìn)行,測(cè)試過程越來越復(fù)雜,開發(fā)和維護(hù)成本增加??偨Y(jié):比孤立單元測(cè)試的成本高很多,不是單元測(cè)試的一個(gè)好的選擇。自底向上的單元測(cè)試方法:先對(duì)最底層的基本單元進(jìn)行測(cè)試,模擬調(diào)用該單元的單元做驅(qū)動(dòng)模塊。然后再對(duì)上面一層進(jìn)行測(cè)試,用下面已被測(cè)試過的單元做樁模塊。依此類推,直到測(cè)試完所有單元。BACDE待測(cè)試模塊優(yōu)點(diǎn):在集成測(cè)試前提供系統(tǒng)早期的集成途徑。不需要開發(fā)樁模塊。缺點(diǎn):隨著測(cè)試的進(jìn)行,測(cè)試過程越來越復(fù)雜??偨Y(jié):比較合理的單元測(cè)試策略,但測(cè)試周期較長。自底向上的單元測(cè)試(續(xù))孤立單元測(cè)試方法:不考慮每個(gè)單元與其它單元之間的關(guān)系,為每個(gè)單元設(shè)計(jì)樁模塊或驅(qū)動(dòng)模塊。每個(gè)模塊進(jìn)行獨(dú)立的單元測(cè)試。優(yōu)點(diǎn):簡單、容易操作,可達(dá)到高的結(jié)構(gòu)覆蓋率。缺點(diǎn):不提供一種系統(tǒng)早期的集成途徑??偨Y(jié):好的單元測(cè)試策略。單元測(cè)試的難點(diǎn)到底要測(cè)試到什么程度草草了事/過猶不及/何處是平衡點(diǎn)確定測(cè)試的標(biāo)準(zhǔn)之一:覆蓋率大量的測(cè)試代碼和測(cè)試用例生成、共享、管理、標(biāo)注很麻煩盡量使用測(cè)試工具測(cè)試過程中工具用的最多的地方:單元測(cè)試、后期的回歸測(cè)試、負(fù)載測(cè)試、缺陷管理6.5單元測(cè)試的方法靜態(tài)代碼分析檢查是否符合編程規(guī)范找出代碼中流程設(shè)計(jì)問題代碼的重構(gòu)單元結(jié)構(gòu)測(cè)試代碼執(zhí)行的覆蓋率——白盒測(cè)試方法單元功能測(cè)試程序的功能實(shí)現(xiàn)——黑盒測(cè)試方法Junit簡介Junit特性在Eclipse中使用JUnit4進(jìn)行單元測(cè)試6.6Junit什么是Junit一個(gè)測(cè)試框架由ErichGamma和KentBeck創(chuàng)造是Java的測(cè)試標(biāo)準(zhǔn)開源IBM'sCPLJunit特性對(duì)于測(cè)試結(jié)果的直接斷言測(cè)試組件便于組織管理圖形化或者文本化的執(zhí)行器與IDE的融合JBuilderEclipseNetBeansJDeveloperIntegration如何得到Junit網(wǎng)站:/index.htmEclipse中的JunitEclipse提供了Junit的GUI和運(yùn)行框架也可以在Eclipse之外使用Junit也自帶TestRunner示例:在Eclipse中使用JUnit4進(jìn)行單元測(cè)試第一步:將JUnit4單元測(cè)試包引入項(xiàng)目在該項(xiàng)目上點(diǎn)右鍵,點(diǎn)“屬性”選擇“JavaBuildPath”,選擇“Libraries”標(biāo)簽,點(diǎn)擊“AddLibrary…”按鈕第二步,生成JUnit測(cè)試框架在Eclipse的PackageExplorer中選中Calculate.java,右鍵單擊選擇new->“JUnitTestCase”第二步,生成JUnit測(cè)試框架Eclipse自動(dòng)生成的框架Eclipse導(dǎo)入相應(yīng)的包第三步:編寫測(cè)試用例第四步:Eclipse中運(yùn)行測(cè)試類右擊測(cè)試類->RunAs->JUnitTest第五步:測(cè)試結(jié)果:CalculatorTest失敗第三步:編寫測(cè)試用例1、創(chuàng)建一個(gè)待測(cè)試的對(duì)象要測(cè)試哪個(gè)類,首先就要?jiǎng)?chuàng)建一個(gè)該類的對(duì)象。本例為了測(cè)試Calculator類,必須創(chuàng)建一個(gè)calculator對(duì)象。如何編寫測(cè)試用例2、測(cè)試方法的聲明在測(cè)試類中,并不是每一個(gè)方法都是用于測(cè)試的,必須使用“標(biāo)注”來明確表明哪些是測(cè)試方法。@Test、@Ignore、@Before、@After@Test標(biāo)注使用@Test標(biāo)注,以表明這是一個(gè)測(cè)試方法。方法名字可以隨便取,但規(guī)范寫法是test+方法名,方法名第一個(gè)子母大寫。方法的返回值必須為void,方法不能有任何參數(shù)。如果違反這些規(guī)定,運(yùn)行時(shí)會(huì)拋出一個(gè)異常assertEquals(5,calculator.getResult());是用來判斷期待結(jié)果和實(shí)際結(jié)果是否相等JUnit自動(dòng)進(jìn)行測(cè)試并把測(cè)試結(jié)果反饋給用戶3、忽略測(cè)試某些尚未完成的方法加上@Ignore標(biāo)注的含義是“某些方法尚未完成,暫不參與此次測(cè)試”。4、Fixture“固定代碼段”@Before,@After是每個(gè)方法測(cè)試時(shí)候必然被調(diào)用的代碼保證每一個(gè)測(cè)試都是獨(dú)立的,相互之間沒有任何耦合度@BeforeClass或@AfterClass只在測(cè)試用例初始化時(shí)執(zhí)行@BeforeClass方法,當(dāng)所有測(cè)試執(zhí)行完畢之后,執(zhí)行@AfterClass進(jìn)行收尾工作用于測(cè)試讀取文件等耗時(shí)的方法。該方法必須是public和static的執(zhí)行過程測(cè)試開始->setUp->testXXXX->tearDown->測(cè)試結(jié)束5、限時(shí)測(cè)試對(duì)于那些邏輯很復(fù)雜,循環(huán)嵌套比較深的程序采用限時(shí)測(cè)試函數(shù)設(shè)定一個(gè)執(zhí)行時(shí)間,超過了這個(gè)時(shí)間,他們就會(huì)被系統(tǒng)強(qiáng)行終止,并且系統(tǒng)還匯報(bào)該函數(shù)結(jié)束的原因是因?yàn)槌瑫r(shí)6、測(cè)試異常expected屬性用來測(cè)試函數(shù)應(yīng)該拋出的異常7、Runner(運(yùn)行器)JUnit中有一個(gè)默認(rèn)Runner,如果沒有指定,那么系統(tǒng)自動(dòng)使用默認(rèn)Runner來運(yùn)行代碼@RunWith是用來修飾類,可以指定需要的Runner8、參數(shù)化測(cè)試可以將所有參數(shù)集中起來一起測(cè)試。步驟:1:為測(cè)試專門生成一個(gè)新的類2:定義一個(gè)待測(cè)試的類,并且定義兩個(gè)變量,一個(gè)用于存放參數(shù),一個(gè)用于存放期待的結(jié)果3:定義測(cè)試數(shù)據(jù)的集合,用@Parameters標(biāo)注進(jìn)行修飾4:創(chuàng)建構(gòu)造函數(shù)對(duì)先前定義的兩個(gè)參數(shù)進(jìn)行初始化方法必須由Parameters注解修飾方法必須為publicstatic的方法必須返回Collection類型方法沒有參數(shù)二維數(shù)組的類型必須是Object類型的二維數(shù)組中的數(shù)據(jù)是為測(cè)試Calculator中的square()方法而準(zhǔn)備的二維數(shù)組中的每一個(gè)元素中的數(shù)據(jù)都對(duì)應(yīng)著構(gòu)造方法SquareTest()中的參數(shù)的位置測(cè)試的執(zhí)行流程首先執(zhí)行data()方法,將準(zhǔn)備好的數(shù)據(jù)作為一個(gè)Collection返回然后根據(jù)準(zhǔn)備好的數(shù)據(jù)調(diào)用構(gòu)造方法。Collection中有幾個(gè)元素,該構(gòu)造方法就會(huì)被調(diào)用幾次。例中被調(diào)用3次,會(huì)產(chǎn)生3個(gè)該測(cè)試類的對(duì)象Collection中的數(shù)據(jù)是由JUnit傳給SquareTest
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 愉快的國慶假期話題作文范文
- 銀行賬戶管理實(shí)施細(xì)則
- 青鳥讀書心得萬能10篇
- 物流發(fā)貨回執(zhí)單
- 八年級(jí)歷史下冊(cè) 第七學(xué)習(xí)主題 社會(huì)生活 第20課 城鄉(xiāng)人民生存狀態(tài)的滄桑巨變教學(xué)思路2 川教版
- 2000個(gè)論壇華東網(wǎng)絡(luò)營銷基地(已經(jīng)詳細(xì)分好類)
- 轉(zhuǎn)正自我工作總結(jié)(15篇)
- 黑暗效應(yīng)-詳解
- 9《聲音的產(chǎn)生》教學(xué)實(shí)錄-2023-2024學(xué)年科學(xué)三年級(jí)下冊(cè)蘇教版
- 2024年五年級(jí)數(shù)學(xué)上冊(cè) 1 小數(shù)乘法第2課時(shí) 小數(shù)乘整數(shù)(2)教學(xué)實(shí)錄 新人教版
- 2025屆全國名校大聯(lián)考物理高二第一學(xué)期期末聯(lián)考試題含解析
- 減肥課件模板教學(xué)課件
- 2024年部門年終總結(jié)
- 公司招商部工作流程及管理制度
- 漢語閱讀教程第一冊(cè)第十二課
- 江蘇省南京市六校2024-2025學(xué)年高一上學(xué)期期中聯(lián)合調(diào)研 化學(xué)試題
- 2024年時(shí)事政治試題(帶答案)
- 2024年山東省濟(jì)南市中考道德與法治試題卷(含答案解析)
- 高一數(shù)學(xué)必修一知識(shí)點(diǎn)和公式
- 系統(tǒng)商用密碼應(yīng)用方案v5-2024(新模版)
- 2024年秋國家開放大學(xué)《形勢(shì)與政策》大作業(yè):建設(shè)中華民族現(xiàn)代文明的路徑是什么?中華民族現(xiàn)代文明有哪些鮮明特質(zhì)?附答案【供參考】
評(píng)論
0/150
提交評(píng)論