目前,我正在通過Microsoft Research評估Spec Explorer 2010。我有點想知道如何生成測試用例。Spec Explorer:錯誤測試
我正在玩SE生成的測試樣本模型(Accumulator)。有一個方法Accumulator.Add將一個自然數> 0添加到成員變量中。
的模型規定:
[Rule(Action = "Add(x)")]
static void AddRule(int x)
{
Condition.IsTrue(x > 0);
accumulator += x;
}
正如你可以看到,上述(X> 0)的條件是在型號代碼中指定的。此外,我指定的可能的輸入爲Accumulator.Add索文件中:
config ParameterCombination: Main
{
action abstract static void Accumulator.Add(int x)
where x in {-3..3};
}
但聲明Condition.IsTrue(x> 0)的部隊SpecExplorer只生成與值> 0測試這不是我所期待的:輸入參數類型爲int,因此可以將非正數傳遞給方法。根據規範,該方法不應該允許這樣的數字。從我的角度來看,SE應該使用非正向輸入生成測試來驗證算法不接受它們。
這種行爲可以以某種方式建模嗎? 請不要將我指向像PEX這樣的解決方案,因爲PEX專用於白盒測試。 SE寧願把重點放在黑盒測試上,而從我所瞭解到的情況來看,黑盒測試應該使用基於我的規範的等價類。那些將是:
Equivalence class 1: Positive input
Equivalence class 2: Non-positive input
但是,SE永遠不會爲後一種情況生成測試用例。
有什麼建議嗎?先謝謝你。