2010-07-01 68 views
2

(這可能是在TestComplete論壇更好,但我想我會在這裏給它一個鏡頭反正)製作一個自定義的控制TestComplete的可測試性

我們期待在我們的2010 德爾福的自動化測試申請與TestComplete。我們的應用程序使用的主要控件是我們自己的自定義控件,它直接從TCustomControl派生。 (作爲參考,控件就像是一個用於顯示其中帶有文本的框的控制工具,可以選擇這些框,控件是完全自定義的,包括選擇)。

我們來使這個更TestComplete友好,所以我們可以讀出來的數據看的(例如,什麼樣的數據到控件加載,選擇什麼樣的數據)

我還要提到的是我們的應用程序使用MVC架構並大量使用接口。 TestCompletes調試代理似乎無法返回有關接口的任何類型信息,因此我們無法從中獲取任何數據。我懷疑這是我們的問題

的我正在考慮這兩種方法根:

  1. 添加新的屬性,將返回關於當前選定框(ES)信息的控制。例如文本框中的位置,屏幕上的位置,分層路徑,並通過TestCompletes調試代理訪問它們。

  2. 考慮創建一個自定義的控件添加對TestComplete(我什至不知道你可以用Delphi控制做到這一點)

與第一種方法的問題是連接器會經常elimate性質並在沒有被使用時起作用。我們希望使用我們的發佈版本進行測試,而不是調試版本。

有沒有人對此有任何建議或有這種類型的經驗?

感謝

編輯:我剛讀SDK幫助和自定義控制插件只能用於.NET和WPF控件創建。

回答

2

你對調試信息是正確的 - 你可以從發佈版本中刪除它。因此,你將測試一個發佈版本並同時訪問內部。
關於這種情況的說明:「鏈接器通常會在不使用屬性和功能的情況下使其變得更加靈活。」你可以在這裏作弊,使鏈接器爲這些功能生成調試信息:

  1. 使功能發佈。鏈接器不會觸及已發佈的元素。
  2. 使功能變得虛擬。鏈接器不排除虛擬方法。
  3. 在您的代碼中的某處調用您的函數。包括,而不實際調用任何東西在你的代碼中調用,你可以做這樣的事情: 1:
 
var t: Boolean; 
begin 
    t := False; 
    if t = True then 
    TheFunctionThatNeverExecutes(); 
... 
end; 
2

您應該重新考慮您決定使用發佈版本進行測試。原因是TestComplete需要一些神奇的東西來讓你的測試生活變得更簡單,而你不希望這種魔法出現在發佈版本中。因此,如果您可以詳細說明不使用調試版本進行測試的原因,我們可以嘗試找到解決方案來撤銷此決定。如果只顯示TestComplete的所有可用功能,結果可能是您可以訪問控件的所有相關數據。

回到原來的問題:您可以通過創建一些特殊的類來封裝接口,從而使TestComplete中的屬性可用,從而克服接口問題。

創建一個小的(可能不可見的)測試表單,您可以集中訪問這些類的實例。 (現在是發佈模式鏈接)僅在調試模式下創建此表單,因此,如果仔細設計,只有在需要進行測試時才鏈接相關代碼。

+0

使用一個發佈版本幾個原因。這是我們的功能測試,我們希望在相同的構建客戶將獲得。發行版和調試版本之間可能存在輕微的行爲差異,例如調試版本可能跳過許可檢查。 2.根據TestComplete 7幫助,您可以使用發佈配置來構建您的應用程序,但也包括td32信息。然後,您可以使用striptds.exe util將調試信息移除到其自己的文件中。 關於包裝界面的建議很有意思,我會看看這個。 – Jamie 2010-07-01 12:22:42