在单元测试中,我已经习惯了测试应用一些常规值的方法,一些违反方法合同的值,以及我能想出的所有边界情况.
但这是非常糟糕的做法
我觉得这两种方法都没有任何好处.通过范围测试,我可以想象,这样做是不切实际的,因为它需要时间,但随机性?
更新:
我自己并没有使用这种技术,只是想知道它.如果你能在需要的时候使用它,那么随机性可以成为一个很好的工具.
最有趣的回答是Lieven的'模糊'提示:
http://en.wikipedia.org/wiki/Fuzz_testing
TX
单元测试需要快速.如果他们不是,人们不会经常运行它们.有时我会检查整个范围的代码,但@ Ignore'd最后评论了它,因为它使测试太慢了.如果我要使用随机值,我会选择带有固定种子的PRNG,以便每次运行实际检查相同的数字.
有关指导原则或更多内容的更多信息 - 请参阅"什么是良好的单元测试?"
那就是说...你提到的技术可以很好地找到代表性的输入.所以用它们来找到代码失败或成功错误的scenarioX - 然后写一个可重复的,快速的,仅测试一次的单元测试scenarioX并将其添加到您的测试套件中.如果您发现这些工具继续帮助您找到更多优秀的测试用例..坚持使用它们.
回应OP的澄清:
可重复 - 意味着每次在SUT上运行测试时,它都会产生相同的结果(通过/失败)..不能'我能再次重现测试失败吗?' (可重复!=可重复).重申..这种探索性测试可能很好地识别更多测试用例,但我不会将其添加到我每次在白天进行代码更改时运行的测试套件中.我建议手动进行探索性测试,找到一些好的(有些人可能会使用虐待狂)测试人员会对你的代码进行锤子和钳子...会发现你比测试案例更多的随机输入生成器.