TDD笔记3 三角测量Triangulation

TDD的第三章主要讲了一个概念Triangulation,用金山词霸查了的意义为三角测量。

 

三角测量的原理颇为简单,基本,非常好理解。如两眼睁开穿针很容易,一只眼睛就非常不容易,如果没试过不妨试一下。打官司的时候往往是公说公有理,婆说婆有理,但只要有一个无利害关系的第三方,就很容量理清是非了。

 

在软件测试领域三角测量也非常有用。如在TDD的第二章有这样一个测试用例。

	public void testEquality()
	{
		assertTrue(new Dollar(5).equals(new Dollar(5)));
	}

 如果只有这么一个用例很难说程序是对的。不对的可能性有很多种,如Dollar使用一个假的equals实现,该函数直接返回true;又有可能Dollar的构造函数根本没有使用参数值而是一个内部常量;还有其它的很多种情况导致程序是错的。但是只要给该测试用例再加另一个方面的内容,结果就不一样了,基本上可以保持程序是对的,我基本上没有找到异常情况,如果你能找到别忘了告诉我。

	public void testEquality()
	{
		assertTrue(new Dollar(5).equals(new Dollar(5)));
		assertFalse(new Dollar(5).equals(new Dollar(6)));
	}

 

第二个例子也是从TDD的第三章摘取的。不对的情况,如amount的缺省值是10;times函数乘以多少是硬编码的;等等。

	public void testMultiplication()
	{
		Dollar five = new Dollar(5);
		Dollar product = five.times(2);
		assertEquals(10, product.amount);
	}

 但是再加上另一方面的,请在找找还有什么异常情况,恐怕要少很多。

	public void testMultiplication()
	{
		Dollar five = new Dollar(5);
		Dollar product = five.times(2);
		assertEquals(10, product.amount);
		
		product = five.times(3);
		assertEquals(15, product.amount);
	}

 

1+1=?,很难说,就看怎么用了。

你可能感兴趣的:(TDD,软件测试,金山)