软件测试复习提纲--------------------------------------------------------------------1.2为什么要进行软件测试软件测试——产品质量的保证软件测试——控制成本的关键软件测试——软件可靠性确认软件测试——让企业具备国际竞争的实力1.3什么是软件测试BillHetzel博士(正向思维的代表):软件测试就是为程序能够按预期设想那样运行而建立足够的信心。“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果”测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作GlenfordJ.Myers(反向思维的代表):测试是为了证明程序有错,而不是证明程序无错误一个好的测试用例是在于它能发现至今未发现的错误一个成功的测试是发现了至今未发现的错误的测试软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性“有效性确认”是确认所开发的软件是否满足用户真正需求的活动。1957~1978年,以功能验证为导向,测试是证明软件是正确的(正向思维)。1978~1983年,以破坏性检测为导向,测试是为了找到软件中的错误(逆向思维)。1983~1987年,以质量评估为导向,测试是提供产品的评估和质量度量。1988年起,以缺陷预防为导向,测试是为了展示软件符合设计要求,发现缺陷、预防缺陷。1.5--------------------------------------------------------------------修复软件缺陷的代价用户需求验证代码验证功能验证证系统非功能特性验证在设计阶段就是它的3~6倍,在编程阶段是它的10倍,在内部测试阶段是它的20~40倍,在外部测试阶段是它的30~70倍,而到了产品发布出去时,这个数字就是40~1000倍,修正错误的代价不是随时间线性增长,而几乎是呈指数增长的。结束标准用例全部测试;覆盖率达到标准;缺陷率达到标准;其他指标达到标准。掌握:软件测试的分类静态测试/动态测试性能测试(performancetest)就是为了发现系统性能问题或获取系统性能相关指标而进行的测试。一般在真实环境、特定负载条件下,通过工具模拟实际软件系统的运行及其操作,同时监控性能各项指标,最后对测试结果进行分析来确定系统的性能状况。回归测试压力测试软件测试的工作范畴软件测试工作的组织与管理:制定测试策略、测试计划,确认所采用的测试方法与规范,控制测试进度,管理测试资源。测试工作的实施:编制符合标准的测试文档,搭建测试环境,开发测试脚本、与开发组织协作实现各阶段的测试活动2.1软件质量软件缺陷2.5白盒测试的概念白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。黒盒测试的概念:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。2.7什么是测试用例?为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并形成文档。为什么要设计测试用例?测试用例构成了设计和制定测试过程的基础。测试的“深度”与测试用例的数量成比例。由于每个测试用例反映不同的场景、条件或经由产品的事件流,因而,随着测试用例数量的增加,对产品质量和测试流程也就越有信心。判断测试是否完全的一个主要评测方法是基于需求的覆盖,而这又是以确定、实施和/或执行的测试用例的数量为依据的。测试工作量与测试用例的数量成比例。根据全面且细化的测试用例,可以更准确地估计测试周期各连续阶段的时间安排。测试设计和开发的类型以及所需的资源主要都受控于测试用例。测试用例通常根据它们所关联关系的测试类型或测试需求来分类,而且将随类型和需求进行相应地改变。最佳方案是为每个测试需求至少编制两个测试用例:·一个测试用例用于证明该需求已经满足,通常称作正面测试用例;·另一个测试用例反映某个无法接受、反常或意外的条件或数据,用于论证只有在所需条件下才能够满足该需求,这个测试用例称作负面测试用例。测试用例是软件测试的核心--------------------------------------------------------------------3.2等价类划分法(等价分类法),分为有效等价类和无效等价类。有效等价类是有意义的、合理的输入数据,可检查程序是否实现了规格说明中所规定的功能和性能。无效等价类与有效等价类的意义相反边界值分析法,确定边界情况(输入或输出等价类的边界)选取正好等于、刚刚大于或刚刚小于边界值作为测试数据3.3(3.3.1扩展)应果图法,判定表法用条件覆盖法设计白盒测试用例用等价类和边界值设计黒盒测试用例以上两种设计测试用例的方法一定要掌握3.4语句覆盖,语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次判定覆盖,判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足条件覆盖,条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。判定-条件覆盖,条件组合覆盖,基本路径测试法3.7.3FSM状态图状态表4.35大学派--------------------------------------------------------------------5.1单元测试:单元测试是对软件基本组成单元(如函数、类的方法等)进行的测试。定义:单元测试是对软件基本组成单元进行的测试。时机:一般在代码完成后由开发人员完成,QA人员辅助.概念:模块,组件,单元单元测试的测试人员:程序人员和开发人员单元测试的测试依据单元测试的依据是:详细设计和概要设计单元测试是对软件基本组成单元进行测试。依据是:软件详细说明书。单元测试测试的不仅仅是代码,有:接口测试、局部数据结构测试、独立路径测试、独立路径测试、边界条件测试、错误处理测试、功能测试、性能测试、内存使用测试等。单元测试的主要目标目标:单元模块被正确编码信息能否正确地流入和流出单元;在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在单元中的处理和影响。在为限制数据加工而设置的边界处,能否正确工作。单元的运行能否做到满足特定的逻辑覆盖。单元中发生了错误,其中的出错处理措施是否有效。5.3.1驱动程序桩程序5.7.1集成测试模式5.7.2集成测试方法集成测试:集成测试是将软件集成起来,对模块之间的接口进行测试。顾名思义,集成测试是将软件集成起来后进行测试。集成测试又叫子系统测试、组装测试、部件测试等。模块内的集成,主要是测试模块内各个接口间的交互集成关系;子系统内的集成,测试子系统内各个模块间的交互关系;系统内的集成,测试系统内各个子系统和模块间的集成关系。集成测试的测试人员:有经验的测试人员和开发者共同非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如大棒模式。渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合进来进行测试,测试完后再把下一个应该测试的模块结合起来测试。渐增式测试又可以根据每次添加模块的路线分为自顶向下测试、自底向上测试和混合测试等方式。--------------------------------------------------------------------6.1系统测试(特征测试):检验系统所有元素之间协作是否合适,整个系统的性能和功能是否达到要求。其测试内容包括:功能测试,非功能测试与回归测试等。系统测试的内容:功能测试,回归测试,非功能性试;非功能性测试(特征测试)包含哪些内容:性能测试压力测试容量测试安全性测试可靠性测试容错性测试系统测试的测试依据需求说明书,概要设计说明书,详细设计说明书,最重要的是需求说明书。6.3.3性能测试--------------------------------------------------------------------7.1验收测试:检查软件是否符合合同要求,包括需求规格说明、设计规格说明和用户手册等。验收测试的测试人员(用户和测试部门共同完成)验收测试的测试依据国家规范、行业标准、合同条款、用户确认的需求规格说明书α,β测试α测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。经过α测试调整的软件产品称为β版本。紧随其后的β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对β版本进行改错和完善。--------------------------------------------------------------------8国际化本地化全球化--------------------------------------------------------------------9.自动化测试(automatedtest)是相对手工测试而存在的一个概念,由手工逐个地运行测试用例的操作过程被测试工具自动执行的过程所代替。9.6图9-6--------------------------------------------------------------------3.3.1扩展某研究所重新对其在大学以上学历的职工安排工作。其方针如下:如果年龄不满18岁,文化程度是大学,若是男性,则一律要求考研究生。若是女性,则分配到研究所办公室任行政干部;如果年龄满18岁但不足50岁,文化程度是研究生,不分男女性,均任课题组长。文化程度是大学,则不分男女性均担任中层以上各级领导干部;如果年龄满50岁以上,文化程度是研究生,若是男性,则任课题组长。文化程度是大学,若是男性,则任科研人员。若是女性,则任资料员。⑴判定表的绘制。①提取问题中的条件:性别、年龄和文化程度三个条件。②标出每个条件的取值(为了便于绘制判定表,用符号来代替条件的取值):见下表一:⑥检查判定表的完善性:如果任意绘制的判定表很可能是不完善的,也可能存在以下问题:Ⅰ遗失判定列:即判定表中缺少判定条件组合列。在表二中就缺少了两个判定列。所谓判定列是指判定表右部的各列(包括上下两部分构成的列)。完善的判定表要满足以下条件:A.判定列计数之和必须等于诸条件取值数之积。也就是在判定表中右下部分选定的动作列中目标动作的数量应等于所有条件的组合数。B.每个判定列必须是独立的,即任何两个判定列的诸条件中至少有一个条件的取值是不同。假设某程序有三个输入变量year、month、day(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31和1981≤year≤2050),分别作为输入日期的年份、月份、日,通过程序可以输出该输入日期在日历上隔一天的日期。试用判定表法设计该程序正确输入条件下的测试用例。设计:一、确定规则,建立条件桩和动作桩M1={月份:每月有30天}M2={月份:每月有31天,12月除外}M3={月份