2010-04-01 66 views
2

我正在嘗試使用API sanity autotest自動生成我的C代碼的單元測試。需要API完整性自動測試幫助

但是,問題在於使用起來有些複雜,有關如何使用它的教程/ howto /其他資源將非常有用。

你有沒有使用API​​完整自動測試的運氣? 您認爲有更好的工具可以用來自動生成C代碼的單元測試嗎?

+0

你的耳朵之間的工具如何?編寫自己的單元測試很少是火箭科學。 – 2010-04-01 23:06:17

回答

0

這首先是災難的祕訣。如果你自動生成單元測試,你會得到一堆並不意味着很多的測試。如果您有一個未在自動化測試中涉及的庫,那麼根據定義,該庫是舊版代碼。考慮下面的遺留代碼的傳統觀念......

對於每一個變化:與測試

  • 重構爲開 - 閉原則

    1. 引腳行爲(更難做C,但並非不可能)
    2. 與測試

    新代碼驅動的變化也考慮撿的Working Effectively with Legacy Code副本。

    編輯:

    作爲我們討論的結果,它已經很清楚,您只需要執行一些基本標準,例如具有指針值如何處理無效,用你生成的測試。我會爭辯說,你不需要生成測試。相反,您需要一個檢查庫並動態地執行其功能的工具,以確保它符合您定義的一些編碼標準。我建議你自己編寫這個工具,這樣它就可以利用你對你想實施的規則和正在測試的庫的知識。

  • +0

    UT自動生成不能猜測意圖,但是,我想通過使用自動生成節省編寫「例行」測試的麻煩。 當然,無用的測試將被刪除。 我會看看你提到的這本書,謝謝。 – rmk 2010-04-01 23:53:11

    +0

    @rmk:什麼是「rountine」測試的例子? – 2010-04-02 01:00:15

    +0

    一個測試,只是在我寫的C函數中運行理智檢查代碼,例如NULL指針可以通過以ptrs作爲輸入的函數來處理,某些函數的輸入的數值在可接受的限制內等。 我認爲自動發電應該至少能夠向我展示這些角落案例。 – rmk 2010-04-02 17:32:25

    1

    這是一個更好的工具(在Unix的免費解決方案中)能夠完全自動生成煙霧測試,如果您的庫包含超過一百個函數。獨特的功能是爲每個功能自動生成合理的輸入參數。

    該框架最流行的用例是快速查找庫中的內存問題(段錯誤)。從歷史上看,這個框架被用來爲Qt3和Qt4等大型庫創建LSB認證測試套件,這些套件無法在合理的時間內手動創建。

    使用以下命令生成,構建和執行測試:

    api-sanity-checker -l name -d descriptor.xml -gen -build -run 
    

    XML描述符是指定版本號的簡單的XML文件,路徑頭文件和共享對象:

    <version> 
        0.3.4 
    </version> 
    
    <headers> 
        /usr/local/libssh/0.3.4/include/ 
    </headers> 
    
    <libs> 
        /usr/local/libssh/0.3.4/lib/ 
    </libs> 
    

    你可以使用specialized types來改善輸入參數的生成測試。

    請參閱example爲freetype2生成的測試2.4.8。