使用ConTest进行多线程单元测试 - 编程入门网
使用ConTest进行多线程单元测试时间:2010-12-08 IBM Yarden Nir-Buchbinde并行程序易于产生 bug 不是什么秘密。编写这种程序是一种挑战,并且在编程过程中悄悄产生的 bug 不容易被发现。许多并行 bug 只有在系统测试、功能 测试时才能被发现或由用户发现。到那时修复它们需要高昂的费用 -- 假设能够 修复它们 -- 因为它们是如此难于调试。 在本文中,我们介绍了 ConTest,一种用于测试、调试和测量并行程序范围 的工具。正如您将很快看到的,ConTest 不是单元测试的取代者,但它是处理并 行程序的单元测试故障的一种补充技术。 为什么单元测试还不够 当问任何 Java™ 开发者时,他们都会告诉您单元测试是一种好的实践。 在单元测试上做适当的投入,随后将得到回报。通过单元测试,能较早地发现 bug 并且能比不进行单元测试更容易地修复它们。但是普通的单元测试方法(即 使当彻底地进行了测试时)在查找并行 bug 方面不是很有效。这就是为什么它 们能逃到程序的晚期 。 为什么单元测试经常遗漏并行 bug?通常的说法是并行程序(和 bug)的问 题在于它们的不确定性。但是对于单元测试目的而言,荒谬性在于并行程序是非 常 确定的。下面的两个示例解释了这一点。 无修饰的 NamePrinter 第一个例子是一个类,该类除了打印由两部分构成的名字之 外,什么也不做。出于教学目的,我们把此任务分在三个线程中:一个线程打印 人名,一个线程打印空格,一个线程打印姓和一个新行。一个包括对锁进行同步 和调用 wait() 和 notifyAll() 的成熟的同步协议能保证所有事情以正确的顺 序发生。正如您在清单 1 中看到的,main() 充当单元测试,用名字 "Washington Irving" 调用此类: 清单 1. NamePrinter
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |