【发布时间】:2013-09-15 20:50:44
【问题描述】:
来自Java Concurrency in Practice 的书,第 12.1 章 正确性测试,特别是在 12.1.3 小节 测试安全(作者想要设置测试用例的地方用于测试有界缓冲区类的数据竞争安全性)
为确保您的测试实际测试您认为的结果,它是 重要的是校验和本身不能被 编译器。使用连续整数作为您的 测试数据,因为那样结果总是一样的,而且很聪明 可以想象,编译器可以只是预先计算它。
为了避免这个问题,测试数据应该随机生成,但是很多 否则,有效的测试会因随机选择不当而受到影响 数字生成器(RNG)。随机数生成可以创建耦合 在类和计时工件之间,因为大多数随机数 生成器类是线程安全的,因此引入了额外的 同步。给每个线程自己的 RNG 允许 使用非线程安全的 RNG。
我不明白作者反对使用随机数生成器生成测试输入的观点。具体来说,Random number generation can create coupling between classes and timing artifacts这行我不清楚。
- 他在这里指的是哪些类和计时工件?
- RNG 可以创建什么样的耦合?
【问题讨论】:
标签: java multithreading random concurrency java.util.concurrent