第七章 软件测试

软件测试概述1.软件测试的目的安装测试方案和流程对软件产品(程序、数据、文档)进行功能或非功能性测试,在测试中需要使用不同测试工具,使用不同方法设计测试用例,对测试方案可能出现的问题进行分析和评估2.基本原则设计好的测试用例、不可能进行穷举测试、尽早开展测试、重点测试、定期进行检验与修正测试用例,并添加新的测试用例、测试依赖于系统环境、测试用例应该包含合理和不合理的输入条件3.测试过程模型V模型 瀑布模型的变种局限性:不能体现“尽早地和不断进行测试”的原则。它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,容易使人理解为测试是软件开发的最后一个阶段,主要是针对程序进行测试寻找错误,而需求分析阶段。设计阶段隐藏的问题可能一直到后期的相应测试才能被发现W模型 测试和开发是同步进行的,从而有利于尽早地发现问题,把测试贯穿于整个开发流程局限性:软件开发和测试保持一种线性的前后关系H模型 形成一个独立的流程软件测试是一个独立的流程,贯穿了整个生命周期,与其他流程并发地进行;软件测试要尽早准备,尽早执行;软件测试是根据被测物的不同而分层次进行。4.测试类型测试活动可以分类为单元测试、集成测试、系统测试、验收测试和回归测试1.单元测试 ——模块测试 直接面向代码设计与结构主要检测独立的软件单元——结构化方法下的函数和过程、面向对象方法下的类方法/类(面向对象方法下,由于类方法往往都是相对独立的,一个类中所有方法的测试也就是类测试),测试者通常就是开发人员自己。单元测试的目的在于分割程序,逐个从需求性和功能性上说明这些独立部分的正确性(发现程序级别的错误)。2.集成测试独立的软件单元(模块)组合过程中所进行的测试。结构化集成测试,面向对象的集成测试1.结构化集成测试集成策略:Big Bang策略、自顶向下策略、自底向上策略Big Bang策略:所有模块一次性集成为一个整体系统,而后着重各个模块之间的接口工作进行测试,优点在于测试之前所有的整合工作已经完成,缺点在于整合过程较为费时,且集成过程中若引入新的错误则难以追溯。自顶向下策略:实现测试软件模块结构图最顶端的模块,而后集成下一层的模块再进行测试,直至所有模块全部组合并测试完,1、测试顶层模块,直接调用的子模块使用桩模块代替。2、采用深度优先,用实际模块代替之前的桩模块再进行相应的测试,这样各个模块逐步组成一个大系统,3、进行回归测试,以防集成过程引入新的错误。自底向上策略:首先测试软件最底层模块,而后集成上一层模块并进行测试,逐步将所有模块组合并测试完毕2.面向对象的集成测试具有动态特性,程序的控制流无法确定,只能对编译完成的程序做基于黑盒子的集成测试。面向对象软件的集成测试需要在整个程序编译完成后进行。面向对象的集成测试策略主要有基于线程的策略和基于使用的策略。3.系统测试集成测试着重测试的是各个模块之间接口运行情况;而系统测试则是将系统软件作为整个计算机系统的一个元素,与计算机硬件、外设、数据和人员等其他元素结合起来所进行的测试。压力测试、性能测试、可用性测试4.验收测试5.回归测试测试方法按是否需要执行被测软件,软件测试分为静态测试和动态测试;按是否需要查看代码。软件测试分为白盒测试、黑盒测试和灰盒测试;按照测试执行时是否需要人工干涉,测可分类自动测试和人工测试。静态测试 代码复查是在不需要执行所测试程序的情况下,对代码、需求分析和设计文档等进行缺陷查找。代码复查是比较重要的静态测试。目的在于尽早发现软件缺陷,并未其后的白盒测试和黑盒测试的测试用例设计提供一定的思路。动态测试通过选择适当的测试用例,实际运行所测试的程序,比较实际运行结果和预期结果,以发现软件中潜在的缺陷。白盒测试 玻璃盒测试 结构化测试黑盒测试 功能测试 数据驱动测试根据软件产品的功能设计规格,在计算机上进行测试,不需要了解程序内部的代码恶实现机制;不依赖于系统内部的设计与实现灰盒测试介于白盒测试和黑盒测试之间手工测试完全由人工完成测试工作自动测试是各种测试活动的管理与实施,是使用自动化测试工具或自动化测试脚本来进行的测试,包括测试脚本的开发与执行等,以某种自动测试工具来验证测试需求。通常在功能测试、回归测试和性能测试中使用较为广泛。测试用例设计公式 测试用例=输入+输出+测试环境从整体上,测试用例的设计,应满足以下标准:测试用例的目标清楚;时间思路正确、清晰;在组织和分类上,测试用例层次清楚、结构合理;覆盖所有的测试点;测试手段区别对待;充分的负面测试;没有重复、冗余测试用例。对于每个具体的测试用例,设计应满足以下标准:测试用例的出发点是发现缺陷;测试用例的单一性;符合测试用例设计规范或测试用例模板;描述清楚;操作步骤的准确性;操作步骤的简单性;所期望的测试结果是可验证的;测试环境的正确性、测试数据的充分性;前提条件、依赖性被完全识别出来;正确数据;边界数据;错误数据。 结构化测试1.模块内测试1.逻辑覆盖语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖2.基本路径测试3.循环语句测试简单循环嵌套循环2.模块测试1.等价类划分有效等价类无效等价类2.边界值划分3.错误推测法3.结构化集成测试

相关内容推荐