關鍵字測試用例設計
關鍵字測試設計的標誌是廣泛重用關鍵字來構建專注的測試用例庫,以測試軟體包的全部功能範圍。在自動化測試的特殊情況下,更強大、更有效和更高效的框架廣泛重用了關鍵字實現程式碼和更低級別的其他程式碼。
關鍵字驅動測試是一種更高的抽象,通常是對為驗證軟體功能而設計、實現和執行的測試的自動化。測試通常首先被設想、記錄和執行為手動測試用例中的一系列步驟,然後轉換為自動化以進行迴歸測試,但這種方法的悠久歷史本身並不排除改變為使用關鍵字測試用例進行手動或自動測試的可能性。在計劃的自動化測試環境中,從一種格式生成的手動測試轉換為另一種框架中的自動化測試用例的低效率可以透過直接從關鍵字測試用例開始來避免。關鍵字測試用例可以根據計劃手動驅動,在未來的自動化實現之前手動驅動,或者根據需要手動驅動,當由於任何原因自動化尚未完成時。
關鍵字測試用例方法包括三個主要活動部門,三個角色可以根據資源技能和優勢分別承擔每個部門的責任,但勞動力的分離不是強制性的。關鍵字測試用例設計需要被測應用程式(AUT)領域專業知識和測試方法論的優勢。關鍵字實現可能需要 AUT 介面細節的技術優勢和程式設計技能。所需的技能水平將取決於 AUT 的複雜性/非典型實現。而關鍵字測試執行需要理解測試聚合、分析和問題報告、解決和聯絡。
測試設計過程和後續維護的成功至少部分取決於要測試的 AUT 功能以及測試本身的組織。一個常見的解決方案是樹狀結構,它具有節點(這裡稱為分割槽),將應用程式的功能劃分為邏輯的關注或範圍領域,表示樹的最底層可測試的功能,幷包含該級別的測試用例。每個分割槽都有名稱、描述,並且可以進行優先順序排序。
測試用例被設計為一系列關鍵字,包括關鍵字引數,以驗證特定的 AUT 功能。測試設計師在測試用例中新增關鍵字引數值以驅動特定操作。關鍵字測試用例在實現和執行後,將導航到 AUT 並輸入值以建立 AUT 功能的條件(即設定驗證),然後驗證 AUT 是否產生了預期的結果。設計師通常新增更多關鍵字(和值)以將 AUT 返回到初始條件(即在驗證後拆除)。
以下是一個酒店預訂條目驗證和取消測試用例的示例
| 關鍵字 | 引數 1 | 引數 2 | 引數 3 | 引數 4 | 引數 5 |
| 酒店預訂系統啟動 | |||||
| 國家 | 城市 | 入住日期 | 退房日期 | 房價型別 | |
| 酒店預訂輸入 | 美國 | 加利福尼亞州 | &Date("mm/dd/yy", 5) | &Date("mm/dd/yy", 7) | AAA |
| 酒店名稱 | |||||
| 酒店選擇 | 海港觀景宮 | ||||
| 字首 | 名字 | 姓氏 | 地址 1 | 地址 2 | |
| 賓客詳細資訊輸入 | 先生 | Aditya | Kuram | Plot #176, TMC Mhills | Secunderabad AP India |
| 床型 | 吸菸房 | 航空公司 | 航班號 | 信用卡型別 | |
| 特殊資訊輸入 | 一張特大床 | 是 | 印度航空 | AI123 | 大萊卡 |
| 酒店名稱 | 預訂 ID | 客戶姓名 | 地址 1 | 城市 | |
| 驗證預訂確認 | 海港觀景宮 | &Keep(ResId) | Aditya Kuram 先生 | Plot #176, TMC Mhills | Secunderabad AP India |
| 信用卡號 | 預訂 ID | ||||
| 取消預訂 | 123 | &ResId | |||
| 酒店預訂系統關閉 | |||||
關鍵字是關鍵字測試設計的基本、可重用構建塊。關鍵字定義驅動或獲取應用程式物件資訊的動作。關鍵字定義了帶有一個動作描述性關鍵字名稱(例如,酒店預訂系統啟動、酒店預訂輸入、酒店選擇、預訂確認驗證或酒店預訂關閉)和關鍵字引數名稱(例如,國家、城市、入住日期、退房日期)的關鍵字。每個關鍵字(對於 GUI 應用程式)都與一個(有時更多)GUI 視窗相關聯。每個關鍵字引數可能與一個視窗物件相關聯,例如列表框或按鈕。關鍵字的重用確保快速測試開發和易於維護。
關鍵字由測試設計師在預期在關鍵字測試用例中使用之前建立,或者更常見的是,關鍵字是按需建立的,即在實現關鍵字測試用例時需要時建立。關鍵字引數名稱是與關鍵字一起建立的。另一方面,關鍵字引數值如上所述輸入到測試用例中,以服務於每個測試用例的目的。這些值是文字,可以用來做
- 一個明確的引數值
- 包括以下內容的表示式
- 變數
- 功能
- 變數和顯式值的組合
另請注意,關鍵字不僅是關鍵字測試設計的基本、可重用構建塊,而且也是測試自動化實現的基本組成部分。執行時測試執行稱為逐個關鍵字執行。
對於某些測試,測試人員需要使用不同的值重複執行測試用例,以進行每次迭代。這是使用資料表實現的。測試用例關鍵字引數值使用變數。資料表中填充了與測試用例迭代中使用的變數相關的值。測試用例將執行與資料表中記錄數量相同的次數。
資料表由記錄和列組成
- 記錄 - 在測試用例的每次迭代中使用的值集合
- 列 - 列標題是變數名,下面的資料是與測試用例迭代中的每個變數相關聯的值。
雖然上述的關鍵字測試用例設計和下面的測試集執行可以應用於手動測試或自動化測試,但本節關鍵字實現僅適用於自動化測試。
AUT 物件識別與命名
[edit | edit source]關鍵字和關鍵字引數與 AUT 視窗和物件(如列表框和按鈕)進行互動。每個視窗和物件在作業系統中都被唯一識別。雖然它們擁有大量的屬性,但通常只需要幾個屬性來區分測試執行期間活動的所有其他物件。因此,如果每個視窗和每個物件的幾個屬性值對映到一個唯一的物件名稱,那麼測試的處理就可以透過名稱與物件進行互動,使用物件型別的預設方法或測試人員確定的其他方法。
關鍵字引數與 AUT 物件的關聯
[edit | edit source]給定一個定義的關鍵字,包括其關鍵字名稱和命名引數,以及一個由名稱唯一標識的視窗和物件的對映,關鍵字只有在與一個命名視窗繫結且關鍵字引數與命名物件繫結時才能驅動 AUT 操作。關聯還必須包括用於每個關鍵字引數的方法。通常情況下,該方法是標準物件型別的預設方法,但另一方面,該物件可能是特殊的,即使它是一個標準物件,測試人員也可能希望使用自定義方法與該物件互動。
關鍵字與現有執行程式碼的關聯
[edit | edit source]關鍵字的實現可能根本不需要額外的編碼。對於典型的 AUT 實現,程式碼(這裡稱為模板)對於許多關鍵字來說可能是通用的。模板可以預先存在,要麼內置於框架中,要麼在專案中建立以便在許多關鍵字中重複使用。可能有一些模板,每個模板都服務於不同的目的,例如值輸入、值驗證,或者專案中用於測試導航、設定、驗證或拆卸的其他變體。因此,關鍵字的實現只需將關鍵字與模板相關聯即可。
上面描述的關鍵字引數處理是從模板中呼叫的。模板通常包括對關鍵字引數處理的呼叫之外的更多內容。程式碼還可能包括:檢查 AUT 是否已準備好進行互動;在關鍵字引數處理之前和/或之後進行通用導航;錯誤處理;或其他功能和呼叫。模板程式碼可以非常簡樸,也可以根據需要擴充套件。在任何情況下,模板都充當實現許多關鍵字的通用程式碼。
處理 AUT 複雜性的工具
[edit | edit source]然而,有時 AUT 的複雜性需要更多程式碼來處理特殊情況。一些關鍵字的實現可能非常獨特,因此需要僅針對該關鍵字編寫程式碼。這個複雜的關鍵字可能最初是從模板複製而來,然後針對獨特情況進行修改,也可能更復雜。複雜的關鍵字,就像模板一樣,通常會提供檢查、錯誤處理、導航和關鍵字引數處理。
一些 AUT 的複雜性可能在於 AUT 中常用的物件。作為處理複雜性的方法編寫的自定義物件程式碼可以從模板(通常)或從複雜關鍵字中呼叫,以處理關鍵字引數。
該框架還支援其他與自定義物件、複雜關鍵字或專案模板相關的通用功能庫。
測試集執行
[edit | edit source]彙總和重複使用每個主要測試目的的測試用例
[edit | edit source]關鍵字測試用例可以被廣泛地重複使用。每個測試用例的目的是驗證 AUT 的某些功能,並且始終產生相同的結果。但是,每個測試用例可以在不同範圍或目的的測試集中多次使用。例如,測試集可以用於冒煙測試,也可以用於更復雜的執行數天的功能測試、系統測試或驗收測試。
執行手動測試
[edit | edit source]如上所述,測試用例由具有有意義的、描述動作的關鍵字名稱的關鍵字構建而成,這些關鍵字具有與 AUT 物件(如列表框和按鈕)繫結的引數名稱(通常由標題、圖例或其他有用的識別文字定義),以及應用於 AUT 或與 AUT 顯示值比較的測試用例關鍵字引數值。關鍵字測試用例基於對人來說有意義的定義,而不僅僅是對機器有意義。因此,一個有用的框架還提供了捕獲結果和提供手動執行報告的功能。
執行自動化測試
[edit | edit source]自動化基於上述的關鍵字實現,需要另一個級別的程式碼。測試用例處理引擎讀取(否則對人來說很友好的)測試用例關鍵字和關鍵字引數值,以程式設計方式高效地驅動 AUT 並報告結果。