2011-07-01 22 views
5

关于代码测试的文章很多。但是,我们如何确保我们的设计在功能上正确呢?就像我们有用于测试Java代码的JUnit一样,是否有一些工具可用于测试基于UML的设计,其中测试以功能需求的形式表达?设计的可测试性

这些是一些模糊的想法,但想知道是否有一种方法,可自动化的方法来首先测试设计。换句话说,我们是否也有'测试驱动设计'?

+0

我认为'正式验证'是你正在寻找的。 – leppie

+0

是的,但采用更“可编程”和“可自动”的方式。因此,我想知道我们是否可以想出像'UMLUnit'这样的东西 - 允许编写和执行UML设计的测试。 – shrini1000

+0

为什么不能验证程序化和自动化? – leppie

回答

1

有趣的话题!首先,我的个人网络中没有任何软件架构师使用UML作为设计他们系统的唯一方式,而且我也不知道任何软件架构师在执行机械测试所需的详细程度上创建UML。其次,我个人对UML建模工具很不喜欢。如果实施了这种形式化的验证方法,那么很可能会出现像Rational Rose这样的问题 - 我很久以前就发誓我再也不会去任何地方了。然而,尽管如此 - 在正式的软件商店中,通常具有需求可跟踪性,通常实现为在一个轴上显示业务需求的矩阵,以及设计工件。通过这种方式,您可以查看是否有任何要求与相应的解决方案不匹配,或者解决方案中是否存在不符合特定业务要求的元素。保持这个矩阵的更新是一件很痛苦的事情,所以它不常用在敏捷团队中,但是如果你为银行或航天飞机构建软件,这是一种有价值的技术。

这告诉你你的设计是否完整 - 但不是它是否“正确”。

我没有办法知道在没有构建和测试的情况下设计是否“正确”,或者依赖于人类的经验和知识。

2

是否有一些工具,可以用来测试一个基于UML设计,其中测试是在功能要求形式来表达?

由于功能需求的满足依赖于实现,而不是在设计你无法测试基于功能需求的设计。

换句话说,你可以按照一个不好的设计,同时满足该组的功能需求,如果你实现所需的行为(无限可能的设计的任意一个)。