单元告诉开发人员我们的代码正确执行了(Doing things right),功能告诉开发人员我们的代码执行了正确的需求(Doing the right things)。
单元测试
单元测试一般是从一个开发人员的角度来写的,他们要保证自己的代码被正确(像自己预期的那样)执行了,每一个测试都证实了我们的方法在接受某一个输入的时候按照我们预期的那样执行了。
没有一个良好的平台就想写出一系列的可控的自动化单元测试无异于痴人说梦。当然在你选择使用某一个测试平台的时候,最好首先征得项目组人员的同意。你将会长时间使用这个工具,而且你也会逐渐喜欢上这个工具。在关于极限编程的站点有一些比较适合的软件可以使用,我最喜欢的是用于java测试的JUnit(还用用于的NUnit以及用于scrīpt的JSUnit等工具,译者注)。
功能测试
功能测试是从一个客户的角度来看待问题的,它是用来检验我们的系统是否按照客户预期的那样来运行。
其实很多时候我们会发现一个系统的开发其实就想建一幢房子,虽然这种类比并不是很恰当,但是我们可以用这个来帮助我们来理解单元测试和功能测试,单元测试就像一个建筑物质检人员,他更关心的是这个建筑五更加内在的东西:根基,取景,电力供应,以及一些对用户有害物质(比如氡)的含量等等,他需要确保这间房子可以给人居住并且是的,也就是他需要接触建筑物的本质部分。功能测试就是设想一下这间房屋的主人也来到这里之后,他首先确定这间房子已经是合格的了,因为质检员已经帮他解决了这个后顾之忧了,设想这个房子应该是什么样子的自己会比较满意,他会设想自己在这间房子中怎么生活才会比较舒适,这间房子应该多大才合适,房子看起来是不是很舒服,房子是不是比较适合家庭的一些特殊需要,窗户的位置是不是合适采光等等这些问题。总之我们要从客户的角度来考虑问题,这就是作为功能测试所需要做的。
像单元测试一样,我们也需要一个良好的平台来来支持自动化的功能测试,但是这次JUnit就不行了,JUnit不适合用来做功能测试。现在有一些工具可以用来做功能测试,但是这些工具都不是适用于所有的产品开发,所以当你找不到合适的工具的时候,还是自己开发一个比较好。
不管我们在做项目时候做的多么好,不管我们的产品是多么的优秀,如果我们的产品没有用(在实际生活中的应用或者用户需求),我们就只是在浪费我们自己的时间,也正因为如此,功能测试显得如此的重要。
因为测试是这么的重要,所以我们需要一个指导方针之类的东西来完成测试。
【责编:michael】
--------------------next---------------------
阅读(429) | 评论(0) | 转发(0) |