2009-02-12 81 views
11

我有一個Delphi應用程序,它有許多依賴關係,並且很難重構它以使用DUnit(這是巨大的),所以我在考慮使用像AutomatedQA的TestComplete這樣的東西來測試來自前端用戶界面。測試Delphi應用程序的最佳方法

我的主要問題是,錯誤修正或新功能有時會破壞以前測試(手動)並用於工作的舊代碼。

我已經設置了應用程序以使用命令行開關打開可以測試的特定窗體,並且可以創建一組需要完成的值和點擊。

但我有幾個問題之前,我做什麼過激舉動...(和購買任何東西之前)

  1. 是否值得呢?
  2. 這是一個很好的測試方法嗎?
  3. 測試結果應該在我的數據庫(Oracle)中,在testcomplete中有一個簡單的方法來檢查這些值(多個表中的多個字段)?
  4. 我需要設置一個測試數據庫來完成所有的自動化測試,會不會有一個簡單的方法來自動重新設置測試數據庫?除了刪除用戶級聯,創建用戶,...,impdp。
  5. 有沒有辦法在testcomplete中指定exe文件的命令行參數?
  6. 有沒有人有類似的經歷。

回答

9

我在類似的情況。 (具有大量依賴項的大型應用程序)。幾乎沒有自動化測試。但是有一個很大的希望來解決這個問題。這就是爲什麼我們要解決每個新版本的一些問題。

我們即將發佈新產品的第一個版本。第一個跡象是好的。但這是很多工作。所以下一個版本我們確實需要一些方法來自動化測試過程。這就是爲什麼我已經引入了單元測試。雖然由於依賴關係,這些並不是真正的單元測試,但你必須從某個地方開始。

事情我們已經做了:

  • 推出更OO的方法,因爲很大一部分的代碼仍程序。
  • 移動文件之間的東西。
  • 儘可能消除依賴關係。

但是需求清單還有很多,確保整個團隊有足夠的工作,直到退休。

也許我有點奇怪,但清理代碼可以很有趣。在沒有進行單元測試的情況下進行重構是一項危險的工作,尤其是在有很多副作用的情況下。我們使用結對編程來避免愚蠢的錯誤。還有很多測試會話。但最終我們得到了更簡潔的代碼,並且引入的新bug數量非常低。

哦,並確保您知道這是一個昂貴的過程。這需要很多時間。而且你必須與連續解決多個問題的傾向作鬥爭。

3

我無法回答所有問題,因爲我從來沒有使用過testcomplete,但我可以回答其中的一些問題。

1 - 是的。迴歸測試是值得的。當客戶回到你身邊時,如果你破壞了曾經工作過的東西,那麼作爲一名開發人員讓你感到非常尷尬。確保所有曾經工作的東西仍然是一個好主意。

4 - Oracle有一些名爲Flashback的功能,它允許您在數據庫中創建一個還原點。完成測試後,您可以跳回到此還原點。你也可以編寫腳本來使用它,FLASHBACK DATABASE TO TIMESTAMP (FEB-12-2009, 00:00:00);

+0

謝謝,但閃回數據庫是沒有意義的,你幫我找到了如何在http://halisway.blogspot.com/2007/01/閃架構flashback-user-or-schema-in-oracle.html 謝謝。 – 2009-02-12 09:50:16

13

我建議你打算同時使用DUnit和類似TestComplete的東西,因爲它們各自用於不同的目的。

DUnit非常適合單元測試,但難以用於整體應用程序測試和UI測試。

TestComplete是少數實際支持Delphi的自動化測試產品之一,我們的QA工程師告訴我他們的支持非常好。

請注意,設置自動化測試是一項耗時且耗時的工作。如果您嚴格使用單元測試和auomated UI測試,那麼您可能很容易得到比生產代碼更多的測試代碼。

對於大型(現有)應用程序,您在執行自動化測試方面遇到困難。

我的建議是首先設置單元測試,結合自動構建服務器。每次有人檢查源代碼控制中的任何內容時,單元測試都會自動運行。不要試圖爲所有事情設置單元測試 - 對於現有的應用程序而言,這太大了。請記住,無論何時添加新功能,以及何時進行更改,都要創建單元測試。我還強烈建議,只要有錯誤報告,您在修復錯誤之前創建單元測試,以重現錯誤。

0

在(舊)應用程序中引入單元測試的一種方法可能是擁有「啓動數據庫」(如Rich Adams所描述的「閃回」功能)。 使用DUnit控制GUI的程序som unittest。 如果「使用DUnit進行GUI測試」http://delphixtreme.com/wordpress/?p=181

每次通過恢復到「啓動數據庫」啓動測試,因爲可以使用已知的一組數據。

3

我們正在考慮使用VMWare來隔離我們的一些測試。

您可以從已保存的快照開始,因此您始終擁有一致的環境和本地數據庫狀態。

VMWare操作可以編寫腳本,因此您可以從網絡位置自動安裝最新版本,啓動測試並在之後關閉。

+0

我正在考慮在VMWare上進行實際測試,可能是在不同的操作系統上(2000,XP,Vista,7,...,2000服務器,2003服務器) – 2009-02-12 13:58:11

3
  1. 它值得嗎?

也許。建立和維護測試可能是一項重大的工作,但是當你擁有測試時,測試可以非常容易且一致地執行。如果你的項目正在發展,某種測試套件是非常有用的。

  1. 這是一個很好的測試方法嗎?

我會說適當的DUnit測試套件是更好的第一步。但是,如果你的代碼庫不是用於測試的,那麼建立功能測試比設置GUI測試更加痛苦。

  • 測試應該在我的數據庫(Oracle)的結果,是有在testcomplete容易 的方法來檢查這些值(在多個表中的多個字段)?
  • TestComplete有ADO和BDE接口。或者你可以在VBScript中使用OLE接口來訪問所有可用的東西。

  • 是否有testcomplete一種爲 一個exe指定命令行參數?
  • 是的。

    0

    我需要建立一個測試數據庫來完成所有的自動化測試 ,會不會有一種簡單的方法來 自動化重新設置的測試數據庫?

    使用事務:當測試完成時執行回滾。這應該將一切恢復到初始狀態。

    推薦閱讀:

    http://xunitpatterns.com/

    相關問題