很久以前,我不得不測試一個程序生成postscript文件圖像。找出程序是否產生正確的預期輸出的一個快速方法是做一個md5的結果,與預先檢查過的「已知良好」輸出的md5進行比較。輸出文件的功能測試,當輸出是非確定性的(或低控制)
不幸的是,Postscript包含文件中的當前時間。當然,這個時間根據測試運行的時間不同而不同,因此即使獲得預期輸出,也要更改結果的md5。作爲一個修復,我剛剛用sed去除了日期。
這是一個很好很簡單的場景。我們並不總是那麼幸運。例如,現在我編寫了一個編寫程序的程序,它創建了一個包含大量匿名節點和uuids的大型RDF文件。用簡單的md5檢查整個程序的功能基本上是不可能的,唯一的方法是用讀取器讀取文件,然後通過該讀取器驗證輸出。正如你可能意識到的那樣,這將打開一個新的蠕蟲罐:首先,你必須編寫一個閱讀器(這可能很費時),其次,你認爲閱讀器在功能上是正確的,並且與作者同步。如果讀者和作者都同步,但假設不正確,讀者會說「沒問題」,但文件格式實際上是錯誤的。
當您必須執行文件格式的功能測試時,這是一個普遍問題,並且文件格式無法通過您提供的輸入完全重現。你如何處理這個案件?
這取決於。在我的RDF文件的特定情況下,我無法真正知道該對象將如何序列化爲XML。我可以掩蓋可變部分並比較其餘部分,但順序可能不同。但是,你的答案很有趣。 MPEG-2測試顯然是一種情況。 – 2009-12-12 10:01:18