1. 程式人生 > >軟體測試(6)——自動化測試

軟體測試(6)——自動化測試

文章目錄

自動化測試

軟體測試工作量很大,其中許多操作是重複性的、非智力性的和非創造性的,並要求做準確細緻的工作,計算機就最適合於代替人工去完成這樣的任務。

自動化測試就是編寫軟體去測試其它軟體

手工測試和自動化測試

手工測試侷限性

  • 無法做到覆蓋所有程式碼路徑
  • 機械、重複,工作量大。如果有大量(幾千)的測試用例,需要在短時間內(1天)完成,手工測試幾乎不可能做到
  • 許多與時序、死鎖、資源衝突、多執行緒等有關的錯誤,通過手工測試很難捕捉到
  • 進行負載、效能測試,很難通過手工測試模擬大量資料或大量併發使用者
  • 可靠性測試時,常需要模擬系統執行10年、幾十年,以驗證穩定性,這也是手工測試無法做到的

自動化測試好處

  • 提高測試效率,縮短軟體開發測試周期,讓產品更快投放市場,節省人力資源,充分利用硬體,降低測試成本
  • 提高測試可重複性
  • 改善測試質量,增強測試的穩定性和可靠性,提高測試的準確度和精確度,增加軟體信任度
  • 實現一些手工情況難以開展的測試,能做負載、壓力測試等手工不能做的事情

自動化測試不可能完全代替手工測試

,多數情況下,手工測試和自動化測試應該相結合,以最有效的方法來完成測試任務。

適用場合

  • 非常重要的測試
  • 涉及範圍很廣的測試
  • 對主要功能的測試
  • 容易自動化的測試
  • 很快有回報的測試
  • 執行最頻繁的測試

不適用場合:功能不穩定的軟體、開發週期很短的軟體、一次性的軟體

體系評估

  • 可維護性:是否很容易使測試更新跟上軟體升級的步伐
  • 高效性:自動化測試的一個重要目標就是更經濟地執行測試
  • 可靠性:測試機制是否能給出精確而且可重現的結果
  • 相容性:是否允許測試用例為不同的測試目標而以不同方式組合
  • 可用性:是否容易使用,避免繁瑣的安裝配置等
  • 健壯性:是否可以處理意外情況而不退出或終止
  • 可移植性:在不同環境中執行測試的能力

原理和方法

  • 程式碼靜態和動態分析(Static and Dynamic Analysis)——白盒

    程式碼分析類似於高階編譯系統,一般針對不同的程式語言去構造分析工具

  • 捕獲和回放(Record and Replay)——黑盒

    先由手工完成一遍需要測試的流程,同時由計算機記錄下這個流程期間客戶端和伺服器端之間的通訊資訊,這些資訊通常是一些協議和資料,並形成特定的指令碼程式

    • 捕獲

      將使用者每一步操作都記錄下來。對GUI,記錄下操作物件,以及相對應的操作、狀態變化或是屬性變化。所有的記錄轉換為一種指令碼語言所描述的過程,以模擬使用者操作

    • 回放

      將指令碼語言所描述的過程轉換為螢幕上的操作,然後將被測系統的輸出記錄下來同預先給定的標準結果比較。

  • 指令碼技術

    • 指令碼是一組測試工具執行的指令集合,也是計算機程式的一種形式
    • 指令碼可以通過錄制測試產生,然後再做修改(減少直接編寫的工作量);也可以直接用指令碼語言編寫
    • 分類
      • 線性指令碼:結構為順序語句
      • 結構化指令碼:類似於結構化程式
      • 共享指令碼:允許一個指令碼呼叫另一個指令碼(類似C語言可以加#include)
      • 資料驅動指令碼:資料和執行控制分離
      • 關鍵字驅動指令碼:用關鍵詞序列表示測試