《软件测试》复习重点(精)
- 格式:doc
- 大小:48.50 KB
- 文档页数:21
《软件测试基础》各章重点第1章软件测试的基础理论软件缺陷的定义软件缺陷的原因软件测试的定义软件测试的目的和原则软件测试的生命周期及各阶段的含义软件测试与软件开发各阶段的关系第2章软件测试方法软件测试的策略和方法静态测试与动态测试黑盒测试的定义、典型的黑盒测试方法白盒测试的定义、典型的白盒测试方法黑盒测试与白盒测试比较第3章软件测试流程软件测试的三种过程模型软件测试过程(单元测试、集成测试、确认测试、系统测试、验收测试)及内容第4章软件测试环境的搭建软件测试环境的组成测试环境的要素第5章软件测试用例设计测试用例的定义测试用例的作用测试用例的特性测试用例的编制要素测试用例的设计原则测试用例的设计方法第6章软件测试计划与相关文档测试计划的定义测试计划编写6要素(5W1H)软件开发、软件测试与测试计划制定的并行关系 测试文档的定义测试过程实施所必备的核心文档第7章软件自动化测试自动化测试的定义对自动化测试的认识误区自动化测试基于的原理和方法常用自动化测试工具第8章面向对象的软件测试为什么要使用面向对象的软件测试面向对象测试与传统测试的区别面向对象软件的测试分类面向对象软件测试技术与方法类测试中需要考虑的因素面向对象测试的基本步骤第9章 Web网站测试Web网站测试的概念Web网站测试的内容功能测试包括的内容性能测试包括的内容负载测试包括的内容压力测试包括的内容Web 应用系统的安全性测试区域可用性测试包括的内容配置和兼容性测试包括的内容数据库测试的两种情况第10章软件测试质量保证软件质量的定义软件质量的构成软件质量保证的定义软件质量保证与软件测试的关系软件能力成熟度模型的等级。
软件测试期末复习知识点总结大全第一篇:软件测试期末复习知识点总结大全1.软件测试:是由“验证(verrificatione)”和“有效性确认(validation)”活动构成的整体:“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性。
验证过程提供证据表明软件相关产品与所有生命周期活动的要求(如正确性、完整性、一致性、准确性等)相一致。
相当于以软件产品设计规格说明书为标准进行软件测试的活动。
“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。
一切从客户出发,理解客户的需求,对软件需求定义、设计的怀疑,发现需求定义和产品设计中的问题。
这主要通过各种软件评审活动来实现,包括让客户参加评审、测试活动。
软件测试过程:(1)测试组织和管理(2)测试计划(3)测试用例实际(4)测试实施(5)测试结果分析(6)测试评审与报告软件测试方法:白盒测试方法、黑盒测试方法、静态测试与动态测试、主动测试与被动测试、形式化测试方法、基于风险的测试、模糊测试方法、ALAC测试和随机测试方法2.单元测试:是对软件基本组成单元进行的测试,而且软件单元是在与程序的其他部分相隔离的情况下进行独立的测试。
静态测试就是静态分析,对模块的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和仿真运行。
动态测试是通过真正运行程序发现错误,通过观察代码运行过程,来获取系统行为、变量实时结果、内存、堆栈、线程以及测试覆盖度等各方面的信息,来判断系统是否存在问题,或者通过有效的测试用例,对于的输入输出关系来分析被测程序的运行情况,来发现缺陷。
静态测试、动态测试的区别:1.静态测试用于预防,动态测试用于矫正;2.多次的静态测试比动态测试的效率高;3,静态测试综合测试程序代码;4.在相当短的时间里,测试的覆盖率能达到100%,而动态测试经常只能达到50%测试左右;5.动态测试比静态测试更花时间;6.静态测试比动态测试更能发现bug;7.静态测试的执行可以在程序编码编译前,动态是中能在编译后才能执行。
第1章1. 重要1.软件测试的正面性观点【验证软件正常工作】✧软件测试就是为程序能够按预期设想那样运行而建立足够的信心✧【软件测试是一系列活动已评价一个程序或系统的特性或能力是否达到预期的结果】✧测试是为了验证软件是否符合用户需求,即验证软件产品是够能正常工作2.软件测试的反面性观点【测试是为了证明成粗有错误】测试是为了发现错误而执行的一个程序或者系统的过程3.IEEE 的软件测试定义使用人工或自动手段来运行或测试某个系统的过程,其目的是在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别4.什么是“验证“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性5.什么是“有效性确认”“有效性确认”是确认所开发的软件是否满足用户真正需求的活动[软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体]6.软件测试和软件开发的关系2. 次重要1.为什么要进行软件测试1.软件总存在缺陷2.软件中存在的缺陷给我们带来的算是是巨大的3.测试所有工程学科的基本组成单元,自然也是软件开发的重要组成部分。
4.软件人员水平越高,找出问题的时间越早,软件越容易更正,产品发布后越稳定2.软件测试的其它观点风险的观点:软件测试就是对风险的不断评估,引导软件开发的工,进而将最终发布的软件所存在的风险降到最低经济的观点:以最小的代价获得最高的软件产品质量第2章1. 重要1.ISO 8492对质量的定义质量是产品或服务多满足明示或暗示需求能力的固有特性和特征的集合2.IEEE对软件质量的定义软件产品满足规定的和隐含的于需求能力有关的全部特性和特征3.McCall软件质量模型4.IEEE (1983) 729 软件缺陷一个标准的定义从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
软件测试的公理:1 .测试只能保证软件存在错误,而不能表明软件没有错误。
2.测试的作用:确定程序中存在缺陷;帮助判断程序在实际中是否有用。
3.自己测试自己的程序是不可能能够测试充分的。
白盒测试主要根据被测程序的内部结构设计测试用例。
黑盒测试主要根据规格说明设计测试用例。
1.白盒测试:又叫做结构测试,逻辑驱动测试,是基于程序的测试。
2.黑盒测试:又叫做功能测试,数据驱动测试,是基于规格说明书的测试,从用户的观点出发的测试。
3.什么是软件测试?狭义上,软件测试是为了发现错误而执行程序的过程,是根据各个阶段的规格说明和内部结构而设计的一批测试用例,并根据这些测试用例执行程序发现错误的过程。
广义上,软件测试是贯穿整个软件开发周期,对软件产品(包括阶段性产品)进行验证和确认的过程。
其目的是尽早的发现软件中的错误一与用户需求和预先结果不一致性。
4.软件测试可以分为:单元测试,集成测试(又分为非增量式测试和增量式测试(自顶向下增量式测试,自底向上增量式测试,混合增量式测试)),确认测试,系统测试,验收测试。
5.软件测试的目的:发现软件错误,保证软件质量。
6.软件缺陷:1)产品为达到说明书上已经标明的功能2)产品出现说明书不会出现的错误3)产品没有实现说明说中虽未指出但应达到的目标4)产品功能超出说明书指明的范围5)软件测试人员认为软件难理解,不宜使用,或用户认为该产品使用效果不良。
7.白盒设计测试用例的方法:(语句覆盖,条件覆盖,判定覆盖,条件判定覆盖,)又叫做逻辑覆盖法、路径覆盖8.软件测试的对象:数据,程序,文档。
9.黑盒测试设计方法:边界值分析法,等价类划分法(有效等价类,无效等价类),正交法,判定表法,因果图法,用例场景10.对于一个n变量函数,边界值分析法会产生4n+l个测试用例。
如:x属于【1,12】,y属于【1,31】,则边界值分析法设计测试用例。
<1, 15X2, 15X12, 15X11, 15X6, 15X6, 1X6, 2X6, 30X6, 31〉共九个4*2+111.个数为n的函数的最坏情况为5的n次方个。
《软件测试》复习提纲1.PDCA的涵义与具体内容PDCA循环又叫戴明环,是美国质量管理专家戴明博士提出的,它是全面质量管理所应遵循的科学程序。
全面质量管理活动的全部过程,就是质量计划的制订和组织实现的过程,这个过程就是按照PDCA循环,不停顿地周而复始地运转的。
P(Plan)--计划目标,确定方针和目标,确定活动计划;D(Do)--执行,实地去做,实现计划中内容的细节;C(Check)--检查,总结执行计划的结果,注意效果,找出问题;A(Action)--行动改进,对总结检查的结果进行处理,成功的经验加以肯定并适当推广、标准化;失败的教训加以总结,以免重现,未解决的问题放到下一个PDCA循环。
2.软件质量保证的基本要素及相关涵义(P5-8)软件质量保证的活动基本上可以分为三类,分别是:软件测试(例如校验与确认),软件配置管理以及质量控制。
软件测试一种被普遍采用的风险管理策略,其作用是用来查证软件是否已经满足功能需求。
质量控制的定义是“用于监控工作以及观察需求是否被满足的过程和方法”,其要点是在产品推出之前就发现并纠正产品的缺陷。
软件配置管理系统中的各个软件元素都存在变化,软件配置管理所关心的就是来标识、跟踪并且控制这些变化3.软件测试的基本模式和相关操作方法(P10-12)1.黑盒测试(功能测试)在黑盒测试或功能测试中,测试条件主要是基于程序或者系统的功能。
比如,测试人员需要有关输入数据的信息,然后他观察输出数据,但是他并不知道程序到底是如何工作的。
就好比一个人不知道汽车的内部工作方式。
在这里,运行一个程序并不需要对理解其内部结构。
测试人员只是关注于程序的功能是否和规格说明书所描述的一致。
在黑盒测试中,测试人员把程序看成一个黑盒子,他完全没有必要了解程序或者系统的内部构造。
这方面的例子有:决策表格、等值划分、范围测试、边界值测试、数据库完整性测试、因果图、直交数组测试、数据和表格测试、异常测试、极限测试以及随机测试。
软件测试复习提纲第一章:1、什么是软件测试。
(1)程序测试是为了发现错误而执行程序的过程(2)测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量(3)测试对象不只包括程序代码,也包括与软件相关的交付件2、软件测试的目的。
(1)软件测试的目的就是寻找软件中的缺陷(2)为了获得更高质量的软件,软件测试的目标是尽量多的寻找软件中的缺陷(3)另外,考虑到测试成本,软件测试的目的是在可允许的时间跨度内可管理的工作量的条件下尽可能多地寻找软件中的缺陷3、软件测试的分类(1)站在对被测对象内部实现情况了解程度的角度:白盒测试、灰盒测试和黑盒测试;(2)站在是否执行被测系统的角度:静态测试和动态测试;(3)站在测试工具支持的程度:手工测试和自动测试;(4)站在被测内容的角度:功能测试、结构测试和非功能性测试;(5)站在以显示被测对象是否工作的角度:正向测试和反向测试;(6)站在测试过程推进的角度:单元测试、集成测试、系统测试。
4、为什么不可能进行完全的测试。
(1)输入的组合数目太庞大(2)输出的可能结果数目太庞大(3)可执行的路径数目太庞大5、高质量测试用例的属性。
(1)有效性:是否能够发现缺陷或者至少可能发现缺陷(2)仿效性:衡量测试用例的代表程度,减少测试用例的数量(3)经济性:测试用例所花费的成本,包括设计、实现、调试和运行测试用例的成本(4)可维护性:修改和维护测试用例的难易程度6、测试和调试的区别和联系。
(1)测试:测试的目的是为了寻找缺陷(2)调试:调试是为了发现、定位和修改程序代码中的错误;调试的目的是为了排错(3)区别和联系:测试为了寻找缺陷,调试为了排除缺陷;可能存在这样的工作流程: 测试发现缺陷◊调试定位缺陷和修改缺陷◊测试验证缺陷是否修改正确第二章1、什么是静态测试。
(1)定义:通过检查和评审软件而不是运行软件对软件进行测试的方法(2)对象:各种与软件相关的有必要进行测试的产物,例如各类文档、源代码等(3)方法:评审,通常由人来执行静态分析,通常需要工具辅助2、缺陷发现越早修复成本越低3、评审的分类(1)培训评审;(2)预备评审;(3)同行评审;(4)状态评审4、同行评审的类型(1)审查;(2)小组评审;(3)走读;(4)桌面评审;(5)临时评审第三章:1、什么是黑盒测试。
第1章软件测试概述2.软件的分类方法都有哪些?软件的分类方法有如下 4种:(1)按软件的功能分类(2)按软件服务对象的范围分类(3)按开发软件所需要的人力、时间以及完成的源程序行数分类。
(4)按软件工作方式分类按软件的工作方式分为:实时处理软件、分时软件、交互式软件、批处理软件。
3. 软件测试的概念软件测试是软件工程中的一个环节,是开发项目整体的一部分。
软件测试是有计划有组织的,是保证软件质量的一种手段,它是软件工程中一个非常重要的环节。
因此,可以认为它是伴随软件工程的诞生而诞生的,伴随着软件复杂程度的增加、规模的增大,软件测试作为一种能够保证软件质量的有效手段,越来越受到人们的重视,软件测试最终目的是使产品达到完美。
4. 软件测试的方法有哪些?软件的测试方法有3种,即用试题测试、用新旧两个系统作平行处理测试和软件测试自动化工具测试。
5. 请简要说明软件测试阶段的任务。
软件测试阶段有以下几方面的任务:(1) 制定测试大纲;(2) 制作测试数据;(3)程序测试;(4)功能测试;(5)子系统测试;(6)系统测试;(7)系统接口测试;(8)写出测试报告书;(9)向下阶段工作提交系统运行、维护手册的草案。
(10)制定测试大纲。
第2章白盒测试的实用技术1. 白盒测试有哪两个分类?(1)静态测试静态测试是测试中很重要的方法之一。
它不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试。
静态测试大约可以找出25%—60%的逻辑错误。
(2)动态测试:输入一组预先按照一定的测试准则设计的实例数据驱动运行程序,检查程序功能是否符合设计要求,发现程序中错误的过程。
2. 说出白盒测试的4个原则。
1)保证一个模块中所有路径至少被测试一次;2)所有逻辑值都要测试真和假两种情况;3)检查程序的内部数据结构是否有效;4)再上、下边界及可操作范围内运行所有循环。
5. 逻辑覆盖主要测试哪8各方面的覆盖率?(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)条件判定组合覆盖(5)多条件覆盖(6)修正条件判定覆盖(7)组合覆盖(8)路径覆盖第3章黑盒测试的实用技术1. 请详细叙述黑盒测试的基本概念。
软件测试重点什么是软件质量?软件质量的范畴?软件=程序+数据库+文档+服务软件质量是:1)满意用户的需求;2)各种属性的组合程度;3)游湖对软件产品的综合反映。
软件质量的范畴:可移植性,可用性,可维护性。
什么是软件测试,软件测试和调试的区别是?●测试是为了发现程序中的错误而执行的程序的过程;●好的测试方案实际可能发现迄今为止尚未发现的错误的测试方案;●成功的测试方案是发现尚未发现的错误的测试;●总之测试就是为了发现软件中的错误。
●软件调试就是为了改正软件程序中的错误。
什么是黑盒测试?什么事白盒测试?他们的方法是什么?黑盒测试:它是已知产品所应具有的功能的情况下,通过测试每个功能是否都正常使用。
方法:等价类,边界值,决策表法,因果图法。
白盒测试:他是知道产品内部工作过程的前提下,检测产品内部动作是否按照规格说明书的规定正常进行。
方法:语句覆盖,判断覆盖,条件覆盖,判断/条件覆盖,条件组合覆盖,路径覆盖。
软件错误和软件缺陷的区别?软件缺陷是:产品预期属性的偏离现象,包括检测缺陷和残留缺陷。
软件错误是:它是缺陷的一种,一种程序或系统的内部缺陷,主要是代码问题。
什么是单元测试?单元测试是软件设计的最小单元——模块。
单元测试是详细设计描述应对模块内所有重要的控制路径设计测试用例以便发现模块内部的错误。
单元测试多采用白盒测试技术,系统内多个模块可以并行的进行测试。
单元测试的主要任务?1.模块接口测试a.及对被测试的模块的数据进行测试,检查进出模块的数据是否正确。
b.测试是要包括全部的的模块接口:数据表,调用模块的参数,全程数据,文件输入\输出操作等进行测试。
2.局部数据结构测试a.局部数据测试要注意几个错误:不一致或不正确的数据类型说明;b.使用尚未赋值或初始化的变量;c.错误的初始值或默认值;d.变量拼写与书写错误;e.上溢,下溢或者地址错误等方面的问题。
3.路径测试4.错误处理测试5.边界条件测试系统测试的测试内容?1)恢复测试2)安全测试3)强度测试4)性能测试5)可用性测试6)可靠性测试软件测试人员的基本素质?(这是一道主观题)1.有逆向的思维能力2.善于开发人员沟通3.讨弄软件的需求设计4.报告好的测试结果5.善于同领导沟通6.掌握一些自动化测试工具7.有很强的学习能力8.了解业务知识9.提高自己的表达能力全复杂度的计算方法:(e为边数,n为节点数,p为连接区域属)1.方法一:V(G)=e-n+2p2.方法二:V(G)=p+1;(p是图G中的判定节点数)3.方法三:当p=1时V(G)=e-n+2基路经的测试方法:①导出程序的控制流图②求换路径的复杂度V(G)③确定只包含独立路径的基本路径集④设计测试用例测试用例是什么?为特定的目的而设计的一组测试输入,执行条件和预期的结果的程序代码,测试用例是执行测试的最小实体。
中科大软院软测期末复习提纲知识点一、软件测试基础知识1.软件测试概述-软件测试的定义和目标-软件测试的作用和重要性-软件测试的原则和方法2.软件测试流程-软件测试生命周期-软件测试过程中的活动和任务-不同阶段的测试策略和技术3.软件测试的类型-黑盒测试和白盒测试-功能测试、性能测试、安全测试、用户界面测试等4.软件测试用例设计-测试用例的概念和特性-测试用例设计的方法和技术-边界值分析、等价类划分、路径覆盖等二、软件测试技术1.静态测试技术-静态测试的概念和特点-静态测试方法和工具-代码审核、文档检查、需求审查等2.黑盒测试技术-黑盒测试的概念和特点-黑盒测试方法和技术-等价类划分、边界值分析、决策表等3.白盒测试技术-白盒测试的概念和特点-白盒测试方法和技术-代码覆盖率、路径覆盖、循环复杂度等4.自动化测试技术-自动化测试的概念和优势-自动化测试工具和框架-脚本编写和执行、测试自动化流程等三、软件测试管理1.软件测试计划-软件测试计划的编制和执行-软件测试计划的内容和要素-软件测试计划的评审和修改2.缺陷管理-缺陷管理的概念和重要性-缺陷管理的流程和工具-缺陷跟踪、缺陷分析、缺陷解决等3.测试评估和报告-测试评估的目的和方法-测试阶段评估和总结-测试报告的编写和呈现方式4.软件测试团队协作-软件测试团队的角色和职责-团队协作的原则和模式-沟通和合作技巧的培养四、软件测试工具1.测试管理工具-缺陷管理工具、测试计划工具、测试报告工具等-常用测试管理工具的介绍和比较2.自动化测试工具-自动化测试脚本工具、自动化测试执行工具等-常用自动化测试工具的介绍和比较3.性能测试工具-压力测试工具、负载测试工具等-常用性能测试工具的介绍和比较4.安全测试工具-漏洞扫描工具、代码审计工具等-常用安全测试工具的介绍和比较。
1. 软件开发过程中错误之所以不可避免, 从客观上说, 是由于所开发的软件具有相当的复杂性。
从主观方面讲,则是由于人们思维的局限性。
2. 软件测试是指在特定的条件下系统或其中的部件进行操作、观测并记录结果, 并对系统或部件的某方面作出评估的过程。
3.Myers 给出的三个重要观点:测试是为了证明程序有错,而不是证明程序无错误;一个好的测试用例是在于它能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。
4. 错误出现在书写程序的过程中导致错误的原因 :对需求的误解;编写代码逻辑不清或疏忽软件配置错误故障是错误在程序代码中的体现,程序中的故障就是导致程序按照非预期的方式运行的因素, 并不是所有的软件故障均有编码错误引起, 当一段包含故障的代码被执行且导致不正确的状态并传播到程序的输出,即失效发生。
并不是所有的故障均会导致失效,一个故障可能导致多种失效症状由错误→故障→失效的基本过程:由于程序设计人员犯了一个错误, 并导致软件源代码中形成一个故障。
如果在一定的条件下该故障被执行且促使系统产生错误的结果,从而形成了一个失效。
5. 软件可靠性就是软件在给定条件和给定时间间隔内不出现失效的概率。
软件正确性只有当一个程序在每一种输入下都能按预期执行才能被称为是正确的。
正确性是一种二进制度量,而可靠性则是 0至 1的区间度量。
6. 软件调试是在计算机程序中发现故障并减少其数目的一个方法性的过程。
Testing 与 Debugging 的区别测试的目的是显示存在错误, 而调试的目的是发现错误或导致程序失效的错误原因, 并修改程序以修正错误。
调试是测试之后的活动。
测试和调试在目标、方法和思路上都有所不同,具体如下:1. 测试从一个已知的条件开始,使用预先定义的过程,有预知的结果。
调试从一个未知的条件开始,结束的过程不可预计。
2. 测试过程可以事先设计,进度可事先确定。
调试不能描述过程或持续时间。
3. 测试是显示错误的行为;调试是推理的过程。
4. 测试显示开发人员的错误;调试是开发人员为自己辩护。
5. 测试能预期和可控;调试需要想象,经验和思考。
6. 测试能在没有详细设计的情况下完成;没有详细设计的信息调试不可能进行。
7. 测试能由非开发人员进行;调试必须由开发人员进行。
7. SQA与 ST 的区别与联系软件测试和软件质量保证是软件质量工程的两个不同层面的工作。
软件测试只是软件质量保证工作的一个重要环节。
质量保证 (QA的工作是通过预防、检查和改进来保证软件质量。
SQA 从流程方面保证软件的质量ST 从技术方面保证软件的质量QA 采取的方法主要是按照“全面质量管理”和“过程管理”并改进的原来展开工作。
在质量保证的工作中会掺入一些测试活动, 但它所关注的是软件质量的检查和测量。
因此, 其主要工作是着眼于软件开发活动中的过程、步骤和产物, 并不是对软件进行剖析, 找出问题和评估。
测试虽然也与开发过程紧密相关, 但它所关心的不是过程的活动, 相对的是关心结果。
测试人员要对过程中的产物 (开发文档和源代码进行静态审核, 运行软件, 找出问题, 报告质量甚至评估, 而不是为了验证软件的正确性。
当然, 测试的目的是为了去证明软件有错, 否则就违背了测试人员的本职了。
因此, 测试虽然对提高软件质量起了关键的作用, 但它只是软件质量保证中的一个重要环节。
SQA 重点是对软件开发过程进行监督、管理、控制;ST 重点是对软件开发的成果进行检查、控制。
8. 确认是指如何决定最后的软件产品是否正确无误。
验证是指如何决定软件开发的每个阶段、每个步骤的产品是否正确无误,并与其前面的开发阶段和开发步骤的产品相一致。
确认和验证是有联系的,但也有明显的差别。
Boehm 在 1981年是这样来描述两者差别的:确认要回答的问题是:我们正在开发一个正确无误的软件产品吗?验证要回答的问题是:我们正开发的软件产品是正确无误的吗?9. CMM软件评估与软件测试成熟度 T MM 无联系10. 软件测试方法可以从不同的角度进行分类:按照是否执行程序划分按照代码的可见性划分按照测试的实施者划分按照测试过程划分针对软件特定特征的测试11. 静态测试是指不利用计算机运行被测试的程序, 而是通过人工的方式对程序或相关文档进行检查以达到检测目的的方法。
动态测试就是通过执行被测程序, 并监视其执行状态、收集并对比其执行结果以判断程序是否正确运行的方法。
12. 静态测试主要包含的方法有:桌面检查 (desktopcheck 一种最为传统的方法,由程序员检查自己编写的程序。
程序员在程序通过编译之后, 对源程序代码进行分析、检验,并补充相关的文档,目的是发现程序中的故障。
由于程序员熟悉自己的程序及其程序设计风格, 桌面检查由程序员自己进行可以节省很多的检查时间,但应避免主观片面性。
同行评审 (peer review 由若干程序员和测试员组成一个审查小组, 通过阅读、讨论和争议, 对程序进行静态分析的过程。
通常分两步进行:小组负责人提前把设计规格说明书、控制流程图、程序文本及有关要求、规范等分发给小组成员,作为审查的依据。
小组成员在充分阅读这些材料后,进入评审的第二步。
召开评审会。
在会上,首先由程序员逐句讲解程序的逻辑。
在此过程中,程序员或其他小组成员可以提出问题,展开讨论,审查缺陷是否存在。
实践表明, 程序员在讲解过程中能发现许多原来自己没有发现的错误, 而讨论和争议促进了问题的暴露。
代码走查 (code walkthrough 代码走查同样也分两步进行:第一步也是把材料先发给走查小组成员,让他们认真研究程序,然后再开会。
开会的程序与同行评审不同,不是简单地读程序和对照错误检查单进行检查,而是让与会者“充当”计算机, 即首先由测试组成员为所测程序准备一批有代表性的测试用例, 提交给走查小组。
走查小组开会, 集体扮演计算机角色, 让测试用例沿程序的逻辑进行运行一遍,随时记录程序的执行轨迹,供分析和讨论用。
走查人员借助测试用例的媒介作用, 对程序的逻辑和功能提出各种疑问, 结合问题开展热烈的讨论和争议,能够发现更多的问题。
13. 功能性测试 , 又称作黑盒测试、基于规格说明的测试等, 是通过软件的外部表现来发现其缺陷和错误,检查程序是否按照需求规格说明书的规定正常实现。
结构性测试 ,又称作白盒测试、基于程序的测试等,通过分析程序的内部结构,以覆盖程序结构元素为目标的一类测试方法的总称在结构性测试中可使用各种测试方法的综合策略如下:在测试中,应尽量先用工具进行静态结构分析。
测试中可采取先静态后动态的组合方式:先进行静态结构分析、代码检查和静态质量度量,再进行覆盖率测试。
利用静态分析的结果作为引导,通过代码检查和动态测试的方式对静态分析结果进行进一步的确认,使测试工作更为有效。
覆盖率测试是白盒测试的重点,一般可使用基本路径测试法达到语句覆盖标准;对于软件的重点模块,应使用多种覆盖标准衡量代码的覆盖率。
在不同的测试阶段,测试的侧重点不同:在单元测试阶段,以代码检查、逻辑覆盖为主; 在集成测试阶段,需要增加静态结构分析、静态质量度量;在系统测试阶段,应根据黑盒测试的结果,采取相应的白盒测试。
14. 过错缺陷:是指在实现软件过程中对某些功能进行了错误的实现而引起的一类软件缺陷。
遗漏缺陷:是指在实现软件过程中遗漏对某些功能的实现而引起的一类软件缺陷15. 功能性测试遗漏缺陷结构性测试过错缺陷能力强16. 灰盒测试结合了白盒测试盒黑盒测试的要素,是两者的折中17. 按照测试实施的组织,软件测试通常可以划分为如下三类:开发方测试:通常也叫“验证测试”或“ α测试”。
用户方测试:通常也叫β测试第三方测试:介于软件开发方和用户方之间的测试组织实施的测试活动。
是由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。
一般情况下是在模拟用户真实应用的环境下,进行软件确认测试。
18. 功能性测试 v.s. 结构性测试19. 按照测试过程,通常可以划分为如下四个步骤:单元测试 (Unit Testing:又称为模块测试,针对软件设计的程序模块进行正确性检验的测试工作集成测试 (Integrated Testing :集成测试也叫组装测试,通常是在单元测试的基础上, 对由若干个模块组装而成的子系统实施的测试。
确认测试 (Validation Testing:验证软件的功能和性能及其他特性是否与用户的要求一致。
系统测试 (System Testing:是将通过集成测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际或者模拟运行 (使用环境下,对计算机系统进行的一系列测试。
验收测试 (Acceptance Testing:验收测试往往不是对系统进行全覆盖测试,而是针对用户的核心业务流程进行的测试。
20. 单元测试要解决的问题:模块接口:对于被测模块,信息能否正常无误地流入和流出。
(应首先检验局部数据结构:在模块工作过程中,其内部的数据能否保持其完整性,包括内部数据的内容、形式及相互关系不发生错误。
边界条件:在为限制数据加工而设置的边界处,模块是否能够正常工作。
覆盖条件:模块的运行能否做到满足特定的逻辑覆盖。
出错处理:模块工作中发生了错误,其中的出错处理设施是否有效。
21. 驱动模块 (driver:用以模拟被测模块的上级模块。
桩模块 (stub:用以模拟被测模块工作过程中所调用的模块。
22. 集成测试的分类:非增量式集成测试增量式集成测试1. 自顶向下集成测试:将模块按系统程序结构,沿控制层次自顶向下进行组装。
、测试实施步骤:(1 首先以主模块作为所测模块兼驱动模块, 所有直属于主模块的下属模块全部用桩模块代替,对主模块进行测试。
(2 再采用深度优先或广度优先的策略, 用实际模块代替相应的桩模块, 再用桩模块代替它们的直接下属模块,与已测试的模块或子系统组装成新的子系统。
(3 然后测试新组装成的子系统, 排除组装过程中引入新错误的可能, 直至所有模块均组装到系统中为止。
优点:(1 在测试过程中较早地验证了主要的控制和判断点,能较早地发现主要控制方面的问题。
(2如果选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能,可先对逻辑输入的分支进行组装和测试, 检查和克服潜藏的错误和缺陷, 验证其功能的正确性, 为对其后分支的组装和测试提供了保证。
缺点:(1 在测试需要建立桩模块,而要使桩模块能够模拟实际子模块的功能十分困难。
(2 涉及复杂算法和真正输入 /输出的模块一般在底层,它们是最容易出问题的模块,到组装和测试的后期才遇到这些模块,一旦发现问题,就会导致过多的重复测试。