天天看點

談談測試用例中的前置條件1.背景2.前置條件的組成3.關于被測對象相關資料的準備4.說明

1.背景

一個測試用例基本要素包括以下 3 點:

  • 前置條件,或者叫被測對象的初始狀态
  • 執行步驟
  • 預期結果

在簡單子產品或單元測試中,大家對于前置條件的了解很容達成共識。但在面對一個複雜系統時,則關于前置條件容易困擾,或是因為可操作性,或是因為可界定性。

2.前置條件的組成

  • 被測對象的程式版本
    • 在測一個庫、一個類、一個可執行程式時,版本很容易定義;但面對一個網站時,要說清楚版本不是一件容易的事情。
  • 被測對象的相關資料,包括
    • 資料庫裡的資料
    • 緩存服務中的資料
    • 隊列中的資料
    • 配置檔案中的資訊
    • ……
  • 測試環境
    • 測試工具與被測對象的網絡拓撲情況
    • 測試工具、被測對象、通訊網絡等計算、帶寬、存儲資源的情況

3.關于被測對象相關資料的準備

極簡情況:測試一個類的方法

可以通過構造函數、借助 set 接口等來保證方法調用前,類處在一個确定的狀态中。

正常情況:測試一個網站的注冊功能

空庫的情況下,

  • 第一次執行注冊 a 使用者 時成功
  • 第二次執行注冊 a 使用者時回報失敗。

此時都代表網站正常,但兩次測試屬于不同的測試用例,因為其系統的初始情況不一樣。

為了可重複驗證測試功能,需要在注冊 a 使用者,清除掉 a 使用者的注冊資訊,以保證可重入性。此時,注冊測試用例的前置條件中的資料要求就是,資料庫中沒有 a 使用者的資訊。

正常情況:測試清單的翻頁功能

因為資料記錄條數不同,導緻頁面顯示的情況會不同。比如說:

  • 空資料
  • 不滿一頁的資料
  • 10 頁的資料
  • 100 頁的資料

此時,就需要讓資料庫裡的資料處在不同的資料量情況下,才能進行有效測試。可選的方案包括:

  • 每次測試前,人工清理和準備需要的資料
  • 每次測試前,執行專用的資料生成 SQL(含清理資料)
  • 在資料庫裡提前生成4 種資料,借助一些其他查詢條件來區分。即重點測試翻頁功能,其他功能就能用來輔助功能測試。
  • 提前建立4 種資料庫快照,按需恢複到需要的資料庫狀态。

4.說明

  • 離開前置條件來談測試用例執行結果,很難界定是否真是系統的 bug。
  • 并不需要控制所有前置條件的一緻性,一是單個測試用例隻與有限的資料相關,二是控制絕對一緻的成本很高,不劃算。