测试的目的就是在软件投入生产性运行之前.ppt
- 文档编号:2547209
- 上传时间:2022-11-01
- 格式:PPT
- 页数:64
- 大小:354.50KB
测试的目的就是在软件投入生产性运行之前.ppt
《测试的目的就是在软件投入生产性运行之前.ppt》由会员分享,可在线阅读,更多相关《测试的目的就是在软件投入生产性运行之前.ppt(64页珍藏版)》请在冰豆网上搜索。
第七章第七章测试测试测试的目的就是在软件投入生产性运行之前,测试的目的就是在软件投入生产性运行之前,尽可能多地发现软件中的错误。
目前软件测试仍然尽可能多地发现软件中的错误。
目前软件测试仍然是保证软件质量的关键步骤,是保证软件质量的关键步骤,测试是对软件规测试是对软件规格说明、设计和编码的最后复审。
格说明、设计和编码的最后复审。
根本目标:
尽可能多地发现并排除软件中潜藏根本目标:
尽可能多地发现并排除软件中潜藏的错误,最终把高质量的软件系统交给用户。
的错误,最终把高质量的软件系统交给用户。
无论怎样强调软件测试的重要性和它对软件可无论怎样强调软件测试的重要性和它对软件可靠性的影响都不过分。
靠性的影响都不过分。
软件测试在软件生命周期中横跨两个阶段。
软件测试包括两种:
单元测试模块的编写者和测试者是同一个人综合测试由专门的测试人员承担软件测试的工作量往往占软件开发总工作量的40以上7.基本概念7.1.1软件测试的目标
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。
测试的定义为了发现程序中的错误而执行程序的过程。
测试目标决定了测试方案的设计。
如果为了表明程序是正确的而进行测试,就会设计一些不易暴露错误的测试方案;相反,如果测试是为了发现程序中的错误,就会力求设计出最能暴露错误的测试方案。
由于测试的目标是暴露程序中的错误,因此由程序的编写者自己进行测试是不恰当的。
因此,在综合测试阶段通常由其他人员组成测试小组来完成测试工作。
测试不能证明错误不存在,只能表示软件错误已经出现。
测试决不能证明程序是正确的。
即使经过了最严格的测试之后,仍然可能还有没被发现的错误潜藏在程序中。
测试只能查找出程序中的错误,不能证明程序中没有错误。
测试原则n所有的测试都应追溯到用户需求。
n应在测试工作真正开始的前较长时间内就进行测试计划。
(测试计划可在设计模型一完成就开始,详细测试方案定义可在设计模型被确定后立即开始)n穷举测试是不可能的。
n为达到最佳效果,应由独立的第三方来构造测试。
可测试性软件的可测试性就是一个计算机程序能够被测试的容易程度。
软件的可测试性就是一个计算机程序能够被测试的容易程度。
可测试性特征:
可测试性特征:
可操作性可操作性“运行得越好,被测试的效率越高运行得越好,被测试的效率越高”可观察性。
可观察性。
“你所见的即为你所测试的你所见的即为你所测试的”可控制性。
可控制性。
“对软件控制越好,测试越能够被自动执行与对软件控制越好,测试越能够被自动执行与优化优化”可分解性。
可分解性。
“通过控制测试范围,能更快的分界问题,执通过控制测试范围,能更快的分界问题,执行更灵巧的再测试行更灵巧的再测试”简单性。
简单性。
“需测试的内容越少,测试速度越快需测试的内容越少,测试速度越快”稳定性。
稳定性。
“改变越少,对测试的破坏越小改变越少,对测试的破坏越小”易理解性。
易理解性。
“得到的信息越多,进行的测试越灵巧得到的信息越多,进行的测试越灵巧”“好”测试的属性一个好测试发现错误的可能性很高。
一个好测试并不冗余。
(每个测试都该有不同的用途)一个好测试应该是一组目的相似的测试中最佳的,最可能找到所有错误的测试。
一个好测试既不会太简单,也不会太复杂。
7.1.2黑盒测试和白盒测试测试任何产品都有两种方法:
黑盒测试如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;白盒测试如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,且所有内部部件被充分利用(确保“所有齿轮吻合”)。
黑盒测试又称为功能测试,它把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。
也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如,数据库或文件)的完整性。
(故意不考虑控制结构,而是注意信息域)黑盒测试检测的错误类型功能不对或遗漏。
界面错误。
数据结构或外部数据库访问错误。
性能错误。
初始化和终止错误。
白盒测试又称为结构测试,它的前提是可以把程序看成装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
(使用程序设计的控制结构导出测试方案)包含所有可能情况的测试称为穷尽测试,对于实际程序而言,穷尽测试通常是不可能做到的。
白盒测试功能保证一个模块中的所有独立路径至少被执行一次。
对所有逻辑值均需测试TRUE和FALSE。
在上下边界及可操作范围内运行所有循环。
检查内部数据结构以确保其有效性。
7.1.37.1.3软件测试的步骤软件测试的步骤1.1.模块测试模块测试模块测试的目的是保证每个模块作为一个单元模块测试的目的是保证每个模块作为一个单元能正确运行,所以模块测试通常又称为单元测试。
能正确运行,所以模块测试通常又称为单元测试。
在这个测试步骤中所发现的往往是编码和详细设计在这个测试步骤中所发现的往往是编码和详细设计的错误。
的错误。
2.2.子系统测试子系统测试子系统测试是把经过单元测试的模块放在一起子系统测试是把经过单元测试的模块放在一起形成一个子系统来测试。
模块相互间的协调和通信形成一个子系统来测试。
模块相互间的协调和通信是这个测试过程中的主要问题,因此这个步骤着重是这个测试过程中的主要问题,因此这个步骤着重测试模块的接口。
测试模块的接口。
3.系统测试系统测试是把经过测试的子系统装配成一个完整的系统来测试。
在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。
4.验收测试验收测试把软件系统作为单一的实体进行测试,目的是验证系统确实能够满足用户的需要,在这个测试步骤中发现的往往是系统需求说明书中的错误。
5.5.平行运行平行运行平行运行就是同时运行新开发出来的系统和将平行运行就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理被它取代的旧系统,以便比较新旧两个系统的处理结果。
这样做的具体目的有如下几点:
结果。
这样做的具体目的有如下几点:
(11)可以在准生产环境中运行新系统而又不冒风)可以在准生产环境中运行新系统而又不冒风险;险;(22)用户能有一段熟悉新系统的时间;)用户能有一段熟悉新系统的时间;(33)可以验证用户指南和使用手册之类的文档;)可以验证用户指南和使用手册之类的文档;(44)能够以准生产模式对新系统进行全负荷测试,)能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。
可以用测试结果验证性能指标。
测试阶段的信息流软件配置:
测试配置+测试实际结果+调试纪录测试配置:
测试计划+测试方案测试方案:
测试时使用的输入数据(测试用例)每组输入数据预定要检查的功能每组输入数据预期应该得到的正确输出7.1.47.1.4测试阶段的信息流测试阶段的信息流7单元测试单元测试集中检验软件设计的最小单元单元测试集中检验软件设计的最小单元模模块。
单元测试通常使用白盒测试法,而且对多个模块。
单元测试通常使用白盒测试法,而且对多个模块的测试可以并行地进行。
块的测试可以并行地进行。
7.2.17.2.1单元测试考虑单元测试考虑在单元测试期间主要评价模块的下述五个特性:
在单元测试期间主要评价模块的下述五个特性:
模块接口;模块接口;局部数据结构;局部数据结构;重要的执行通路;重要的执行通路;出错处理通路;出错处理通路;影响上述各方面特性的边界条件。
影响上述各方面特性的边界条件。
在对接口进行测试时主要检查下述各点;在对接口进行测试时主要检查下述各点;()参数数目和由调用模块送来的变元的数目是否()参数数目和由调用模块送来的变元的数目是否相等?
相等?
(22)参数的属性和变元的属性是否匹配?
)参数的属性和变元的属性是否匹配?
(33)参数和变元的单位系统是否匹配?
)参数和变元的单位系统是否匹配?
(44)传送给被调用模块的变元的数目是否等于那个)传送给被调用模块的变元的数目是否等于那个模块的参数的数目?
模块的参数的数目?
(55)传送给被调用模块的变元属性和参数的属性是)传送给被调用模块的变元属性和参数的属性是否一致?
否一致?
(66)传送给被调用模块的变元的单位系统和该模块参)传送给被调用模块的变元的单位系统和该模块参数的单位系统是否一致?
数的单位系统是否一致?
(77)传送给内部函数的变元属性、数目和次序是否)传送给内部函数的变元属性、数目和次序是否正确?
正确?
(88)是否修改了只做输入用的变元?
)是否修改了只做输入用的变元?
(99)全程变量的定义和用法在各个模块中是否一致?
)全程变量的定义和用法在各个模块中是否一致?
如果一个模块完成外部的输入或输出时,还应该再检查下述各点:
(1)文件属性是否正确?
(2)打开文件语句是否正确?
(3)格式说明书与输入输出语句是否一致?
(4)缓冲区大小与记录长度是否匹配?
(5)使用文件之前先打开文件了吗?
(6)文件结束条件处理了吗?
(7)输入输出错误检查并处理了吗?
(8)输出信息中有文字书写错误吗?
对于一个模块而言,局部数据结构是常见的错误来源。
应该仔细设计测试方案,以便发现下述类型的错误:
(1)错误的或不相容的说明;
(2)使用尚未赋值或尚未初始化的变量;(3)错误的初始值或不正确的缺省值;(4)错误的变量名字(拼写错或截短了);(5)数据类型不相容;(6)上溢、下溢或地址异常。
由于错误的计算、不正确的比较或不适当的控制流造成的错误:
(1)计算次序不对或误解了运算符的优先次序;
(2)混合运算(运算对象的类型彼此不相容);(3)变量初始值不正确;(4)精度不够;(5)表达式的符号表示错误。
比较后控制流变化的错误:
比较后控制流变化的错误:
(11)比较数据类型不同的量;)比较数据类型不同的量;(22)逻辑运算符不正确或优先次序的错误;)逻辑运算符不正确或优先次序的错误;(33)当由于精度问题两个量不会相等时,程序中却)当由于精度问题两个量不会相等时,程序中却期待着相等条件的出现;期待着相等条件的出现;(44)“差差1”1”错(即,多循环一次或少循环一次);错(即,多循环一次或少循环一次);(55)错误的或不存在的循环终止条件;)错误的或不存在的循环终止条件;(66)当遇到发散的迭代时不能终止循环;)当遇到发散的迭代时不能终止循环;(77)错误地修改循环变量。
)错误地修改循环变量。
当错误处理部分,应该考虑潜在的错误:
(1)对错误的描述是难于理解的;
(2)记下的错误与实际遇到的错误不同;(3)在对错误进行处理之前,错误条件已经引起系统异常;(4)对错误的处理(例外处理)不正确;(5)描述错误的信息不足以帮助确定造成错误的位置。
边界测试是单元测试中最后的也可能是最重要的任务。
软件常常在它的边界上失效。
7.2.27.2.2单元测试过程单元测试过程通常经过人工测试和计算机测试两种类型的测通常经过人工测试和计算机测试两种类型的测试。
试。
1.1.代码审查代码审查人工测试源程序可以由编写者本人非正式地进人工测试源程序可以由编写者本人非正式地进行,也可以由审查小组正式进行。
后者行,也可以由审查小组正式进行。
后者称为代码审称为代码审查,它是一种非常有效的程序验证技术,对于典型查,它是一种非常有效的程序验证技术,对于典型的程序来说,可以查出的程序来说,可以查出30307070的逻辑设计错误的逻辑设计错误和编码错误。
和编码错误。
代码审查比计算机测试优越的是:
一次审查会代码审查比计算机测试优越的是:
一次审查会上可以发现许多错误。
可减少系统验证的总工作量上可以发现许多错误。
可减少系统验证的总工作量实践表明,对于查找某些类型的错误来说,人实践表明,对于查找某些类型的错误来说,人工测试比计算机测试更有效;对于其他类型的错误工测试比计算机测试更有效;对于其他类型的错误来说则刚好相反。
来说则刚好相反。
2.测试软件模块并不是一个独立的程序,因此必须为每个单元测试开发驱动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测试 目的 就是 软件 投入 生产性 运行 之前
![提示](https://static.bdocx.com/images/bang_tan.gif)