一、基本要求
1、软件测试概述
(1)软件可靠性问题、软件缺陷与故障、软件缺陷产生的原因 (2)软件测试基本概念 (3)软件开发过程
(4)软件测试过程、软件开发与软件测试的关系 (5)软件质量与软件质量管理的概念 2、软件测试策略与过程
(1)软件测试的复杂性概念
(2)软件测试方法与策略:静态测试与动态测试、黑盒测试与白盒测试 (3)软件测试过程:单元测试、集成测试、确认测试、系统测试、验收测试 (4)面向对象的软件测试
(5)软件调试的概念、软件测试与调试的关系 3、功能(黑盒)测试及其用例设计
(1)黑盒测试法的概念
(2)三角形问题、NextDate函数问题 (3)等价类划分法 (4)边界值分析法 (5)因果图法 (6)决策表法
(7)黑盒测试应用案例
4、结构(白盒)测试及其用例设计
(1)白盒测试法的概念
(2)控制流图、环形复杂度、图矩阵
(3)覆盖测试:函数覆盖、条件覆盖、路径覆盖、面向对象的覆盖 (4)路径测试:基本路径测试方法、循环测试方法
(5)白盒测试应用案例 5、软件测试实际应用
(1)客户机/服务器系统的软件测试:客户机/服务器系统的结构测试、网站测试 (2)面向对象的软件测试:面向对象的软件测试模型、基于类的测试
(3)图形用户界面测试:窗体测试、菜单测试、数据项测试 (4)实时系统性能测试 (5)场景法应用案例 6、软件测试管理
(1)软件测试组织管理
(2)软件测试计划和过程管理:制定测试计划、确定测试过程、测试结果分析 (3)软件测试文档管理 7、软件自动化测试
(1)软件自动化测试基础:自动化测试概念、自动化测试脚本、自动化测试生存周期 (2)软件自动化测试工具:白盒测试工具、黑盒测试工具
二、基本概念
1、软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查。
软件测试所涉及的关键问题包括四个方面:测试人员、测试内容、测试时间和测试方法。 2、软件测试过程中需要三类输入:软件配置、测试配置和测试工具。软件测试所涉及的关
1
键问题包括四个方面:测试人员、测试内容、(测试时间)和测试方法。
3、IEEE将软件可靠性定义为:系统在特定环境下,在给定的时间内无故障运行的概率。根据软件测试的定义,软件测试是为了发现错误而执行程序的过程。 4、基于 Web 的系统测试不但需要检查和验证是否按照设计的要求运行,而且还要评价系统 在不同用户的浏览器端的显示是否合适。
5、面向对象单元测试针对程序内部具体单一功能的模块进行测试。从测试的角度来看,继 承提供一种机制,通过这种机制,潜在的错误能够从一个类传递到它的派生类。 6、使用白盒测试工具所发现的故障可以定位到代码级。
7、等价类是输入域的某个子集合,而所有等价类的并集就是整个输入域。因此,等价类的
划分原则应该体现完备性和无冗余性。
8、基于 Web 的系统测试重要的是,从最终用户的角度进行安全性和可用性测试
9、有效的Web压力测试系统的关键条件中,量级指的是尽量使单独的操作进行高强度的使
用,增加操作的量级。 10、对OOP的测试重点集中在类功能的实现和相应的面向对象程序架构上,主要表现之一为
数据成员是否满足数据封装的要求。 11、面向对象技术的特点给测试带来的新问题具体表现有多态和动态绑定增加了系统运行中
可能的执行路径,而且给面向对象软件带来了严重的不确定性。对OOP的测试重点集中在类功能的实现和相应的面向对象程序架构上。
12、测试大纲是软件测试的依据,包括测试项目、测试步骤、测试完成的标准。
13、动态测试工具需要实际运行被测系统,并设置断点,向代码生成的(可执行)文件中插
入一些监测代码。
14、C/S体系结构的软件测试通常是从单个客户端开始,然后再逐步集成客户端、服务器和
网络系统进行集成测试,最后进行系统的整体测试。
15、静态测试分析主要集中在需求文档、设计文档以及程序结构方面。
16、对Web网站测试所采用的测试方法与策略除了黑盒测试、白盒测试、静态测试和动态测
试都有可能用到外,还会包括面向对象测试技术的运用。
17、软件可靠性是对软件在设计、开发以及所预定的环境下具有能力的置信度的一个度量,
是衡量软件质量的主要参数之一。
18、按照软件测试的策略和过程分类,软件测试可分为单元测试、集成测试、系统测试、验
证测试和确认测试。在软件测试中,对已测试过的模块进行组装,目的在于检验与软件设计相关的程序结构问题的测试称为集成测试。
19、实时系统测试的一般步骤:任务测试、行为测试、任务间测试和系统测试。
20、为了达到100%的基于状态的上下文覆盖,例行程序必须在每个适当的上下文内被执行。
三、简答题
1、应用条件/判定覆盖进行路径测试可能发现的错误。
针对判定和条件覆盖,测试用例可能发现如下错误: (1)不同数据类型的比较;
(2)不正确的逻辑操作或优先级;
(3)应当相等的地方由于精确度的错误而不能相等; (4)不正确的判定或不正确的变量; (5)不正确的或不存在的循环终止;
(6)当遇到分支循环时不能退出;不适当地修改循环变量。
2
2、简述软件测试报告的内容。
软件测试报告是软件测试过程中最重要的文档,它的内容包括:
(1)记录问题发生的环境 (2)记录问题的再现步骤
(3)记录问题性质的说明 (4)记录问题的处理进程
3、测试过程中必需的基本测试活动有哪些。
(1)拟定软件测试计划 (2)编制软件测试大纲 (3)设计和生成测试用例 (4)实施测试
(5)生成软件测试报告
4、确定软件测试策略时的参考原则。
(1)在任何情况下都必须采用边界值分析法。这种方法设计出的测试用例发现程序错
误的能力最强。
(2)必要时采用等价类划分法补充测试用例。 (3)采用错误推断法再追加测试用例。
(4)对照程序逻辑,检查已设计出的测试用例的逻辑覆盖 程度。如果没有达到要求
的覆盖标准,则应当再补充更多的测试用例。
(5)如果程序的功能说明中含有输入条件的组合情况,则应一开始就选用因果图法。 5、简述软件自动化测试中的脚本技术
脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制
测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接用脚本语言编写脚本。 脚本技术可以分为以下几类:
线性脚本——是录制手工执行的测试用例得到的脚本。
结构化脚本——类似于结构化程序设计,具有各种逻辑结构(顺序、分支、循环),
而且具有函数调用功能。
共享脚本——是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用
另一个脚本。
数据驱动脚本——将测试输入存储在独立的数据文件中。 关键字驱动脚本——是数据驱动脚本的逻辑扩展。
6、在单元测试时,如果模块不是独立的程序,需要设置一些辅助测试模块。简述两种辅助
测试模块的作用。 驱动模块:用来模拟被测试模块的上一级模块,相当于被测模块的主程序。它接收数据,
将相关数据传送给被测模块,启动被测模块,并打印出相应的结果。 桩模块:用来模拟被测模块工作过程中所调用的模块。它们一般只进行很少的数据处理。 7、简述由面向对象技术的特点给测试带来的新问题。
封装把数据及对数据的操作封装在一起,限制了对象属性对外的透明性和外界对它的操作权限,在某种程度上避免了对数据的非法操作,有效防止了故障的扩散。但同时,封装机制也给测试数据的生成、测试路径的选取以及测试结构的分析带来了困难。
继承实现了共享父类中定义的数据和操作,同时也可定义新的特征。子类是在新的环境中存在,所以父类的正确性不能保证子类的正确性。继承使代码的重用率得到了提高,但同时也使故障的传播几率增加。
3
多态和动态绑定增加了系统运行中可能的执行路径,而且给面向对象软件带来了严重的不确定性,给测试覆盖率的活动带来新的困难。
8、Web压力测试的意义及有效的压力测试系统的关键条件。 (1)Web压力测试的意义
压力测试是系统测试的一部分,通过应用很大的工作负载来使软件超负荷运转,其目的是要弄清楚被测试的Web服务是不是不仅能做预期应能做的事,而且在被施加了某些高强度压力的情况下仍能继续正常运行。如果压力测试通过对软件保持高强度的使用(不超过性能统计数字确定的限制)能够有效执行,那么它就经常能够发现许多其它测试无法发现的隐蔽错误。 (2)有效的压力测试系统的关键条件
①重复:就是一遍又一遍地执行某个操作或功能。 ②并发:就是在同一时间内执行多个操作。
③量级:尽量使单独的操作进行高强度的使用,增加操作的量级。
④随机变化:随机使用前面条件中的无数变化形式,就能够在每次测试运行时应用许多不同的代码路径。
9、如何根据等价类的划分确定测试用例。
(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号。
(2)设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类。重复这个步
骤,直到所有的有效等价类均被测试用例所覆盖。
(3)设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类。重复这一步骤,
直到所有的无效等价类均被测试用例所覆盖。
10、简述软件自动化测试中的“捕获-回放”技术
(1)捕获:将用户每一步操作都记录下来。这种记录的方式有两种:程序用户界面的
像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相对应的操作、状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。
(2)回放:将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记
录下来同预先给定的标准结果比较。这可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。
四、分析题
1、阅读下面的问题说明:
现在的软件系统几乎都是用事件触发来控制程序流程的。事件触发时的情景便形成了场景,而同一事件不用的触发顺序和处理结果就形成了事件流。事件流分为基本流和备选流,基本流是经过测试用例的从开始到结束的最简单、无差错的路径,备选流可以从基本流开始,也可以从另外的备选流开始,在某个特定条件下执行。根据问题的描述确定程序的基本流和备选流,然后由基本流和备选流形成不同的场景,对每一个场景生成相应的测试用例。这就是应用场景法进行测试用例设计的基本思想。 下面是对某ATM机应用系统的存款操作的基本流和备选流的描述。
基本流A: 序号 1 2 3 业务名称 准备存款 验证银行卡 输入密码 客户将银行卡插入ATM机 ATM机从读入的银行卡中读取账户代码,并检查它是否属于可接收的银行卡 ATM机要求客户输入6位密码 业务描述 4
4 5 6 7 8 9 10 11 验证帐号和密码 输入金额 授权 入钞 验钞确认 返回银行卡 打印收据 ATM机通过验证客户的帐号和密码,决定客户的合法性 ATM机屏幕选项 ATM机显示在本机上可用的屏幕选项 从ATM机显示屏幕中选取金额 ATM机将整体操作作为事务提交银行系统 客户向ATM机提供现金,ATM机验钞 ATM机屏幕中显示存款金额 银行卡被返还 提供客户打印收据功能
备选流: 序号 B 业务名称 银行卡无效 业务描述 在基本流A2过程中,该卡不能够识别或是非本机可以使用的银行卡,ATM机退卡,并退出基本流 ATM机提示密码不正确,客户有三次机会重输,重新加入基本流A3,或选择退卡 系统判断存款金额与入钞数目不符,重新加入基本流A8,或选择退卡 C D 密码有误 验钞不符 试求:
(1)设计场景(基本流用字母A表示,备选流用题干中描述的相应字母表示)。 场景格式示例如下: 场景ID 1 场景描述 密码有误 场景过程 A、B、C
(2)设计测试用例场景矩阵
测试用例矩阵格式示例如下:
测试用例ID 1 场景 1 账号 V 密码 V 输入金额 V ATM机确认金额 n/a 预期结果 退卡 V表示有效数据元素,I表示无效数据元素,n/a表示不可用
(3)假设本系统开发人员在开发过程中通过测试发现了20个错误,独立的测试组通过上述
测试用例发现了80个软件错误,系统在上线后,用户反馈了10个错误,请计算缺陷探测率(DDP)。
(1)设计场景 场景ID 1 2 3 4 场景描述 成功存款 银行卡无效 密码有误 验钞不符 场景流程 A A、B A、C A、D
(2)设计测试用例场景矩阵
5
测试用例ID 1 2 3 4 场景 1 2 3 4 账号 V I V V 密码 V n/a I V 输入金额 V n/a n/a V ATM机确认金额 V n/a n/a I 预期结果 成功存款 退卡 重输或退卡 重输或退卡
(3)计算缺陷探测率(DDP)
DDP=Bugstester(Bugstester+ Bugscustomer)=(20+80)(20+80+10)=90%(0.9)其中,Bugstester为测试者发现的错误数;
Bugscustomer为客户发现并反馈技术支持人员进行修复的错误数。
五、设计题
1、NextDate函数问题说明:输入一个日期,求从输入日期算起的第三天日期。例如,输
入为2008年8月8日,则该程序的输出为2008年8月10日。NextDate函数包含三个整数变量month、day和year,并且满足下列条件:1≤ month ≤12和1≤ day ≤31。
(1)分析各种输入情况,列出为输入变量month、day、year划分的有效等价类 等价类划分格式示例如下:
输入 ID 1 有效等价类 day
1 ≤day≤31 (2)根据划分的等价类,再考虑month边界值,设计健壮等价类测试用例。 测试用例格式示例如下:
用例ID 1 day 5 month year 预期输出 5 2008 20080505 覆盖等价类 1,2
(1)输入等价类
输入 ID 1 2 3 4 5 6 有效等价类 day 1 ≤day≤26 day=27 day=28 day=29 day=30 day=31 month=4,6,9,11 month=1,3,5,7,8,10 month=2 month=12 闰年 非闰年 month 7 8 9 10 year
(2)设计测试用例
11 12 6
用例ID 1 2 3 4 5 6 7 8 9 10 11 day 5 27 28 29 30 31 5 5 5 5 5 month year 预期输出 1 5 5 5 5 5 -1 2 11 12 13 2008 2008 2008 2009 2009 2009 2008 2008 2008 2008 2008 20080107 20080529 20080530 20090531 20090601 20090602 覆盖等价类 1,8,11 2,8,11 3,8,11 4,8,12 5,8,12 6,8,12 1,9,11 1,7,11` 1,10,11 无效月份 20080207 20081107 20081207 无效月份 2、 三角形问题说明:输入三个正整数a、b、c,分别作为三角形的三条边,现通过程序判
断由三条边构成的三角形的类型是否为等边三角形、等腰三角形、直角三角形、普通三角 形以及非三角形。假设要求输入的a、b、c数据满足的条件是:
a>0∧b>0∧c>0 并且 aR1:等边三角形 R2:等腰三角形 R3:直角三角形
R4:普通三角形 R5:非三角形
可由输出等价类求输入等价类:
例如输出的等边三角形等价类R1对应的输入等价类S1表示为
R1: S1 = { | a=b∧b=c∧a=c∧a>0∧b>0∧c>0} (1)按上述表示,将输出等价类变换为对应的输入等价类。 (2)假设1≤a,b,c≤10,根据划分的等价类,设计健壮等价类测试用例,再使用必 要的边界值用例补充。 测试用例格式示例如下: 用例ID 1 a 5 b 5 c 5 预期输出 等边三角形 覆盖等价类 S1,S2 (1)输入等价类 R1: S1 = { | a=b∧b=c∧a=c∧a>0∧b>0∧c>0} R2: S2 = { |(a=b∨b=c∨a=c)∧(a+b>c∧b+c>a∧a+c>b)∧a>0∧b>0∧c>0} 222222 R3: S3 = { | a>0∧b>0∧c>0∧(a+b>c∧b+c>a∧a+c>b)∧(a+b=c∨b+c=a∨ 222 a+c=b)} R4: S4 = { |a≠b∧b≠c∧a≠c∧a>0∧b>0∧c>0∧(a+b>c∧b+c>a∧a+c>b)} R5: S5 = { |(a+b≤c∨b+c≤a∨a+c≤b)∧a>0∧b>0∧c>0∨a≤0∨b≤0∨c≤0} (2)设计测试用例 用例ID 1 a 5 b 5 c 5 预期输出 等边三角形 覆盖等价类 S1,S2 7 2 3 4 5 6 7 8 3 3 4 10 2 11 -1 3 4 6 6 4 7 3 4 5 5 7 6 8 4 等腰三角形 直角三角形 普通三角形 普通三角形 非三角形 非三角形 非三角形 S2 S3 S4 S4 S5 S5 S5 3、某软件规格说明书对某二位编码的定义如下:编码的第一个字符必须是A或B,第二个 字符必须是一位数字,此情况下给出信息:编码正确;如果第一个字符不是A或B,则给出信息:编码错误;如果第一个字符是A或B,第二个字符不是数字,则给出信息:修改编码。 (1)根据问题的规格说明,列出原因和结果。 因果表格式示例如下: ID ① 原因(输入) a=b=c ID A 结果(输出) 等边三角形 (2)画出因果图。 (3)将因果图转换成简化的决策表,并设计出测试用例。 决策表格式示例如下: 规则 条件 ① (原因)… 动作 A (结果)… 测试用例 1 Y … √ … 3,3,3 2 3 … n (1)列出原因和结果 ID ① ② ③ 原因(输入) 第一个字母是A 第一个字母是B 第二个字母是数字 ID A B C 结果(输出) 显示编码错误 显示编码正确 显示修改编码 (2)画出因果图 ① ~ A E ∨ ⑩ ② ∧ B ③ ~ C 中间状态⑩,表示已接受第一个字符。 (3)将因果图转换成简化的决策表,并设计出测试用例。 8 规则 1 2 3 4 5 6 ① Y Y Y N N N 条件 ② Y N N Y Y N (原因) ③ - Y N Y N - ⑩ Y Y Y Y N A √ 动作 B √ √ (结果) C √ √ 不可能 √ 测试用例 A3 AA B6 BB 11 4、阅读下面的程序, void Test1( int n, int i ) 1 { 2 int x=0; 3 int y=0; 4 while ( n-- > 0 ) 5 { 6 if ( i==0 ) 7 x=y+2; 8 else 9 if ( i==1 ) 10 y=y+10; 11 else 12 x=y+20; 13 }// while 14 }// Test1 试求: (1)画出程序的流程图及控制流图(可用语句标号表示),计算程序的环形复杂度。(2)确定程序的独立路径,并根据独立路径,设计测试用例。 测试用例格式示例如下: 用例ID n i 预期输出x,y 覆盖路径 1 5 1 2,5 1-2-3 (1) 画出程序的流程图及控制流图。 9 12,34F4T6106F9FT107912T7121414 计算程序的环形复杂度。 V(G)=E-N+2=9-7+2=4 或 V(G)=P+1=3+1=4 (2)确定程序的独立路径。 路径1:4→14 路径2:4→6→7→14 路径3:4→6→9→10→4→14 路径4:4→6→9→12→4→14 根据独立路径,设计测试用例。 用例ID 1 2 3 4 n 0 1 1 1 i 0 0 1 2 预期输出x,y 0,0 0,2 0,10 20,0 覆盖路径 4-14 4-6-7-14 4-6--9-10-4-14 4-6-9-12-4-14 5、假设某保险公司的人寿保险的保费计算方式为:投保额×保险费率。其中,保险费率依 点数不同而有别,具体规则见下表。 年龄 20-39 6点 40-59 4点 其它 2点 性别 男M 5点 婚姻 点数与保险费率 ≥10点A 0.6% <10点B 0.1% 女F 已婚T 未婚F 3点 3点 5点 根据问题的规格说明,从输入条件划分等价类。 输入等价类 输入 年龄 ID 1 2 3 4 有效等价类 ID 20-39岁 8 40-59岁 其它年龄 男性 9 无效等价类 年龄小于1 性别 除“M”“F”字符外 10 婚姻 5 6 7 女性 已婚 未婚 10 除“T”、“F”字符外 (1) 对每一个有效等价类,至少设计一个测试用例。 (2)对每一个无效的输入, 设计一个无效等价类,并设计测试用例。 五、单选题 1、对于下列描述 (1)软件未达到产品说明书中已经标明的功能; (2)软件出现了产品说明书中指明不会出现的错误; (3)软件未达到产品说明书中虽未指出但应当达到的目标; (4)软件功能超出了产品说明书中指明的范围。 正确的说法是 A. (1)(2)(3)属于软件缺陷 B. 只有(4)属于软件缺陷 C. (1)(2)(3)(4)都属于软件缺陷 D. 只有(1)(2)属于软件缺陷 2、测试步骤详细规定了如何设置、执行、评估特定的 A. 测试计划 B. 测试报告 C. 测试用例 D. 测试程序 3、经过测试,符合设计要求,确认系统功能和其他特性均不再做任何改变。这表示的是测 试过程中的 A. 程序冻结 B. 需求冻结 C. 功能冻结 D. 代码冻结 4、测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;测试用例是 执行测试的 A. 最小集合 B. 最大集合 C. 最小实体 D. 最大实体 5、尽早地和及时地测试。这句话描述的是 A. 软件测试目的 B. 软件测试原则 C. 软件测试停止的依据 D. 软件测试基本问题 6、对于下列内容:(1)需求分析说明书(2)概要设计说明书(3)详细设计说明书(4)源 程序代码。关于单元测试的描述,正确的说法是 A. 与(1)(2)(3)有关 B. 只与(4)有关 C. 只与(3)(4)有关 D. 与(1)(2)(3)(4)都有关 7、按照区间进行等价类划分,在输入条件规定了取值范围或值的个数的情况下,可以确定 有效等价类和无效等价类的个数分别为 A. 2,2 B. 1,1 C. 1,2 D. 2,1 8、在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角 形。则标准等价类和健壮等价类的测试用例个数分别为 A. 4,1 B. 5,7 C. 1,4 D. 4,7 9、在软件测试工具中,下面不属于动态测试工具类型的是 11 A. 错误检查 B. 内存分析 C. 覆盖测试 D. 接口测试 10、大量的事实表明,导致软件缺陷的最大原因是 A. 软件产品说明书 B. 软件设计手册 C. 软件用户操作手册 D. 软件维护手册 11. 在软件测试工具中,下面属于静态测试工具类型的是 A. 一致性检查 B. 内存分析 C. 覆盖测试 D. 接口测试 12、为检验所开发的软件是否能按用户提出的要求进行,采用黑盒测试来完成的一系列证明 软件功能和要求一致的测试称为 A. 集成测试 B. 确认测试 C. 系统测试 D. 回归测试 13、针对软件的可维护性,目前业界主要存在三种度量参数:Line复杂度、Halstead复杂 度和McCabe复杂度。其中Line复杂度表示 A. 以代码的行数作为计算的基准 B. 以程序中使用到的运算符与运算元数量作为计数目标 C. 以软件的流程图来衡量软件的质量 D. 以软件的功能结构图来评价软件的可维护性 14、 从宏观上说,C/S体系结构的软件测试通常是从单个客户端开始,然后再逐步集成客 户端、服务器和网络系统进行集成测试,最后进行系统的整体测试。下面不属于整体测试的主要内容是 A. 事务测试 B. 网络通信测试 C. 网络运行性能的测试 D. 对应用服务器(中间件)的测试 15、假设存在父类Base有Inherited()和Redefined()这两个成员函数,继承父类Base的 子类Derived只对Redefined() 做了改动。那么,确切的说法是 A. Derived::Redefined()需要重新测试 B. Derived::Redefined()不必重新测试 C. Derived::Inherited()不必重新测试 D. Derived::Inherited()需要重新测试 16、用等价类划分法设计对所有实数进行开平方运算的程序的测试用例,可以将输入域进行 划分为 A. 正整数、0 和 负整数 B. 正实数、0 和 负实数 C. 有理数和无理数 D. 实数和虚数 17、假设一个软件的数据输入要求是4位整数,则利用边界值分析法,输入的有效等价类和 无效等价类的边界值分别为 A. 1000,9999;1000,10000 B. 999,9999;999,10000 C. 1000,9999;999,10000 D. 999,9999;1000,100000 18、在软件测试工具中,下面属于动态测试工具类型的是 A. 性能测试 B. 类型检查 C. 复杂度分析 D. 接口分析 19、在软件测试的充分性准则中表明,软件越复杂,需要的测试数据就越多。这一特性称为 A. 单调性 B. 非复合性 C. 复杂性 D. 非分解性 20、在集成测试策略的环境中,对某些已经进行过的测试的某些子集再重新进行一遍,以保 12 证上述改变不会传播无法预料的副作用或引发新的问题,这一测试称为 A. 集成测试 B. 确认测试 C. 系统测试 D. 回归测试 21、如果将简单循环的测试方法用于嵌套循环,可能的测试次数会随嵌套层数成几何级数增 加。 此时可采用减少测试次数的正确方法之一是 A. 测试从最内层循环开始,所有外层循环次数设置为最小值 B. 测试从最外层循环开始,所有内层循环次数设置为最小值 C. 测试从最内层循环开始,所有外层循环次数设置为最大值 D. 测试从最外层循环开始,所有内层循环次数设置为最大值 22、Rational Robot是一种强大的自动化测试工具,主要通过编写脚本的方式提供自动化 测试特性。其中图形用户界面(GUI)脚本主要用于 A. 用户测试 B. 单元测试 C. 性能测试 D. 功能测试 23、一个好的测试用例在于发现了还未曾发现过的错误。这句话描述的是 A. 软件测试目的 B. 软件测试原则 C. 软件测试停止的依据 D. 软件测试基本问题 24、Rational Robot是一种强大的自动化测试工具,主要通过编写脚本的方式提供自动化 测试特性。下面不属于目前Rational Robot开发的三种测试脚本之一的是 A. 图形用户界面(GUI)脚本 B. 虚拟用户(VU)脚本 C. VBScript脚本 D. JavaScript脚本 25、对于下面的逻辑覆盖法的有关描述:选择足够多的测试用例,使得程序中的每个可执行 语句至少执行一次。该逻辑覆盖属于 A. 语句覆盖 B. 判定覆盖 C. 条件覆盖 D. 组合覆盖 26、下面是有关基本路径测试方法的描述: (1)计算程序的环形复杂度,导出程序基本路径集中的独立路径条数。 (2)导出基本路径集,确定程序的独立路径。 (3)画出程序的控制流图。 (4)根据图中的独立路径,设计测试用例的输入数据和预期输出。 正确的执行基本路径测试方法的步骤是 A.(1)(2)(3)(4) B.(3)(1)(2)(4) C. (3)(4)(2)(1) D. (4)(3)(2)(1) 六、题型举例 一、单项选择题(本大题共15小题,每小题1分,共15分) 1、大量的数据表明,导致软件缺陷的产生原因分布中,软件产品说明书约占 A. 7% B. 10% C. 27% D. 56% 2、关于软件测试对象的描述,下面不正确的是 A. 软件测试不等于程序测试 B. 软件测试就是源程序的测试 C. 软件测试贯串于软件定义和开发的整个过程 D. 软件开发过程中所产生的需求规格说明、概要设计规格说明、详细设计规格说明以 及源程序都是软件测试的对象。 13 3、Rational Robot是一种强大的自动化测试工具,主要通过编写脚本的方式提供自动化测 试特性。其中虚拟用户(VU)脚本主要用于 A. 用户测试 B. 单元测试 C. 性能测试 D. 功能测试 4、在软件测试工具中,下面属于动态测试工具类型的是 A. 一致性检查 B. 内存分析 C. 数据流分析 D. 接口分析 5、在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么 可以认为程序中的每个语句都已经检验过了,这种测试方法就是通常所说的基本路径测试方法。这种方法的结果达到了 A. 语句覆盖 B. 条件覆盖 C. 路径覆盖 D. 组合覆盖 6、在软件测试的充分性准则中表明,即使对软件系统整体的测试是充分的,也并不意味软 件系统中各个成分都已经充分地得到了测试。这个特性称为 A. 单调性 B. 非复合性 C. 复杂性 D. 非分解性 7、针对软件的可维护性,目前业界主要存在三种度量参数:Line复杂度、Halstead复杂度 和McCabe复杂度。其中McCabe复杂度表示 A. 以代码的行数作为计算的基准 B. 以程序中使用到的运算符与运算元数量作为计数目标 C. 以软件的流程图来衡量软件的质量 D. 以软件的功能结构图来评价软件的可维护性 8、按照数值划分等价类,在规定了一组n个输入数据,并且程序要对每一个输入值分别进 行处理的情况下,可确定有效等价类和无效等价类的个数分别为 A. n ,1 B. 1,n C. n+1,n D. 1,n+1 二、填空题(本大题共15小题,每小题1分,共15分) 1、测试大纲是软件测试的依据,包括(测试项目)、测试步骤、测试完成的标准。 2、白盒测试工具一般是针对被测(源程序)进行的测试, 3、Web网站的网页测试主要包括文字测试、(链接)测试、图形、图像测试、表单测试等。 4、有效的Web压力测试系统的关键条件中,重复指的是(多次)地执行某个操作或功能。 5、在软件测试中,检验软件产品质量的最后一道工序主要是突出用户的作用,同时软件开 发人员也应有一定程度的参与,这一测试称为(验收)测试。 6、基于状态的上下文覆盖把一个状态上下文内的一个例行程序的执行认为是(独立于)另 一个状态内相同例行程序的执行。 7、动态测试工具需要实际运行被测系统,并设置断点,掌握断点这一时刻程序运行(数据)。 8、语句覆盖属于(白盒)测试技术。 三、简答题(本大题共6小题,每小题5分,共30分) 1、对于软件缺陷的定义,通常有下列描述: (1)软件未达到产品说明书中已经标明的功能; (2)软件出现了产品说明书中指明不会出现的错误; (3)软件未达到产品说明书中虽未指出但应当达到的目标; (4)软件功能超出了产品说明书中指明的范围; (5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。 14 以日常使用的具有四则运算功能的计算器内的嵌入式软件为例,举例说明软件测试中出现上述五条中的至少三种现象。 (1)随意选定两个数值,按下加、减、乘、除功能健之一,无反应或结果出错,属于第一种现象。 (2)如果产品说明书指出,系统不会出现崩溃或死锁等反应,但随意选定按键后,无反应,属于第二种现象。 (3)系统除具有加、减、乘、除功能外,还能计算平方根,但说明书并为指出该功能,属于第三种现象。 (4)测试中,因电池没电导致计算错误,但说明书并为指出该现象如何处理,属于第四种现象。 (5)按键太小或正常情况下显示字体不清,属于第五种现象。 2、简述单元测试中模块接口测试的内容 (1)调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配; (2)所测模块调用子模块时,它输入给子模块的参数与子模块中的形式参数在个数、属 性、顺序上是否匹配; (3)是否修改了只做输入用的形式参数;) (4)调用标准函数的参数在个数、属性、顺序上是否正确; (5)全局变量的定义在各模块中是否一致。 3、简述软件测试停止的五类依据(标准) (1)测试超过了预定时间。 (2)执行了所有的测试用例,但并没有发现故障。 (3)使用特定的测试用例设计方案作为判断测试停止的基础。 (4)停止测试的标准可定义为查出某一预订数目的故障。 (5)根据单位时间内查出故障的数量决定是否停止测试。 4、简述黑盒测试可以发现哪几类错误 (1)是否有不正确或遗漏了的功能 (2)在接口上,输入能否正确地接受或能否输出正确的结果 (3)是否有数据结构错误或外部信息访问错误 (4)性能上是否能够满足要求 四、设计题(每题10分,共30分) 1、NextDate函数问题说明:输入一个日期,求从输入日期算起的第三天日期。例如,输入 为2008年8月8日,则该程序的输出为2008年8月10日。NextDate函数包含三个整数变量month、day和year,并且满足下列条件:1≤ month ≤12和1≤ day ≤31。 (1)根据问题的规格说明,将输入变量month、day、year划分的有效等价类作为原 因,列出原因和结果(假设不考虑闰年)。 因果表格式示例如下: ID ① 原因(输入) a=b=c ID A 结果(输出) 等边三角形 (2)根据因果表,分析因果关系,画出简化的决策表,并设计测试用例。 决策表格式示例如下: 规则 条件 ① (原因)… 1 Y … 2 3 … n 15 动作 A (结果)… 测试用例 (a,b,c) √ … 3,3,3 (1)列出原因和结果 ID ① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 原因(输入) ID A B C D E F 结果(输出) day+2 day=2 day=1 month+1 month=1 year+1 month=4,6,9,11 month=1,3,5,7,8,10 month=2 month=12 1 ≤day≤26 day=27 day=28 day=30 day=31 year (2)画出简化的决策表,并根据决策表,设计测试用例。 规则 条件 ① (原因)② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ 动作 A (结果)B C D E F 不可能 测试用例 (mouth,day, year) 6, 16, 2008 6, 30, 2008 1 Y Y Y Y Y Y - √ 2 Y Y - √ √ 3 Y Y - √ 9, 31, 2008 3, 16, 2008 5, 31, 2008 2, 16, 2008 2, 27, 2008 4 Y Y - √ √ 5 Y Y - √ √ 6 Y Y - √ 7 Y Y - √ √ 8 Y Y - √ √ 2, 28, 2008 9 Y Y Y - √ 2, 30, 2008 10 Y Y - √ √ √ 12, 30, 2008 12, 31, 2008 11 Y Y - √ √ √ 16 五、阅读分析题(本大题10分) 阅读下面的问题说明: 现在的软件系统几乎都是用事件触发来控制程序流程的。事件触发时的情景便形成了场景,而同一事件不用的触发顺序和处理结果就形成了事件流。事件流分为基本流和备选流,基本流是经过测试用例的从开始到结束的最简单、无差错的路径,备选流可以从基本流开始,也可以从另外的备选流开始,在某个特定条件下执行。根据问题的描述确定程序的基本流和备选流,然后由基本流和备选流形成不同的场景,对每一个场景生成相应的测试用例。这就是应用场景法进行测试用例设计的基本思想。 下面是对某ATM机应用系统的取款操作的基本流和备选流的描述。 基本流A: 序号 业务名称 业务描述 1 准备提款 客户将银行卡插入ATM机 2 验证银行卡 ATM机从读入的银行卡中读取账户代码,并检查它是否属于可接收的银行卡 3 输入密码 ATM机要求客户输入6位密码 4 验证帐号和密码 ATM机通过验证客户的帐号和密码,决定客户的合法性 5 ATM机屏幕选项 ATM机显示在本机上可用的屏幕选项 6 输入金额 从ATM机显示屏幕中选取金额 7 授权 ATM机将整体操作作为事务提交银行系统 8 出钞 ATM机向客户提供现金 9 返回银行卡 银行卡被返还 10 打印收据 提供客户打印收据功能 备选流: 序号 业务名称 业务描述 B 银行卡无效 在基本流A2过程中,该卡不能够识别或是非本机可以使用的银行卡,ATM机退卡,并退出基本流 C ATM机内无现金 系统判断ATM机内现金不足,重新加入基本流A4,或选择退卡 D ATM机内现金不足 系统判断ATM机内现金不足,重新加入基本流A4,或选择退卡 E 密码有误 ATM机提示密码不正确,客户有三次机会重输,重新加入基本流A3,或选择退卡 F 账面余额不足 ATM机提示客户账面余额不足,重新加入基本流A6,或选择退卡 试求: (1)设计场景(基本流用字母A表示,备选流用题干中描述的相应字母表示)。 场景格式示例如下: 场景ID 场景描述 场景过程 1 密码有误 A、B、C (2)设计测试用例场景矩阵 17 测试用例矩阵格式示例如下: 测试用例ID 1 场景 1 账号 V 密码 V 输入金额 V 账面金额 V ATM机内金额 n/a 预期结果 退卡 V表示有效数据元素,I表示无效数据元素,n/a表示不可用 (3)假设本系统开发人员在开发过程中通过测试发现了20个错误,独立的测试组通过上述 测试用例发现了100个软件错误,系统在上线后,用户反馈了30个错误,请计算缺陷探测率(DDP)。 参考答案: (1)设计场景 场景ID 1 2 3 4 5 6 场景描述 成功取款 银行卡无效 ATM机内无现金 ATM机内现金不足 密码有误 账面余额不足 场景流程 A A、B A、C A、D A、E A、F (1) 设计测试用例场景矩阵 测试用例ID 1 2 3 4 5 6 场景 1 2 3 4 5 6 账号 V I V V V V 密码 V n/a V V I V 输入金额 V n/a V V n/a V 账面金额 V n/a V V n/a I ATM机内金额 V n/a n/a I n/a V 预期结果 成功取款 退卡 退卡 重输或退卡 重输或退卡 重输或退卡 (3)计算缺陷探测率(DDP) DDP=Bugstester(Bugstester+ Bugscustomer)=(20+100)(20+100+30)=80%(0.8)其中,Bugstester为测试者发现的错误数; Bugscustomer为客户发现并反馈技术支持人员进行修复的错误数。 18 因篇幅问题不能全部显示,请点此查看更多更全内容