51Testing软件测试论坛
标题:
JAVA测试模式
[打印本页]
作者:
zzlagi
时间:
2008-8-21 13:51
标题:
JAVA测试模式
测试
模式是一种针对软件
测试
领域的某种高频率出现问题而采取并经过实践证明行之有效的专门化、高效的解决途径(方法),它在软件理论和实践两者之间起着 “ 桥梁 ” 的作用。在面向对象语言 JAVA 程序
测试
的过程中,一个较为棘手的问题就是 JAVA 类的可视性问题。 “ 信息隐蔽 ” 固然是面向对象语言设计的一个突出的优点,但是同时也给
测试
带来诸多不便,有关 “ 隐蔽信息 ” 的可
测试
性成为这类
测试
的一大突出结症。为此我们针对 JAVA 类不同的 “ 可视性 ” 要求的场合,采取相应的
测试
模式来支撑相关 JAVA 类(包)的
测试
。本文主要总结五个常用的 JAVA
测试
模式,以飨读者。这五个模式同样适合于其它面向对象类(包)的
测试
,只不过在具体细节上要考虑与 JAVA 语言信息隐蔽性的差异。比如: JAVA 的可视性以包为界,同一个包内的类对其他类具有相同的存取权限。而 C++ 则以类为界,只有子类和友员函数方可对基类的隐蔽信息进行存取。
我们在下面以图表的方式给出 五个常用 JAVA
测试
模式详细描述,有关模式的描述类目分别是模式名称、
测试
对象、针对问题、约束条件、解决方法、实例、约束解决方式和该
测试
的设计原理。
模式(一) Main 模式
模式名称
Main
测试
对象
JAVA 类
针对问题
测试
人员不知道在何处编写驱动和初始化被
测试
类的
测试
代码
约束
测试
必须容易运行、
测试
代码能够访问该类所有的特征(所有的属性和方法)
解决方法
将
测试
代码放入类的 public static void main(String[] args) 方法中去
实例
public static void main(String[] args){
SomeClass result;
// perform the test…
System.out.print(“result is..”);
}
约束解决
该
测试
代码能够率先被激活和执行、并能够访问被
测试
类所有的特征
设计原理
JAVA 类可以拥有 public static void main(String[] args) 方法,它是类在 JVM 中被率先执行的方法,控制着整个类的执行逻辑, main 方法能够访问所在类的所有属性和方法
模式(二) toString 模式
模式名称
toString
测试
对象
作为运算结果的类
针对问题
测试
人员不知道如何检验一个运算对象的中间结果和最终结果
约束
测试
结果代表对象内部的一个状态,而该状态必须能够被
测试
解决方法
通过使用 toString 方法来对类状态进行描述,描述结果可以通过打印与预期结果进行比较
实例
class SomeClass {
//…
public String toString(){
// custom representation
}
}
约束解决
类的内部状态通过字符串来进行表示因而得以解决
设计原理
在基类定义的 toString() 方法能够提供特定对象的状态的描述,通过将对象状态描述进行打印和显示来判定对象状态是否与预期相符
模式(三) Equal 模式
模式名称
Equal
测试
对象
JAVA 类
针对问题
作为运算结果的类
约束
测试
人员不知道如何检验一个运算对象的中间结果和最终结果
解决方法
定义 equals 方法比较实际结果与预期结果进行比较
实例
class SomeClass {
//…
public boolean equals(Object o){
// custom comparison
}
}
约束解决
保持某个状态的对象需要与预期对象进行比较,通过比较后的布尔值来确定是否与预期结果相符合
设计原理
在基类定义的 public boolean equals(Object) 能够对比对象间的差异并以布尔值形式返回比较结果
模式(四) Internal Tester Class 模式
模式名称
Internal Tester Class
测试
对象
JAVA 包
针对问题
测试
人员不知在何处编写
测试
代码
测试
包中的类
约束
测试
代码与运行代码必须分开来,
测试
代码能够访问到类的所有特性,
测试
代码起到的是一个包的客户端的角色。
解决方法
新建一个类并将该类的包路径与被
测试
类的包路径相同,然后在该类里写入所有的
测试
代码
实例
package theOne;
public class InternalTestClass {
//…
}
约束解决
所有的
测试
代码均与运行代码分离,由于它与运行代码在同一包路径下,所以它与普通的客户端相比具有更多的可视性
设计原理
将
测试
代码定义在一个特定的类中。由于
测试
类与运行类在同一个包路径下,因此它能访问
测试
类的类的所有特性。因此,它远比客户端
测试
具有更大的可视性。
模式(五) Extern Tester Class 模式
模式名称
Extern Tester Class 模式
测试
对象
JAVA 包
针对问题
测试
人员不知在何处编写
测试
代码
测试
包中的类
约束
测试
代码与运行代码必须分开来,
测试
代码能够访问到类的可视特征,
测试
代码起到的是一个包的客户端的角色。
解决方法
新建一个类,指定与被
测试
类不同的包路径,然后在该类里写入所有的
测试
代码
实例
package anotherOne;
public class ExternalTestClass {
//…
}
约束解决
所有的
测试
代码均与运行代码分离,由于它与运行代码在不同的包路径下,所以它与普通的客户端的可视性相同
设计原理
将
测试
代码定义在一个特定的类中。由于
测试
类与运行类不在同一个包路径下,因此它不能访问
测试
类的所有属性和方法。但是它与客户端具有相同的可视性。因此,它可以替代客户端进行
测试
。
上面五个模式的作用关系如图-1所示:
图-1 JAVA
测试
模式图解
了解上述所述的模式有助于
测试
人员在具体 JAVA 代码
测试
中编写
测试
类,同时上述的这些 JAVA
测试
模式还可以借助 JUnit 这样的
测试
框架来实现。
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/)
Powered by Discuz! X3.2