软件测试相关理论知识精.ppt
《软件测试相关理论知识精.ppt》由会员分享,可在线阅读,更多相关《软件测试相关理论知识精.ppt(94页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、软件测试相关理论知识第1页,本讲稿共94页软件测试策略2概述单元测试集成测试确认测试系统测试验收测试第2页,本讲稿共94页软件测试策略3什么是软件测试策略?是为软件工程过程定义的一个软件测试的模板,也就是把特定的测试用例方法放置进去的一系列步骤。软件测试策略包含的特征:(1)测试从模块层开始,然后扩大延伸到整个基于计算机的系统集合中。(2)不同的测试技术适用于不同的时间点。(3)测试是由软件的开发人员和(对于大型系统而言)独立的测试组来管理的。(4)测试和调试是不同的活动,但是调试必须能够适应任何的测试策略。第3页,本讲稿共94页单元测试(Unit Testing)5概述单元测试的内容单元测试
2、的步骤单元测试的执行第5页,本讲稿共94页单元测试(Unit Testing)6单元测试:又称模块测试,是针对软件设计的最小单位程序模块进行测试工作。其目的在于发现模块内可能存在的各种差错。检查各个程序模块是否正确地实现了规定的功能。在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试时,多个模块可平行地独立进行单元测试。第6页,本讲稿共94页单元测试的内容7单元测试依据在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别
3、和响应。第7页,本讲稿共94页单元测试的考虑 8模块接口算法和逻辑局部数据结构边界条件独立的路径错误处理 第8页,本讲稿共94页单元测试的考虑-模块接口测试11在单元测试的开始,应对通过被测模块的数据流进行测试。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试项目包括:调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;是否修改了只读型参数 全局量的定义在各模块中是否一致;第11页,本讲稿共94页单元测试的考虑-模块接口测试12如果模块内包括外部输入输出,还应该考虑下列因素:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;
4、在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写输入错误,IO错误是否检查并做了处理。第12页,本讲稿共94页单元测试的考虑-局部数据结构测试13检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错上溢、下溢或地址异常除了局部数据结构外,如可能,单元测试时还应该查清全局数据(如FORTRAN的公用区)对模块的影响。第13页,本讲稿共94页14在模块中应对每一条独立执行路径
5、进行测试,单元测试的最基本要求是满足语句覆盖。设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:误解或用错了算符优先级;混合类型运算;变量初值错;精度不够;表达式符号错。单元测试的考虑-路径测试第14页,本讲稿共94页单元测试的考虑-路径测试15比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:不同数据类型的对象之间进行比较;错误地使用逻辑运算符或优先级;因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;比较运算或变量出错;循环终止条件或不可能出现;迭代发散时不能退出;
6、错误地修改了循环变量。第15页,本讲稿共94页16一个好的设计应能预见各种出错,并预设各种出错处理,出错处理需认真测试,测试应着重检查下列问题:出错的描述是否难以理解出错的描述是否能够对错误定位显示的错误与实际的错误是否相符对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经引起系统的干预。单元测试的考虑-错误处理测试第16页,本讲稿共94页17边界条件测试是单元测试中最后,也是最重要的一项任务。众所周知,软件经常在边界上失效,采用边界值分析技术,注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。如果对模块运行时间有要求
7、的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。单元测试的考虑-边界测试第17页,本讲稿共94页单元测试的步骤18一般认为,单元测试应紧接在编码之后,当源程序编制完并通过复审和编译检查,便可开始单元测试。驱动模块和桩模块模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,应为测试模块开发一个驱动模块(driver)和(或)若干个桩模块(stub),下图显示了一般单元测试的环境。驱动模块:用于模拟被测模块的上级模块。在大多数场合称为“主程序”,它接收测试数据并将这些数据传递到被测试模块,被测试模块被调用后,“主程序”显示类似“进入-退出”消息
8、。桩模块:也称存根程序,用于模拟被测模块的调用模块。第18页,本讲稿共94页19单元测试的步骤第19页,本讲稿共94页单元测试的步骤20单元测试的说明驱动模块和桩模块是测试用的软件,而不是软件产品的组成部分,它需要一定的开发费用。若驱动和桩模块比较简单,实际开销相对低些。遗憾的是,仅用简单的驱动模块和桩模块有时不能完成某些模块的测试任务,这些模块的单元测试只能采用一些综合测试方法。提高模块的内聚度可简化单元测试,如果每个模块只完成一个功能,所需测试用例数目将显著减少,模块中的错误也更易发现。如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做
9、的工作,对关键模块还要做性能测试。对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。第20页,本讲稿共94页单元测试的执行21检查编码是否遵循软件编程规范和标准自动或手动分析程序设计测试用例并运行错误跟踪分析第21页,本讲稿共94页软件测试策略22概述单元测试集成测试确认测试系统测试验收测试当前位置第22页,本讲稿共94页集成测试23概述集成测试的方式一次性组装方式(big bang)增殖式组装方式自顶向下结合自底向上结合 混合增殖试测试其他第23页,本讲稿共94页集成测试24也称为组装测试、联合测试,是将模块按照设计要求组装起来进行测试,主要目标
10、是发现与接口有关的问题。通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;第24页,本讲稿共94页集成测试25为什么进行集成测试?一个模块可能对另一个模块产生不利的影响将子功能合成时不一定产生所期望的主功能独立可接受的误差在组装后可能会超过可接受的误差限度可能会发现单元测试中未发现的接口方面的错误在单元测试中无法发现时序问题(实时系统)在单元测试中无法发现资源竞争问题第25页,本讲稿共94页集成测试的目的26在模块组装后查找模块间接口的错误各个子
11、功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。在单元测试的同时可进行组装测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。第26页,本讲稿共94页27子系统的组装测试特别称为部件测试,它所做的工作是要找出组装后的子系统与系统需求规格说明之间的不一致。通常,把模块组装成为系统的方式有两种 一次性组装方式(big bang)增殖式组装方式集成测试的方式第27页,本讲稿共94页28它是一种非增殖式组装方式。也叫做整体拼装。非增式测试方法采用一步到位的方法来构造测试:对所有模块进行个别的单元测试后,按程序结
12、构图将各模块联接起来,把联接后的程序当作一个整体进行测试集成测试-一次性组装方式第28页,本讲稿共94页29集成测试-一次性组装方式第29页,本讲稿共94页集成测试-一次性组装方式30一次性组装方式的做法是先分散测试,再集中起来一次完成集成测试。因此其特点是:可以并行调试所有模块,因此充分利用人力,加快工作进度。如果在模块的接口处存在差错,只会在最后的集成测试时一下子暴露出来。错误定位困难第30页,本讲稿共94页集成测试-增殖式组装方式31这种组装方式又称渐增式组装首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统在组装的过程中边连接边测试,以发现连接过程中产生的问题通过增殖逐步
13、组装成为要求的软件系统。第31页,本讲稿共94页集成测试-增殖式组装方式32 增式测试把单元测试与集成测试结合起来进行,将模块逐步集成起来,逐步完成集成测试。优点优点:把可能出现的差错分散暴露出来,便于找出问题和修改;一些模块在逐步集成的测试中,得到了较为频繁的考验,因而可能取得较好的测试效果 实施方法:自顶向下结合自底向上结合 第32页,本讲稿共94页自顶向下增式测试 33集成步骤:主控模块作为测试驱动,所有与主控模块直接相连的模块作为桩模块;根据集成的方式(深度或广度),每次用一个替换从属的桩模块;在每个模块被集成时,都必须已经进行了单元测试;进行回归测试以确定集成新模块后没有引入错误上述
14、过程从第2步重复进行,直到整个系统结构被集成完成。第33页,本讲稿共94页自顶向下增式测试 34特点:这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。第34页,本讲稿共94页35自顶向下增式测试 第35页,本讲稿共94页自底向上增式测试36工作程序:组装从最底层的模块开始,组合成一个构件,用以完成指定的软件子功能编制驱动程序,协调测试用例的输入与输出;测试集成后的构件按程序结构向上组装测试后的构件,同时除掉驱动程序第36页,本讲稿共94页自底向上增式测试3
15、7这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。第37页,本讲稿共94页自底向上增式测试38第38页,本讲稿共94页两种实施方法的比较 优点缺点自顶向下测试 可以自然地做到逐步求精,一开始便能让测试者看到系统的框架 o需要提供桩模块o在输入/输出模块接入系统以前,在桩模块中表示测试数据有一定困难o由于桩模块不能模拟数据,如果模块间的数据流不能构成有向的非环状图,一些模块的测试数据难于生成;
16、o观察和解释测试输出往往也是困难的 自底向上测试 o由于驱动模块模拟了所有调用参数,即使数据流并未构成有向的非环状图,生成测试数据也没有困难o特别适合于关键模块在结构图的底部的情况 o直到最后一个模块被加进去之后才能看到整个程序(系统)的框架 o只有到测试过程的后期才能发现时序问题和资源竞争问题39第39页,本讲稿共94页混合增殖式测试40自顶向下增殖的方式和自底向上增殖的方式各有优缺点。一般来讲,一种方式的优点是另一种方式的缺点。因此,通常是把以上两种方式结合起来进行组装和测试。下面简单介绍三种常见的综合的增殖方式。第40页,本讲稿共94页混合增殖式测试41衍变的自顶向下的增殖测试它的基本思
17、想是强化对输入/输出模块的和引入新算法模块的测试,并自底向上组装成为功能相当完整且相对独立的子系统,然后由主模块开始自顶向下进行增殖测试。首先对输入输出模块和引入新算法模块进行测试;再自底向上组装成为功能相当完整且相对独立的子系统;然后由主模块开始自顶向下进行增殖测试。第41页,本讲稿共94页混合增殖式测试42自底向上自顶向下的增殖测试首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;然后对含写操作的子系统做自顶向下的组装与测试。回归测试这种方式采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,再自底向上测试,以检查该子系统与其上级模块的接口是否适配。第42页,
18、本讲稿共94页关键模块问题43在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。关键模块的特征:满足某些软件需求;在程序的模块结构中位于较高的层次(高层控制模块);较复杂、较易发生错误;有明确定义的性能要求。在做回归测试时,也应该集中测试关键模块的功能。第43页,本讲稿共94页其他-集成测试计划 44集成测试必须精心计划,并与单元测试的完成时间协调起来。在制定测试计划时,应考虑如下因素:1)是采用何种系统组装方法来进行组装测试;2)组装测试过程中连接各个模块的顺序;3)模块代码编制和测试进度是否与组装测试的顺序一致4)测试过程中是否需要专门的硬件设备;考虑上述问题后,可列出各个模块的
19、编制、测试计划表,标明每个模块单元测试完成的日期、首次集成测试的日期、集成测试全部完成的日期、以及需要的测试用例和所期望的测试结果。在缺少软件测试所需要的硬件设备时,应检查该硬件的交付日期是否与集成测试计划一致。如,若测试需要数字化仪和绘图仪,则相应测试应安排在这些设备能够投入使用之时,并需要为硬件的安装和交付使用保留一段时间,以留下时间余量。此外,在测试计划中需要考虑测试所需软件(驱动模块、桩模块、测试用例生成程序等)的准备情况。第44页,本讲稿共94页其他-集成测试完成的标志45判定集成测试过程完成了,可按以下几个方面检查:1)成功地执行了测试计划中规定的所有集成测试;2)修正了所发现的缺
20、陷;3)测试结果通过了专门小组的评审。集成测试人员集成测试应由专门的测试小组来进行,测试小组由有经验的系统设计人员和程序员组成。整个测试活动要在评审人员出席的情况下进行。在完成预定的集成测试工作后,测试小组应负责对测试结果进行整理、分析,形成测试报告。测试报告内容测试报告中要记录实际的测试结果、在测试中发现的问题、解决这些问题的方法及解决之后再次测试的结果。此外还应提出目前不能解决、还需要管理人员和开发人员注意的一些问题,提供测试评审和最终决策,以提出处理意见。提交的文档集成测试需要提交的文档有:集成测试计划、集成测试规格说明、集成测试分析报告。第45页,本讲稿共94页回归测试46什么是回归测
21、试?在集成测试策略的环境中,回归测试是对某些已经进行过的测试的某些子集再重新进行一遍,以保证上述改变不会传播无法预料的副作用或引发新的问题。在更广的环境里,回归测试就是用来保证(由于测试或其他原因的)改动不会带来不可预料的行为或另外的错误。回归测试可以通过重新执行所有的测试用例或其一个子集人工地进行,也可以使用自动化的捕获回放工具来进行。回归测试集包括三种不同类型的测试用例:(1)能够测试软件的所有功能的代表性测试用例(2)专门针对可能会被修改而影响软件功能的附加测试(3)针对修改过的软件成分的测试第46页,本讲稿共94页软件测试策略47概述单元测试集成测试确认测试系统测试验收测试当前位置第4
22、7页,本讲稿共94页 确认测试48什么是确认测试有效性测试软件配置审查第48页,本讲稿共94页 确认测试49什么是确认测试说法众多,其中最简明的解释是检验所开发的软件是否能按顾客提出的要求运行。若能达到这一要求,则认为开发的软件是合格的。因而有的软件开发部门把确认测试称为合格性测试(qualification testing)。这里所说的顾客要求通常指的是在软件规格说明书中确定的软件功能和技术指标,或是专门为测试所规定的确认准则。集成测试完成以后,分散开发的模块被联接起来,构成完整的程序。其中各模块之间接口存在的种种问题都已消除。于是测试工作进入确认测试(Validation testing)
23、。第49页,本讲稿共94页确认测试50o确认测试包括有效性测试和软件配置审查。第50页,本讲稿共94页 确认测试-有效性测试51有效性测试(功能测试)任务是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包含的信息就是软件确认测试的基础。有效性测试是在模拟的环境(可能就是开发的环境)下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。第51页,本讲稿共94页确认测试-有效性测试52通过实施预定的测试计划和测试步骤,确定软件特性是否与
24、需求相符;确保所有的软件功能需求都能得到满足,所有的软件性能需求都能达到。所有的文档都是正确且便于使用;对其它软件需求,如可移植性、兼容性、出错自动恢复、可维护性等,都进行测试,确认是否满足。第52页,本讲稿共94页确认测试-有效性测试53在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类:测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被接受。测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,这时需要开列一张软件各项缺陷表或软件问题报告,通过与用户的协商,解决所发现的缺陷和错误。第53页,本讲稿共94页确
25、认测试-软件配置复查54确认测试的另一个重要环节是配置复审,软件配置复查的目的是保证:软件配置的所有成分都齐全;各方面的质量都符合要求;具有维护阶段所必需的细节;已经编排好分类的目录。文件资料包括:用户所需资料(用户手册、操作手册)需求规格说明书(SRS)设计资料(设计说明书)源程序及测试资料(测试说明书,测试报告)在确认测试的过程中,除了人工审查软件配置之外,还应当严格遵守用户手册和操作手册中规定的使用步骤,检查这些文档资料的完整性和正确性。必须仔细记录发现的遗漏和错误,并且适当地补充和改正。第54页,本讲稿共94页55确认测试应交付的文档有:确认测试分析报告 最终的用户手册和操作手册 项目
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 相关 理论知识
限制150内