




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、軟件質(zhì)量保證與測(cè)試實(shí)驗(yàn)指導(dǎo)計(jì)算機(jī)工程學(xué)院測(cè)試環(huán)境配置1. setting Junit(1) start EclipseSelect windows-preferences-java-build path class path variables(2) click new, the figure of new variable entry is shown.(3) name JUNIT_LIBselect file-選擇JUnit 插件所對(duì)應(yīng)的JAR文件所在地,在Eclipse的安裝目錄的plugins目錄中2. JUNIT的組成框架其中,junit.framework 和junit.runne
2、r是兩個(gè)核心包。junit.framework 負(fù)責(zé)整個(gè)測(cè)試對(duì)象的框架junit.runner 負(fù)責(zé)測(cè)試驅(qū)動(dòng)Junit的框架又可分為:A、被測(cè)試的對(duì)象。B、對(duì)測(cè)試目標(biāo)進(jìn)行測(cè)試的方法與過程集合,可稱為測(cè)試用例(TestCase)。 C、測(cè)試用例的集合,可容納多個(gè)測(cè)試用例(TestCase),將其稱作測(cè)試包(TestSuite)。D、測(cè)試結(jié)果的描述與記錄。(TestResult) 。E、每一個(gè)測(cè)試方法所發(fā)生的與預(yù)期不一致狀況的描述,稱其測(cè)試失敗元素(TestFailure)F、JUnit Framework中的出錯(cuò)異常(AssertionFailedError)。JUnit框架是一個(gè)典型的Comp
3、osite模式:TestSuite可以容納任何派生自Test的對(duì)象;當(dāng)調(diào)用TestSuite對(duì)象的run()方法是,會(huì)遍歷自己容納的對(duì)象,逐個(gè)調(diào)用它們的run()方法。3. JUnit中常用的接口和類Test接口運(yùn)行測(cè)試和收集測(cè)試結(jié)果Test接口使用了Composite設(shè)計(jì)模式,是單獨(dú)測(cè)試用例(TestCase),聚合測(cè)試模式(TestSuite)及測(cè)試擴(kuò)展(TestDecorator)的共同接口。 它的public int countTestCases()方法,它來統(tǒng)計(jì)這次測(cè)試有多少個(gè)TestCase,另外一個(gè)方法就是public voidrun( TestResult ),TestResu
4、lt是實(shí)例接受測(cè)試結(jié)果, run方法執(zhí)行本次測(cè)試。 TestCase抽象類定義測(cè)試中固定方法TestCase是Test接口的抽象實(shí)現(xiàn),(不能被實(shí)例化,只能被繼承)其構(gòu)造函數(shù)TestCase(string name)根據(jù)輸入的測(cè)試名稱name創(chuàng)建一個(gè)測(cè)試實(shí)例。由于每一個(gè)TestCase在創(chuàng)建時(shí)都要有一個(gè)名稱,若某測(cè)試失敗了,便可識(shí)別出是哪個(gè)測(cè)試失敗。 TestCase類中包含的setUp()、tearDown()方法。setUp()方法集中初始化測(cè)試所需的所有變量和實(shí)例,并且在依次調(diào)用測(cè)試類中的每個(gè)測(cè)試方法之前再次執(zhí)行setUp()方法。tearDown()方法則是在每個(gè)測(cè)試方法之后,釋放測(cè)試程
5、序方法中引用的變量和實(shí)例。 開發(fā)人員編寫測(cè)試用例時(shí),只需繼承TestCase,來完成run方法即可,然后JUnit獲得測(cè)試用例,執(zhí)行它的run方法,把測(cè)試結(jié)果記錄在TestResult之中。 Assert靜態(tài)類一系列斷言方法的集合Assert包含了一組靜態(tài)的測(cè)試方法,用于期望值和實(shí)際值比對(duì)是否正確,即測(cè)試失敗,Assert類就會(huì)拋出一個(gè)AssertionFailedError異常,JUnit測(cè)試框架將這種錯(cuò)誤歸入Failes并加以記錄,同時(shí)標(biāo)志為未通過測(cè)試。如果該類方法中指定一個(gè)String類型的傳參則該參數(shù)將被做為AssertionFailedError異常的標(biāo)識(shí)信息,告訴測(cè)試人員改異常的詳
6、細(xì)信息。JUnit 提供了6大類31組斷言方法,包括基礎(chǔ)斷言、數(shù)字?jǐn)嘌?、字符斷言、布爾斷言、?duì)象斷言。 其中assertEquals(Object expcted,Object actual)內(nèi)部邏輯判斷使用equals()方法,這表明斷言兩個(gè)實(shí)例的內(nèi)部哈希值是否相等時(shí),最好使用該方法對(duì)相應(yīng)類實(shí)例的值進(jìn)行比較。而assertSame(Object expected,Object actual)內(nèi)部邏輯判斷使用了Java運(yùn)算符“=”,這表明該斷言判斷兩個(gè)實(shí)例是否來自于同一個(gè)引用(Reference),最好使用該方法對(duì)不同類的實(shí)例的值進(jìn)行比對(duì)。asserEquals(String message,
7、String expected,String actual)該方法對(duì)兩個(gè)字符串進(jìn)行邏輯比對(duì),如果不匹配則顯示著兩個(gè)字符串有差異的地方。ComparisonFailure類提供兩個(gè)字符串的比對(duì),不匹配則給出詳細(xì)的差異字符。 TestSuite測(cè)試包類多個(gè)測(cè)試的組合TestSuite類負(fù)責(zé)組裝多個(gè)Test Cases。待測(cè)得類中可能包括了對(duì)被測(cè)類的多個(gè)測(cè)試,而TestSuit負(fù)責(zé)收集這些測(cè)試,使我們可以在一個(gè)測(cè)試中,完成全部的對(duì)被測(cè)類的多個(gè)測(cè)試。 TestSuite類實(shí)現(xiàn)了Test接口,且可以包含其它的TestSuites。它可以處理加入Test時(shí)的所有拋出的異常。 TestSuite處理測(cè)試用例
8、有6個(gè)規(guī)約(否則會(huì)被拒絕執(zhí)行測(cè)試) A 測(cè)試用例必須是公有類(Public)B 測(cè)試用例必須繼承與TestCase類 C 測(cè)試用例的測(cè)試方法必須是公有的( Public )D 測(cè)試用例的測(cè)試方法必須被聲明為VoidE 測(cè)試用例中測(cè)試方法的前置名詞必須是testF 測(cè)試用例中測(cè)試方法無(wú)任何傳遞參數(shù)TestResult結(jié)果類和其它類與接口TestResult結(jié)果類集合了任意測(cè)試?yán)奂咏Y(jié)果,通過TestResult實(shí)例傳遞每個(gè)測(cè)試的Run()方法。TestResult在執(zhí)行TestCase時(shí)如果失敗會(huì)異常拋出 TestListener接口是個(gè)事件監(jiān)聽規(guī)約,可供TestRunner類使用。它通知list
9、ener的對(duì)象相關(guān)事件,方法包括測(cè)試開始startTest(Test test),測(cè)試結(jié)束endTest(Test test),錯(cuò)誤,增加異常addError(Test test,Throwable t)和增加失敗addFailure(Test test,AssertionFailedError t) TestFailure失敗類是個(gè)“失敗”狀況的收集類,解釋每次測(cè)試執(zhí)行過程中出現(xiàn)的異常情況。其toString()方法返回“失敗”狀況的簡(jiǎn)要描述4. 利用Junit開發(fā)一個(gè)簡(jiǎn)單的Java程序(1)File-new-Java project,名稱為“HelloWorldWithJUnit”建立兩個(gè)
10、文件夾,分別為src和junittestsrc 存放實(shí)現(xiàn)主要功能的文件junittest 存放測(cè)試功能文件(2)創(chuàng)建測(cè)試類選中“HelloWorldWithJUnit”項(xiàng)目中的junittest包文件夾,右鍵并選擇new-other-Junit-Junit Test Case(3)選擇“next”,在New Junit Test Case中的name中輸入“HelloWorldTest”,在package中輸入“junittest”,然后單擊“finish”。(4)現(xiàn)在初步計(jì)劃被測(cè)試文件功能非常簡(jiǎn)單,只有一個(gè)方法ReturnValue,作用是返回“HelloWorld”,所以測(cè)試類中有對(duì)Ret
11、urnValue這個(gè)方法進(jìn)行測(cè)試的類。當(dāng)然,測(cè)試要能進(jìn)行,該測(cè)試類必須為主類,存在main方法。HelloWorldTest.java的源代碼如下:選擇run-run as-Junit test 彈出一個(gè)Junit窗口,發(fā)現(xiàn)在該窗口中有一個(gè)紅條,這說明存在錯(cuò)誤。(5)創(chuàng)建HelloWorld類建立一個(gè)HelloWorld類,并輸入以下代碼: (6)在HelloWorldTest.java中加入import src.*; 此時(shí)以Junit測(cè)試的方式來運(yùn)行HelloWorldTest.java,出現(xiàn)了含有綠色的窗口,測(cè)試成功。assertEqualspublic static void asser
12、tEquals(java.lang.Stringmessage, java.lang.Objectexpected, java.lang.Objectactual)Asserts that two objects are equal. If they are not, an AssertionError is thrown with the given message. If expected and actual are null, they are considered equal. Parameters: message - the identifying message for the
13、 AssertionError (null okay) expected - expected value actual - actual valueassertFalsepublic static void assertFalse(java.lang.Stringmessage, booleancondition)Asserts that a condition is false. If it isnt it throws an AssertionError with the given message. Parameters: message - the identifying messa
14、ge for the AssertionError (null okay) condition - condition to be checkedassertTruepublic static void assertTrue(java.lang.Stringmessage, booleancondition)Asserts that a condition is true. If it isnt it throws an AssertionError with the given message. Parameters: message - the identifying message fo
15、r the AssertionError (null okay) condition - condition to be checkedassertNullpublic static void assertNull(java.lang.Stringmessage, java.lang.Objectobject)Asserts that an object is null. If it is not, an AssertionError is thrown with the given message. Parameters: message - the identifying message
16、for the AssertionError (null okay) object - Object to check or nullassertNotNullpublic static void assertNotNull(java.lang.Stringmessage, java.lang.Objectobject)Asserts that an object isnt null. If it is an AssertionError is thrown with the given message. Parameters: message - the identifying messag
17、e for the AssertionError (null okay) object - Object to check or nullassertSamepublic static void assertSame(java.lang.Stringmessage, java.lang.Objectexpected, java.lang.Objectactual)Asserts that two objects refer to the same object. If they are not, an AssertionError is thrown with the given messag
18、e. Parameters: message - the identifying message for the AssertionError (null okay) expected - the expected object actual - the object to compare to expectedassertNotSamepublic static void assertNotSame(java.lang.Stringmessage, java.lang.Objectunexpected, java.lang.Objectactual)Asserts that two obje
19、cts do not refer to the same object. If they do refer to the same object, an AssertionError is thrown with the given message. Parameters: message - the identifying message for the AssertionError (null okay) unexpected - the object you dont expect actual - the object to compare to unexpectedfailpubli
20、c static void fail(java.lang.Stringmessage)Fails a test with the given message. Parameters: message - the identifying message for the AssertionError (null okay) See Also: AssertionError實(shí)驗(yàn)一 白盒測(cè)試方法一、實(shí)驗(yàn)?zāi)康?、掌握白盒測(cè)試基本技術(shù),并能夠應(yīng)用白盒測(cè)試技術(shù)設(shè)計(jì)測(cè)試用例2、掌握白盒測(cè)試中的邏輯覆蓋和路徑測(cè)試方法二、實(shí)驗(yàn)任務(wù)使用白盒測(cè)試方法為下面的程序設(shè)計(jì)測(cè)試用例(使用邏輯覆蓋和路徑測(cè)試方法):程序要求:1
21、0個(gè)鉛球中有一個(gè)假球(比其他鉛球的重量要輕),用天平三次稱出假球。程序設(shè)計(jì)思路:第一次使用天平分別稱5個(gè)球,判斷輕的一邊有假球;拿出輕的5個(gè)球,取出其中4個(gè)第二次稱,兩邊分別放2個(gè)球:如果兩邊同重,則剩下的球?yàn)榧偾?;若兩邊不同重,拿出輕的兩個(gè)球稱第三次,輕的為假球。 圖1 判斷假球的程序流程圖三、實(shí)驗(yàn)要求1、做好實(shí)驗(yàn)預(yù)習(xí),掌握并熟悉本實(shí)驗(yàn)中所使用的測(cè)試環(huán)境及相應(yīng)的測(cè)試軟件2、寫出實(shí)驗(yàn)報(bào)告,內(nèi)容是:(1)實(shí)驗(yàn)?zāi)康模?)實(shí)驗(yàn)內(nèi)容 實(shí)驗(yàn)源代碼(或測(cè)試腳本)可不寫出,但是一定要寫出實(shí)驗(yàn)中出現(xiàn)的錯(cuò)誤,以及解決錯(cuò)誤的方法(3)出錯(cuò)信息及處理方法(4)實(shí)驗(yàn)結(jié)果,包括實(shí)驗(yàn)處理結(jié)果和設(shè)計(jì)心得。單元測(cè)試覆蓋率-使
22、用CloverClover是對(duì)單元測(cè)試覆蓋率進(jìn)行統(tǒng)計(jì)的軟件,在Eclipse中使用Clover,首先使用從/download.jspa下載Clover,還需要申請(qǐng)一個(gè)license,否則無(wú)法使用。目前免費(fèi)下載的基本都是30天試用版。下載后把Clover壓縮包里的兩個(gè)文件夾,features和plugins,復(fù)制到Eclipse安裝目錄中替換原來的兩個(gè)文件夾。1. 打開Eclipse,從Window-Show view-other,可以看到Clover的信息:2還需要導(dǎo)入clover.license。從Preferences-Clover-License進(jìn)
23、入:并將申請(qǐng)到的的license粘帖到這里,至此Clover已經(jīng)安裝完成,開始進(jìn)入單元測(cè)試。3. 可以對(duì)之前已經(jīng)做過的project進(jìn)行覆蓋率的計(jì)算。也可新建了一個(gè)project,結(jié)構(gòu)如下:Sample.java和SampleTest.java內(nèi)容分別是:Java代碼 1. packagecom.lyoe.sample; 2. 3. publicclassSample 4. publicIntegeradd(Integera,Integerb) 5. if(a=null|b=null) 6. returnnull; 7. 8. Integersum=newInteger(Value(
24、)+Value(); 9. returnsum; 10. 11. package com.lyoe.sample;public class Sample public Integer add(Integer a, Integer b) if (a = null | b = null) return null;Integer sum = new Integer(Value() + Value();return sum;Java代碼 1. packagecom.lyoe.sample; 2. 3. importcom.lyoe.sample.Sample; 4. im
25、portjunit.framework.TestCase; 5. 6. publicclassSampleTestextendsTestCase 7. 8. protectedvoidsetUp()throwsException 9. super.setUp(); 10. 11. 12. publicvoidtestAdd() 13. Samplesample=newSample(); 14. Integera=newInteger(1); 15. Integerb=newInteger(2); 16. Integerc=sample.add(a,b); 17. assertNotNull(c
26、); 18. 19. 20. protectedvoidtearDown()throwsException 21. super.tearDown(); 22. 23. 24. package com.lyoe.sample;import com.lyoe.sample.Sample;import junit.framework.TestCase;public class SampleTest extends TestCase protected void setUp() throws Exception super.setUp();public void testAdd() Sample sa
27、mple = new Sample();Integer a = new Integer(1);Integer b = new Integer(2);Integer c = sample.add(a, b);assertNotNull(c);protected void tearDown() throws Exception super.tearDown();右擊JunitInAction工程,選擇Properties-Clover。上面有一個(gè)Enable Clover in this project,勾上,apply-OK.從Window-Show view-other進(jìn)入,找到Coverag
28、e Explorer,打開,看到Clover選項(xiàng)的相關(guān)信息:點(diǎn)擊紅框內(nèi)的按鈕,會(huì)彈出重新構(gòu)建工程的提示,點(diǎn)擊是即可。在Coverage Explorer界面下,我們會(huì)看到:右擊SampleTest.java,選擇Run as-JUnit Test,結(jié)果如下:可以看到Sample.java的覆蓋率為71.4%.Clover還可以生成三種測(cè)試報(bào)告:PDF/HTML/XML。按鈕可以在Coverage Explorer那排的選項(xiàng)按鈕里找到(run new report)。實(shí)驗(yàn)二 黑盒測(cè)試一、實(shí)驗(yàn)?zāi)康?、掌握黑盒測(cè)試基本技術(shù),并能夠應(yīng)用黑盒測(cè)試方法設(shè)計(jì)測(cè)試用例2、熟悉黑盒測(cè)試中的等價(jià)類測(cè)試方法和邊界值
29、測(cè)試方法。二、實(shí)驗(yàn)任務(wù)使用等價(jià)類方法設(shè)計(jì)下面程序的設(shè)計(jì)用例:輸入三個(gè)整數(shù)作為邊,分別滿足一般三角形、等腰三角形和等邊三角形。三、實(shí)驗(yàn)內(nèi)容和步驟1、使用等價(jià)類劃分法設(shè)計(jì)下面的測(cè)試用例:(1)源程序package p1; import java.io.*; public class JTriangle private int b,c,a; private static int x1,x2,x3; private static String s1,s2,s3;public void setA(int a) this.a=a; public void setB(int b) this.b=b;publ
30、ic void setC(int c) this.c=c; public boolean IsTriangle()if(a+bc&a+cb&b+ca&a!=0&b!=0&c!=0)return true;elsereturn false; public JTriangle() public JTriangle(int _a,int _b,int _c)setA(_a);setB(_b);setC(_c); public String JudgeTriangle() if(IsTriangle() if(a=b&a=c) return 等邊三角形; else if(a=b|b=c|a=c) return 等腰三角形; else return 一般三角形; else return 不能組成三角形; public boolean ISNumble(String s) if(s.length()=0) return false; else char ch=s.toCharArray(); for(in
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 雄安地下高鐵站綜合交通樞紐框架結(jié)構(gòu)節(jié)點(diǎn)抗震性能研究
- 基于OBE理念的高中化學(xué)項(xiàng)目式學(xué)習(xí)設(shè)計(jì)與實(shí)踐研究-以“氯及其化合物”為例
- 帶水平隔板波形鋼腹板箱梁擬平截面假定適用性研究
- 委托合同培訓(xùn)
- 小兒肺炎診療規(guī)范(人衛(wèi)八版兒科)
- 職業(yè)健康宣貫部署會(huì)議
- 健康評(píng)估肺臟叩診
- 補(bǔ)鉀護(hù)理操作流程
- 小朋友回家安全專題課件
- 乙肝產(chǎn)婦術(shù)后護(hù)理查房
- 大學(xué)生心理健康教育(周莉第四版) 課件 第1-5章 主動(dòng)掌控:打造健康生活-戀愛與性:理解親密關(guān)系
- 家庭教育學(xué)整套課件
- 營(yíng)銷人員財(cái)務(wù)必備之財(cái)務(wù)與營(yíng)銷結(jié)合
- 2024年風(fēng)機(jī)市場(chǎng)洞察報(bào)告
- 鍛壓設(shè)備安裝工程施工及驗(yàn)收規(guī)范
- 磨煤機(jī)檢修培訓(xùn)課件
- 瑞安市工業(yè)固廢與污泥無(wú)害化處置及資源化利用項(xiàng)目階段性竣工環(huán)境保護(hù)驗(yàn)收?qǐng)?bào)告
- 檢驗(yàn)科對(duì)急診凝血標(biāo)本質(zhì)量不合格原因分析品管圈魚骨圖柏拉圖
- 中草藥的種植技術(shù)
- 關(guān)于中學(xué)生課余生活的調(diào)研報(bào)告
- 全國(guó)普通高等學(xué)校畢業(yè)生就業(yè)協(xié)議書
評(píng)論
0/150
提交評(píng)論