天天看點

《軟體測試的藝術》總結軟體測試的藝術

軟體測試的藝術

文章目錄

  • 軟體測試的藝術
    • 2.軟體測試的心理學和經濟學
      • 軟體測試的心理學
      • 軟體測試的經濟學
      • 軟體測試的原則
    • 3.代碼檢查、走查與評審
    • 4.測試用例的設計
      • 白盒測試
      • 黑盒測試
      • 錯誤猜測
    • 6.更進階别的測試
      • 軟體産品開發周期
      • 功能測試
      • 系統測試
      • 驗收測試
      • 安裝測試
      • 測試計劃
    • 5.子產品(單元)測試
      • 測試用例設計
      • 将子產品組裝成工作程式的方式
      • 增量測試
      • 執行測試
    • 7.可用性(或使用者體驗)測試
      • 可用性測試流程
    • 8.調試
      • 調試的步驟
      • 調試方法
    • 9.靈活開發模式下的測試
      • 靈活測試
      • 極限程式設計與測試
    • 10.網際網路應用測試
      • 網際網路應用系統
    • 11.移動應用測試
      • 面臨的挑戰

2.軟體測試的心理學和經濟學

軟體測試的心理學

  • 軟體測試是為發現錯誤而執行程式的過程

軟體測試的經濟學

  • 黑盒測試(資料驅動的測試)
    • 窮舉輸入測試
  • 白盒測試(邏輯驅動的測試)
    • 窮舉路徑測試

軟體測試的原則

  • 測試用例中一個必需部分是對于預期輸出或結果的定義
  • 程式員應當避免測試自己編寫的軟體
  • 編寫軟體的組織不應當測試自己編寫的軟體
  • 應當徹底檢查每個測試的執行結果
  • 測試用例的編寫不僅應當根據有效和預期的輸入情況,而且也應當根據無效的輸入情況和未預料到的輸入情況
  • 檢查程式是否“未做其應該做的”僅是測試的一半,測試的另一半是檢查程式是否“做了其不應該做的”
  • 應避免測試用例用後即棄,除非軟體本身就是一個一次性的軟體
  • 計劃測試工作時不應默許假定不會發生錯誤
  • 程式某部分存在更多錯誤的可能性,與該部分已發生錯誤的數量成正比
  • 軟體測試是一項極富創造性、極具智力挑戰性的工作

3.代碼檢查、走查與評審

代碼檢查

代碼走查

桌面檢查

同行評審

4.測試用例的設計

白盒測試

  • 語句覆寫:程式中的每個語句至少能被執行一次
  • 判定覆寫:程式中每個判定至少有一次為真值,有一次為假值,使得程式中的每個分支至少執行一次
  • 條件覆寫:程式各判定中的每個條件獲得各種可能的取值至少滿足一次
  • 判定/條件覆寫:程式中每個判定至少有一次為真值,有一次為假值,使得程式中的每個分支至少執行一次,且使得各判定中的每個條件獲得各種可能的取值至少滿足一次
  • 多重條件覆寫:判定中的每種組合都至少被執行一次

黑盒測試

  • 等價劃分
    • 确定等價類
      • 有效等價類
      • 無效等價類
    • 生成測試用例
      • 測試用例盡可能多的覆寫有效等價類,單個測試用例覆寫無效等價類
  • 邊界值分析
  • 因果圖
    • 限制E表示其必須總為真,而二者最多隻有一個為1
    • 限制I表示其為真時,三者中至少有一個為1
    • 限制0表示有且隻有一個必須為1
    • 限制R表示如果一個為1,另一個也必須為1
    • 限制M表示如果一個為0,則另一個強制為0

錯誤猜測

6.更進階别的測試

軟體産品開發周期

  • 1.将軟體最終使用者的要求轉換為一系列書面的需求
  • 2.通過評估可行性和成本、消除相抵觸的使用者需求、建立優先級和平衡關系,将使用者需求轉換為具體的目标
  • 3.将上述目标轉換為一個準确的産品規格說明,将産品視為一個黑盒,僅考慮其接口以及與最終使用者的互動。該規格說明被稱為”外部規格說明“
  • 4.如果該産品是一個系統,那麼下一步驟就是系統設計。該步驟将系統分割為單獨的程式、部件或子系統,并定義它們的接口
  • 5.通過定義每個子產品的功能、子產品的層次結構以及子產品間的接口,來設計程式或程式集合的結構
  • 6.設計一份準确的規格說明,定義每個子產品的接口與功能
  • 7.經過一個或更多的子步驟,将子產品接口規格說明轉換為每個子產品的源代碼算法

功能測試

  • 一個試圖發現程式與其外部規格說明之間存在不一緻的過程

系統測試

  • 将系統或程式與其初始目标進行比較

驗收測試

安裝測試

測試計劃

  • 一個良好的測試計劃應該包括目标、結束準則、進度、責任、測試用例庫及标準、工具、計算機時間、硬體配置、內建、跟蹤步驟、調試步驟、回歸測試

5.子產品(單元)測試

測試用例設計

  • 子產品的規格說明
  • 子產品的源代碼

将子產品組裝成工作程式的方式

  • 增量測試(內建)
    • 先将下一步要測試的子產品組裝到測試完成的子產品集合中,然後再進行測試
  • 非增量測試(“大爆炸”測試)
    • 先獨立的測試每個子產品,然後再将這些子產品組裝成完整的程式

增量測試

  • 自頂向下測試
    • 要成為合乎條件的下一個子產品,至少一個該子產品的從屬子產品(調用它的子產品)事先經過了測試
    • 關鍵子產品(容易發生錯誤)、I/O子產品盡可能早地添加進來
  • 自底向上測試
    • 要成為合乎條件的下一個子產品,該子產品所有的從屬子產品(它調用的子產品)事先經過了測試

執行測試

  • 子產品存在錯誤
  • 預期結果不正确

7.可用性(或使用者體驗)測試

可用性測試流程

  • 測試使用者的選擇
  • 需要多少使用者進行測試
  • 資料采集方法
    • 發生思考
    • 眼球追蹤
  • 可用性調查問卷
  • 判斷何時收工

8.調試

調試的步驟

  • 确定程式中可疑錯誤的準确性質和位置
  • 修改錯誤

調試方法

  • 蠻力法調試
  • 歸納法調試
  • 演繹法調試
  • 回溯法調試
  • 測試法調試

9.靈活開發模式下的測試

靈活測試

極限程式設計與測試

  • 極限程式設計(XP)
  • 極限測試(連續測試)
    • 極限單元測試
    • 驗收測試

10.網際網路應用測試

網際網路應用系統

  • 表示層
    • 提供了GUI
  • 業務邏輯層
    • 模拟業務流程,比如使用者身份驗證、事務處理
  • 資料通路層
    • 内容
      • 存儲了供應用系統使用的或從最終使用者收集來的資料
    • 測試
      • 響應時間
      • 資料完整性
        • 在資料存儲的方式中發現問題
      • 容錯性和可恢複性
        • 最大化MTBF(平均故障間隔時間),最小化MTTR(平均恢複前時間)

11.移動應用測試

面臨的挑戰

  • 移動裝置多樣性
  • 營運網絡基礎設施
  • 腳本程式設計
  • 可用性測試

XMind - Trial Version