軟件測(cè)試文檔_第1頁(yè)
軟件測(cè)試文檔_第2頁(yè)
軟件測(cè)試文檔_第3頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、軟件測(cè)試報(bào)告一、問題描述:用 Java 實(shí)現(xiàn)求兩整數(shù)的加、減、乘、除運(yùn)算結(jié)果,要求兩整數(shù)的范圍都是0,100。從鍵盤輸入數(shù)m,數(shù)n,判斷他們的范圍,假設(shè)不在0,100范圍內(nèi),則 輸出提示語(yǔ),要求重新輸入, 并且在做除法運(yùn)算時(shí), 當(dāng)除數(shù)為 0 時(shí),輸出提示語(yǔ), 說(shuō)明除數(shù)不能為 0。將兩數(shù)的范圍定在0,100,以更好的進(jìn)行邊界值分析,等價(jià)類測(cè)試等黑盒測(cè) 試方法;為充分表達(dá)白盒測(cè)試的特點(diǎn),有些地方故意用了if-else語(yǔ)句,while循環(huán);另外,加、減、乘、除運(yùn)算分別用了四個(gè)函數(shù)來(lái)計(jì)算,這樣既可以在主函數(shù) 中調(diào)用,又可以在Junit框架中分別對(duì)這四種運(yùn)算進(jìn)行測(cè)試。二、程序源代碼:1. importj

2、ava.util.Sca nner;2.publicclass Computer 3.privateint a;4.privateint b;5.public Computer (int x,int y)/構(gòu)造函數(shù),初始化6.7.a=x;/注意:Juint中需要輸入測(cè)試值在0100范圍內(nèi)8.b=y;9.10.publicdouble add()/加法11.12.returna + b;13.14.publicdoubleminu s()/減法15.16.returna- b;17.18.publicdouble multiply()/乘法19.20.returna* b;21.22.publi

3、cdouble divide()/除法,要求除數(shù)不能為0,否則輸出提示語(yǔ)23.24.if ( b !=0)25.returna/ b;26.else27.System. out .println("除數(shù)不能為0 ! ”);28.return 0;29.30.public staticvoid main(String args)31.32.Scanner scanner=null ;33.scanner =new Scanner(System.in );34.System.out.println(" 請(qǐng)輸入 0100 的兩個(gè)m,n 整數(shù) :" );35.System

4、.out.println(" 請(qǐng)輸入第一個(gè)數(shù): " );則有循環(huán)直到輸入正確為36.while( true)/ 假設(shè)輸入值不在要求范圍內(nèi),止37.int m = scanner.nextInt();38.if (m>=0&&m<=100)39.40.System.out .println(" 請(qǐng)輸入第二個(gè)數(shù): " );41.while ( true )42.int n = scanner.nextInt();43.if (n>=0&&n<=100)44.45.Computer cpt=new Com

5、puter(m,n);46.System.out.println(" 運(yùn)算結(jié)果是: " );47.System.outprintln(" 加法:" +m+"+" +n+ "=" +cpt.add();48.System.outprintln(" 減法:" +m+"-" +n+ "=" +cpt.minus();49.System.outprintln(" 乘 法 :" +m+"*" +n+ "="

6、 +cpt.multiply();50.System.outprintln(" 除法 :" +m+"/" +n+ "=" +cpt.divide();51.52.else, 請(qǐng)重新輸入 n : n" );53.System. out .print( " 輸入 n 值不在要求區(qū)間54.55.56.else57.System.out .print("輸入 m值不在要求區(qū)間,請(qǐng)重新輸入 m: n");58.59.60. 三、黑盒測(cè)試:1、邊界值測(cè)試:、邊界值分析:輸入要求是0100之間的整數(shù),因此產(chǎn)生

7、了 0和100兩個(gè)邊界,邊界值分析可產(chǎn)生 4*2+1=9 個(gè)測(cè)試用例??蓸?gòu)造(50, 0)、(50, 1)、(50, 50)、(50, 99)、(50, 100)、(0, 50)、(1 , 50)、(99, 50)、(100, 50)這 9 組測(cè)試用例。表1邊界值分析測(cè)試用例用例mn預(yù)期輸出(+、-、*、/)實(shí)際輸出(+、-、*、/ )150050. 0、50. 0、0. 0、除數(shù)不為 0!50. 0、50. 0、0. 0、0. 0250151. 0、49. 0、50. 0、50. 051. 0、49. 0、50. 0、50. 035050100. 0、0. 0、2500. 0、1. 0100

8、. 0、0. 0、2500. 0、1. 045099149. 0、-49. 0、4950. 0、0. 505109. 0、-9. 0、2950. 0、550100150. 0、-50. 0、5000. 0、0. 5150. 0、-50. 0、5000. 0、0. 5605050. 0、-50. 0、0. 0、0. 050. 0、-50. 0、0. 0、0. 0715051. 0、-49. 0、50. 0、0. 0251. 0、-49. 0、50. 0、0. 0289950149. 0、49. 0、4950. 0、1. 98149. 0、49. 0、4950. 0、1. 98910050150.

9、 0、50. 0、500. 0、2. 0150. 0、50. 0、500. 0、2. 0在該測(cè)試時(shí),發(fā)現(xiàn)50,0這個(gè)測(cè)試的除法的預(yù)期輸出和實(shí)際輸出不一致,是因?yàn)榇a中return 0;當(dāng)除數(shù)n=0時(shí),實(shí)際返回的是0.0publicdoubledivide。if (b!=0)returna/ b;elseSystem. out .println(” 除數(shù)不能為 0!");return 0;/ 出現(xiàn) Bug健壯性測(cè)試:健壯性測(cè)試可產(chǎn)生6*2+1=13 個(gè)測(cè)試用例,在上面邊界值分析測(cè)試用例的基礎(chǔ)上再添加(50,-1)、(50,101)、(-1,50)、(101,50) 這4個(gè)測(cè)試用例即可。

10、表2健壯性測(cè)試用例用例mn預(yù)期輸出+、一、*、/實(shí)際輸出1050-149. 0、51. 0、-50. 0、-50. 0輸入n值不在要求區(qū)間1150101151. 0、-51. 0、5050. 0、0. 495輸入n值不在要求區(qū)間12-15049. 0、-51. 0、-50. 0、-0. 02輸入m值不在要求區(qū)間1310150151. 0、51. 0、5050. 0、2. 02輸入m值不在要求區(qū)間2、等價(jià)類測(cè)試:規(guī)定了輸入值m, n的范圍0,100,則變量的有效等價(jià)類:M1=m:0 < m< 100N1= n:0< n < 100變量的無(wú)效等價(jià)類:M2=m:m< 0

11、M3=m:m> 100N2= n:n< 0N3= n:n> 0、弱一般等價(jià)類測(cè)試:該測(cè)試可用每個(gè)等價(jià)類的一個(gè)變量實(shí)現(xiàn),可生成 1個(gè)測(cè)試用例。、強(qiáng)一般等價(jià)類測(cè)試:該測(cè)試基于多缺陷假設(shè),需要1*1=1個(gè)測(cè)試用例。表3強(qiáng)、弱一般等價(jià)類測(cè)試用例用例mn預(yù)期輸出+、一、*、/實(shí)際輸出WN1 SN15050100. 0、0. 0、2500.0、1.0、弱健壯等價(jià)類測(cè)試:該測(cè)試基于單缺陷假設(shè),不僅對(duì)有效值測(cè)試,還考慮了無(wú)效值,可生成1+2+2=5個(gè)測(cè)試用例。表4弱健壯等價(jià)類測(cè)試用例用例mn預(yù)期輸出+、一、*、/實(shí)際輸出WR15050100. 0、0. 0、2500.0、1.0、WR250-

12、149. 0、51. 0、-50. 0、-50.0輸入n不在要求區(qū)間WR350101151. 0、-51.0、5050. 0、0. 495輸入n不在要求區(qū)間WR4-15049. 0、-51. 0、-50. 0、-0. 02輸入m不在要求區(qū)間WR510150151. 0、51. 0、5050. 0、2. 02輸入m不在要求區(qū)間、強(qiáng)健壯等價(jià)類測(cè)試:該測(cè)試基于多缺陷假設(shè),從所有等價(jià)類笛卡爾積的每個(gè)元素中獲得測(cè)試用 例,可生成1+2* 1+2=9個(gè)測(cè)試用例。表5弱健壯等價(jià)類測(cè)試用例用例mn預(yù)期輸出+、一、*、/實(shí)際輸出SR1-1-1-2. 0、 0. 0、 1.0 、輸入m值不在要求區(qū)間SR2-150

13、49. 0、-51. 0、- 50. 0、- 0. 02輸入m值不在要求區(qū)間SR3-1101100.0、0099輸入m值不在要求區(qū)間SR450-149. 0、51. 0、-50. 0、-50.0輸入n值不在要求區(qū)間SR55050100. 0、0. 0、2500. 0、1. 0100. 0、0. 0、2500. 0、1. 0SR650101106.0、輸入m值不在要求區(qū)間SR7101-1100.0、輸入m值不在要求區(qū)間SR810150151.0、輸入m值不在要求區(qū)間SR9101101202.0、輸入m值不在要求區(qū)間3、因果圖:C1 :輸入 m值在0,100 內(nèi) C2 :輸入n值在0,100 內(nèi)e

14、l :輸出結(jié)果e2 :輸入m值不在區(qū)間e3 :輸入n值不在區(qū)間3.基于決策表的測(cè)試:變量的有效等價(jià)類:M仁m: 0 < m< 100N1= n:0< n < 100變量的無(wú)效等價(jià)類:M2=m:m< 0M3=m:m> 100N2= n:n< 0N3= n:n> 0表6基于決策表的測(cè)試用例樁1234C1:第一個(gè)數(shù)在:M1M1M2 , M3M2 , M3C2 :第二個(gè)數(shù)在:N1N2 , N3N1N2, N3A1 :正常輸出結(jié)果:A2 :輸入m值不在要求區(qū)間,重新輸入A3 :輸入n值不在要求區(qū)間,重新輸入XXXXX】、白盒測(cè)試:1.測(cè)試覆蓋指標(biāo):流程圖:

15、入口F、語(yǔ)句覆蓋:每個(gè)可執(zhí)行的語(yǔ)句必須至少執(zhí)行一次,則測(cè)試用例:表7 語(yǔ)句覆蓋測(cè)試用例測(cè)試用例通過(guò)路徑條件取值m仁-1,m2=1 ; n1=101 , n2=99a,f,b,d,cF1,T1,F2,T2、判定分支覆蓋:每個(gè)判定必須至少獲得一次“真”值和“假”值,貝U測(cè)試用例:表8判定分支覆蓋測(cè)試用例通過(guò)路徑條件取值m=1, n=99a,b,cT;Tm1= -1,m2=1, n=99a,f,b,cF1,T1;T2m=1, n1= -1, n2=99a,b,d,cT;F1,T1m1= -1,m2=1; n1=101, n2=99a,f,b,d,cF1,T1;F2,T2、條件判定覆蓋:每個(gè)判定中的每

16、個(gè)條件的所有可能值真/假至少出現(xiàn)一次并且每個(gè)判定本身的結(jié)果真/假也至少出現(xiàn)一次,貝U測(cè)試用例:表9條件判定覆蓋測(cè)試用例通過(guò)路徑條件取值m=1, n=99a,b,cT,T、路徑覆蓋:測(cè)試用例要求覆蓋所有可能的路徑:表10 路徑覆蓋測(cè)試用例通過(guò)路徑條件取值m仁-1,m2=1 ; n1=101 , n2=99a,f,b,d,cF1,T1,F2,T22.基路徑測(cè)試:為簡(jiǎn)便畫圖,開始點(diǎn)從主要代碼第 36行開始,其他無(wú)分支節(jié)點(diǎn)用省略號(hào)表示(從節(jié)點(diǎn)43到51產(chǎn)所以:圈復(fù)雜度V G= 54 個(gè)獨(dú)立路徑為 :P1:1,.,36,37,38.42,43.54,55,58,59,60P2:1,.,36,37,56,

17、57,58,59,60P3:1,.,36,37,38.42,52,53,54,55,58,59,60P4:1,.,36,37,38.42,43.54,42,52,53,54,55,58,59,60P5:1,.,36,37,56,57,58,36,37,56,57,58,59,60、 Junit 動(dòng)態(tài)測(cè)試:import junit.framework.TestCase; / 引入 Junit 框架中所有類 public class ComputerTest extends TestCase privateComputera; / 定義變量privateComputerb;privateCompu

18、terc;privateComputerd;public ComputerTest (String name) super (name); / 構(gòu)造函數(shù) , 使用 super 關(guān)鍵字直接引用父類 TestCase 的構(gòu)造函 數(shù)protected void setUp() throws Exception super .setUp(); / 建立環(huán)境, 可以進(jìn)行一些測(cè)試數(shù)據(jù)的初始化,還可以把數(shù)據(jù)庫(kù)聯(lián)接寫在此處 ,以減少重復(fù)性工作,提高效率a = new Computer(1,99); b = new Computer(101,5);c = new Computer(1,2);d = new Co

19、mputer(1,0);protected void tearDown() throws Exception super .tearDown();public void testComputer() int x=1;int y=1;assertSame (x,y); /assertSame() public void testAdd() / 加法測(cè) 試assertEquals (100.0, a.add();public void testAdd1() assertEquals (106.0,b.add();/輸入值超出要求范圍,測(cè)試失敗,因?yàn)橐?100范圍,所以,在構(gòu)造Computer。

20、函數(shù)時(shí),要規(guī)定變量x,y的范圍public voidtestMi nu s() assertEquals (-89,a.minu s();/減法測(cè)試/預(yù)期值和結(jié)果不相等,測(cè)試失敗public void testMi nus1() assertEquals (-89.0, a .minu s(); public void testMultiply() assertEquals (2.0, c.multiply();public void testMultiply1() Object tx =nulltry assertEquals (2.0, c.multiply();c.multiply()的

21、正常結(jié)果是, 所以在此不應(yīng)拋出異 常fail (" should have thrown an exception ");/ 上面不拋出異常,不執(zhí)行 fail() catch(Exception e) tx = e;/斷言tx不為空,則一定有異常/因divide() 函數(shù)中,當(dāng)d=0assertNotNull (tx);public void testDivide() assertEquals (0.0, d .divide();時(shí),返回,所以這里測(cè)試應(yīng)該成功,雖然希望得到“被除數(shù)不能為0!”的情況public void testDivide1() assertEquals

22、 (0.5, c.divide();public void testEmpty()try c .divide();fail("should have thrown an exception "); catch (RuntimeException Ex) assertTrue (true );/assertTrue(true);截圖:(1) 、測(cè)試 testAdd1() 時(shí),由于 b=newComputer(101,5); assertEquals (106.0,b.add();輸入值范圍超出定義范圍,測(cè)試異常;(2) 、測(cè)試testMinus() 時(shí),assertEqual

23、s (-89, a.minus(); 預(yù)期值和實(shí)際值不相同,測(cè)試異常;時(shí),斷言不為空,拋出異常(3) 、測(cè)試 testMultiply()Junit集成測(cè)試:在Junit中,Test Case 總是對(duì)所有方法進(jìn)行測(cè)試,而 Test Suite 中可 對(duì)其中的一部分方法測(cè)試,而且一個(gè)測(cè)試類中還可以包含其他測(cè)試類。在TestCase類中聲明一個(gè)public static Test suite() 方法即可完成多個(gè)測(cè)試 類的集成。例如,在上例ComputerTest 類中,添加:public static Test Suit()TestSuite suite= suite.addTest( suit

24、e.addTest( return suite;new TestSuite();new ComputerTest(new ComputerTest("testAdd" );"testMultiply1");假設(shè)在另一個(gè)ComputerTest1類中,要測(cè)試ComputerTest 中的所有測(cè)試方法,則應(yīng):public class ComputerTest1 exte nds TestCasepublicComputerTest1(Stri ng n ame)Super( name);public static Test Suit()TestSuite suite=new TestSuite();Suite(ComputerTest.class);return suite;四、測(cè)試用例設(shè)計(jì)體會(huì):在這次軟件測(cè)試過(guò)程中,我

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論