軟件測試工程師試題及答案

軟件測試工程師試題
一、填空
1、軟件測試階段的基本任務應當是根據軟件開發各階段的
和程序的
,精心設計一批“高產”的測試用例,利用這些測試用例
,找出軟件中潛藏的各種錯誤和缺陷。
2、測試用例不僅要選用合理的測試輸入數據,還需要選用不合理的測試輸入數據,這樣能更多地
,提高程序的可靠性。對於不合理的測試輸入數據,程序應
,並給出相應的提示。
3、動態測試指通過
發現錯誤。對軟件產品進行動態測試時使用黑盒測試法和
法。
4、靜態測試指
不在機器上運行,而是採用

的手段對程序進行檢測。
5、黑盒測試依據
,檢查程序是否滿足
。因此,黑盒測試由稱爲功能測試或
測試。
6、白盒測試以檢查處理過程的細節爲基礎,對程序中儘可能多的
進行測試,檢查內部

是否有錯,程序的
與預期的狀態是否一致。
7、在基本路徑測試中,獨立路徑是指包括一組以前沒有處理過的
的一條路徑。從程序圖來看,一條獨立路徑是至少包含有一條
的邊的路徑。
8、在單元測試中,驅動模塊的作用是用來模擬被測模塊的
。它的工作是接受
,以上層模塊調用被測模塊的形式
被測模塊,接收被測模塊的
並輸出。
9、在單元測試中,樁模塊用來代替被測模塊的
。其作用是
的信息。
10、錯誤的羣集現象是指模塊錯誤發現率與模塊的殘留錯誤數成
關係。

清空 提交

二、選擇題

1、在軟件測試中,下面說法中錯誤的是( )。
A. 測試是爲了發現程序中的錯誤而執行程序的過程
B. 測試是爲了表明程序是正確的
C. 好的測試方案是極可能發現迄今爲止尚未發現的錯誤的方案
D. 成功的測試是發現了至今爲止尚未發現的錯誤的測試

2、軟件測試的目的是( )。
A. 試驗性運行軟件
B. 發現軟件錯誤
C. 證明軟件正確
D. 找出軟件中全部錯誤

3、軟件測試用例主要由測試輸入數據和( )兩部分組成。
A. 測試計劃
B. 測試規則
C. 測試的預期結果
D. 以往測試記錄分析

4、與設計測試用例無關的文檔是( )。
A. 項目開發計劃
B. 需求規格說明書
C. 軟件設計說明書
D. 源程序

5、軟件測試是軟件質量保證的主要手段之一,測試的成本已超過( )的30%以上。因此,提高測試的有效性非常重要。
A. 軟件開發成本
B. 軟件維護成本
C. 軟件開發成本和維護成本
D. 軟件研製成本

6、“高產”的測試是指( )。
A. 用適量的測試用例說明被測試程序正確無誤
B. 用適量的測試用例說明被測試程序符合相應的要求
C. 用適量的測試用例發現被測試程序儘可能多的錯?
D. 用適量的測試用例糾正被測試程序儘可能多的錯誤

7、如果想要進行成功的測試,爲其設計測試用例主要依賴於( )。
A. 黑盒測試方法
B. 測試人員的經驗
C. 白盒測試方法
D. 錯誤推測法

8、使用白盒測試方法時,確定測試數據應根據( )和指定的覆蓋標準。
A. 程序的內部結構
B. 程序的複雜性
C. 使用說明書
D. 程序的功能

9、在用邏輯覆蓋法設計測試用例時,有語句覆蓋、分支覆蓋、條件覆蓋、判定-條件覆蓋、條件組合覆蓋和路徑覆蓋等。其中( )是最強的覆蓋準則。
A. 語句覆蓋
B. 條件覆蓋
C. 判定-條件覆蓋
D. 路徑覆蓋

10、在設計測試用例時,( )是用得最多的一種黑盒測試方法。
A. 等價類劃分
B. 邊界值分析
C. 因果圖
D. 功能圖

11、在黑盒測試中,着重檢查輸入條件的組合的測試用例設計方法是( )。
A. 等價類劃分
B. 邊界值分析
C. 錯誤推測法
D. 因果圖法

12、從下列敘述中,能夠與軟件開發各階段,如需求分析、設計、編碼相對應的軟件測試是( )。
A. 組裝測試、確認測試、單元測試
B. 單元測試、組裝測試、確認測試
C. 單元測試、確認測試、組裝測試
D. 確認測試、組裝測試、單元測試

13、單元測試將根據在( )階段中產生的規格說明進行。
A. 可行性研究與計劃
B. 需求分析
C. 概要設計
D. 詳細設計

14、組裝測試計劃是在( )階段制定的。
A. 可行性研究與計劃
B. 需求分析
C. 概要設計
D. 詳細設計

15、確認測試計劃是在( )階段制定的。
A. 可行性研究與計劃
B. 需求分析
C. 概要設計
D. 詳細設計

16、軟件的組裝測試最好是由( )承擔,以提高組裝測試的效果。
A. 該軟件的設計者
B. 該軟件開發組的負責人
C. 該軟件的編程者
D. 不屬於該開發組的人員

17、( )是簡化了的模擬較低層次模塊功能的虛擬子程序。
A. 過程
B. 函數
C. 仿真
D. 樁

18、( )是指爲查明程序中的錯誤和缺陷,可能使用的工具和手段。
A. 調試技術
B. 測試技術
C. 跟蹤法
D. 動態測試

19、從已發現故障的存在到找到準確的故障位置並確定故障的性質,這一過程稱爲( )。
A. 錯誤檢測
B. 故障排除
C. 調試
D. 測試

20、在程序設計的過程中應爲程序調試做好準備,主要體現在( )方面。
A. 採用模塊化、結構化的程序設計方法設計程序
B. 編寫程序時要爲程序調試提供足夠的靈活性
C. 根據程序調試的需要,選擇並安排適當的中間結果輸出和必要的斷?
D. 以上全是

21、統計資料表明,軟件測試的工作量佔整個軟件開發工作量的( )。
A. 30%
B. 70%
C. 40%~50%
D. 95%

22、軟件測試計劃是一些文檔,它們描述了( )。
A. 軟件的性質
B. 軟件的功能和測試用例
C. 軟件的規定動作
D. 對於預定的測試活動將要採取的手段

23、IBM公司的統計資料表明,使用靜態測試的方法最高可以查出在測試中查出的全部軟件錯誤的( )。
A. 80%
B. 70%
C. 50%
D. 35%

24、黑盒測試方法的優點是( )。
A. 可測試軟件的特定部位
B. 能站在用戶立場測試
C. 可按軟件內部結構測試
D. 可發現實現功能需求中的錯誤

25、白盒測試方法的優點是( )。
A. 可測試軟件的特定部位
B. 能站在用戶立場測試
C. 可按軟件內部結構測試
D. 可發現實現功能需求中的錯誤

26、等價類劃分完成後,就可得出( ),它是確定測試用例的基礎。
A. 有效等價類
B. 無效等價
C. 等價類表
D. 測試用例集

27、由因果圖轉換出來的( )是確定測試用例的基礎。
A. 判定表
B. 約束條件表
C. 輸入狀態表
D. 輸出狀態表

清空 提交

三、選擇填空題

1、從供選擇的答案中選出應填入下列( )中的字句。
軟件測試的目的是( A )。爲了提高測試的效率,應該( B )。使用白盒測試方法時,確定測試數據應根據( C )和指定的覆蓋標準。與設計測試數據無關的文檔是( D )。
軟件的集成測試工作最好由( E )承擔,以提高集成測試的效果?BR>供選擇的答案:
A.① 評價軟件的質量② 發現軟件的錯誤
③ 找出軟件中的所有錯誤④ 證明軟件是正確的
B.① 隨機地選取測試數據
② 取一切可能的輸入數據作爲測試數據
③ 在完成編碼以後制定軟件的測試計劃
④ 選擇發現錯誤的可能性大的數據作爲測試數據
C.① 程序的內部邏輯② 程序的複雜程度
③ 使用說明書④ 程序的功能
D.① 該軟件的設計人員② 程序的複雜程度
③ 源程序④ 項目開發計劃
E.① 該軟件的設計人員② 該軟件開發組的負責人
③ 該軟件的編程人員④ 不屬該軟件開發組的軟件人員

2、從供選擇的答案中選出應填入下列( )中的字句。
爲了把握軟件開發各個環節的正確性和協調性,人們需要進行( A )和( B )工作。( A )的目的是想證實在一給定的外部環境中軟件的邏輯正確性。它包括( C )和( D ),( B )則試圖證明在軟件生存期各個階段,以及階段間的邏輯( E )、( F )和正確性。
供選擇的答案:
A, B.① 操作 ② 確認 ③ 驗證 ④ 測試 ⑤ 調試
C, D.① 用戶的確認 ② 需求規格說明的確認
 ③ 程序的確認 ④ 測試的確認
E, F.① 可靠性 ② 獨立性 ③ 協調性 ④ 完備性 ⑤ 擴充性

3、從供選擇的答案中選出應填入下列( )中的字句。
測試過程需要三類輸入:( A )、( B )和( C )。請選擇正確的答案填入下圖中以完成測試信息處理的全過程。

供選擇的答案?
A~C.① 接口選擇② 軟件配置③ 硬件配置
 ④ 測試配置⑤ 測試環境⑥ 測試工具
D~ F.① 排錯 ② 可靠性分析 ③ 結果分析 ④ 數據分類

4、請從供選擇的答案中選出應填入下列( )中的字句。
程序的三種基本控制結構是( A )。它們的共同點是( B )。結構化程序設計的一種基本方法是( C )。軟件測試的目的是( D )。軟件調試的目的是( E )。
供選擇的答案:
A.① 過程,子程序,分程序 ② 順序,條件,循環
③ 遞歸,堆棧,隊列 ④ 調用,返回,轉移
B.① 不能嵌套使用 ② 只能用來寫簡單的程序
③ 已經用硬件實現 ④ 只有一個入口和一個出口
C.① 篩選法 ② 遞歸法 ③ 歸納法 ④ 逐步求精法
D.① 證明程序中沒有錯誤 ② 發現程序中的錯誤
③ 測量程序的動態特性 ④ 檢查程序中的語法錯誤
E.① 找出錯誤所在並改正之 ② 排除存在錯誤的可能性
③ 對錯誤性質進行分類 ④ 統計出錯的次數

5、從供選擇的答案中選出同下列各條敘述關係最密切的字句。
(1) 對可靠性要求很高的軟件,例如操作系統,由第三者對源代碼進行逐行檢查。
(2) 已有的軟件被改版時,由於受到變更的影響,改版前正常的功能可能發生異常,性能也可能下降。因此,對變更的軟件進行測試是必要的。
(3) 在意識到被測試模塊的內部結構或算法的情況下進行測試。
(4) 爲了確認用戶的需求,先做出系統的主要部分,提交給用戶試用。
(5) 在測試具有層次結構的大型軟件時,有一種方法是從上層模塊開始,由上到下進行測試。此時,有必要用一些模塊替代尚未測試過的下層模塊。
供選擇的答案:
A~E:① 仿真器 ② 代碼審查 ③ 模擬器 ④ 樁
⑤ 驅動器 ⑥ 域測試 ⑦ 黑盒測試 ⑧ 原型
⑨ 白盒測試 ⑩ 退化測試

6、從供選擇的答案中選出應填入下面敘述的( )內的正確答案。
軟件測試方法可分爲黑盒測試法和白盒測試法兩種。
黑盒測試法是通過分析程序的( A )來設計測試用例的方法。除了測試程序外,它還適用於對( B )階段的軟件文檔進行測試。
白盒測試法是根據程序的( C )來設計測試用例的方法。除了測試程序外,它也適用於對( D )階段的軟件文檔進行測試。
白盒法測試程序時常按照給定的覆蓋條件選取測試用例。( E )覆蓋比( F )覆蓋嚴格,它使得每一個判定的每一條分支至少經歷一次。( G )覆蓋既是判定覆蓋,又是條件覆蓋,但它並不保證使各種條件都能取到所有可能的值。( H )覆蓋比其他條件都要嚴格,但它不能保證覆蓋程序中的每一條路徑?BR> 單元測試一般以( I )爲主,測試的依據是( J )。
供選擇的答案:
A, C:① 應用範圍 ② 內部邏輯 ③ 功能 ④ 輸入數據
B, D:① 編碼 ② 軟件詳細設計 ③ 軟件總體設計 ④ 需求分析
E~H:① 語句 ② 判定 ③ 條件 ④ 判定/條件
⑤ 多重條件 ⑥ 路徑
I: ① 白盒法 ② 黑盒法
J: ① 模塊功能規格說明 ② 系統模塊結構圖 ③ 系統需求規格說明

7、從供選擇的答案中選出應填入下面敘述的( )內的正確答案。
集成測試也叫做( A )或( B )。通常,在( C )的基礎上,將所有模塊按照設計要求組裝成爲系統。子系統的集成測試特別稱爲?nbsp; D ),它所做的工作是要找出子系統和系統需求規格說明之間的( E )。需要考慮的問題是:在把各個模塊連接起來的時侯,穿越模塊接口的數據是否會( F ); 一個模塊的功能是否會對另一個模塊的功能產生不利的影響;各個( G )組合起來,能否達到預期要求的( H );( I )是否有問題;單個模塊的誤差累積起來是否會放大。
供選擇的答案:
A~D.① 單元測試 ② 部件測試 ③ 組裝測試
 ④ 系統測試 ⑤ 確認測試 ⑥ 聯合測試
E~I.① 子功能 ② 丟失 ③ 父功能
 ④ 局部數據結構 ⑤ 全局數據結構 ⑥ 不一致
 ⑦ 一致

8、從供選擇的答案中選出應該填入下列敘述的( )內的正確答案。
軟件測試中常用的靜態分析方法是( A )和( B )。( B )用於檢查模塊或子程序間的調用是否正確。分析方法(白盒方法)中常用的方法是( C )方法。非分析方法(黑盒方法)中常用的方法是( D )方法和( E )方法。( E )方法根據輸出對輸入的依賴關係設計測試用例。
供選擇的答案:
A~B:① 引用分析 ② 算法分析 ③ 可靠性分析 ④ 效率分析
⑤ 接口分析 ⑥ 操作分析
C~E:① 路徑測試 ② 等價類 ③ 因果圖 ④ 歸納測試
⑤ 綜合測試 ⑥ 追蹤 ⑦ 深度優先 ⑧ 調試
⑨ 相對圖

9、從供選擇的答案中選出應填入下面敘述的( )內的正確答案。
等價類劃分是一種典型的( A )方法,也是一種非常實用的重要的測試方法。使用這一方法,完全不考慮程序的( B )。用所有可能輸入的數據來測試程序是不可能的,只能從全部可供輸入的數據中選擇一個( C )進行測試。( D )是指某個輸入域的集合,在該集合中,各個輸入數據對於揭露程序中的錯誤是( E )。
供選擇的答案:
A: ① 白盒測試方法 ② 黑盒測試方法
B: ① 內部結構 ② 外部環境 ③ 順序 ④ 流程
C~E:① 全集 ② 子集 ③ 等效?BR> ④ 不同的 ⑤ 等價類 ⑥ 典型集

10、從供選擇的答案中選出應填入下面敘述的( )內的正確答案。

① 黑盒測試方法的缺點是( )和( )。
A. 不可測試軟件的特定部位
B. 不能發現功能需求中的錯誤
C. 無法檢驗軟件的外部特性
D. 無法測試未實現功能需求的軟件的內部缺陷

② 白盒測試方法的缺點是( )和( )。
A. 不可測試軟件的特定部位
B. 不能發現功能需求中的錯誤
C. 無法檢驗軟件的外部特性
D. 無法測試未實現功能需求的軟件的內部缺陷

四、問答計算題
1、從下列關於軟件測試的敘述中,選出5條正確的敘述。
(1) 用黑盒法測試時,測試用例是根據程序內部邏輯設計的。
(2) 儘量用公共過程或子程序去代替重複的代碼段。
(3) 測試是爲了驗證該軟件已正確地實現了用戶的要求。
(4) 對於連鎖型分支結構,若有n個判定語句,則有2n條路徑。
(5) 儘量採用複合的條件測試,以避免嵌套的分支結構?BR> (6) GOTO語句概念簡單,使用方便,在某些情況下,保留GOTO語句反能使寫出的程序更加簡潔。
(7) 發現錯誤多的程序模塊,殘留在模塊中的錯誤也多。
(8) 黑盒測試方法中最有效的是因果圖法。
(9) 在做程序的單元測試時,樁(存根)模塊比驅動模塊容易編寫。
(10) 程序效率的提高主要應通過選擇高效的算法來實現。

2、對小的程序進行窮舉測試是可能的,用窮舉測試能否保證程序是百分之百正確呢?

3、在任何情況下單元測試都是可能的嗎?都是需要的嗎?

4、如圖所示的程序有三條不同的路徑。分別表示爲L1(a→b)、L2(a→c→d)、L3(a→c→e),或簡寫爲ace、abd、abe及acd。根據判定覆蓋、條件覆蓋、判定–條件覆蓋、條件組合覆蓋和路徑覆蓋等五種覆蓋標準,從供選擇的答案中分別找出滿足相應覆蓋標準的最小測試用例組。(用①~ ⑩回答)

供選擇的答案:
①x = 90, y = 90②x = 50, y = 50

③x = 90, y = 90④x = 90, y = 70
x = 50, y = 50x = 40, x = 90
⑤x = 90, y = 90⑥x = 90, y = 90
x = 50, y = 50x = 70, y = 90
x = 90, y = 70x = 50, y = 50
⑦x = 90, y = 90⑧x = 90, y = 90
x = 50, y = 50x = 50, y = 50
x = 80, y = 70x = 90, y = 50
x = 70, y = 90x = 80, y = 80

⑨x = 90, y = 90⑩x = 90, y = 90
x = 90, y = 70x = 80, y = 80
x = 90, y = 30x = 90, y = 70
x = 70, y = 90x = 90, y = 30
x = 30, y = 90x = 70, y = 90
x = 70, y = 70x = 30, y = 90
x = 50, y = 50x = 70, y = 70
x = 50, y = 50

5、在白盒測試用例設計中,有語句覆蓋、分支覆蓋、條件覆蓋、路徑覆蓋等,其中( A )是最強的覆蓋準則。爲了對如下圖所示的程序段進行覆蓋測試,必須適當地選取測試用例組。若x, y是兩個變量,可供選擇的測試用例組共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四組,如表中給出,則實現判定覆蓋至少應採取的測試用例組是( B )或( C );實現條件覆蓋至少應採取的測試用例組是( D );實現路徑覆蓋至少應採取的測試用例組是( E )或( F )。

供選擇的答案
A:① 語句覆蓋 ② 條件覆蓋 ③ 判定覆蓋 ④ 路徑覆蓋
B~F:① Ⅰ和Ⅱ組 ② Ⅱ和Ⅲ組 ③ Ⅲ和Ⅳ組 ④ Ⅰ和Ⅳ組
 ⑤ Ⅰ、Ⅱ、Ⅲ組 ⑥ Ⅱ、Ⅲ、Ⅳ組 ⑦ Ⅰ、Ⅲ、Ⅳ組
 ⑧ Ⅰ、Ⅱ、Ⅳ組

6、下面是快速排序算法中的一趟劃分算法,其中datalist是數據表,它有兩個數據成員:一是元素類型爲Element的數組V,另一個是數組大小n。算法中用到兩個操作,一是取某數組元素V[i]的關鍵碼操作getKey ( ),一是交換兩數組元素內容的操作Swap( ):
int Partition ( datalist &list, int low, int high ) {
//在區間[ low, high ]以第一個對象爲基準進行一次劃分,k返回基準對象回放位置。
int k = low; Element pivot = list.V[low]; //基準對象
for ( int i = low+1; i <= high; i++ ) //檢測整個序列,進行劃分
if ( list.V[i].getKey ( ) < pivot.getKey( ) && ++ k != i )
Swap ( list.V[k], list.V[i] );//小於基準的交換到左側去
Swap ( list.V[low], list.V[k] );//將基準對象就位
return k; //返回基準對象位置
}
(1) 試畫出它的程序流程圖;
(2) 試利用路徑覆蓋方法爲它設計足夠的測試用例(循環次數限定爲0次,1次和2次)。

7、下面是選擇排序的程序,其中datalist是數據表,它有兩個數據成員:一是元素類型爲Element的數組V,另一個是數組大小n。算法中用到兩個操作,一是取某數組元素V[i]的關鍵碼操作getKey ( ),一是交換兩數組元素內容的操作Swap( ):
void SelectSort ( datalist & list ) {
//對錶list.V[0]到list.V[n-1]進行排序, n是表當前長度。
for ( int i = 0; i < list.n-1; i++ ) {
int k = i; //在list.V[i].key到list.V[n-1].key中找具有最小關鍵碼的對象
for ( int j = i+1; j < list.n; j++)
if ( list.V[j].getKey ( ) < list.V[k].getKey ( ) ) k = j;
//當前具最小關鍵碼的對象
if ( k != i ) Swap ( list.V[i], list.V[k] );//交換
}
}
(1) 試計算此程序段的McCabe複雜性;
(2) 用基本路徑覆蓋法給出測試路徑;
(3) 爲各測試路徑設計測試用例。

8、根據下面給出的規格說明,利用等價類劃分的方法,給出足夠的測試用例。
“一個程序讀入三個整數。把此三個數值看成是一個三角形的三個邊。這個程序要打印出信息,說明這個三角形是三邊不等的、是等腰的、還是等邊的。”

9、設要對一個自動飲料售貨機軟件進行黑盒測試。該軟件的規格說明如下:
“有一個處理單價爲1元5角錢的盒裝飲料的自動售貨機軟件。若投入1元5角硬幣,按下“可樂”、“雪碧”或“紅茶”按鈕,相應的飲料就送出來。若投入的是2元硬幣,在送出飲料的同時退還5角硬幣。”
(1) 試利用因果圖法,建立該軟件的因果圖;
(2) 設計測試該軟件的全部測試用例。

11、應該由誰來進行確認測試?是軟件開發者還是軟件用戶?爲什麼?

答案

三、選擇填空題
1、解答:A. ② B. ④ C. ① D. ④ E. ④
2、解答:A. ② B. ③ C. ② D. ③ E. ③ F. ④
到程序的測試爲止,軟件開發工作已經經歷了許多環節,每個環節都可能發生問題。爲了把握各個環節的正確性,人們需要進行各種確認和驗證工作。
所謂確認,是一系列的活動和過程,其目的是想證實在一個給定的外部環境中軟件的邏輯正確性。它包括需求規格說明的確認和程序的確認,而程序的確認又分爲靜態確認與動態確認。靜態確認一般不在計算機上實際執行程序,而是通過人工分析或者程序正確性證明來確認程序的正確性;動態確認主要通過動態分析和程序測試來檢查程序的執行狀態,以確認程序是否有問題。
所謂驗證,則試圖證明在軟件生存期各個階段,以及階段間的邏輯協調性、完備性和正確性。下圖中所示的就是軟件生存期各個重要階段之間所要保持的正確性。它們就是驗證工作的主要對象。

確認與驗證工作都屬於軟件測試。在對需求理解與表達的正確性、設計與表達的正確性、實現的正確性以及運行的正確性的驗證中,任何一個環節上發生了問題都可能在軟件測試中表現出來。
3、解答:A. ② B. ④ C. ⑥ D. ③ E. ① F. ②
4、解答:A. ② B. ④ C. ④ D. ② E. ①

5、解答:(1) ② (2) ⑩ (3) ⑨ (4) ⑧ (5) ④

6、解答: A. ③ B. ④ C. ② D. ② E. ②
F. ① G. ④ H. ⑤ I. ① J. ①
7、解答: A. ③ B. ⑥ C. ① D. ② E. ⑥
F. ② G. ① H. ③ I. ⑤ A、B的答案可互換

8、解答:A. ① B. ⑤ C. ① D. ② E. ③
軟件測試中常用的靜態分析方法是引用分析和接口分析。接口分析用於檢查模塊或子程序間的調用是否正確。分析方法(白盒方法)中常用的方法是路徑測試方法。非分析方法(黑盒方法)中常用的方法是等價類(劃分)方法和因果圖方法。因果圖方法根據輸出對輸入的依賴關係設計測試用例。

9、解答:A. ② B. ① C. ② D. ⑤ E. ③

10、解答:A和D,B和C,
四、問答計算題
1、解答:正確的敘述有(4)、(5)、(6)、(7)、(10)。
黑盒測試主要是根據程序的有關功能規格說明和覆蓋準則來設計測試用例,進行測試的,不是根據程序的內部邏輯來設計測試用例,這是白盒測試做的事情。在所有黑盒測試方法中,最有效的不是因果圖法,而是邊界值分析方法。測試的目的是儘可能多地發現軟件中的錯誤,其附帶的收穫纔是驗證該軟件已正確地實現了用戶的要求。測試的一條重要原則是:發現錯誤多的程序模塊,殘留在模塊中的錯誤也多。軟件可靠性模型(Shooman)就是依據這個原則建立它的公式的。對於連鎖型分支結構,若有n個判定語句,則有2n條路徑。因此,隨着n的增大,路徑數增長非常快。單元測試時,因爲樁模塊要模擬子模塊的功能,這不是一件容易的事情,而驅動模塊只是控制被測模塊的執行,所以樁模塊的編寫比驅動模塊的編寫要難得多。
在程序設計風格方面,如果重複的代碼段沒有明顯的功能,不可以抽取出來形成獨立的公共過程或子程序,只有在這些代碼段表現出獨立的功能時,纔可把它們抽取出來形成獨立的公共過程或子程序。另外,程序效率的提高主要應通過選擇高效的算法或使用高效的語言編譯器來實現。GOTO語句概念簡單,使用方便,在某些情況下,保留GOTO語句反能使寫出的程序更加簡潔,這句話是正確的。
2、解答:對小程序進行窮舉測試,不見得能保證程序百分之百正確。所謂窮舉測試是拿所有可能的輸入數據來作爲測試用例(黑盒測試),或覆蓋程序中所有可能的路徑(白盒測試)。對於小程序來說,實際上並不能真正作到窮舉測試。例如前面講過,一個小程序P只有兩個輸入X和Y及輸出Z,在字長爲32位的計算機上運行。如果X、Y只取整數,考慮把所有的X、Y值都做爲測試數據,按黑盒方法進行窮舉測試,這樣做可能採用的測試數據組(Xi,Yi),基數(radix)i的最大可能數目爲:232×232=264。如果程序P測試一組X、Y數據需要1毫秒,而且假定一天工作24小時,一年工作365天,要完成264組測試,需要5億年。

3、解答:單元測試又稱模塊測試,是針對軟件設計的最小單位─程序模塊,進行正確性檢驗的測試工作。其目的在於發現各模塊內部可能存在的各種差錯。單元測試需要從程序的內部結構出發設計測試用例。多個模塊可以平行地獨立進行單元測試。單元測試是在編碼階段完成的,每編寫出一個程序模塊,就開始做這個模塊的單元測試,所以只要採用模塊化方法開發軟件,單元測試都是必需的。它可由編寫程序的人來完成。因爲它需要根據程序的內部結構設計測試用例,對於那些不瞭解程序內部細節的人,這種測試無法進行。
4、解答:針對覆蓋標準,相應的測試用例組如下

注意:測試是一個程序的執行過程。對於邏輯表達式 A or B,當A爲真時不再對B做判斷,對於邏輯表達式 A and B,當A爲假時不再對B做判斷。未能做判斷的條件,在解答中用“□”表示。

此測試用例組在滿足條件覆蓋的情況下又滿足了判定覆蓋的要求。

在條件組合覆蓋情形,(x?90)or(y?90)的組合有4種,與條件(x+y?140)的組合應有8種,但(x+y?140=F)and((x?90=T)or(y?90=T))不可能出現,因此,7個測試用例就夠了。

因爲流程圖有3條路徑,只需3個測試用例就夠了。如果將判定中的複合條件表達式改爲單個條件的嵌套選擇結構,第一個判定有3條路徑,其中兩條路徑通向第二個判定。第二個判定有4條路徑,組合起來總共應有9條路徑。但是,其中受測試條件的限制,有3條路徑不可達,因此,程序中應有6條路徑,需要6個測試用例來覆蓋它們。

5、解答:A. ④ B. ⑤ C. ⑧ D. ④ E. ⑤ F. ⑧
判定表

爲判定覆蓋選取測試用例情形:對第一個判定選取測試用例組Ⅰ和Ⅱ,當用Ⅰ覆蓋判定的T分支時,不會走到第二個分支;當用Ⅱ覆蓋判定的F分支時,第二個判定需另取一個測試用例組覆蓋其T分支,此時取測試用例組Ⅲ或Ⅳ即可。因此,選擇⑤或⑧均可。
爲條件覆蓋選取測試用例情形:取測試用例組Ⅰ和Ⅳ就可以覆蓋所有4個條件的取值。
爲路徑覆蓋選取測試用例情形:總共3條路徑,需3個測試用例,可選使各路徑爲T的測試用例。Ⅰ、Ⅱ、Ⅲ或Ⅰ、Ⅱ、Ⅳ均可,可選⑤或⑧。
6、解答:(1)流程圖如下。

(2) 測試用例設計

畫程序流程圖是設計測試用例的關鍵。從以往同學解題的經驗來看,在畫流程圖時就出錯了。所以首先要把流程圖中的邏輯關係搞清楚再畫出正確的流程圖。考慮測試用例設計需要首先有測試輸入數據,還要有預期的輸出結果。對於此例,控制循環次數靠循環控制變量i和循環終值high。循環0次時,取low = high,此時一次循環也不做。循環一次時,取low +1 = high,循環二次時,取low+2 = high。
若出題時特別強調要使用BRO策略,條件V[i] < pivot && ++k≠i的約束集合爲 { (<, < ), (<, = ), (=, <), (>, < ) },因此,測試用例設計爲:
單擊放大
7、解答:(1) McCabe環路複雜性 = 5
(2) 獨立路徑有5條:
①③
①②⑤⑧……
①②⑤⑨……
①②④⑥……
①②④⑦……
(3) 爲各測試路徑設計測試用例:
路徑①③:取n = 1
路徑①②⑤⑧……:取n = 2,
預期結果:路徑⑤⑧③不可達
路徑①②⑤⑨……:取n = 2,
預期結果:路徑⑤⑨③不可達
路徑①②④⑥⑤⑧③:
取n = 2, V[0] = 2, V[1] = 1, 預期結果:k = 1, V[0] = 1, V[1] = 2
路徑①②④⑥⑤⑨③:
取n = 2, V[0] = 2, V[1] = 1, 預期結果:k = 1, 路徑⑨③不可達
路徑①②④⑦⑤⑧③:
取n = 2, V[0] = 1, V[1] = 2, 預期結果:k = 0, 路徑⑧③不可達
路徑①②④⑦⑤⑨③:
取n = 2, V[0] = 1, V[1] = 2, 預期結果:k = 0, V[0] = 1, V[1] = 2

8、解答:設三角形的三條邊分別爲A, B, C。如果它們能夠構成三角形的三條邊,必需滿足:A > 0,B > 0,C > 0,且A + B > C,B + C > A,A + C > B。
如果是等腰的,還要判斷是否A = B,或B = C,或A = C。
對於等邊的,則需判斷是否A = B,且B = C,且A = C。
列出等價類表:

測試用例設計(略)
9、解答:
(1) 因果圖

(2) 測試用例設計

測試用例 每一縱列爲一個測試用例
10、解答:由shooman公式:

其中,IT = 105,MTTF1 = 0.4,T1 = 160,n1 = 100,MTTF2 = 2,T2 = 320,n2 = 300。得:

(1) 解得程序中固有得錯誤總數ET = 350,此外K = 1000。
(2) 設MTTF = 10,有

 解得x = 340。由可靠性累積曲線EC (t) = ET (1-e-K1 t ),
 得  100 = 350 (1-e-160K1)
        300 = 350 (1-e-320K1)

因此,3-3*e-160K1 = 1-e-320K1
2 = 3*e-160K1- e-320K1 設 x = e-160K1
有 x2 – 3x + 2 = 0
解得 x1 = 2,x2 = 1, K1 = ln(x1)/(-160) = - 0.693/160 ? 0.00433。
因爲ln(x2)/(-160) = 0,捨去
代入:340 = 350 (1-e-K1 t ) = 350(1-e-0.00433 t )
350e-0.00433 t = 10
t = (ln(35))/0.00433 ? 821 (小時)
因此求得爲使MTTF = 10,測試和調試該程序需要花費821小時。
(3) MTTF與測試時間t之間的函數關係:
因爲EC (t) = ET (1-e-K1 t ),則ET - EC (t) = ET e-K1 t。代入shooman公式:

11、解答:在對照需求做有效性測試和軟件配置審查時,是由軟件開發者在開發環境下進行的測試。而接下來做驗收測試時則以用戶爲主。軟件開發人員和QA(質量保證)人員也應參加。由用戶參加設計測試用例,使用用戶界面輸入測試數據,並分析測試的輸出結果。一般使用生產中的實際數據進行測試。
如果軟件是爲多個客戶開發的,則需要進行α測試和β測試。α測試是由一個用戶在開發環境下進行的測試,也可以是公司內部的用戶在模擬實際操作環境下進行的測試。軟件在一個自然設置狀態下使用。開發者坐在用戶旁邊,隨時記下錯誤情況和使用中的問題。這是在受控制的環境下進行的測試。
β測試是由軟件的多個用戶在一個或多個用戶的實際使用環境下進行的測試。這些用戶是與公司簽定了支持產品預發行合同的外部客戶,他們要求使用該產品,並願意返回有關錯位錯誤信息給開發者。與α測試不同的是,開發者通常不在測試現場。因而,β測試是在開發者無法控制的環境下進行的軟件現場應用。

發佈了50 篇原創文章 · 獲贊 50 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章