2009-11-04 49 views
0

我已經寫了SAT求解器2可滿足性問題,有人請我提供它只有一個令人滿意的分配,即只有一個解決方案一個測試用例說10000個文字2 SATisfiabilty問題測試用例

The format can be:(for 3 literals) 
2   // No of clauses and then each clause 
2 3 
1 -2 
corresponding to 
(b+c).(a+!b) 
+0

聞起來像功課 –

+0

不,它不是作業。我已經寫了2-SAT求解器。我只是想測試一下。至少指導我如何生成測試用例。 – avd

回答

2

測試覆蓋率通常很困難,大多數情況下,你只是忘了一個因素或另一個因素。

我通常進行的幾個步驟:

  1. 確保它解決了一個很重要的問題(或某些)
  2. 測試的邊緣情況/邊界條件:0條款例如
  3. 測試錯誤案例:格式錯誤的輸入,無法解決的問題
  4. 測試性能/質量注入(請參閱程序是否在負載下不會崩潰,不會泄漏,...)

2)和3)幾乎可以互換,4)只有當你有辦法調查這種信息(基準測試,內存泄漏檢測......)時纔會出現。

重要的一點是,您不應該反編譯您的代碼來編寫測試,因爲您最終會測試代碼,但不會測試它是否遵守規範。

如果它是一個家庭項目,規範通常是非正式的,但它們仍然存在(在你的腦海中),這是他們之後,你應該產生的測試用例。

1

不這種方法工作?

(a + b).(a + !b) 

這隻有在a爲真時才能滿足。

(a + !b).(!a + !b) 

只有在b爲假時才能滿足。因此,

(a + b).(a + !b).(a + !b).(!a + !b) 

完全指定a和b的值。我們現在可以將其擴展爲任意數量的文字。

要測試您的應用程序,您可能還指定了矛盾的需求,因此沒有解決方案。

+0

非常感謝您的想法。它給了我一個開始。 – avd