1、题型:-客观题:选择题(10*1 )+填空题(10*2 ) +判断题(10*1 ) 共 40 分-简答题: 4 或 5 道,共 20 分-分析题: 4 或 5 道,共 40 分#Chap 11、软件测试的概念 (P9)从一个通常是无限的执行域(集合)中选择合适的、有限的测试用例,对程序所期望的的行为进行动态验证的活动过程。2、软件测试正反 2 种观念的争辩。代表人物、他们的主要观念及存在的问题。(P79)1972 年,软件测试领域的先驱 BILL Hetzel 博士(代表论著软件测试完全指南 ) ,在美国的北卡罗来纳大学组织了历史上第一次正式的关于软件测试的会议。观点:软件测试就是一系列活动,
2、这些活动是为了评估一个程序或软件系统的特性或能力,并确定其是否达到了预期结果。(1) 测试是试图验证软件是工作的,也就是验证软件功能执行的正确性。(2) 测试的目的是验证软件是否符合事先定义的要求。(3) 测试的活动是以人们的设想或预期的结果为依据。这里的设想或预期的结果指需求定义,软件设计的结果。存在问题:(1) 可能使软件测试的活动效率降低(2) 甚至缺乏有效的方法进行测试活动。Myers(代表论著软件测试的艺术 )认为不应该着眼于验证软件是工作的,相反,应该用逆向思维去发现尽可能多的错误。观点:测试是为了发现错误而执行的一个程序或者系统的过程。一个成功的测试必须是发现了软件问题的测试否则
3、测试就没有价值。这个定义引导人们证明软件是不工作的,以反向思维方式,不断思考开发人员理解的误区,不良的习惯,程序代码的边界,无效数据的输入以及系统的弱点,试图破坏系统摧毁系统,摧毁系统,目标就是发现系统中各式各样的问题。存在问题:(1) 如果只强调测试的目的是寻找错误,就可能是测试人员容易忽视软件产品的某些基本需求或者客户的实际需求,测试活动可能会存在一定的随意性和盲目性。(2) 如果只强调测试的目的是寻找错误,使开发人员容易产生一个错误的印象,认为测试人员的工作就是挑毛病的。(3) 除此之外还强调测试是执行一个程序或者系统的过程,也就是说测试活动是在代码完成之后进行,而不是贯穿整个软件开发过
4、程的活动,及软件测试不包括软件需求评审,软件设计评审和软件代码静态检查等一系列活动,从而使软件测试的定义具有局面性和片面性。总结:这正反两方面的观点是从不同的角度看问题,一方面通过测试来保证质量,另一方面又要改进测试方法和提高软件测试的效率,两者相辅相成。软件测试就是在这两者之间获得平衡,但对于不同的应用领域,二者的比重不一样。3、结合 V 模型谈谈开发与测试关系 附录:V 模型 (P10-P11)V 模型 :能准确反映出开发活动和测试活动之间的关系,说明:1) 测试活动与开发活动同时启动;2) 每个开发活动都有相应级别的测试类型相对应。3) 测试是分层的。只有完成单元测试、集成测试、系统测试
5、、验收测试 4 个层次的测试,才是对软件产品的完整测试。4、请结合实例,谈谈为什么穷尽测试是不可能的。(开放题,从输入和路径穷尽来考虑)通过测试并不能发现和修改测试对象中的全部的缺陷和问题,因此,不可避免有一些缺陷会遗漏到客户的使用现场,从而触发软件产品产生令用户不满意的失效或者各种问题。即使是规模很小的软件或者软件产品,其逻辑路径和输入数据的组合也几乎是无穷的。假如测试人员想对测试对象进行完全的检查和覆盖,那基本上是不可能的.测 试人员面临的测试时间和测试资源往往是非常有限的。多年的测试实践经验表明,测试团队往往很难获得测试计划中预留的测试时间,当软件开发和测试的时间发生 冲突的时候,测试团
6、队常常被要求压缩测试时间;同时,测试过程中的测试资源限制,例如:测试平台、测试人员的限制,使得测试团队只能在有限的条件下开展测 试活动 测试内容几乎是无穷的,而测试时间和测试资源非常有限,我们能做的就是采取合适的测试策略,在现有条件下如何做的更好。测试的尽早介入。集中精力在缺陷刚刚被引入的阶段就发现它,避免缺陷向后续阶段转移(不仅可以降低成本,同时也可避免缺陷的雪崩效应) ;基于风险的测试。确保测试高优先级的关键的功能首先被测试,尽早和尽量多的发现严重程度的缺陷,而不是将有限的测试时间和资源浪费在无关紧要的地方;5、了解测试目的、测试驱动开发的概念 (P9 P13)测试目的:验证软件是否符合事
7、先定义的要求。测试驱动开发:测试在先,编码在后的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。6、了解 SQA 质量保证的概念、与软件测试的关系 P11-P12SQA 质量保证:通过对软件产品有计划地进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。与软件测试的关系:相辅相成,既存有包含又存有交叉的关系。(1)SQA 指导、监督软件测试的计划和执行,督促软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程 的改进。(2)软件测试是 SQA 重
8、要手段之一,为 SQA 提供所需的数据,作为质量评价的客观依据。(3)它们的相同点在于二者都是贯穿整个软件开发生命周期的流程。(4)它们的不同之处在于 SQA 是一项管理工作,侧重于对流程的评审和监控,而测试是一项技术性的工作,侧重于对产品进行评估和验证。#Chap 21、软件质量的概念软件质量定义:软件产品满足规定的和隐含的与需求能力有关的全部特征和特性。它包括:1 软件产品质量满足用户要求的程度;2 软件各种属性的组合程度 3 用户对软件产品的综合反映程度 4 软件在使用过程中满足用户要求的程度 (P15)2、ISO9126 软件质量模型(一层 6 个即可) ,并分别说明各个质量属性的含义
9、 (P17)Iso9126 模型:高层:软件质量需求评价标准( SQRC)属性:功能性、可靠性、可用性、效率、可移植性、可维护性中层:软件质量设计标准(SQDC) 属性: 安全性、 、成熟性、可理解性、时间表现、可分析性、适应性低层:软件质量度量标准(SQMC)3、软件缺陷的定义,常见缺陷的辨识软件缺陷:是指计算机系统或者程序中存在的任何一种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷、瑕疵,其结果会导致软件产品在某种程度上不能满足用户的需求表现形式:1 运行出错,包括 运行中断、系统崩溃、界面混乱 2 数据计算错误,导致结果不正确 3 功能、特性没有实现或部分实现 4 在某种特点条件下没
10、能给出正确或准确的结果 5 计算的结果没有满足所需要的精度 6 用户界面不美观 7 需求规格说明书的问题 8 设计不合理,存在缺陷 9 实际结果与预期结果不一致 10 用户不能接收的其他问题 (P18)4、软件测试的分类:按阶段、按目标、按方法。目的分类:集成测试、功能测试、回归测试、性能测试、可靠性测试、安全测试、兼容性测试阶段分类:需求评审、设计评审、单元测试、集成测试、系统测试、验收测试、 测试、 测试方法分类:静态测试、动态测试、黑盒测试、白盒测试-静态测试和动态测试、黑盒测试和白盒测试的划分原则根据测试过程中被测软件是否被执行,软件测试可分为静态测试和动态测试。根据是否针对系统的内部
11、结构和具体实现算法来完成测试,软件测试可分为白盒和黑盒-非功能测试:性能测试、可靠性测试、安全性测试,及常见非功能缺陷P22性能测试:测试系统在不同负载条件下的系统具体的性能指标可靠性测试:检验系统能否保持长期稳定,正常的运行,如确定系统平均故障间隔时间,包括强壮性测试和异常处理测试。安全性测试测试系统在应对非授权的内外部访问,有意攻击时的系统防护能力。-5、什么是黑盒测试和白盒测试,它们各自的局限性是什么。P26P28黑盒测试:不关注软件内部结构,着眼于程序外部用户界面,关注软件的输入和输出,关注用户的需求,从用户的角度验证软件的功能,实现端到端的测试。 缺陷:1 是否不正确或遗漏了功能 2
12、 能否正确地接收输入数据,能否产生正确的输出信息 3 功能操作逻辑不合理 4 界面是否出错、是否不美观 5 安装过程中出现问题,安装步骤不清晰、不够方便灵活6 系统初始化问题白盒测试:按照程序内部的结构测试程序,测试程序内部的变量状态、逻辑结构、运行路径等 缺陷:试图列举所有路径测试,是不可能的,企图遍历所有的路径是很难做到的,即使每条路径都测试了,覆盖率得到 100%,程序也可能出错。-6、按阶段:单元测试、集成测试、系统测试、验收测试,它们的概念与不同。附录 :测试阶段 定义 P28类别 对象 目的 测试依据 测试方法单元测试 模块内部程序消除局部模块逻辑和功能上的错误和缺陷详细设计文档A
13、PI 说明 白盒测试集成测试 模块间的接口和调用关系找出与软件设计相关的程序结构,模块调用关系、接口方面的问题概要设计文档接口设计说明 灰盒测试系统测试整个系统,包括系统软硬件等对整个系统进行一系列的功能、非功能测试,发现功能或非功能问题。系统需求规格说明文档 黑盒测试验收系统整个系统,包括系统软硬件等,采用真实用户环境对整个系统按用户环境和用户使用场景进行一系列整体的解决方案级测试, 确认系统与用户需求的匹配程度 用户需求 黑盒测试7、验证与确认(V 3 int y=0; 4 while(irecordnum0) 5 6 if(itype=0) 7 break; 8 else 9 if(it
14、ype=1) 10 x=x+10; 11 else 12 y=y+20; 13 14 答:1)2)V(G)=10-8+2,其中 10 是控制流图 G 中边的数量,8 是控制流图中节点的数目。 ( 边数-节点数+2 )3)可得出程序的基本路径集中有 4 条独立路径:i. 路径 1:4-14ii. 路径 2:4-6-7-14iii. 路径 3:4-6-9-10-13-4-14iv. 路径 4:4-6-9-12-13-4-145、模糊测试的概念,及对其测试方法的辨析 (P60)模糊测试,就是通过一个自动产生数据的模版或框架来构造或自动产生大量的、具有一定随机性的数据作为系统的输入,从而检验系统在各种
15、数据情况下是否会出现问题辨析:模糊测试方法可以模拟黑客来对系统发动攻击测试,在安全性测试上发挥作用之外,还可以用于对服务器的容错性测试。模糊测试方法缺乏严密的逻辑,不去推倒哪个数据会造成系统破坏,而是设定一些基本框架,在这个框架内产生尽可能多的杂乱数据进行测试,发现一些意想不到的系统缺陷。由于要产生大量数据,模糊测试方法一般不能通过手工测试,而是通过工具来自动执行。#Chap 51、单元测试的定义和主要任务 (P96-P97)单元测试:是对软件组成单元进行的测试,而且软件单元是在与程序的其他部分相隔离的情况下进行独立的测试单元测试的主要任务:包括逻辑、功能、数据和安全性等各方面的测试,包括单元
16、中所有2、什么叫驱动和桩?画出单元测试模型图 (P106 图 5-1)驱动:驱动程序,驱动模块,用于模拟被测模块的上级模块,能够调用被测模块,并在测试过程中,驱动模块接受测试数据,调用被测模块并把相关的数据传送给被测模块桩:桩程序,桩模块,用于模拟被测模块工作过程中所调用的下层模块。3、代码评审中常见缺陷模式的识别。参见附录:代 码缺陷模式。 驱动模块被测试单元桩模块 1 桩模块 2(P109P112)/非法计算double dosomething(double a, b)c = a/b./数组越界Int MAX_LEN=4;void foo()int array = new intMAX_L
17、EN;for (int i = 0; i= MAX_LEN; i+) arrayi=0;/死循环void f1()int i = 0;while ( i 10)i-;/空指针 boolean typeEquals(Object a, Object b)if (a.getClass() = b.getClass()return true;elsereturn false;4、JUNIT 工具使用,给你一个函数原型,可以写出它的测试函数 (P123、实验 4) 5、集成测试的模式及各自优缺点 P1331 非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要求的程序,如大棒
18、模式2 渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完再把下一个应该测试的模块结合进来测试各自优缺点:渐增式测试模式:需要编写的软件较多,工作量较大,而非渐增式测试模式测试开销小渐增式测试模式:发现模块间接口错误早,而非渐增式测试模式晚渐增式测试模式:测试更彻底渐增式测试模式:需要较多的机器时间非渐增式测试模式:发现错误较难诊断,而使用渐增式测试模式,如果发现错误则往往和最近加进来的那个模块有关使用非渐增式测试模式:可以并行测试6、混合策略及三明治集成方法的概念及方法应用。给个模块结构图,写出它的集成图。 (P135)三明治:它将自顶向下和自底向上的集成方法有机
19、地结合起来,不需要写桩程序,因为在测试初自底向上集成已经验证了底层模块的正确性。#Chap 61、系统测试的概念与测试目的系统测试是将经过集成测试后的软件,作为计算机系统的一个部分,与计算机硬件。某些支持软件、数据、平台等系统元素结合起来,在真实运行环境中对计算机系统进行一系列严格有效的测试来发现软件潜在的问题,保证系统的正常运行。目的:充分运行系统,验证整个系统是否满足功能和非功能性的质量需求。 (P137)2、回归测试的目的、过程及选取用例的策略 (P150P151)回归测试的目的是在程序有修改的情况下保证原有功能正常的一种测试策略和方法,因为这时的测试不需要进行全面测试,从头到尾测一遍,
20、而是根据修改的情况进行有效测试修改的两层含义:1 所做的修改达到了预定的目的,如错误得到了改正,新功能得到了实现,能够适应新的运行环境等;2 不影响软件原有功能的正确性。回归测试过程:(1)识别出软件中被修改的部分(2)从原基线测试用例库 T 中,排除所有不再适用的测试用例,确定那些对新的软件版本依然有效的测试用例,其结果是建立一个新的基线测试用例库 T0(3)依据一定的策略从 T0 中选择测试用例测试被修改的软件(4)如果回归测试包不能达到所需的覆盖要求,必须补充新的测试用例使覆盖率达到规定的要求,生成新的测试用例集 T1,用于测试 T0 无法充分测试的软件部分。 (5)用 T1 执行修改后
21、的软件选取用例的策略:应该兼顾效率和有效性两个方面。方法:(1)再测试全部用例(2)基于风险选择测试(3)基于操作刨面选择测试(4)再测试修改的部分3、常见的系统性能指标,及性能指标估算方法。参见附录:性能 指标 28 原则估算方法。P151常见的有:(1) 请求响应时间:客户端浏览器向 WEB 服务器提交一个请求到收到相应之间的时间间隔。(2) 事务响应时间:事务可能由一系列的请求组成,事务的响应时间就是这些请求完成处理花费的时间。(3) 数据吞吐量单位时间内对客户端和服务器之间网络上传输的数据量。某系统的事务数约 100 万笔。假设每年交易量集中在 10 个月,每个月 24 个工作日,每个
22、工作日 6 小时,试采用 8020 原理估算系统的每秒事务数 TPS答: 100 0000 *80% / (10*24*6*3600 *20%)4、系统负载包括哪些方面?什么在线用户、并发用户、虚拟用户、常见的负载模式有哪些(P153-P154)系统负载:可以看做是“并发用户并发数量+思考时间+每次请求发送的数据量+负载模式”具体分为:1 在线用户:通过浏览器访问登录 Web 应用系统后并且还没有退出该系统的用户 2 虚拟用户:模拟浏览器向 Web 服务器发送请求并接受响应的一个进程或线程 3 并发用户:这些用户在同一时刻做同一件事情或同样的操作 4 用户并发数量:近似于同时在线用户数量,但不
23、一定等于在线用户数量,因为有些在线用户不进行操作,或前后操作之间的间隔时间很长 5 思考时间:浏览器在收到响应后到提交下一个请求之间的间隔时间 6 负载模式:加载的方式。5、什么叫拐点,如何确定系统的性能瓶颈?给你一个性能测试结果数据,可以进行简要的分析。参见附录:性 能测试结果分析示例 (P155)某业务系统由客户端、应用服务器和数据库服务器三个节点组成。该系统的性能测试结果如下表:并发用户数数据吞吐量平均值事务响应时间平均值(s)数据库服务器 CPU平均利用率应用服务器 CPU平均利用率10 1.12 0.57 37.50% 13.58%20 4.3 1.16 57.32% 24.02%3
24、0 7.74 3.66 70.83% 39.12%50 8.04 6.63 97.59% 53.06%1) 请简述并发用户数、数据吞吐量和事务响应时间的概念。2) 随着并发用户数增加,当吞吐量不再递增时,响应时间是否会递增?并说明理由。3) 判断系统服务器资源使用情况是否合理?系统服务器的性能瓶颈主要位于哪个节点?答:1) 概念略,参见教科书。2) 会增加。当吞吐量不增加,意味着饱和,消息在排队,响应时间一定会增长。3) 不合理。一般来说,当系统的正常工作时,CPU 资源占用应不超过 75%。当并发用户数达到 50 时,数据库 CPU 资源占用超过了 95%,由此可以判断系统主要性能瓶颈在数据
25、库。6、向前兼容、向后兼容的含义。向前兼容是指可以使用以前版本的软件向后兼容指的是可以使用未来版本的软件(P180)7、兼容性测试的含义,包括软件、数据共享、硬件兼容性及应用示例。 (P180)8、针对某新产品(例:手机/一次性杯子等),你打算开展哪些类型的测试?请至少列举出 5 种以上(开放题)#Chap 71、 测试和 测试 测试是指软件开发公司组织内部人员模拟各类用户对即将面市的软件产品(称为 版本)进行测试,试图发现错误并改正。 测试的关键在于尽可能的逼真地模拟实际运行环境和用户对软件产品的操作并尽最大的努力涵盖所有可能的用户操作方式。经过 测试调整的软件产品称为 版本。 测试是指软件
26、开发公司组织各方面的典型用户在日常工作中实际使用 版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对 版本进行改错和完善 (P188)2、了解验收测试概念及特点(用户参与、真实场景、满足用户需求等)#Chap 91、自动化测试的定义,可由自动化测试完成的工作内容自动化测试是把人为驱动的测试行为转化为机器执行的一种过程,即模拟手工测试步骤,通过执行由程序语言编制的测试脚本,自动地完成软件的单元测试、功能测试、负载测试或性能测试等全部工作。 P213 P2142、自动化测试的四种脚本类型及相应含义、如何用 QTP 实现数据驱动 (P219-P221、实验 6)3、测试工具的分类及代表
27、性工具的名称及应用场景。例:QTP, Selenium, xUnit, EMMA, Jmeter, LoadRunner,Appscan, Wirshark, SoapUI, Mantis, Bugzilla, JIRA 等。根据测试方法不同:分为白盒测试工具和黑盒测试工具,或者分为静态测试工具和动态测试工具等。根据测试的对象和目的不同,分为单元测试工具,功能测试工具,负载测试工具或性能测试工具,管理测试工具等。静态测试工具:Compuware 公司的 CodeReview,Telelogic 公司的 Logiscope 软件,PR 公司的 PRQA 软件。动态测试工具:Compuware 公
28、司的 DevPartner 软件,IBM 公司的 Rational Purify 系列。CUG 功能测试:QTP,WebKing ,SilkTest性能测试:LoadRunner,IBM rational performance tester#Chap 141、基于需求的测试覆盖的评估方法 (P319-P320)方法:1 对于需求的估算 2 基于需求的测试覆盖评估 3 基于代码的测试覆盖评估。2、基于缺陷分析的产品质量评估方法:经典的种子公式、基于缺陷清除率的估算方法 (P321)附录:基于缺陷分析 的质 量评估方法示例(1)经典种子公式两个独立测试同一个程序,第一组发现 25 个缺陷,第二组
29、发现 30 个缺陷,在两个小组发现的缺陷有 15 个是共同的,估计程序中缺陷个数。答:可以采用缺陷注入法的思路。1)第一组测试出 25 个缺陷,有 15 个缺陷与第二组是相同的。假设将第 1 组 25 个看作是注入缺陷给第二组去测试,意味着注入的 25 个总缺陷数有 15 个被发现, 由此得到缺陷被测试出的概率为 15/252)第二组测试出 30 个缺陷;由于系统中的缺陷被测试出的概率相同的;用公子公式来估算总缺陷数,15/25=30/X (2)缺陷清除率 D1:软件开发过程中发现的所有缺陷数; D2:软件发布后发现的缺陷数; D 为发现的总缺陷数。因此, D=D1+D2。整体缺陷清除率=D1/D;缺陷源 已发生缺陷( 1) 交付后的缺陷(D2) 缺陷清除率(%)需求报告 77 23 77设计 106 19 85编码 166 9 95文档 48 12 80错误修改 24 12 70合计 500 75 85