?????????????????? 第6章?? 軟件編碼和測試? 課后習題參考答案
一、選擇題
(1)為了提高測試的效率,應(yīng)該(D)。
????????A.隨機地選取測試數(shù)據(jù)
?????? B.取一切可能的輸入數(shù)據(jù)作為測試數(shù)據(jù)
?????? C.在完成編碼以后制定軟件的測試計劃
?????? D.選擇發(fā)現(xiàn)錯誤的可能性大的數(shù)據(jù)作為測試數(shù)據(jù)
(2)軟件測試的目的是(B)。
?????? A.評價軟件的質(zhì)量
?????? B.發(fā)現(xiàn)軟件的錯誤
?????? C.找出軟件中的所有錯誤
?????? D.證明軟件是正確的
(3)單元測試一般以白盒為主,測試的依據(jù)是(A)。
?????? A.模塊功能規(guī)格說明
?????? B.系統(tǒng)模塊結(jié)構(gòu)圖
?????? C.系統(tǒng)需求規(guī)格說明
?????? D.ABC都可以
(4)軟件的集成測試工作最好由(C)承擔,以提高集成測試的效果。
?????? A.該軟件的設(shè)計人員
?????? B.該軟件開發(fā)組的負責人
?????? C.不屬于該軟件開發(fā)組的軟件設(shè)計人員
?????? D.該軟件的編程人員
(5)下列關(guān)于α、β測試的描述中正確的是(C)。
?????? A. α測試不需要用戶代表參加
?????? B.β測試不是驗收測試的一種
?????? C.α測試需要用戶代表參加
?????? D.β測試是系統(tǒng)測試的一種
(6)軟件測試用例主要由輸入數(shù)據(jù)和(C)兩部分組成。
?????? A.測試計劃
?????? B.測試規(guī)劃
?????? C.預期輸出結(jié)果
?????? D.以往測試記錄分析
(7)在黑盒測試中,著重檢查輸入條件組合的方法是(D)。
?????? A.等價類劃分法
?????? B.邊界值分析法
?????? C.錯誤推測法
?????? D.因果圖法
(8)黑盒測試是從(C)觀點的測試,白盒測試是從(C)觀點的測試。
?????? A.開發(fā)人員、管理人員
?????? B.用戶、管理人員
?????? C.用戶、開發(fā)人員
?????? D.開發(fā)人員、用戶
(9)白盒測試法又稱為邏輯覆蓋法,主要用于(D)。
?????? A.驗收測試
?????? B.系統(tǒng)測試
?????? C.α測試
?????? D.單元測試
(10)以下哪種測試方法不屬于白盒測試技術(shù)(B)。
?????? A.基本路徑測試
?????? B.邊界值分析測試
?????? C.循環(huán)覆蓋測試
?????? D.條件測試
(11)白盒測試法是根據(jù)程序的(B)來設(shè)計測試用例的方法。
?????? A.輸出數(shù)據(jù)
?????? B.內(nèi)部邏輯
?????? C.功能
?????? D.輸入數(shù)據(jù)
(12)軟件調(diào)試的目的是(A)。
?????? A.找出錯誤所在并改正之
?????? B.排除存在錯誤的可能性
?????? C.對錯誤性質(zhì)進行分類
?????? D.統(tǒng)計出錯的次數(shù)
二、簡答題
(1)軟件測試應(yīng)該劃分為幾個階段?各個階段應(yīng)重點測試的內(nèi)容是什么?
軟件測試可分為單元測試,集成測試,系統(tǒng)測試,驗收測試四個階段。
單元測試又稱模塊測試、邏輯測試或結(jié)構(gòu)測試,是針對軟件設(shè)計的最小單位——程序模塊或功能模塊,進行正確性檢驗的測試工作。其目的在于檢驗每個程序單元能夠正確實現(xiàn)詳細設(shè)計說明中的模塊功能、性能、接口和設(shè)計約束等要求,發(fā)現(xiàn)各個模塊內(nèi)部可能存在的各種錯誤。
集成測試又稱組裝測試、綜合測試或聯(lián)合測試。通常在單元測試的基礎(chǔ)上,將所有的程序模塊進行有序的、遞增的測試。集成測試是檢驗程序單元或部件的接口關(guān)系,逐步集成為符合概要設(shè)計要求的程序部件或整個系統(tǒng)。
系統(tǒng)測試為驗證和確認系統(tǒng)是否達到其原始目標,而對集成的硬件和軟件系統(tǒng)進行的測試。系統(tǒng)測試是在真實或模擬系統(tǒng)運行的環(huán)境下,檢查完整的程序系統(tǒng)能否和系統(tǒng)(包括計算機硬件、外設(shè)、網(wǎng)絡(luò)和系統(tǒng)軟件、支持平臺等)正確配置、連接,并滿足用戶需求。系統(tǒng)測試的主要依據(jù)是《系統(tǒng)需求規(guī)格說明書》文檔。
驗收測試又稱交付測試,是軟件在完成了單元測試、集成測試、系統(tǒng)測試之后,產(chǎn)品發(fā)布之前進行的軟件測試活動。驗收測試又分為Alpha測試(α測試)和Beta測試(β測試),Alpha測試是由一個用戶在開發(fā)環(huán)境下進行的測試,或者是公司內(nèi)部的用戶在模擬實際操作環(huán)境下進行的受控測試,Beta測試是軟件的多個用戶在一個或多個用戶的實際使用環(huán)境下進行的測試。
(2)在軟件測試中,應(yīng)遵循哪些原則?
在軟件測試過程中,通常應(yīng)該遵循以下七個原則。
① 所有的測試都應(yīng)追溯到用戶需求。這是因為軟件的目的是使用戶完成預定的任務(wù),滿足其需求。而軟件測試揭示軟件的缺陷和錯誤,一旦修正這些錯誤,就能更好地滿足用戶需求。
② 應(yīng)盡早地和不斷地進行軟件測試。由于軟件的復雜性和抽象性,在軟件生命周期各階段都可能產(chǎn)生錯誤,所以不應(yīng)把軟件測試僅僅看作是軟件開發(fā)的一個獨立階段,而應(yīng)當把它貫穿到軟件開發(fā)的各個階段中去。在需求分析和設(shè)計階段就應(yīng)開始進行測試工作,編寫相應(yīng)的測試計劃及測試設(shè)計文檔,同時堅持在開發(fā)各階段進行技術(shù)評審和驗證,這樣才能盡早發(fā)現(xiàn)和預防錯誤,杜絕某些缺陷和錯誤,提高軟件的質(zhì)量。測試工作進行得越早,越有利于提高軟件的質(zhì)量,這是預防性測試的基本原則。
③ 在有限的時間和資源下進行完全測試并找出軟件所有的錯誤和缺陷是不可能的,軟件測試不能無限進行下去,應(yīng)適時終止。因為,測試輸入量大、輸出結(jié)果多、路徑組合多、用有限的資源來達到完全測試是不現(xiàn)實的。
④ 測試只能證明軟件存在錯誤,而不能證明軟件沒有錯誤。測試無法顯示潛在的錯誤和缺陷,繼續(xù)進一步測試可能還會找到其它錯誤和缺陷。
⑤ 充分關(guān)注測試中的集群現(xiàn)象。在測試的程序段中,若發(fā)現(xiàn)的錯誤數(shù)目比較多,則殘存在該程序段中的錯誤數(shù)目也會比較多,因此應(yīng)當花較多的時間和代價測試那些具有更多錯誤數(shù)目的程序模塊。
⑥ 程序員應(yīng)避免檢查自己的程序??紤]到人們的心理因素,自己揭露自己程序中的錯誤是件不愉快的事,自己不愿意否認自己的工作。此外,由于思維定式,自己難以發(fā)現(xiàn)自己的錯誤。因此,測試一般由獨立的測試部門或第三方機構(gòu)進行,這樣測試相對比較客觀。
⑦ 盡量避免測試的隨意性。軟件測試是有組織、有計劃、有步驟的活動,要嚴格按照測試計劃進行,要避免測試的隨意性。
(3)什么是黑盒測試?有哪些常用的黑盒測試方法?
黑盒測試又稱功能測試或數(shù)據(jù)驅(qū)動測試,指通過軟件的外部表現(xiàn)來發(fā)現(xiàn)缺陷和錯誤。黑盒測試把測試對象看成一個黑盒子,完全不考慮程序內(nèi)部結(jié)構(gòu)和處理過程,測試者僅依據(jù)程序功能的需求規(guī)范考慮,確定測試用例和推斷測試結(jié)果的正確性,它是站在使用軟件或程序的角度,從輸入數(shù)據(jù)與輸出數(shù)據(jù)的對應(yīng)關(guān)系出發(fā)進行的測試。
常用的黑盒測試方法有等價類劃分、邊界值分析、因果圖、決策表、錯誤推測法、場景法等。?
(4)什么是白盒測試?有哪些常用的白盒測試方法?
白盒測試又稱結(jié)構(gòu)測試或邏輯驅(qū)動測試,指通過對程序內(nèi)部結(jié)構(gòu)的分析、檢測來尋找問題。白盒測試把程序看成裝在一個透明的白盒子里,也就是清楚了解程序結(jié)構(gòu)和處理過程,檢查是否所有的結(jié)構(gòu)及路徑都是正確的,檢查軟件的內(nèi)部動作是否按照設(shè)計說明的規(guī)定正常進行。
常用的白盒測試方法邏輯覆蓋、基本路徑測試、程序插樁等。
(5)請對比白盒測試和黑盒測試。
白盒測試和黑盒測試是軟件測試的兩種基本方法。
黑盒測試優(yōu)點如下:
1)比較簡單,不需要了解程序的內(nèi)部的代碼及實現(xiàn);
2)與軟件的內(nèi)部實現(xiàn)無關(guān);
3)從用戶的角度出發(fā),能很容易的知道用戶會用到哪些功能,會遇到哪些問題;
4)基于軟件開發(fā)文檔,所以也能知道軟件實現(xiàn)了文檔中的哪些功能;
5)在做軟件自動化測試時較為方便。
黑盒測試缺點如下:
1)不可能覆蓋所有的代碼,覆蓋率較低;
2)自動化測試的復用性較低。
白盒測試優(yōu)點如下:
- 迫使測試人員去仔細思考軟件的實現(xiàn);
- 可以檢測代碼中的每條分支和路徑;
- 揭示隱藏在代碼中的錯誤;
- 對代碼的測試比較徹底。
白盒測試缺點如下:
1)程序運行會有很多不同的路徑,不可能測試所有的運行路徑;
2)測試基于代碼只能測試開發(fā)人員做的對不對,而不能知道設(shè)計是否正確,可能會漏掉一些功能需求;
3)系統(tǒng)龐大時,測試開銷會非常大。
(6)請簡述靜態(tài)測試和動態(tài)測試的區(qū)別。
靜態(tài)測試不運行被測程序本身,僅通過分析或檢查源程序的語法、結(jié)構(gòu)、過程、接口等來檢查程序的正確性。
動態(tài)測試通過運行被測程序,檢查運行結(jié)果與預期結(jié)果的差異,并分析運行效率、正確性和健壯性等性能指標。
(7)什么是集成測試?非增量集成測試與增量集成測試有什么區(qū)別?
集成測試又稱組裝測試、綜合測試或聯(lián)合測試。通常在單元測試的基礎(chǔ)上,將所有的程序模塊進行有序的、遞增的測試。集成測試是檢驗程序單元或部件的接口關(guān)系,逐步集成為符合概要設(shè)計要求的程序部件或整個系統(tǒng)。
集成測試有兩種方法,一種方法是分別測試各個模塊,再把這些模塊組合起來進行整體測試,這種方法稱為非增量集成測試。另一種方法是把一個要測試的模塊組合到已測試好的模塊中,測試完后再將一個需要測試的模塊組合進來測試,逐步把所有模塊組合在一起,并完成測試,該方法稱為增量集成測試。
(8)什么是調(diào)試?什么是測試?二者有何區(qū)別?
軟件調(diào)試是查找、分析和糾正程序中錯誤的過程。軟件測試的目的是充分發(fā)現(xiàn)軟件的錯誤信息,軟件調(diào)試是在測試完成結(jié)果分析之后,對結(jié)果分析發(fā)現(xiàn)的錯誤進行程序診斷,并且尋求改正的過程。軟件測試和軟件調(diào)試常常交替進行。
三、應(yīng)用題
(1)如圖6.21所示,Nextdate函數(shù)包含3個變量:month、day和year,函數(shù)的輸出為輸入日期后一天的日期。例如,輸入為2000年3月3日,則函數(shù)的輸出為2000年3月4日。要求輸入變量month、day和year均為整數(shù)值,并且滿足條件:1≤month≤12,1≤day≤31,1920≤year≤2050。請運用等價類劃分法設(shè)計測試用例。
?文章來源地址http://www.zghlxwxcb.cn/news/detail-435196.html
圖6.21?Nextdate示意圖
解:(1)分析并確定等價類;
Nextdate函數(shù)包含3個變量month、day和year。根據(jù)等價類劃分原則第一條的內(nèi)容“在輸入條件規(guī)定了取值范圍或值的個數(shù)的情況下,可以確立一個有效等價類和兩個無效等價類”,day、month和year分別可以確立一個有效等價類和兩個無效等價類。
① day等價類
D1={日期:1≤日期≤31};D2={日期:日期<1};D3={日期:日期>31}。
② month等價類
M1={月份:1≤月份≤12};M2={月份:月份<1};M3={月份:月份>12}。
③ year等價類
Y1={年:1920≤年≤2050};Y2={年:年<1920};Y3={年:年>2050}。
(2)建立等價類表,列出所有劃分出的等價類;
Nextdate函數(shù)等價類劃分表如表6.1所示。
表6.1?Nextdate函數(shù)等價類劃分表
輸入條件 |
有效等價類 |
無效等價類 |
Day |
D1{1,…,28} D2{29} D3{30} D4{31} |
D5{day<1} D6{day>31} |
Month |
M1{1,3,5,7,8,10,12} M2{2} M3{4,6,9,11} |
M4{month<1} M5{month>12} |
Year |
Y1{平年,1920≤year≤2050} Y2{閏年,1920≤year≤2050} |
Y3{year<1920} Y4{year>2050} |
(3)根據(jù)列出的等價類表,設(shè)計測試用例。
Nextdate函數(shù)預期輸出分為如下六種情況。
R1: day=day+1;
R2: day=1,month=month+1;
R3: day=1,month=1,year=year+1;
R4: day越界;
R5: month越界;
R6: year越界。
Nextdate測試用例設(shè)計結(jié)果如表6.2所示。
表6.2?Nextdate測試用例
測試用例 |
day |
month |
year |
預期輸出 |
覆蓋的等價類 |
Test1 Test2 Test3 Test4 Test5 Test6 Test7 |
15 28 28 29 31 30 31 |
6 2 2 2 3 4 12 |
1999 1999 2000 2000 2006 2010 2016 |
1999年6月16日 1999年3月1日 2000年2月29日 2000年3月1日 2006年4月1日 2010年5月1日 2017年1月1日 |
D1,M3,Y1 ?R1 D1,M2,Y1 ?R2 D1,M2,Y2 ?R1 D2,M2,Y2 ?R2 D4,M1,Y1 ?R2 D3,M3,Y1 ?R2 D4,M1,Y2 ?R3 |
Test8 Test9 Test10 Test11 Test12 Test13 |
-1 32 2 2 20 20 |
6 6 0 13 6 6 |
2001 2001 2001 2001 1919 2051 |
Day越界 Day越界 Month越界 Month越界 Year越界 Year越界 |
D5,M3,Y1 ?R4 D6,M3,Y1??R4 D1,M4,Y1 ?R5 D1,M5,Y1??R5 D1,M3,Y3 ?R6 D1,M3,Y4??R6 |
(2)用因果圖法測試以下程序。程序的規(guī)格說明要求:輸入的第一個字符必須是A成B,第二個字符必須是一個數(shù)字,此情況下進行文件的修改;如果第一個字符不是A或B,則給出信息L,如果第二個字符不是數(shù)字,則給出信息M。請運用因果圖法設(shè)計測試用例。
解:(1)根據(jù)題意。原因和結(jié)果如下。
原因: c1:第一列字符是A;
c2:第一列字符是B;
c3:第二列字符是一數(shù)字。
結(jié)果:?e21:修改文件;
e22:給出信息L;
e23:給出信息M。
(2)程序規(guī)格說明因果圖如圖6.1所示。其中,11為中間狀態(tài),考慮到c1和c2不可能同時為1,因此,在c1和c2上施加E約束。
?
圖6.1程序規(guī)格說明因果圖?
(3)根據(jù)因果圖建立判定表如表6.3所示。
表6.3?程序規(guī)格說明判定表
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
||
原因(條件) |
c1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
c2 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
|
c3 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
11 |
1 |
1 |
1 |
1 |
0 |
0 |
|||
動作(結(jié)果) |
e22 |
0 |
0 |
0 |
0 |
1 |
1 |
||
e21 |
1 |
0 |
1 |
0 |
0 |
0 |
|||
e23 |
0 |
1 |
0 |
1 |
0 |
1 |
在如表6.3所示的8種情況中,左面兩列原因c1和c2同時為1,這是不可能出現(xiàn)的,故應(yīng)排除這兩種情況。這是由于原因c1是第一列字符是A,原因c2是第一列字符是B,所以不可能同時出現(xiàn)第一列字符是A,同時第一列字符是B的情況。
(4)把判定表的每一列拿出來作為依據(jù),設(shè)計測試用例如表6.4所示。
表6.4?程序規(guī)格說明測試用例
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
||
原因(條件) |
c1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
c2 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
|
c3 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
11 |
1 |
1 |
1 |
1 |
0 |
0 |
|||
動作(結(jié)果) |
e22 |
0 |
0 |
0 |
0 |
1 |
1 |
||
e21 |
1 |
0 |
1 |
0 |
0 |
0 |
|||
e23 |
0 |
1 |
0 |
1 |
0 |
1 |
|||
測試用例 |
A6 |
Aa |
B9 |
BP |
C5 |
HY |
|||
A0 |
A@ |
B1 |
B* |
H4 |
E% |
(3)請把圖6.22中的程序流程圖轉(zhuǎn)換成控制流圖。
文章來源:http://www.zghlxwxcb.cn/news/detail-435196.html
?
到了這里,關(guān)于《軟件工程教程》(第2版) 主編:吳迪 馬宏茹 丁萬寧 第六章課后習題參考答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!