什么是软件测试(software testing)?(8)

发表于:2014-09-24来源:uml.org.cn作者:不详点击数: 标签:软件测试
如果模块内包括外部输入输出,还应该考虑下列因素: 1 文件属性是否正确; 2 OPEN/Close语句是否正确; 3 格式说明与输入输出语句是否匹配; 4 缓冲区大小与

  如果模块内包括外部输入输出,还应该考虑下列因素:

  1 文件属性是否正确;

  2 OPEN/Close语句是否正确;

  3 格式说明与输入输出语句是否匹配;

  4 缓冲区大小与记录长度是否匹配;

  5文件使用前是否已经打开;

  6是否处理了文件尾;

  7是否处理了输入/输出错误;

  8输出信息中是否有文字性错误;

  检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。

  局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:

  1 不合适或不相容的类型说明;

  2变量无初值;

  3变量初始化或省缺值有错;

  4不正确的变量名(拼错或不正确地截断);

  5出现上溢、下溢和地址异常。

  除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。

  在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。??的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。

  计算中常见的错误包括:

  1 误解或用错了算符优先级;

  2 混合类型运算;

  3 变量初值错;

  4 精度不够;

  5 表达式符号错。

  比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:

  1不同数据类型的对象之间进行比较;

  2错误地使用逻辑运算符或优先级;

  3因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;

  4比较运算或变量出错;

  5循环终止条件或不可能出现;

  6迭代发散时不能退出;

  7错误地修改了循环变量。

  一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,应着重检查下列问题:

  1输出的出错信息难以理解;

  2记录的错误与实际遇到的错误不相符;

  3在程序自定义的出错处理段运行之前,系统已介入;

  4异常处理不当;

  5错误陈述中未能提供足够的定位出错信息。

  边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。

  单元测试过程

  一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。

  应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub),下图显示了一般单元测试的环境。驱动模块在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”打印“进入-退出”消息。

  驱动模块和桩模块是测试使用的软件,而不是软件产品的组成部分,但它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块不能完成某些模块的测试任务,这些模块的单元测试只能采用下面讨论的综合测试方法。

  提高模块的内聚度可简化单元测试,如果每个模块只能完成一个,所需测试用例数目将显著减少,模块中的错误也更容易发现。

  综合测试的基本方法

  时常有这样的情况发生,每个模块都能单独工作,但这些模块集成在一起之后却不能正常工作。主要原因是,模块相互调用时接口会引入许多新问题。例如,数据经过接口可能丢失;一个模块对另一模块可能造成不应有的影响;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误,等等。综合测试是组装软件的系统测试技术,按设计要求把通过单元测试的各个模块组装在一起之后,进行综合测试以便发现与接口有关的各种错误。

  某设计人员习惯于把所有模块按设计要求一次全部组装起来,然后进行整体测试,这称为非增量式集成。这种方法容易出现混乱。因为测试时可能发现一大堆错误,为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,新旧错误混杂,更难断定出错的原因和位置。与之相反的是增量式集成方法,程序一段一段地扩展,测试的范围一步一步地增大,错误易于定位和纠正,界面的测试亦可做到完全彻底。下面讨论两种增量式集成方法。

原文转自:http://www.uml.org.cn/Test/test-bk.asp