教学第2章-软件测试策略与过程课件_第1页
教学第2章-软件测试策略与过程课件_第2页
教学第2章-软件测试策略与过程课件_第3页
教学第2章-软件测试策略与过程课件_第4页
教学第2章-软件测试策略与过程课件_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章软件测试策略与过程2.1软件测试的复杂性分析2.2软件测试方法与策略2.3单元测试2.4集成测试2.5确认测试2.6系统测试2.7验收测试2.8测试后的调试2.9面向对象的软件测试第2章软件测试策略与过程2.1软件测试的复杂性分析2.1软件测试的复杂性分析1、无法对程序进行完全测试(1)测试所需要的输入量太大(2)测试的输出结果太多(3)软件实现的途径太多(4)软件规格说明没有一个客观标准2、测试无法显示潜在的软件缺陷和故障

——通过软件测试只能报告软件已被发现的缺陷和故障,无法报告隐藏的软件故障。3、存在的故障现象与发现的故障数量成正比

——结论:应当对故障集中的程序段进行重点测试Return2.1软件测试的复杂性分析1、无法对程序进行完全测试软件测试的复杂性分析(续)软件缺陷故障数量测试工作量测试中测试后测试费用遗漏缺陷数目优化测试量图2-1测试工作量和软件缺陷数量之间的关系软件测试的复杂性分析(续)软件缺陷故障数量测试工作量测试中测2.2软件测试方法与策略2.2.1静态测试与动态测试2.2.2黑盒测试与白盒测试2.2.3软件测试过程Return2.2软件测试方法与策略2.2.1静态测试与动态测试2.2.1静态测试与动态测试1、静态测试静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行。静态测试方法也可利用计算机作为对被测程序进行特性分析的工具,但与人工测试方式有着根本区别。另一方面,因它并不真正运行被测程序,只进行特性分析,这又与动态方法不同。所以,静态方法常常称为“分析”,静态测试是对被测程序进行特性分析方法的总称。2.2.1静态测试与动态测试1、静态测试静态测试与动态测试(续)

代码检查代码检查包括代码走查、界面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。代码检查的具体内容:变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等。代码检查的优点:在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。代码检查的缺点:非常耗费时间,而且代码检查需要知识和经验的积累。静态测试与动态测试(续)静态测试与动态测试(续)静态测试阶段的任务:(1)检查算法的逻辑正确性。(2)检查模块接口的正确性。(3)检查输入参数是否有合法性检查。(4)检查调用其他模块的接口是否正确。(5)检查是否设置了适当的出错处理。(6)检查表达式、语句是否正确,是否含有二义性。(7)检查常量或全局变量使用是否正确。(8)检查标识符的使用是否规范、一致。(9)检查程序风格的一致性、规范性。(10)检查代码是否可以优化,算法效率是否最高。(11)检查代码注释是否完整,是否正确反映了代码的功能。静态测试与动态测试(续)静态测试阶段的任务:静态测试与动态测试(续)静态测试可以完成以下工作:(1)发现下列程序的错误:错用局部变量和全局变量;未定义的变量、不匹配的参数;不适当的循环嵌套或分支嵌套、死循环、不允许的递归;调用不存在的子程序,遗漏标号或代码。(2)找出以下问题的根源:从未使用过的变量;不会执行到的代码、从未使用过的标号;潜在的死循环。(3)选择测试用例。静态测试与动态测试(续)静态测试可以完成以下工作:静态测试与动态测试(续)2、动态测试动态方法的主要特征是:——计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况即输入与输出的对应关系进行分析,以达到检测的目的。动态测试包括:(1)功能确认与接口测试(2)覆盖率分析(3)性能分析(4)内存分析静态测试与动态测试(续)2、动态测试2.2.2黑盒测试和白盒测试若测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为黑盒测试(Black-boxTesting)方法。

——黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。若测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-boxTesting)方法。——白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。

2.2.2黑盒测试和白盒测试若测试规划是基于产品的功能,黑盒测试和白盒测试(续)白盒测试黑盒测试两种测试方法从完全不同的角度出发,反映了测试思路的两方面情况,适用于不同的测试阶段。黑盒测试和白盒测试(续)白盒测试黑盒测试两种测试方法从完全不黑盒测试和白盒测试(续)1、黑盒测试黑盒测试的基本观点是:任何程序都可以看作是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确要做到什么。黑盒测试主要根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。黑盒测试的特点:(1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。(2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。黑盒测试和白盒测试(续)1、黑盒测试黑盒测试和白盒测试(续)输入输出黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。也被称为用户测试。黑盒测试和白盒测试(续)输入输出黑盒测试是在程序接口进行测试黑盒测试和白盒测试(续)黑盒测试主要是为了发现以下几类错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?黑盒测试的难点:在哪个层次上进行测试?黑盒测试的具体技术方法:边界值分析法等价类划分法因果图法决策表法黑盒测试和白盒测试(续)黑盒测试主要是为了发现以下几类错误:黑盒测试和白盒测试(续)2、白盒测试白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。通常的程序结构覆盖有:语句覆盖判定覆盖条件覆盖判定/条件覆盖路径覆盖黑盒测试和白盒测试(续)2、白盒测试黑盒测试和白盒测试(续)白盒测试需要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。也被称为程序员测试。应用程序黑盒测试和白盒测试(续)白盒测试需要完全了解程序结构和处理过黑盒测试和白盒测试(续)?X=2

y=2xY=4X=2Y=4未知等式与已知等式黑盒白盒3、黑盒测试法和白盒测试法的比较黑盒测试和白盒测试(续)?X=2y=2xY=4X=黑盒测试和白盒测试(续)项目黑盒测试法白盒测试法规划方面功能的测试结构的测试优点方面能确保从用户的角度出发进行测试能对程序内部的特定部位进行覆盖测试缺点方面无法测试程序内部特定部位;当规格说明有误,则不能发现问题无法检查程序的外部特性;无法对未实现规格说明的程序内部欠缺部分进行测试应用范围边界分析法等价类划分法决策表测试语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,路径覆盖,循环覆盖,模块接口测试黑盒测试和白盒测试(续)项目黑盒测试法白盒测试法规划功能的测2.2.3软件测试过程单元测试单元测试单元测试集成测试集成测试确认测试系统测试*这三个测试可能交叉与前后互换被测模块被测模块被测模块设计信息单元软件需求其它元素用户信息其它元素*…*验收测试*交付用户…图2-2软件测试的过程流程2.2.3软件测试过程单元单元单元集成集成确认系统*软件测试过程(续)单元测试:针对每个单元的测试,

以确保每个模块能正常工作为目标。集成测试:对已测试过的模块进行组装,进行集成测试。目的在于检验与软件设计相关的程序结构问题。确认(有效性)测试:是检验所开发的软件能否满足所有功能和性能需求的最后手段。系统测试:检验软件产品能否与系统的其他部分(比如,硬件、数据库及操作人员)协调工作。验收(用户)测试:检验软件产品质量的最后一道工序。主要突出用户的作用,同时软件开发人员也应有一定程度的参与。软件测试过程(续)单元测试:针对每个单元的测试,以确保每个一个实用软件测试过程一种简单实用的软件测试过程模型POCERM。测试过程中必需的基本测试活动及其产生的结果:拟定软件测试计划(Plans)编制软件测试大纲(Outlines)设计和生成测试用例(testCasegeneration)实施测试(Execution)生成软件测试报告(softwaretestingReports)软件问题报告SPR(SoftwareProblemReport)测试结果报告(testresultReports)一个实用软件测试过程一种简单实用的软件测试过程模型POCE2.3单元测试2.3.1单元测试的主要任务2.3.2单元测试的执行过程Return2.3单元测试2.3.1单元测试的主要任务Retur2.3.1单元测试的主要任务单元测试针对每个程序的模块,主要测试5个方面的问题:——模块接口、局部数据结构、边界条件、独立的路径和错误处理。模块模块接口局部数据结构路径测试出错处理边界条件2.3.1单元测试的主要任务单元测试针对每个程序的模块,单元测试的主要任务(续)模块接口这是对模块接口进行的测试,检查进出程序单元的数据流是否正确。模块接口测试必须在任何其它测试之前进行。模块接口测试至少需要如下的测试项目:(1)调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;(2)所测模块调用子模块时,它输入给子模块的参数与子模块中的形式参数在个数、属性、顺序上是否匹配;(3)是否修改了只做输入用的形式参数;(4)调用标准函数的参数在个数、属性、顺序上是否正确;(5)全局变量的定义在各模块中是否一致。单元测试的主要任务(续)模块接口单元测试的主要任务(续)局部数据结构在模块工作过程中,必须测试模块内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误。对于局部数据结构,应该在单元测试中注意发现以下几类错误:(1)不正确的或不一致的类型说明。(2)错误的初始化或默认值。(3)错误的变量名,如拼写错误或书写错误。(4)下溢、上溢或者地址错误。单元测试的主要任务(续)局部数据结构单元测试的主要任务(续)路径测试在单元测试中,最主要的测试是针对路径的测试。测试用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误。常见的错误有:误解的或不正确的算术优先级;混合模式的运算;错误的初始化;精确度不够精确;表达式的不正确符号表示。针对判定和条件覆盖,测试用例还要能够发现如下错误:不同数据类型的比较;不正确的逻辑操作或优先级;应当相等的地方由于精确度的错误而不能相等;不正确的判定或不正确的变量;不正确的或不存在的循环终止;当遇到分支循环时不能退出;不适当地修改循环变量。单元测试的主要任务(续)路径测试单元测试的主要任务(续)边界条件边界测试是单元测试的最后一步,必须采用边界值分析方法来设计测试用例,认真仔细地测试为限制数据处理而设置的边界处,看模块是否能够正常工作。一些可能与边界有关的数据类型如数值、字符、位置、数量、尺寸等,还要注意这些边界的首个、最后一个、最大值、最小值、最长、最短、最高、最低等特征。在边界条件测试中,应设计测试用例检查以下情况:(1)在n次循环的第0次、1次、n次是否有错误。(2)运算或判断中取最大值、最小值时是否有错误。(3)数据流、控制流中刚好等于、大于、小于确定的比较值是否出现错误。单元测试的主要任务(续)边界条件单元测试的主要任务(续)出错处理测试出错处理的重点是模块在工作中发生了错误,其中的出错处理设施是否有效。检验程序中的出错处理可能面对的情况有:(1)对运行发生的错误描述难以理解。(2)所报告的错误与实际遇到的错误不一致。(3)出错后,在错误处理之前就引起系统的干预。(4)例外条件的处理不正确。(5)提供的错误信息不足,以至于无法找到错误的原因。单元测试的主要任务(续)出错处理2.3.2单元测试的执行过程何时进行单元测试?单元测试常常是和代码编写工作同时进行的,在完成了程序编写、复查和语法正确性验证后,就应进行单元测试用例设计。在单元测试时,如果模块不是独立的程序,需要设置一些辅助测试模块。辅助测试模块有两种:(1)驱动模块(Drive)用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启动被测模块,并打印出相应的结果。(2)桩模块(Stub)用来模拟被测模块工作过程中所调用的模块。它们一般只进行很少的数据处理。驱动模块和桩模块都是额外的开销,虽然在单元测试中必须编写,但并不需要作为最终的产品提供给用户。2.3.2单元测试的执行过程何时进行单元测试?单元测试常2.4集成测试2.4.1非增量式测试2.4.2增量式测试2.4.3不同集成测试方法的比较2.4.4回归测试Return2.4集成测试2.4.1非增量式测试Return2.4.4回归测试什么是回归测试?——在集成测试策略的环境中,回归测试是对某些已经进行过的测试的某些子集再重新进行一遍,以保证上述改变不会传播无法预料的副作用或引发新的问题。——在更广的环境里,回归测试就是用来保证(由于测试或其他原因的)改动不会带来不可预料的行为或另外的错误。回归测试可以通过重新执行所有的测试用例的一个子集人工地进行,也可以使用自动化的捕获回放工具来进行。回归测试集包括三种不同类型的测试用例:(1)能够测试软件的所有功能的代表性测试用例(2)专门针对可能会被修改而影响软件功能的附加测试(3)针对修改过的软件成分的测试2.4.4回归测试什么是回归测试?2.5确认测试1、确认测试的准则确认测试也称为合格性测试,是检验所开发的软件是否能按用户提出的要求进行。软件确认要通过一系列证明软件功能和要求一致的黑盒测试来完成。经过确认测试,应该为已开发的软件给出结论性评价:(1)经过检验的软件的功能、性能及其他要求均已满足需求规格说明书的规定,则可被认为是合格的软件。(2)经过检验发现与需求说明书有相当的偏离,得到一个各项缺陷清单。Return2.5确认测试1、确认测试的准则Return确认测试(续)2、配置审查的内容确认测试过程的重要环节就是配置审查工作。其目的在于确保已开发软件的所有文件资料均已编写齐全,并得到分类编目,足以支持运行以后的软件维护工作。配置审查的文件资料包括用户所需的以下资料:(1)用户手册(2)操作手册(3)设计资料——如:设计说明书、源程序以及测试资料(测试说明书、测试报告)等确认测试(续)2、配置审查的内容2.6系统测试为什么要进行系统测试?

——由于软件只是计算机系统中的一个组成部分,软件开发完成之后,最终还要和系统中的硬件系统、某些支持软件、数据信息等其他部分配套运行。因此,在投入运行前要完成系统测试,以保证各组成部分不仅能单独的得到检验,而且在系统各部分协调工作的环境下也能正常工作。Return2.6系统测试为什么要进行系统测试?Return强度测试从本质上来说,强度测试(也称压力测试-StreeTesting)的目的是要检测非正常的情形,测试是想要破坏程序。强度测试需要在反常规数据量、频率或资源的方式下运行系统,以检验系统能力的最高实际限度。举例:—如果正常的中断频率为每秒5次,强度测试设计为每秒50次中断。—把输入数据的量提高一个数量级来测试输入功能会如何响应。—若某系统正常运行可支持200个终端并行工作,强度测试则检验1000个终端并行工作的情况。—运行大量的消耗内存或其他系统资源的测试实例。强度测试从本质上来说,强度测试(也称压力测试-StreeT性能测试性能测试用来测试软件在系统集成中的运行性能,特别是针对实时系统和嵌入式系统,仅提供符合功能需求但不符合性能需求的软件是不能被接受的。性能测试可以在测试过程的任意阶段进行,但只有当整个系统的所有成分都集成在一起后,才能检查一个系统的真正性能。性能测试常常和强度(压力)测试结合起来进行,而且常常需要硬件和软件测试设备,这就是说,常常有必要在一种苛刻的环境中衡量资源的使用(比如,处理器周期)。性能测试性能测试用来测试软件在系统集成中的运行性能,特别是针兼容性测试软件兼容性测试是检测各软件之间能否正确地交互和共享信息,其目标是保证软件按照用户期望的方式进行交互,使用其它软件检查软件操作的过程。兼容性的测试通常需要解决以下问题:(1)新开发的软件需要与哪种操作系统、Web浏览器和应用软件保持兼容,如果要测试的软件是一个平台,那么要求应用程序能在其上运行。(2)应该遵守哪种定义软件之间交互的标准或者规范。(3)软件使用何种数据与其它平台、与新的软件进行交互和共享信息。兼容性测试软件兼容性测试是检测各软件之间能否正确地交互和共享兼容性测试(续)软件兼容的实例:从Web页面剪切文字,然后在文字处理程序中打开的文档中粘贴。从电子表格程序保存账目数据,然后在另一个完全不同的电子表格程序中读入这些数据。使图形处理软件在同一操作系统下的不同版本正常工作。使文字处理程序从联系人管理程序中读取姓名和地址,打印个性化的邀请函和信封。升级到新的数据库程序,读入现存所有数据库,并能够像老版本一样对其中的数据进行处理。兼容性测试(续)软件兼容的实例:兼容性测试(续)兼容性通常有4种——向前兼容与向后兼容、不同版本间的兼容、标准和规范、数据共享兼容(1)向前兼容和向后兼容

向前兼容是指可以使用软件的未来版本,向后兼容是指可以使用软件的以前版本。并非所有的软件都要求向前兼容和向后兼容,这是软件设计者需要决定的产品特性。使用文本文件可以对向前兼容和向后兼容作一个简单的演示:在Windows98上用Notepad创建的文本文件,它可以向后兼容MS-DOS1.0后的所有版本,它还可以向前兼容Windows2000甚至以后的版本。兼容性测试(续)兼容性通常有4种——向前兼容与向后兼容、不同兼容性测试(续)在Windows98上运行的NotepadMYDATE.TXT在MS-DOS1.0上运行的Edit.exe在Windows3.1上运行的Notepad在Windows95上运行的Notepad向后兼容在Windows2000上运行的WordPad在未来操作系统上运行的未知软件向前兼容兼容性测试(续)在Windows98MYDATE.TXT在Web网站测试Web网站的网页是由文字、图形、音频、视频和超级链接组成的文档。对网站的测试包含许多方面,如配置测试、兼容测试、可用性测试、文档测试等;黑盒测试、白盒测试、静态测试和动态测试都有可能采用。通常Web网站测试包含以下内容:(1)文字测试(2)链接测试(3)图像、图像测试(4)表单测试(5)动态内容测试(6)数据库测试(7)服务器性能及负载测试(8)安全性测试Web网站测试Web网站的网页是由文字、图形、音频、视频和超第2章软件测试策略与过程2.1软件测试的复杂性分析2.2软件测试方法与策略2.3单元测试2.4集成测试2.5确认测试2.6系统测试2.7验收测试2.8测试后的调试2.9面向对象的软件测试第2章软件测试策略与过程2.1软件测试的复杂性分析2.1软件测试的复杂性分析1、无法对程序进行完全测试(1)测试所需要的输入量太大(2)测试的输出结果太多(3)软件实现的途径太多(4)软件规格说明没有一个客观标准2、测试无法显示潜在的软件缺陷和故障

——通过软件测试只能报告软件已被发现的缺陷和故障,无法报告隐藏的软件故障。3、存在的故障现象与发现的故障数量成正比

——结论:应当对故障集中的程序段进行重点测试Return2.1软件测试的复杂性分析1、无法对程序进行完全测试软件测试的复杂性分析(续)软件缺陷故障数量测试工作量测试中测试后测试费用遗漏缺陷数目优化测试量图2-1测试工作量和软件缺陷数量之间的关系软件测试的复杂性分析(续)软件缺陷故障数量测试工作量测试中测2.2软件测试方法与策略2.2.1静态测试与动态测试2.2.2黑盒测试与白盒测试2.2.3软件测试过程Return2.2软件测试方法与策略2.2.1静态测试与动态测试2.2.1静态测试与动态测试1、静态测试静态测试不实际运行软件,主要是对软件的编程格式、结构等方面进行评估。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,也可以借助软件工具自动进行。静态测试方法也可利用计算机作为对被测程序进行特性分析的工具,但与人工测试方式有着根本区别。另一方面,因它并不真正运行被测程序,只进行特性分析,这又与动态方法不同。所以,静态方法常常称为“分析”,静态测试是对被测程序进行特性分析方法的总称。2.2.1静态测试与动态测试1、静态测试静态测试与动态测试(续)

代码检查代码检查包括代码走查、界面检查、代码审查等,主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码的逻辑表达的正确性,代码结构的合理性等方面。代码检查的具体内容:变量检查、命名和类型审查、程序逻辑审查、程序语法检查和程序结构检查等。代码检查的优点:在实际使用中,代码检查比动态测试更有效率,能快速找到缺陷,发现30%~70%的逻辑设计和编码缺陷;代码检查看到的是问题本身而非征兆。代码检查的缺点:非常耗费时间,而且代码检查需要知识和经验的积累。静态测试与动态测试(续)静态测试与动态测试(续)静态测试阶段的任务:(1)检查算法的逻辑正确性。(2)检查模块接口的正确性。(3)检查输入参数是否有合法性检查。(4)检查调用其他模块的接口是否正确。(5)检查是否设置了适当的出错处理。(6)检查表达式、语句是否正确,是否含有二义性。(7)检查常量或全局变量使用是否正确。(8)检查标识符的使用是否规范、一致。(9)检查程序风格的一致性、规范性。(10)检查代码是否可以优化,算法效率是否最高。(11)检查代码注释是否完整,是否正确反映了代码的功能。静态测试与动态测试(续)静态测试阶段的任务:静态测试与动态测试(续)静态测试可以完成以下工作:(1)发现下列程序的错误:错用局部变量和全局变量;未定义的变量、不匹配的参数;不适当的循环嵌套或分支嵌套、死循环、不允许的递归;调用不存在的子程序,遗漏标号或代码。(2)找出以下问题的根源:从未使用过的变量;不会执行到的代码、从未使用过的标号;潜在的死循环。(3)选择测试用例。静态测试与动态测试(续)静态测试可以完成以下工作:静态测试与动态测试(续)2、动态测试动态方法的主要特征是:——计算机必须真正运行被测试的程序,通过输入测试用例,对其运行情况即输入与输出的对应关系进行分析,以达到检测的目的。动态测试包括:(1)功能确认与接口测试(2)覆盖率分析(3)性能分析(4)内存分析静态测试与动态测试(续)2、动态测试2.2.2黑盒测试和白盒测试若测试规划是基于产品的功能,目的是检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为黑盒测试(Black-boxTesting)方法。

——黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。若测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试(White-boxTesting)方法。——白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。

2.2.2黑盒测试和白盒测试若测试规划是基于产品的功能,黑盒测试和白盒测试(续)白盒测试黑盒测试两种测试方法从完全不同的角度出发,反映了测试思路的两方面情况,适用于不同的测试阶段。黑盒测试和白盒测试(续)白盒测试黑盒测试两种测试方法从完全不黑盒测试和白盒测试(续)1、黑盒测试黑盒测试的基本观点是:任何程序都可以看作是从输入定义域映射到输出值域的函数过程,被测程序被认为是一个打不开的黑盒子,黑盒中的内容(实现过程)完全不知道,只明确要做到什么。黑盒测试主要根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。黑盒测试的特点:(1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。(2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。黑盒测试和白盒测试(续)1、黑盒测试黑盒测试和白盒测试(续)输入输出黑盒测试是在程序接口进行测试,它只是检查程序功能是否按照规格说明书的规定正常使用。也被称为用户测试。黑盒测试和白盒测试(续)输入输出黑盒测试是在程序接口进行测试黑盒测试和白盒测试(续)黑盒测试主要是为了发现以下几类错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?黑盒测试的难点:在哪个层次上进行测试?黑盒测试的具体技术方法:边界值分析法等价类划分法因果图法决策表法黑盒测试和白盒测试(续)黑盒测试主要是为了发现以下几类错误:黑盒测试和白盒测试(续)2、白盒测试白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。通常的程序结构覆盖有:语句覆盖判定覆盖条件覆盖判定/条件覆盖路径覆盖黑盒测试和白盒测试(续)2、白盒测试黑盒测试和白盒测试(续)白盒测试需要完全了解程序结构和处理过程,它按照程序内部逻辑测试程序,检验程序中每条通路是否按预定要求正确工作。也被称为程序员测试。应用程序黑盒测试和白盒测试(续)白盒测试需要完全了解程序结构和处理过黑盒测试和白盒测试(续)?X=2

y=2xY=4X=2Y=4未知等式与已知等式黑盒白盒3、黑盒测试法和白盒测试法的比较黑盒测试和白盒测试(续)?X=2y=2xY=4X=黑盒测试和白盒测试(续)项目黑盒测试法白盒测试法规划方面功能的测试结构的测试优点方面能确保从用户的角度出发进行测试能对程序内部的特定部位进行覆盖测试缺点方面无法测试程序内部特定部位;当规格说明有误,则不能发现问题无法检查程序的外部特性;无法对未实现规格说明的程序内部欠缺部分进行测试应用范围边界分析法等价类划分法决策表测试语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,路径覆盖,循环覆盖,模块接口测试黑盒测试和白盒测试(续)项目黑盒测试法白盒测试法规划功能的测2.2.3软件测试过程单元测试单元测试单元测试集成测试集成测试确认测试系统测试*这三个测试可能交叉与前后互换被测模块被测模块被测模块设计信息单元软件需求其它元素用户信息其它元素*…*验收测试*交付用户…图2-2软件测试的过程流程2.2.3软件测试过程单元单元单元集成集成确认系统*软件测试过程(续)单元测试:针对每个单元的测试,

以确保每个模块能正常工作为目标。集成测试:对已测试过的模块进行组装,进行集成测试。目的在于检验与软件设计相关的程序结构问题。确认(有效性)测试:是检验所开发的软件能否满足所有功能和性能需求的最后手段。系统测试:检验软件产品能否与系统的其他部分(比如,硬件、数据库及操作人员)协调工作。验收(用户)测试:检验软件产品质量的最后一道工序。主要突出用户的作用,同时软件开发人员也应有一定程度的参与。软件测试过程(续)单元测试:针对每个单元的测试,以确保每个一个实用软件测试过程一种简单实用的软件测试过程模型POCERM。测试过程中必需的基本测试活动及其产生的结果:拟定软件测试计划(Plans)编制软件测试大纲(Outlines)设计和生成测试用例(testCasegeneration)实施测试(Execution)生成软件测试报告(softwaretestingReports)软件问题报告SPR(SoftwareProblemReport)测试结果报告(testresultReports)一个实用软件测试过程一种简单实用的软件测试过程模型POCE2.3单元测试2.3.1单元测试的主要任务2.3.2单元测试的执行过程Return2.3单元测试2.3.1单元测试的主要任务Retur2.3.1单元测试的主要任务单元测试针对每个程序的模块,主要测试5个方面的问题:——模块接口、局部数据结构、边界条件、独立的路径和错误处理。模块模块接口局部数据结构路径测试出错处理边界条件2.3.1单元测试的主要任务单元测试针对每个程序的模块,单元测试的主要任务(续)模块接口这是对模块接口进行的测试,检查进出程序单元的数据流是否正确。模块接口测试必须在任何其它测试之前进行。模块接口测试至少需要如下的测试项目:(1)调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;(2)所测模块调用子模块时,它输入给子模块的参数与子模块中的形式参数在个数、属性、顺序上是否匹配;(3)是否修改了只做输入用的形式参数;(4)调用标准函数的参数在个数、属性、顺序上是否正确;(5)全局变量的定义在各模块中是否一致。单元测试的主要任务(续)模块接口单元测试的主要任务(续)局部数据结构在模块工作过程中,必须测试模块内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误。对于局部数据结构,应该在单元测试中注意发现以下几类错误:(1)不正确的或不一致的类型说明。(2)错误的初始化或默认值。(3)错误的变量名,如拼写错误或书写错误。(4)下溢、上溢或者地址错误。单元测试的主要任务(续)局部数据结构单元测试的主要任务(续)路径测试在单元测试中,最主要的测试是针对路径的测试。测试用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误。常见的错误有:误解的或不正确的算术优先级;混合模式的运算;错误的初始化;精确度不够精确;表达式的不正确符号表示。针对判定和条件覆盖,测试用例还要能够发现如下错误:不同数据类型的比较;不正确的逻辑操作或优先级;应当相等的地方由于精确度的错误而不能相等;不正确的判定或不正确的变量;不正确的或不存在的循环终止;当遇到分支循环时不能退出;不适当地修改循环变量。单元测试的主要任务(续)路径测试单元测试的主要任务(续)边界条件边界测试是单元测试的最后一步,必须采用边界值分析方法来设计测试用例,认真仔细地测试为限制数据处理而设置的边界处,看模块是否能够正常工作。一些可能与边界有关的数据类型如数值、字符、位置、数量、尺寸等,还要注意这些边界的首个、最后一个、最大值、最小值、最长、最短、最高、最低等特征。在边界条件测试中,应设计测试用例检查以下情况:(1)在n次循环的第0次、1次、n次是否有错误。(2)运算或判断中取最大值、最小值时是否有错误。(3)数据流、控制流中刚好等于、大于、小于确定的比较值是否出现错误。单元测试的主要任务(续)边界条件单元测试的主要任务(续)出错处理测试出错处理的重点是模块在工作中发生了错误,其中的出错处理设施是否有效。检验程序中的出错处理可能面对的情况有:(1)对运行发生的错误描述难以理解。(2)所报告的错误与实际遇到的错误不一致。(3)出错后,在错误处理之前就引起系统的干预。(4)例外条件的处理不正确。(5)提供的错误信息不足,以至于无法找到错误的原因。单元测试的主要任务(续)出错处理2.3.2单元测试的执行过程何时进行单元测试?单元测试常常是和代码编写工作同时进行的,在完成了程序编写、复查和语法正确性验证后,就应进行单元测试用例设计。在单元测试时,如果模块不是独立的程序,需要设置一些辅助测试模块。辅助测试模块有两种:(1)驱动模块(Drive)用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,将相关数据传送给被测模块,启动被测模块,并打印出相应的结果。(2)桩模块(Stub)用来模拟被测模块工作过程中所调用的模块。它们一般只进行很少的数据处理。驱动模块和桩模块都是额外的开销,虽然在单元测试中必须编写,但并不需要作为最终的产品提供给用户。2.3.2单元测试的执行过程何时进行单元测试?单元测试常2.4集成测试2.4.1非增量式测试2.4.2增量式测试2.4.3不同集成测试方法的比较2.4.4回归测试Return2.4集成测试2.4.1非增量式测试Return2.4.4回归测试什么是回归测试?——在集成测试策略的环境中,回归测试是对某些已经进行过的测试的某些子集再重新进行一遍,以保证上述改变不会传播无法预料的副作用或引发新的问题。——在更广的环境里,回归测试就是用来保证(由于测试或其他原因的)改动不会带来不可预料的行为或另外的错误。回归测试可以通过重新执行所有的测试用例的一个子集人工地进行,也可以使用自动化的捕获回放工具来进行。回归测试集包括三种不同类型的测试用例:(1)能够测试软件的所有功能的代表性测试用例(2)专门针对可能会被修改而影响软件功能的附加测试(3)针对修改过的软件成分的测试2.4.4回归测试什么是回归测试?2.5确认测试1、确认测试的准则确认测试也称为合格性测试,是检验所开发的软件是否能按用户提出的要求进行。软件确认要通过一系列证明软件功能和要求一致的黑盒测试来完成。经过确认测试,应该为已开发的软件给出结论性评价:(1)经过检验的软件的功能、性能及其他要求均已满足需求规格说明书的规定,则可被认为是合格的软件。(2)经过检验发现与需求说明书有相当的偏离,得到一个各项缺陷清单。Return2.5确认测试1、确认测试的准则Return确认测试(续)2、配置审查的内容确认测试过程的重要环节就是配置审查工作。其目的在于确保已开发软件的所有文件资料均已编写齐全,并得到分类编目,足以支持运行以后的软件维护工作。配置审查的文件资料包括用户所需的以下资料:(1)用户手册(2)操作手册(3)设计资料——如:设计说明书、源程序以及测试资料(测试说明书、测试报告)等确认测试(续)2、配置审查的内容2.6系统测试为什么要进行系统测试?

——由于软件只是计算机系统中的一个组成部分,软件开发完成之后,最终还要和系统中的硬件系统、某些支持软件、数据信息等其他部分配套运行。因此,在投入运行前要完成系统测试,以保证各组成部分不仅能单独的得到检验,而且在系统各部分协调工作的环境下也能正常工作。Return2.6系统测试为什么要进行系统测试?Return强度测试从本质上来说,强度测试(也称压力测试-Stre

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论