题型: -客观题:选择题(10*1’)+填空题(10*2’ ) +判断题(10*1 )共40分 -简答题: 4*5’分,共20分 -分析题: 4*10’题,共40分
#Chap 1 ·软件测试的概念 (P9) ·软件测试正反2种观念的争辩。他们的观念及存在的问题。 (P7~9) ·结合V模型谈谈开发与测试关系 P11 ·请结合实例,谈谈为什么穷尽测试是不可能的。(开放题,从输入和路径穷尽来考虑) ·了解测试目的、测试驱动开发的概念 (P9 P13)
#Chap 2 ·软件质量的概念 软件质量定义:软件产品满足规定的和隐含的与需求能力有关的全部特征和特性。它包括:1软件产品质量满足用户要求的程度;2软件各种属性的组合 程度3用户对软件产品的综合反映程度4软件在使用过程中满足用户要求的程度(P15) ·ISO9126软件质量模型(一层6个即可),并分别说明各个质量属性的含义 (P17) Iso9126模型:高层:软件质量需求评价标准(SQRC)属性:功能性、可靠性、可用性、效率、可移植性、可维护性 中层:软件质量设计标准(SQDC) 属性: 安全性、、成熟性、可理解性、时间表现、可分析性、适应性 低层:软件质量度量标准(SQMC) ·软件缺陷的定义及表现形式 软件缺陷:是指计算机系统或者程序中存在的任何一种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷、瑕疵,其结果会导致软件产品在某种程度上不能满足用户的需求 表现形式:1运行出错,包括 运行中断、系统崩溃、界面混乱2数据计算错误,导致结果不正确3功能、特性没有实现或部分实现4在某种特点条件下没能给出正确或准确的结果5计算的结果没有满足所需要的精度6用户界面不美观7需求规格说明书的问题8设计不合理,存在缺陷9实际结果与预期结果不一致10用户不能接收的其他问题 (P18) ·验证与确认(V&V)的概念及两者区别V&V 验证:是检验开发出来的软件产品和设计规格说明书的一致性,即是否满足软件厂商的生产要求 确认:就是检验产品功能的有效性,即是否满足用户的真正需求 (P21) ·SQA的概念及表现形式、与软件测试的关系 SQA与软件测试之间相辅相成,存在包含和交叉的关系。它们的相同点在于二者都是贯穿整个软件开发生命周期的流程。不同在于SQA 是一项管理工作,侧重与对流程的评审和监控,而测试是一项技术性的工作,侧重于对产品的评估和验证 (P23) ·软件测试的分类:按阶段、按目标、按方法。 (P23~P25 目的分类:集成测试、功能测试、回归测试、性能测试、可靠性测试、安全测试、兼容性测试 阶段分类:单元测试、集成测试、功能测试、系统测试、安装测试、验收测试 方法分类:静态测试、动态测试、黑盒测试、白盒测试 -静态测试和动态测试、黑盒测试和白盒测试 -按阶段:单元测试、集成测试、系统测试、验收测试,它们的概念与不同。 -非功能测试:性能测试、可靠性测试、安全性测试,及常见非功能缺陷辨析。
#Chap 3 ·请简述什么是黑盒测试和白盒测试,它们各自的局限性是什么? P31 P38 黑盒测试:不关注软件内部结构,着眼于程序外部用户界面,关注软件的输入和输出,关注用户的需求,从用户的角度验证软件的功能,实现端到端的测试。 缺陷:1是否不正确或遗漏了功能2能否正确地接收输入数据,能否产生正确的输出信息3功能操作逻辑不合理4界面是否出错、是否不美观5安装过程中出现问题,安装步骤不清晰、不够方便灵活6系统初始化问题 白盒测试:按照程序内部的结构测试程序,测试程序内部的变量状态、逻辑结构、运行路径等 缺陷:试图列举所有路径测试,是不可能的,企图遍历所有的路径是很难做到的,即使每条路径都测试了,覆盖率得到100%,程序也可能出错。 ·白盒测试常用的逻辑覆盖有哪些,各自的基本思想。 P31~P38 白盒测试常用的逻辑覆盖:语句覆盖:运行被测程序,是程序中的每个可执行语句至少被执行一次 判定覆盖:设计若干个用例,运行被测程序,使得程序中每个判断的取真分支和假分支至少经历一次,及判断真假是否均被满足 条件覆盖:执行被测程序,使判断中每个条件的可能取值至少被满足一次 判定-条件覆盖:使所有条件的可能取值至少被执行一次,所有判断的可能结果至少执行一次 条件组合覆盖:使判断中每个条件的所有可能至少出现一次,且每个判断本身的判定结果也至少出现一次 路径覆盖:覆盖程序中所有可能的执行路径 基本路径测试法5步骤(1)程序的流程控制图(2)计算程序环路复杂度(3)确定基本路径(4)准备测试用例,确保基本路径组中的每一条路径被执行一次(5)图形矩阵 ·白盒测试的逻辑覆盖用例设计方法及应用:重点掌握语句、判定、条件组合、路径覆盖。应用参见。 ·基本路径(独立路径)的概念及环路复杂度(圈复杂度)的计算、确定基本路径的方法。应用参见 ·黑盒测试的概念、常用的黑盒测试方法有哪些,各自的基本思想。 黑盒测试的方法:1等价类划分法:借助数据的输入输出来判断功能能否正常运行(是否可以用一组有限的数据去代表近似无限的数据) 2边界值分析法:对输入的条件进行分析并找出其中的边界值条件,通过这些边界值的测试来发现更多的错误 3判定表方法:采用一种适合于多种条件的组合,相应地产生多个动作(结果)的方法来进行测试用例的设计 4因果图法5正交试验法6功能图法 ·黑盒测试的用例设计方法及应用:重点掌握等价类、边界值、判定表、组合测试。应用参见。 ·采用错误推测法进行测试。例:针对打开文件失败你考虑测试哪些情况?(开放题)
#Chap 4 ·测试过程模型TMap的生命周期.(P69页) TMap所定义的测试生命周期由计划和控制、准备、说明、执行和完成等阶段组成 (1)计划和控制阶段涉及测试计划的创建,定义了执行测试活动的“who,what,when,where and how”。在测试过程中,通过定期和临时的报告,客户可以经常收到关于产品质量和风险的更新 (2)准备阶段决定软件说明书质量是否足以实现说明书和测试执行的成功 (3)说明阶段及定义测试用例和构建基础设施。 (4)执行阶段,需要分析预计结果和实际结果的区别,发现缺陷并报告 (5)完成阶段包括对测试资料的维护一便于再利用,创建一个最终的报告以及为了更好地控制将来的测试过程对测试过程进行评估 ·了解常见的过程改进模型:TMM、TPI、CTP、STEP等; (P71) TPI(test process improvrment,测试过程改进),一个逐步完善测试过程的模型 TMM(测试成熟度模型) CTP(critical test process, 测试过程评估模型主要是一个内容参考模型,一个上下文相关的方法,并能对模型裁剪) STEP(systematic test and evaluation process,系统化测试和评估过程)是一个内容参考模型,认定测试是一个生命周期活动,在明确需求后开始直到系统退役。 ·了解软件工程标准规范的5个级别:国际标准ISO、国家际准GB、行业标准IEEE、企业规范、项目规范 (P80) ISO一般,有国际机构制定和公布供各国参考的标准为国际标准 GB由政府或国家级的机构制定或批准,适用于本国范围的标准 IEEE有一些行业机构、学术团体或国防机构制定,并适用于某个业务领域的标准 企业规范:一些大型企业或公司,由于软件工程工作的需要,制定适用于本部门的规范 项目规范:为一些科研生产项目需要而由组织制定一些具体项目的操作规范,此种规范制定的目标很明确,即为该项任务专用。 #Chap 5 ·单元测试的定义和主要任务 (P95 、P97) 单元测试:是对软件组成单元进行的测试,而且软件单元是在与程序的其他部分相隔离的情况下进行独立的测试 单元测试的主要任务:包括逻辑、功能、数据和安全性等各方面的测试,包括单元中所有 独立执行路径、数据结构、接口、边界条件、容错性等测试。(p97 p98有详细内容) ·代码评审中常见缺陷模式的识别。参见 ·什么叫驱动和桩?画出单元测试模型图 (P107 图5-2) 驱动:驱动程序,驱动模块,用于模拟被测模块的上级模块,能够调用被测模块,并在测试过程中,驱动模块接受测试数据,调用被测模块并把相关的数据传送给被测模块 桩:桩程序,桩模块,用于模拟被测模块工作过程中所调用的下层模块。
#Chap 6 ·集成测试的模式及各自优缺点 P126 集成测试基本可以概况为2种: 1非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要求的程序,如大棒模式 2渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完再把下一个应该测试的模块结合进来测试 各自优缺点: 渐增式测试模式:需要编写的软件较多,工作量较大,而非渐增式测试模式测试开销小 渐增式测试模式:发现模块间接口错误早,而非渐增式测试模式晚 渐增式测试模式:测试更彻底 渐增式测试模式:需要较多的机器时间 非渐增式测试模式:发现错误较难诊断,而使用渐增式测试模式,如果发现错误则往往和最近加进来的那个模块有关 使用非渐增式测试模式:可以并行测试 ·大棒与三明治集成方法的概念及方法应用(给一个模块结构图,写出它的集成图)P129 大棒:采用大棒集成方法,先是对每一个子模块进行测试(单元测试阶段),然后将所有模块一次性地全部集成起来进行集成测试,适合在规模较小的应用系统中使用(图:p129图6-4) 三明治:它将自顶向下和自底向上的集成方法有机地结合起来,不需要写桩程序,因为在测试初自底向上集成已经验证了底层模块的正确性。 ·回归测试的目的、过程及选取用例的策略 P133 回归测试的目的是在程序有修改的情况下保证原有功能正常的一种测试策略和方法,因为这时的测试不需要进行全面测试,从头到尾测一遍,而是根据修改的情况进行有效测试 修改的两层含义:1所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等;2不影响软件原有功能的正确性。 回归测试过程:(1)识别出软件中被修改的部分(2)从原基线测试用例库T中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例,其结果是建立一个新的基线测试用例库T0(3)依据一定的策略从T0中选择测试用例测试被修改的软件(4)如果回归测试包不能达到所需的覆盖要求,必须补充新的测试用例使覆盖率达到规定的要求,生成新的测试用例集T1,用于测试T0无法充分测试的软件部分。(5)用T1执行修改后的软件 选取用例的策略:应该兼顾效率和有效性两个方面。方法:(1)再测试全部用例(2)基于风险选择测试(3)基于操作刨面选择测试(4)再测试修改的部分