軟件測試教學PPT課件
軟件測試教學PPT課件,軟件測試,教學PPT課件,軟件,測試,教學,PPT,課件
國家教學資源庫建設項目國家教學資源庫建設項目單元4 單元測試 自動售貨機的測試 主講人主講人 查英華查英華南京工業(yè)職業(yè)技術學院軟件測試軟件測試學習導航學習導航2南京工業(yè)職業(yè)技術學院軟件測試軟件測試引例描述引例描述v自動售貨機是一種能根據(jù)投入的錢幣自動付貨的機器。v本項目使用的是一個模擬飲料售貨機的Java實例該實例接收輸入的錢幣,通過判斷投入的是5角或1元的硬幣,選擇橙汁或牛奶,則相應的飲料就會送出來。若售貨機沒有零錢找,則顯示零錢找完,這是再投入1元硬幣并選擇飲料后,飲料不送出來而且1元硬幣也退出。若有零錢找,在送出飲料的同時退還5角硬幣。3南京工業(yè)職業(yè)技術學院軟件測試軟件測試教學目標教學目標能力目標知識目標u理解單元測試的概念uJUnit基本概念uJUnit基本框架素質目標p團隊協(xié)作精神p分析問題的能力p溝通能力u會在Eclipse安裝JUnitu會用JUnit編寫簡單的測試用例u會用測試套件組合測試用例4南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務分解任務分解使用JUnit測試簡單JAVA程序任務一任務一任務二任務二使用JUnit測試自動售貨機程序5南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務執(zhí)行的步驟任務執(zhí)行的步驟612345知知知知識識識識準準準準備備備備任任任任務務務務實實實實施施施施任任任任務務務務拓拓拓拓展展展展項項項項目目目目實實實實訓訓訓訓任任任任務務務務陳陳陳陳述述述述南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務一任務一 使用使用JUnit測試簡單測試簡單Java程序程序v任務簡介對一個簡單計算器的加、減、乘、除的功能進行單元測試v任務目標了解單元測試的基本概念了解單元測試的方法及工具JUnit的安裝使用Eclipse和JUnit進行簡單測試用例編寫的過程7南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務一任務一 使用使用JUnit測試簡單測試簡單Java程序程序v任務分析單元測試是軟件測試的基礎,單元測試的效果會直接影響到軟件的后期測試JUnit是Java單元測試框架的事實標準8南京工業(yè)職業(yè)技術學院軟件測試軟件測試知識準備知識準備v單元測試的基本概念什么是單元測試為什么要進行單元測試如何進行單元測試vJUnit的基本應用JUnit的簡介JUnit的下載和安裝JUnit的簡單應用9南京工業(yè)職業(yè)技術學院軟件測試軟件測試單元測試的基本概念單元測試的基本概念對一個獨立工作單元的測試,java中通常是對一個類或方法的測試 目的目的檢查方法的行為是否滿足約定 功能功能查找代碼最簡單的錯誤,幫助確定系統(tǒng)需求 定義定義10南京工業(yè)職業(yè)技術學院軟件測試軟件測試單元測試的必要性單元測試的必要性11南京工業(yè)職業(yè)技術學院軟件測試軟件測試單元測試代碼的原則單元測試代碼的原則被測代碼宜于測試1.用接口分離外部依賴(依賴的接口以參數(shù)形式傳入)2.功能獨立、簡潔,減少內部依賴 3.根據(jù)自動化單元測試工具的特點 單元測試代碼測試代碼易于測試1.足夠簡單,保證自身的正確性,盡量少繼承、重載 2.命名清晰、準確,減少歧義3.保存成果,重復利用 12南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit簡介簡介v一個自動測試的框架v編寫者:Erich Gamma 和 Kent BeckErich Gamma:設計模式的作者之一Kent Beck:極限編程的創(chuàng)始人v開放源碼v支持語音:Java、C+、Perl、Python.v支持IDE:Eclipse、NetBeans.v網(wǎng)站:www.junit.org13南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit簡介簡介v測試階段劃分:單元測試、集成測試、系統(tǒng)測試vJUnit適用于Java開發(fā)人員在單元測試階段,進行單個方法實現(xiàn)功能或者類本身的測試vJUnit需要測試者自己編程,編寫的測試代碼必須滿足JUnit框架的要求v一般認為,JUnit最適合XP(Extreme Programming:極限編程)開發(fā)14南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit簡介簡介vJUnit的特征使用斷言方法判斷期望值和實際值差異,返回Boolean值;測試驅動設備使用共同的初始化變量或者實例;測試包結構便于組織和集成運行;支持圖形交互模式和文本交互模式。15南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit簡介簡介vJUnit的好處JUnit是公開源代碼的,可以進行二次開發(fā),方便地對JUnit進行擴展??梢允箿y試代碼與產品代碼分開。針對某一個類的測試代碼通過較少的改動便可以應用于另一個類的測試。JUnit自動檢測測試結果并且提供立即的反饋。易于集成到測試人員的構建過程中,JUnit和Ant的結合可以實施增量開發(fā)。JUnit的測試包結構便于組織和集成運行。16南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit安裝安裝v下載安裝程序:www.junit.org并解包v增加junit.jar到CLASSPATH。例如:set classpath=.;junit3.8.1junit.jarv測試安裝成功與否?v勿將JUnit.jar 和JDK安裝到同一個目錄,否則可能找不到被測試類 17南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit的簡單應用的簡單應用v被測試案例:最簡單計算器18南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit的簡單應用的簡單應用v一個簡單計算器的測試代碼如下:19南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit的簡單應用的簡單應用v代碼解釋第1行,定義測試類所在的包。第2行,引入必須的jar包。第4行,定義一個測試類CalculatorTest。第5行,定義一個測試方法,每個測試方法都是一個函數(shù),都以test開頭。第6行,遵循對象測試的風格,創(chuàng)建對象。第7行,測試Calculator的add的方法。第8行,比較調用add方法之后的返回值是否等于5。20南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit測試用例的基本結構測試用例的基本結構vJUnit一個測試用例對應一個測試方法,即一個函數(shù)。要創(chuàng)建測試,必須編寫對應的方法函數(shù)。vJUnit 3.x的測試方法必須以test開頭。v每個測試方法要做一些斷言,斷言主要用于比較實際結果與期望結果是否相符。21南京工業(yè)職業(yè)技術學院軟件測試軟件測試運行運行JUnit用例用例v文本方式java-cp junit.jar;.junit.textui.TestRunner edu.niit.junit.demo.CalculatorTest22南京工業(yè)職業(yè)技術學院軟件測試軟件測試運行運行JUnit用例用例vSwing方式java-cp junit.jar;.junit.swingui.TestRunner edu.niit.junit.demo.CalculatorTest23南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務實施任務實施v實現(xiàn)JUnit的下載與安裝v實現(xiàn)Eclipse編寫JUnit單元測試Eclipse引入JUnitJUnit測試用例編寫新建單元測試代碼目錄分別為這兩個功能編寫一個單元測試用例編寫測試用例查看運行結果24南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務小結任務小結v單元測試是針對編碼的、最小單位測試。v單元測試由開發(fā)人員編寫,主要目的是驗證開發(fā)人員的編碼是否符合預期值的結果,而不是證明編碼是否正確。vJUnit是xUnit系列單元測試框架的鼻祖,也是應用最廣泛的Java單元測試框架。v使用JUnit測試的步驟為:編寫測試類并繼承TestCase類;編寫測試方法testXxxx();運行TestRunner進行測試。vEclipse開發(fā)工具集成了JUnit測試框架,可以幫助開發(fā)人員更快捷地編寫和運行測試用例。25南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務拓展任務拓展v編寫數(shù)組求最大值和最小值的代碼的單元測試。v要求:定義一個ArrayUtil類定義兩個方法:max(int list)和min(int list)方法,求list中的最大值和最小值使用Eclipse和JUnit編寫單元測試用例,運行測試用例,檢查用例編寫的正確性。26南京工業(yè)職業(yè)技術學院軟件測試軟件測試項目實訓項目實訓v實訓目的理解單元測試的基本概念理解手工編寫單元測試的基本方法;掌握使用Eclipse進行單元測試的過程編寫簡單的基于 JUnit的單元測試用例;v實訓內容根據(jù)所學內容,編寫判斷日期字符串是否合法的應用的測試用例并運行之。27南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務二任務二任務二任務二 使用使用使用使用JUnitJUnit測試測試自動售貨機程序自動售貨機程序自動售貨機程序自動售貨機程序v任務簡介自動售貨機是一種能根據(jù)投入的錢幣自動付貨的機器。本任務使用的是一個模擬飲料售貨機的Java實例,該實例接收輸入的錢幣,通過判斷投入的是5角或1元的硬幣,選擇橙汁或牛奶,則相應的飲料就會送出來。若售貨機沒有零錢找,則顯示零錢找完,這是再投入1元硬幣并選擇飲料后,飲料不送出來而且1元硬幣也退出。若有零錢找,在送出飲料的同時退還5角硬幣。28南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務二任務二 使用使用JUnit測試自動售貨機程序測試自動售貨機程序v任務陳述利用經(jīng)典的自動售貨機案例,完成JUnit 3和JUnit 4的測試用例的編寫JUnit的測試框架和核心類:TestCase、TestSuite、TestRunner和Assert,以及它們如何共同工作,完成測試用例的編寫和運行。通過對JUnit 3的測試用例的改造,充分理解JUnit 4的注解的應用。29南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務二任務二 使用使用JUnit測試自動售貨機程序測試自動售貨機程序v任務分析深入理解JUnit的測試框架結構,及其它的核心類庫。在理解JUnit 3的框架結構的基礎上,通過復習Java 5的注解特性,進一步理解JUnit 4利用注解給編寫單元測試帶來的便捷。學習JUnit 3和JUnit 4的測試框架需要以Java的對象、接口、注解等相關知識為基礎。30南京工業(yè)職業(yè)技術學院軟件測試軟件測試知識準備知識準備vJUnit核心類與接口JUnit的核心類:TestCase、TestSuite、TestRunnerJUnit的其他接口TestCasevAssert斷言vJUnit測試套件v探究JUnit 4常用注解測試套件參數(shù)化測試31南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit測試框架測試框架32南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit核心類及接口核心類及接口v其中:斜體的為接口類/接口責 任Assert當條件成立時assert方法保持沉默,不成立拋出異常TestResultTestResult包含了測試中發(fā)生的所有錯誤或失敗Test可以運行Test并把結果傳遞給TestResultTestListener測試中若產生事件(開始、結束、錯誤、失敗)會通知TestListenerTestCase定義了可以用于運行多項測試的環(huán)境(或者說固定設備)TestSuite運行一組test case(它們可能包含其他test suite),它是Test的組合BaseTestRunnerTest runner是用來啟動測試的用戶界面,BaseTestRunner是所有test runner的超類33南京工業(yè)職業(yè)技術學院軟件測試軟件測試探索探索JUnit核心核心TestSuiteTestCaseTestRunnerTestResult34南京工業(yè)職業(yè)技術學院軟件測試軟件測試探索探索JUnit核心核心vTestCase(測試用例)擴展了Junit的TestCase類,它以testXXX()方法的形式包含一個或多個測試。vTestSuite(測試集合)一個TestSuite把多組相關測試歸入一組測試中的便捷方式。vTestRunner(測試運行器)執(zhí)行test Suite的程序。v當需要多個TestCase時,可以創(chuàng)建更多的TestCase對象。v當需要一次執(zhí)行多個TestCase對象時,可以創(chuàng)建TestSuite對象v為了執(zhí)行TestSuite對象,需要使用TestRunner對象。35南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit的其它接口的其它接口vTest接口Test接口是 TestCase、TestSuite 的父接口,用于運行測試和收集測試結果。該接口使用了composite設計模式。它的run(TestResult result)用來運行 Test,并且將結果保存到 TestResult。vTestResult類TestResult類收集TestCase的執(zhí)行結果,報告測試結果。若測試成功,那么TestResult代碼是干凈的,進度條就是綠色顯示,否則,TestResult就會報告失敗,并輸出失敗測試的數(shù)目和它的stack trace。vTestListener接口TestRunner實現(xiàn)了TestListener。雖然TestListener接口是JUnit框架的重要部分,但是你編寫自己的測試時不必實現(xiàn)這個接口。36南京工業(yè)職業(yè)技術學院軟件測試軟件測試TestCasev把具有公共行為的測試歸入一組v擴展了JUnit的TestCase類的類。它以testXXX方法的形式包含一個或多個測試v典型的TestCase包含兩個主要部件fixture單元測試vTestCase生命周期37南京工業(yè)職業(yè)技術學院軟件測試軟件測試TestCasevFixture管理資源,復用配置代碼運行一個或多個測試所需的公用資源或者數(shù)據(jù)集合TestCase通過setUp和tearDown方法來創(chuàng)建和銷毀fixture 典型應用數(shù)據(jù)庫連接,生成輸入文件v創(chuàng)建單元測試方法繼承自TestCase的一組assert方法封裝了最常見的測試任務,這些assert方法可以極大地簡化單元測試的編寫38南京工業(yè)職業(yè)技術學院軟件測試軟件測試TestCasevTestCase除了Assert之外成員方法方法描述countTestCase計算run()所執(zhí)行的TestCase的數(shù)目createResult創(chuàng)建默認的TestResult對象getName獲得TestCase的名字run運行TestCase并收集TestResult中的結果runBare運行測試序列(比如自動發(fā)現(xiàn)test方法)runTest重載以運行測試并斷言其狀態(tài)setName設置TestCase的名字setUp初始化資源配置tearDown清除資源配置toString返回TestCase的字符串表示39南京工業(yè)職業(yè)技術學院軟件測試軟件測試Assert斷言斷言vAssert是JUnit框架的一個靜態(tài)類,包含一組靜態(tài)的測試方法,用于期望值和實際值比較是否正確。方 法描 述assertTrue斷言條件為真。若不滿足,方法拋出AssertionFailedError異常。assertFalse斷言條件為假。若不滿足,方法拋出AssertionFailedError異常。assertEquals斷言兩個對象相等。若不滿足,方法拋出AssertionFailedError異常。assertNotNull斷言對象不為null。若不滿足,方法拋出AssertionFailedError異常。assertNull斷言對象為null。若不滿足,方法拋出AssertionFailedError異常。assertSame斷言兩個引用指向同一個對象。若不滿足,方法拋出AssertionFailedError異常。assertNotSame斷言兩個引用指向不同的對象。若不滿足,方法拋出AssertionFailedError異常。fail強制測試失敗,并給出指定信息。40南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit和異常和異常v對測試而言,下面兩種異常我們可能會感興趣:從測試代碼拋出的可預測異常。由于某個某塊(或代碼)發(fā)生嚴重錯誤,而拋出的不可預測異常。v如有一個名為sortMyList()的方法,如果傳入?yún)?shù)是一個nulllist,那么我們希望該方法拋出一個異常。在這種情況下,我們就需要顯式地測試這一點。assertTure(true)表示我預期控制流程會達到這個地方。JUnit可以捕獲任何異常,并且把它報告為一個錯誤。JUnit不只是讓一個斷言失敗,而是能夠跟蹤整個堆棧,并且報告bug的堆棧調用順序,當你需要查找一個失敗測試的原因時,這將非常有用。41南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit和異常和異常public class TestException extends TestCase public void testForException()trysortMyList(null);fail(需要拋出一個異常!);catch(RuntimeException e)assertTrue(true);fail()的使用場合:編寫每個測試用例時,以失敗作為開始,提醒開發(fā)人員該單元測試未實現(xiàn);測試例外是否發(fā)生。42南京工業(yè)職業(yè)技術學院軟件測試軟件測試TestSuite套件套件vtest suite是把多個相關測試歸入一組便捷方式v若你沒有提供自己的TestSuite,test runner會自動創(chuàng)建一個 v缺省的TestSuite 不能滿足時,可能會想組合多個suite,把它們作為主suite的一部分,這些suite來自幾個不同的packagev下面是一個典型的TestAll類:43南京工業(yè)職業(yè)技術學院軟件測試軟件測試TestSuite處理測試用例的規(guī)則處理測試用例的規(guī)則v測試用例必須是公有類(public);v測試用例必須繼承于TestCase類;v測試用例的測試方法必須是公有的(public);v測試用例的測試方法必須被聲明為void;v測試用例的測試方法的前置名詞必須是test;v測試用例的測試方法無任何傳遞參數(shù)。44南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit單元測試的步驟單元測試的步驟1.重載setUp(),封裝測試環(huán)境初始化及測試數(shù)據(jù)準備2.設計測試方法,以testXXX命名3.在測試方法中使用斷言方法,如assertEquals(),assertTrue()等4.設計測試套件,或使用缺省的測試套件,調用TestRunner執(zhí)行測試腳本,生成測試結果5.重載tearDown()析構測試環(huán)境,執(zhí)行收尾動作45南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit 4.xvJunit 4.x利用java 5的annotation特性優(yōu)勢,使得測試比起3.x版本更加方便簡單。JUnit 3.xJUnit 4.x必須引入類junit.framework.TestCase必須引入org.junit.Test;org.junit.Assert.*;(static import)必須繼承類TestCase不需要測試方法必須以test開頭不需要,但必須加上Test注解通過assertXxxx()方法判斷結果46南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit 4.x 常用注解常用注解JUnit 4.xJUnit 3.x功能說明Beforevoid setUp()初始化方法Aftervoid tearDowm()釋放資源Testvoid testXxxx()聲明測試方法BeforeClass無在所有測試方法執(zhí)行前執(zhí)行一次AfterClass無在所有測試方法執(zhí)行結束后執(zhí)行一次RunWith無指定測試運行器SuiteClassesstatic Test suite()套件運行器Ignore無忽略測試方法Parameter無參數(shù)化測試vJUnit 4.x的注解與JUnit 3.x的功能比較47南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit 4.xvJUnit 4.x的單元測試用例的執(zhí)行順序為:BeforeClass Before Test After AfterClass;v每一個測試方法的調用順序為:Before Test After。48南京工業(yè)職業(yè)技術學院軟件測試軟件測試測試運行器和測試套件測試運行器和測試套件vJUnit 4.x中所有的測試方法都由它負責執(zhí)行。v使用注解RunWith(XXX.class)v測試套件的寫法創(chuàng)建一個空類作為測試套件的入口使用注解RunWith和SuiteClasses修飾這個空類將org.junit.runners.Suite作為參數(shù)傳入注解RunWith,提示Junit為此類使用套件運行器執(zhí)行將需要放入此測試套件的測試類組作為注解SuiteClasses的參數(shù)。保證這個空類使用public修飾,而且存在公開的不帶有任何參數(shù)的構造函數(shù)。49南京工業(yè)職業(yè)技術學院軟件測試軟件測試Runwith和和Suite示例示例import org.junit.runner.RunWith;import org.junit.runners.Suite;import org.junit.runners.Suite.SuiteClasses;/*使用Suite運行器裝載測試集*指定若干個測試用例,組成一個測試集*測試集的執(zhí)行相當于一起執(zhí)行被指定的測試用例*/RunWith(Suite.class)SuiteClasses(CalculatorTest.class,SaleMachineTest.class)public class AllTests /函數(shù)體是空的 50南京工業(yè)職業(yè)技術學院軟件測試軟件測試參數(shù)化測試參數(shù)化測試 v例如:下面的功能代碼(格式化字符串):public class WordDealUtil 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();51南京工業(yè)職業(yè)技術學院軟件測試軟件測試參數(shù)化測試參數(shù)化測試v沒有使用參數(shù)化的測試用例代碼:public class WordDealUtilTest Test public void wordFormat4DBNull()/測試 null 時的處理情況 assertNull(WordDealUtil.wordFormat4DB(null);Test public void wordFormat4DBEmpty()/測試空字符串的處理情況 assertEquals(,WordDealUtil.wordFormat4DB();52南京工業(yè)職業(yè)技術學院軟件測試軟件測試參數(shù)化測試參數(shù)化測試v使用參數(shù)化的測試用例代碼:SuppressWarnings(unchecked)RunWith(Parameterized.class)public class WordDealUtilTestWithParam private String expected;private String target;Parameters public static Collection words()return Arrays.asList(new Object employee_info,employeeInfo,null,null,employee_info,EmployeeInfo,employee_info_a,employeeInfoA,employee_a_info,employeeAInfo);53南京工業(yè)職業(yè)技術學院軟件測試軟件測試參數(shù)化測試參數(shù)化測試/*參數(shù)化測試必須的構造函數(shù) *param expected 期望的測試結果,對應參數(shù)集中的第一個參數(shù) *param target 測試數(shù)據(jù),對應參數(shù)集中的第二個參數(shù) */public WordDealUtilTestWithParam(String expected,String target)this.expected=expected;this.target=target;/*測試將 Java 對象名稱到數(shù)據(jù)庫名稱的轉換 */Test public void wordFormat4DB()Assert.assertEquals(expected,WordDealUtil.wordFormat4DB(target);54南京工業(yè)職業(yè)技術學院軟件測試軟件測試參數(shù)化測試參數(shù)化測試v在靜態(tài)方法 words 中,使用二維數(shù)組來構建測試所需要的參數(shù)列表,其中每個數(shù)組中的元素的放置順序并沒有什么要求,只要和構造函數(shù)中的順序保持一致就可以。v現(xiàn)在如果再增加一種測試情況,只需要在靜態(tài)方法 words 中添加相應的數(shù)組即可,不再需要復制粘貼出一個新的方法出來了。v這種參數(shù)化的測試用例寫法,很適用于一些共用的功能方法。55南京工業(yè)職業(yè)技術學院軟件測試軟件測試注意的問題注意的問題vJUnit將測試失敗的情況分為兩種:failure和error。failure一般由單元測試使用的斷言方法判斷失敗引起,它表示在測試點發(fā)現(xiàn)了問題;error則是由代碼異常引起,這是測試目的之外的發(fā)現(xiàn),它可能產生于測試代碼本身的錯誤(測試代碼也是代碼,同樣無法保證完全沒有缺陷),也可能是被測試代碼中的一個隱藏的bug。藍色代表failure,紅色代表error。error如除數(shù)為0。v靜態(tài)包含(static),是JDK5中新增添的一個功能。使用靜態(tài)包含后,前面的類名就能省略,使用起來更加方便。import static org.junit.Assert.*;56南京工業(yè)職業(yè)技術學院軟件測試軟件測試注意的問題注意的問題v每個測試類只能有一個方法被標注為 BeforeClass 或 AfterClass,該方法必須是public和static的。vBefore和After標注的方法必須是public void。v對于方法的聲明也有如下要求:名字可以隨便取,沒有任何限制返回值必須為 public void,而且不能有任何參數(shù)。如果違反這些規(guī)定,會在運行時拋出一個異常。57南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit 最佳實踐(最佳實踐(1)1獨立:一個測試類,只測試一個對象;一個testxxx,只測試這個對象的一個方法,方便定位出錯位置2易讀:給測試方法一個合適的名字,如果沒有better choice,測試類命名為XXXTest,測試方法testxxx3完備:測試所有可能引發(fā)錯誤的地方,對于只含有getter/setter的類,如果是由IDE產生的,才可不測58南京工業(yè)職業(yè)技術學院軟件測試軟件測試JUnit 最佳實踐(最佳實踐(2)4絕緣:在setUp和tearDown中的代碼不應該是與測試方法相關的,而應該是全局相關的 5隔離:與被測代碼放相同的包不同的目錄。方便訪問被測試類的protected變量/方法,方便被測代碼管理與發(fā)布6小心:junit.jar最好不要放到/jre/lib/ext目錄59南京工業(yè)職業(yè)技術學院軟件測試軟件測試 單元測試并不解決所有問題單元測試并不解決所有問題驗收測試性能測試集成測試聯(lián)合測試單元測試測試編碼不息,測試不止60南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務實施任務實施v實現(xiàn)自動售貨機的JUnit 3.8測試用例編寫案例分析編碼實現(xiàn)用例分析測試代碼測試結果v實現(xiàn)自動售貨機的JUnit 4.x的測試用例編寫v實現(xiàn)測試套件管理測試用例61南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務小結任務小結vJUnit 3.x的測試框架的核心類包括:TestCase、TestSuite、TestRunner和Assert,其中TestCase用于創(chuàng)建單元測試方法,TestSuite用于組裝所有的測試用例,TestRunner是執(zhí)行test suite的運行器,Assert斷言執(zhí)行測試任務。vJUnit 4.x充分利用Java 5的注解特性,使單元測試更為簡單和易于擴展。常用的注解包括:Test、Before、After、RunWith、SuiteClasses。62南京工業(yè)職業(yè)技術學院軟件測試軟件測試任務拓展任務拓展v編寫堆棧類的入棧、出棧、刪除等方法的測試用例。v要求:定義一個MyStackImpl類實現(xiàn)MyStack接口編寫pop()、push()、delete()、isEmpty()和top()方法使用JUnit編寫單元測試用例運行測試用例,檢查用例編寫的正確性。63南京工業(yè)職業(yè)技術學院軟件測試軟件測試項目實訓項目實訓v實訓目的理解編寫單元測試的基本方法;掌握使用Eclipse進行單元測試的過程掌握JUnit 的核心類、JUnit 生命周期。v實訓內容根據(jù)所學內容,編寫堆棧類的入棧、出棧、刪除等方法的測試用例并運行之。64南京工業(yè)職業(yè)技術學院軟件測試軟件測試單元小結單元小結v單元測試是針對編碼的、最小單位測試,盡管它只是軟件測試的一種,卻是所有測試中非常重要的一種。單元測試由開發(fā)人員編寫,主要目的是驗證開發(fā)人員的編碼是否符合預期值的結果,而不是證明編碼是否正確。vJUnit是xUnit系列單元測試框架的鼻祖,也是應用最廣泛的Java單元測試框架,使用Eclipse開發(fā)工具可以幫助開發(fā)人員更快捷地編寫和運行測試用例。v測試用例的設計和JUnit 4的使用是本單元的重點和難點,課后應多加練寫。65南京工業(yè)職業(yè)技術學院軟件測試軟件測試Q&A66國家教學資源庫建設項目國家教學資源庫建設項目再再 見見
收藏
編號:66077335
類型:共享資源
大?。?span id="zzxotzn" class="font-tahoma">13.30MB
格式:ZIP
上傳時間:2022-03-26
25
積分
- 關 鍵 詞:
-
軟件測試
教學PPT課件
軟件
測試
教學
PPT
課件
- 資源描述:
-
軟件測試教學PPT課件,軟件測試,教學PPT課件,軟件,測試,教學,PPT,課件
展開閱讀全文
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
裝配圖網(wǎng)所有資源均是用戶自行上傳分享,僅供網(wǎng)友學習交流,未經(jīng)上傳用戶書面授權,請勿作他用。