由于企业及用户对软件质量的重视程度越来越高,使得测试在软件开发中的地位越来越重要。测试是目前用来验证软件是否能够完成所期望的功能的唯一有效的方法。但是在测试的实施过程中,由于软件设计本身存在的可测性性太差的问题。导致了测试的难度相当大,甚至出现了无法测试的情形。下面结合日常测试工作中遇到的问题简要的谈一下如何提高软件可测试性的问题。
通常情形下,测试难以进行由以下几方面原因导致:
1,被测试对象需要传入的参数过多。
2,被测对象过多的调用了其他类或方法。
3,内部的逻辑判断过多(内部牵扯复杂)。
4,需要构造的作为参数的对象本省过于复杂。
5,和界面显示部分交互过于平凡(耦合性太强)。
针对以上问题,建议在软件设计过程中遵循以下原则:
1,首先最重要的是坚持测试驱动设计(测试先于设计)的方法。
优先编写测试代码。这是标准的 XP 方法。这不是说您应该一次性编写全部测试代码后,再一次性全部实现。先写验收测试,在写单元测试,编写一些测试代码,实现它们,再编写一些测试代码,再实现它们等等是个更好的办法。设计以这种方式得以进展;在实现阶段捕捉错误并在下一组测试中改正它。以这种方式编写测试也更少会使人畏缩。
2,尽量做到每个操作对应一个方法,使方法小型化。
使用小型方法说明和重载带缺省方法参数的方法将使您在测试中调用这些方法变的愉快的多。否则,在测试这些方法时您将不得不构造额外参数。如果参数很大,那么将很快导致代码膨胀。更糟的是,它会诱使您编写比在其它情况下更少的测试。
3,对于显示部分(GUI),尽量做到显示与控制分离。
把代码移到 GUI 视图的外面。然后各种 GUI 动作就能成了模型上的简单方法调用。这样,对 GUI 测试者来说,通过方法调用测试功能比间接地测试功能容易的多。另一个好处是它使修改程序功能而不影响视图变的更容易。
4,对于可能要作为参数的类,可以做一个接口,用接口说明外部程序组件使得我们可以容易地在测试案例中模拟这些组件。当需要时可以实现改接口形成一个空类作为参数传入。特别是当该内还没有完全实现时,这种方法最为行之有效。
最后,如果自己不负责测试工作,作为开发员在设计过程中要时刻提醒自己“我如何才能测试这些代码?我如何才能以可测试方式编写这些代码”。