软件测试基础第2章软件测试流程

举报
资源描述
第二章第二章 软件测试流程软件测试流程n概述n测试计划n测试设计n单元测试n集成测试n确认测试n系统测试n验收测试n评估测试测试流程概述 n测试计划 根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,使得随后所有的测试工作都将围绕着测试需求来进行。同时,适当选择测试内容,合理安排测试人员、测试时间及测试资源等。n测试设计 测试设计是指将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例,保证测试结果的有效性。测试执行 执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、组合测试、集成测试以及回归测试等步骤组成。测试评估 结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行综合评价。测试计划测试计划 测试计划的依据主要是项目开发计划和测试需求分析结果而制定。测试计划一般包括测试背景、测试依据、测试资源、测试策略和测试日程等内容。测试设计测试设计 根据测试计划设计测试方案,测试设计过程输出的是各测试阶段使用的测试用例,为每一个测试需求确定测试用例集,并且确定执行测试用例的测试过程。测试设计测试设计 根据软件测试计划、软件需求、软件构架设计、软件详细设计等文档内容,具体如下:n对每一个测试需求,确定其需要的测试用例。n对每一个测试用例,确定其输入及预期结果。n确定测试用例的环境配置、驱动程序。n编写测试用例文档n对测试用例进行同行评审测试执行与评估 测试人员需要搭建测试环境,应尽可能的模拟被测系统的实际应用工作所必需的软件、硬件系统、网络设备、历史数据和支持条件等,测试执行过程又分为以下测试阶段:单元测试、集成测试、确认测试、验收测试等。n软件开发是一个自顶向下,逐步细化的过程。n软件测试则是依相反顺序的自底向上,逐步集成的过程。低一级的测试为上一级的测试准备条件。集成测试确认测试系统测试单元测试单元测试单元测试单元测试模块模块模块模块已测模块设计信息集成的软件确认的软件软件需求其它系统元素集成测试确认测试系统测试单元测试单元测试单元测试单元测试模块模块模块模块模块模块模块已测模设计信息设计信息集成的软件确认的软软件需求软件需求测试执行阶段单元测试单元测试 单元测试是在软件开发过程中进行的最低级别的测试活动,其测试的对象是软件设计的最小单位。例如:传统的结构化编程语言中,比如C语言,单元测试的对象一般是函数或子过程。在像C+这样的面向对象的语言中,单元测试的对象可以是类,或类的成员函数。对Ada语言,单元测试可以在独立的过程和函数上进行,也可以在Ada包的级别上进行。单元测试的原则同样也可以扩展到第四代语言(4GL)中,这时单元被典型地定义为一个菜单或显示界面。单元测试又称为模块测试,什么是模块?并没有严格的定义,不过按照一般的理解,模块应该具有以下的一些基本属性:名字;明确规定的功能;内部使用的数据,或称局部数据;与其它模块或外界的数据联系;实现其特定功能的算法;可被其上层模块调用,也可调用其下属模块进行协同工作。单元测试过程单元测试的任务单元测试的任务 n模块接口测试对被测模块,检测数据能否正确无误地进入和流出模块;n模块局部数据结构测试检测模块在工作过程中,其内部数据能否保持其完整性,包括内部数据的内容、形式以及相互之间关系;n模块边界条件测试检测在数据边界处,模块能否正常工作;n覆盖测试检测模块运行能否满足特定的逻辑覆盖;n出错处理检测检测模块出错处理是否有效。由于每个模块在整个软件中并不是孤立的,在对每个模块进行单元测试时,需要考虑它和周围模块的相互联系。为模拟这一联系,在进行单元测试时,必须设置若干个辅助测试模块。这些辅助模块分为两种:驱动模块(driver):用以模拟被测模块上级模块,相当于被测模块的主程序。桩模块(stub):用以模拟被测模块的下级模块,相当于被测模块调用的子模块。被测模块与其相关的驱动模块和桩模块共被测模块与其相关的驱动模块和桩模块共同构成了一个同构成了一个“测试环境测试环境”。集成测试集成测试 1999年9月,火星气象人造卫星在经过41周416亿英里的成功飞行之后,在就要进入火星轨道时失败了。美国投资5万美元调查事故原因,发现:太空科学家使用的是英制(磅)加速度数据,而喷气推进实验室采用公制(牛顿)加速度数据进行计算。模块相互调用时引入了新的问题;几个子功能组合起来不能实现主功能;误差不断积累达到不可接受的程度;全局数据结构出现错误等。集成测试集成测试非增式测试非增式测试 增式测试增式测试 自顶向下测试自顶向下测试自底向上测试自底向上测试独立地测试程序的每个模块,然后再把它们组合成整个程序的集成测试方法。把下一个待测试的模块组合到已经测试过的那些模块上去,再进行测试。从主控模块开始,按照软件的控制层次结构,逐步把各个模块集成在一起。从最下层的模块开始,按照程序的层次结构,逐渐形成完整的整体。n非增式集成测试法:独立地测试该程序的每个模块,然后再把它们组合成整个程序的方法。n增式集成测试法:把下一个待测试的模块组合到已经测试过的那些模块上去,再进行测试的方法。增式测试与非增式测试 测试每一个模块都需要驱动模块和桩模块。n驱动模块用以模拟被测模块的上级模块,用来驱动或传送测试用例给被测模块,还须向测试者显示执行被模块所产生的结果。n桩模块由被测模块调用,以便检验被测模块与其下级模块之间的接口。非增式集成测试M1S1S2S3M2M3M4M5d1d2d3d4S4S5M6d5S6M7d6图图 6-2 非增式测试非增式测试M1S1S2S3M2M3M4M5d1d2d3d4S4S5M6d5S6M7d6M2M3M4M5d1d2d3d4S4S5M6d5M6d5S6M7d6图图 6-2 非增式测试非增式测试M1M2M3M4M5M7M6图图6-1 七模块的程序简图七模块的程序简图M1M2M3M4M5M7M6M1M2M3M4M5M7M6图图6-1 在进行单元测试时,对模块M2和M4配备了驱动模块和桩模块,对模块M3,M5,M6和M7只配备了驱动模块,对主模块M1配备了3个桩模块,以模拟被它调用的3个模块M2、M3和M4。分别进行单元测试以后,再联接起来,进行集成测试。增式集成测试是另一种集成测试方法,它不是孤立地测试每一个模块,而是一开始就把待测试的模块与已测试过的模块联接起来。增式集成测试的过程,就是不断地把待测试的模块联接到已测试过的模块集(或其子集)上,对待测试模块进行测试,直到最后一个模块测试完毕。增式集成测试 M1M2M3M4M5M7M6图图6-1 七模块的程序简图七模块的程序简图M1M2M3M4M5M7M6M1M2M3M4M5M7M6图图6-1 七模块的程序简图七模块的程序简图增量测试方法的种类很多,比如从程序底部开始(自底向上)测试。先由4个人并行或顺序地测试模块M3,M5,M6和M7。这时,需为每个模块准备一个驱动模块,但不需要准备桩模块。然后测试模块M2和M4,它们不是孤立地测试,而是把M2联在模块M5和M6上,模块M4联在模块M7上,也就是如果要测试模块M2,先要设计一个驱动模块,再对模块对M2M5,M2M6进行测试。n非增式集成测试方法工作量大。n增式集成测试中,能够较早地检查出模块之间接口的错误。n增式集成测试,查找故障比较容易。n增式集成测试可以更彻底地对程序进行测试。n非增式集成测试方法需要的机器时间较少。n采用非增式集成测试,所有模块可以同时进行并行测试。非增式与增式的比较 增式集成是构造程序结构的一种方式,按照不同的模块集成方式,又分为自顶向下增式测试和自底向上增式测试两种。l自顶向下集成从主控模块开始,按照软件的控制层次结构,逐步把各个模块集成在一起。l自底向上集成则从最下层的模块开始,按照程序的层次结构,逐渐形成完整的整体。自顶向下与自底向上 原则:下一次要测试的模块,至少有一个调用它的模块已经测试过。自顶向下增式测试的具体步骤为:1)对主控模块进行测试,然后以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块逐渐用实际模块替代;2)依据所选的集成策略,每次只替代一个桩模块;3)每集成一个模块立即测试一遍;4)只有每组测试完成后,才着手替换下一个桩模块;5)为避免引入新故障,需不断地进行回归测试(即全部或部分地重复已做过的测试)。从第二步开始,循环执行上述步骤,直至整个程序结构构造完毕。自顶向下增式集成测试先测试模块M1。要测试模块M1,必须先编写出表示模块M2、M3和M4的各个桩模块s1,s2和s3,以模拟被M1调用的模块。测试完M1后,将由下一个要测试的模块来代替其中一个桩模块,并加入这个模块所需要的桩模块。自顶向下集成测试M1S1S2S3图图6-4(a)自顶向下集成测试自顶向下集成测试M1S1S2S3图图6-4(a)自顶向下集成测试自顶向下集成测试M1M2S2S3图图6-4(b)自顶向下集成测试自顶向下集成测试 S4S5 测试了主模块之后,有几种可能的测试顺序:nM1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12nM1,M2,M5,M6,M10,M3,M7,M11,M4,M8,M12,M9nM1,M4,M8,M9,M11,M12,M3,M7,M2,M6,M10,M5nM1,M2,M6,M10,M4,M9,M5,M3,M7,M11,M8,M12下面两点是应该考虑的:下面两点是应该考虑的:1 1)如果程序中有关键性的部分,设计次序就)如果程序中有关键性的部分,设计次序就应该尽早地把这些模块加入进程序。所谓应该尽早地把这些模块加入进程序。所谓“关键关键部分部分”可能是一个复杂的模块,一个具有新算法可能是一个复杂的模块,一个具有新算法的模块,或怀疑容易出错的模块。的模块,或怀疑容易出错的模块。2 2)设计次序时,要让)设计次序时,要让输入输入/输出模块输出模块尽早地尽早地加入测试。加入测试。如果模块如果模块M10,和,和M9是是输入输出模块并且输入输出模块并且M7执行一些关键性的功能,执行一些关键性的功能,那么增量顺序最好是:那么增量顺序最好是:M1,M2,M6,M10,M4,M9,M3,M7,M5,M11,M8,M12 并且第并且第6次增量测试后的次增量测试后的程序形式程序形式 自顶向下测试可以自然地做到逐步求精,让测试人自顶向下测试可以自然地做到逐步求精,让测试人员看到系统的雏型,有助于对程序的主要控制和决策员看到系统的雏型,有助于对程序的主要控制和决策模块进行检验,增强测试人员的信心。模块进行检验,增强测试人员的信心。不足之处不足之处在于:测试较高层模块时,由于低层处理在于:测试较高层模块时,由于低层处理用桩模块替代,不能反映真实情况,重要数据不能及用桩模块替代,不能反映真实情况,重要数据不能及时回送到上层模块,观察和解释测试输出往往比较困时回送到上层模块,观察和解释测试输出往往比较困难的。难的。为了解决这个问题,可以采用几种办法:为了解决这个问题,可以采用几种办法:把某些模块测试推迟到用真实模块替代桩模块之把某些模块测试推迟到用真实模块替代桩模块之后进行;后进行;开发出能模拟真实模块的桩模块;开发出能模拟真实模块的桩模块;采用自底向上集成测试方法。采用自底向上集成测试方法。2.自底向上增式集成测试自底向上增式集成测试 自底向上增式集成测试是从软件结构的最下层模自底向上增式集成测试是从软件结构的最下层模块开始测试的,测试较高层模块时,所需的下层块开始测试的,测试较高层模块时,所需的下层模块功能都已具备,所以不再需要桩模块。模块功能都已具备,所以不再需要桩模块。自底向上增式集成测试的步骤为:自底向上增式集成测试的步骤为:1)把低层模块组织成实现某个子功能的模块群;2)开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;3)对每个模块群进行测试;4)删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。从第一步开始循环执行上述各步骤,直至整个程序构造完毕
展开阅读全文
温馨提示:
金锄头文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
相关搜索

当前位置:首页 > 高等教育 > 大学课件


电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号