Testing DNF规范化测试用例:用测试用例打断我的代码
一旦我能拿到赏金,我就放弃100分,因为第一张海报发明了一个测试用例,打破了我将命题逻辑语句规范化为析取范式的常规。我将省略代码,因为它相当长,并且您可以将例程视为一个黑盒 一个形式是析取范式,当它是文字连接的析取(Testing DNF规范化测试用例:用测试用例打断我的代码,testing,boolean-logic,Testing,Boolean Logic,一旦我能拿到赏金,我就放弃100分,因为第一张海报发明了一个测试用例,打破了我将命题逻辑语句规范化为析取范式的常规。我将省略代码,因为它相当长,并且您可以将例程视为一个黑盒 一个形式是析取范式,当它是文字连接的析取(p,不是p):事实上,这是CNF的对偶。示例: (NOT p AND q AND r) OR s OR (NOT t) p OR q p OR q OR r OR s OR t p AND q p AND q AND r p NOT p 当 不在DNF中 至于我自己设计的测试用例,
p
,不是p
):事实上,这是CNF的对偶。示例:
(NOT p AND q AND r) OR s OR (NOT t)
p OR q
p OR q OR r OR s OR t
p AND q
p AND q AND r
p
NOT p
当
不在DNF中
至于我自己设计的测试用例,我可以将它们分为
- 使用DNF中已有的简单公式进行烟雾测试,例如:
、p
、非p
李>(p和q)或r
- 例
,带有和或“交换”;例如,。。和(…或…)
的dnf可以是p和(q或r)
李>(p和q)或(p和r)
- 在树中的路径上有两次相同的操作符,即
李>。。或(…和(…或…)
- 特别是,在
李>之间没有其他运算符。。或(…或…)
- 在公式中的不同位置有多个否定,
李>。。。不是p,不是(…和…)
- 更像树、
的公式,而不仅仅是一个列表(…或…)和(…和…)
李>p和(q和(r和…)
- 其中运算符有两个以上的操作数
(…)和(p或q或r或s)
gen_one: return one of "A", "B", "NOT A", "NOT B"
gen_op: return one of "AND", "OR", "NOR", "NAND"
genstatement:
if rand < 10%
return gen_one()
else
return "(" + genstatement() + gen_op + genstatement() + ")"
gen_one:返回“A”、“B”、“NOT A”、“NOT B”中的一个
gen_op:返回“AND”、“OR”、“NOR”、“NAND”之一
一般陈述:
如果兰特<10%
返回gen_one()
其他的
返回“(“+genstatement()+gen_op+genstatement()+”)
这是个好主意!我来试一试,不太离题。如果没有附带的测试,代码很少会被编写出来。
gen_one: return one of "A", "B", "NOT A", "NOT B"
gen_op: return one of "AND", "OR", "NOR", "NAND"
genstatement:
if rand < 10%
return gen_one()
else
return "(" + genstatement() + gen_op + genstatement() + ")"