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

下載本文檔

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

文檔簡介

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

4、.out.println(" 請輸入第一個數(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(" 請輸入第二個數(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(" 運算結(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, 請重新輸入 n : n" );53.System. out .print( " 輸入 n 值不在要求區(qū)間54.55.56.else57.System.out .print("輸入 m值不在要求區(qū)間,請重新輸入 m: n");58.59.60. 三、黑盒測試:1、邊界值測試:、邊界值分析:輸入要求是0100之間的整數(shù),因此產(chǎn)生

7、了 0和100兩個邊界,邊界值分析可產(chǎn)生 4*2+1=9 個測試用例??蓸?gòu)造(50, 0)、(50, 1)、(50, 50)、(50, 99)、(50, 100)、(0, 50)、(1 , 50)、(99, 50)、(100, 50)這 9 組測試用例。表1邊界值分析測試用例用例mn預(yù)期輸出(+、-、*、/)實際輸出(+、-、*、/ )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在該測試時,發(fā)現(xiàn)50,0這個測試的除法的預(yù)期輸出和實際輸出不一致,是因為代碼中return 0;當(dāng)除數(shù)n=0時,實際返回的是0.0publicdoubledivide。if (b!=0)returna/ b;elseSystem. out .println(” 除數(shù)不能為 0!");return 0;/ 出現(xiàn) Bug健壯性測試:健壯性測試可產(chǎn)生6*2+1=13 個測試用例,在上面邊界值分析測試用例的基礎(chǔ)上再添加(50,-1)、(50,101)、(-1,50)、(101,50) 這4個測試用例即可。

10、表2健壯性測試用例用例mn預(yù)期輸出+、一、*、/實際輸出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、等價類測試:規(guī)定了輸入值m, n的范圍0,100,則變量的有效等價類:M1=m:0 < m< 100N1= n:0< n < 100變量的無效等價類:M2=m:m< 0

11、M3=m:m> 100N2= n:n< 0N3= n:n> 0、弱一般等價類測試:該測試可用每個等價類的一個變量實現(xiàn),可生成 1個測試用例。、強一般等價類測試:該測試基于多缺陷假設(shè),需要1*1=1個測試用例。表3強、弱一般等價類測試用例用例mn預(yù)期輸出+、一、*、/實際輸出WN1 SN15050100. 0、0. 0、2500.0、1.0、弱健壯等價類測試:該測試基于單缺陷假設(shè),不僅對有效值測試,還考慮了無效值,可生成1+2+2=5個測試用例。表4弱健壯等價類測試用例用例mn預(yù)期輸出+、一、*、/實際輸出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ū)間、強健壯等價類測試:該測試基于多缺陷假設(shè),從所有等價類笛卡爾積的每個元素中獲得測試用 例,可生成1+2* 1+2=9個測試用例。表5弱健壯等價類測試用例用例mn預(yù)期輸出+、一、*、/實際輸出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.基于決策表的測試:變量的有效等價類:M仁m: 0 < m< 100N1= n:0< n < 100變量的無效等價類:M2=m:m< 0M3=m:m> 100N2= n:n< 0N3= n:n> 0表6基于決策表的測試用例樁1234C1:第一個數(shù)在:M1M1M2 , M3M2 , M3C2 :第二個數(shù)在:N1N2 , N3N1N2, N3A1 :正常輸出結(jié)果:A2 :輸入m值不在要求區(qū)間,重新輸入A3 :輸入n值不在要求區(qū)間,重新輸入XXXXX】、白盒測試:1.測試覆蓋指標:流程圖:

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

16、個條件的所有可能值真/假至少出現(xiàn)一次并且每個判定本身的結(jié)果真/假也至少出現(xiàn)一次,貝U測試用例:表9條件判定覆蓋測試用例通過路徑條件取值m=1, n=99a,b,cT,T、路徑覆蓋:測試用例要求覆蓋所有可能的路徑:表10 路徑覆蓋測試用例通過路徑條件取值m仁-1,m2=1 ; n1=101 , n2=99a,f,b,d,cF1,T1,F2,T22.基路徑測試:為簡便畫圖,開始點從主要代碼第 36行開始,其他無分支節(jié)點用省略號表示(從節(jié)點43到51產(chǎn)所以:圈復(fù)雜度V G= 54 個獨立路徑為 :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 動態(tài)測試: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)境, 可以進行一些測試數(shù)據(jù)的初始化,還可以把數(shù)據(jù)庫聯(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() / 加法測 試assertEquals (100.0, a.add();public void testAdd1() assertEquals (106.0,b.add();/輸入值超出要求范圍,測試失敗,因為要求0100范圍,所以,在構(gòu)造Computer。

20、函數(shù)時,要規(guī)定變量x,y的范圍public voidtestMi nu s() assertEquals (-89,a.minu s();/減法測試/預(yù)期值和結(jié)果不相等,測試失敗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();時,返回,所以這里測試應(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) 、測試 testAdd1() 時,由于 b=newComputer(101,5); assertEquals (106.0,b.add();輸入值范圍超出定義范圍,測試異常;(2) 、測試testMinus() 時,assertEqual

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

24、e.addTest( return suite;new TestSuite();new ComputerTest(new ComputerTest("testAdd" );"testMultiply1");假設(shè)在另一個ComputerTest1類中,要測試ComputerTest 中的所有測試方法,則應(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;四、測試用例設(shè)計體會:在這次軟件測試過程中,我

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論