第6章软件测试辩析.ppt

* 测试过程需要如下3类输入。 (1)软件配置:包括软件需求规格说明、软件设计规格说明、源代码等。 (2)测试配置:包括测试计划、测试用例、测试驱动程序等;从整个软件工程过程看,测试配置是软件配置的一个子集。 (3)测试工具:为提高软件测试效率,测试工作需要有测试工具的支持,它们的工作是为测试的实施提供某种服务,以减轻人们完成测试任务中的手工劳动。例如,测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、驱动测试的测试数据库等。 * * 生产率与成本密切相关,生产率的提高往往意味着成本的下降,开发周期的缩短。生产率与质量之间也有着内在的联系,表面上看,追求高质量会延长软件开发时间,并因此增加了成本,似乎降低了生产率。但如果生产的软件质量差,虽然开发的时间可能缩短,但之后可能会造成返工,总的开发时间可能会更长。即使不返工,也无疑会增加维护代价。 * 例如,在进行三角形计算时,要输入三角形的3个边长:A,B和C。应注意到这3个数的值应当满足A0,B0,C0,A+BC,A+CB,B+CA,才能构成三角形。但如果把6个不等式中的任何一个大于号“”错写成大于等于号“≥”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。 * 上述43个测试用例可以发现在程序中大部分常见的错误。如果用随机方法设计测试用例不一定会发现这些错误。如果使用得当,边界值分析方法是很有效的。 这个方法看起来似乎很简单,但是由于许多程序中的边界情况很复杂,要找出适当的测试用例还需针对问题的输入域和输出域边界,耐心细致地逐个考虑。 * 开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。然后,把已测试过的模块组装起来,进行组装测试,主要对与设计相关的软件体系结构的构造进行测试。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。最后是系统测试,把已经经过确认的软件纳入实际运行环境中,与系统其他成分组合在一起进行测试。严格地说,系统测试已超出了软件工程的范围。 * 常见的不正确计算有:运算的优先次序不正确或误解了运算的优先次序;运算的方式错,即运算的对象彼此在类型上不相容;算法错;初始化不正确;运算精度不够;表达式的符号表示不正确等。 常见的比较和控制流错误有:不同数据类型量的相互比较;不正确的逻辑运算符或优先级;因浮点数运算精度问题而造成的两值比较不等;关系表达式中不正确的变量和比较符;“差1”错,即不正确地多循环一次或少循环一次;错误的或不可能的循环终止条件;当遇到发散的迭代时不能终止的循环;不适当地修改了循环变量等。 * 驱动模块和桩模块的编写会给测试带来额外的开销。因为它们在软件交付时不作为产品的一部分一同交付,而且它们的编写需要一定的工作量。特别是桩模块,不能只简单地给出“曾经进入”的信息。为了能够正确地测试软件,桩模块可能需要模拟实际子模块的功能,这样,桩模块的建立就不是很轻松了。 * 自顶向下的增值方式在测试过程中较早地验证了主要的控制和判断点。在一个功能划分合理的程序模块结构中,判断常常出现在较高的层次里,因而较早就能遇到。如果主要控制有问题,尽早发现它能够减少以后的返工。如果选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。 * 随着组装层次的向上移动,驱动模块将大为减少。如果对程序模块结构的最上面两层模块采用自顶向下进行组装和测试,可以明显地减少驱动模块的数目,而且可以大大减少把几个子系统组装起来所需要做的工作。 * 通常调试是一项技巧性很强的工作,其中人员的经验和掌握的技术固然重要,然而分析问题的能力常常是因人而异的。事实表明,这恰是能否很好地完成调试工作的关键。软件调试人员看到测试工作的结果时,迹象表明有问题存在,但此时只能观察到问题的外部表现形式,事实上,问题的外部表现与发生问题的根源之间的联系并不明显。这就需要调试人员通过对表象的分析,由表及里,去伪存真,进而发现问题的本质,找出问题的来龙去脉,然后加以根治,将错误排除。 * * * ② 自底向上—自顶向下的增值测试:它首先对含读操作的子系统自底向上直至根结点模块进行组装和测试,然后对含写操作的子系统作自顶向下的组装与测试。 ③ 回归测试:这种方式采取自顶向下的方式测试被修改的模块及其子模块,然后将这一部分视为子系统,再自底向上测试,以检查该子系统与其上级模块的接口是否适配。 3.组装测试的组织和实施 组装测试是一种正规测试过程,必须精心计划,并与单 元测试的完成时间协调起来。在制定测试计划时,应考虑 如下因素: (1)采用何种系统组装方法进行组装测试。 (2)组装测试过程中连接各个模块的顺序。 6.5 软件测试的策略 (3)模块代码编制

文档评论(0)

1亿VIP精品文档

相关文档