數據驅動測試是一種測試方法,其中測試的輸入和輸出值與代碼分開。 這種形式主義通常意味著,只需少量投資使測試代碼更加通用,只需識別所涉及的資料即可編寫大量測試用例。
數據驅動測試非常適合測試使用一組定義其行為的輸入值的區域 - 例如,在測試 API 時,可以將輸入和輸出參數定義為數據源,測試代碼使用數據、進行 API 調用並驗證結果。
TAEF 中的數據驅動測試支援
TAEF 提供多種選項來撰寫數據驅動測試。 讓我們了解這些選項,以便您可以選擇最適合您的測試場景的選項。
基於表格的數據驅動測試 解決方案允許您對數據參數變化進行細粒度控制以及定義參數類型。 在此案例中的 DataSource 是在 XML 檔案中定義的表格。 您可以指定參數類型 (int、unsigned int、size_t、bool、double、DWORD、__int64 等及其同質陣列變體) ,或將類型預設為 WEX::Common::String (原生) 或字串 (受控) 。 表格中的每一列都是參數值的一組變化。 測試方法將會針對資料表中的每個資料列重新叫用。 以下是用於基於表格的數據驅動測試的 XML 數據源的片段:
1 <?xml version="1.0"?>
2 <Data>
3 <Table Id ="Table1">
4 <ParameterTypes>
5 <ParameterType Name="Size">Int32</ParameterType>
6 <ParameterType Name="Color">String</ParameterType>
7 </ParameterTypes>
8 <Row>
9 <Parameter Name="Size">12</Parameter>
10 <Parameter Name="Color">Blue</Parameter>
11 </Row>
12 <Row>
13 <Parameter Name="Size">4</Parameter>
14 <Parameter Name="Color">White</Parameter>
15 </Row>
16 <Row>
17 <Parameter Name="Size">9</Parameter>
18 <Parameter Name="Color">Black</Parameter>
19 </Row>
20 </Table>
21 </Data>
閱讀更多: 基於表格的數據驅動測試。
輕量型資料驅動測試支援無法提供資料表型資料驅動測試解決方案所提供的完整逼真度。 澄清一下:輕量級數據驅動測試將數據參數限制為 WEX::Common::String(native) 或 String(managed),而不是基於數據表的數據驅動測試解決方案支持的各種類型。 但是,如果您正在尋找一種低成本且快速的數據變化(例如一兩個參數)來使測試方法數據驅動,並且添加 XML 文件作為數據源似乎不值得麻煩,那麼輕量級數據驅動測試可能正是您正在尋找的。 一個很好的例子是開發人員為 API 編寫單元測試,例如 OpenThemeData(...),並希望根據“Button”、“Listbox”和“ScrollBar”驗證 API。 為此創建 XML 資料來源文件可能會導致負擔過重,但透過輕量化的資料驅動測試的支持,可以在源代碼本身有效地完成此操作。 如果指定多個參數,TAEF 會在幕後產生參數的 n 向組合擴充,而且會針對每個組合叫用測試方法。 閱讀更多: 輕量級數據驅動測試。
輕量級數據驅動測試提供的 n 向組合擴展可能會變得昂貴,並且隨著測試場景變得更加複雜,回報會遞減。 在如此複雜的測試場景中, 基於 PICT 的數據驅動測試 解決方案提供的成對獨立組合測試 (PICT) 可能就是您正在尋找的。 PICT 透過產生一組緊湊的參數結果來全面覆蓋參數,從而提供大量價值。 找出連結,以深入瞭解 PICT,以及如何在 PICT 型資料驅動測試 解決方案上使用此解決方案。
使用 以 WMI 為基礎的數據驅動測試 支援,您也可以將先決條件新增至測試,以及根據測試電腦上可用的資源來取得資訊 (數據)。 例如,如果您只想在電腦已加入網域時執行測試,而且執行測試時也需要網域名稱資訊。 在此案例中的 DataSource 是 WQL 查詢。 深入瞭解如何在測試案例中利用 WMI 型數據驅動測試 。
注意上面列出的所有選項,您還可以想出一種設計,其中上述選項的組合可能看起來很合適。 例如,您可能想要使用 WMI 查詢來取得連線到測試機器之所有印表機的相關資訊,但可能會有另一組參數,這些參數可以使用資料表型數據驅動測試建構預先定義。 如果您希望測試的數據來自兩個單獨的表,則多個數據源規範也可能很有用,因此允許每個表可以在其他測試中重複使用。 閱讀如何為測試指定多個資料來源的詳細資料,以及這樣做時套用的條件約束: 指定多個資料來源