您的当前位置:首页正文

软件测试技术

2022-09-26 来源:客趣旅游网
-、填空(每空1分,共20分)

1导致软件缺陷的最大原因是( .

2. 列举三种常见的开发模式(

产品说明书 大爆炸模式

),(

),第二大来源是(设计)o

边写边改模式 螺旋模式 )模式最有利。 遗漏和丢失之处

)低层测

,

)。

瀑布模式或螺旋模式 ); 对测试人员而言(

3. 在测试产品说明书时,高层审查技术可以查出( 试技术可以确保(

所有细节都被定义

)o

4. 白盒测试(包括静态和动态白盒测试)的最大问题是( 文本与代码脱离的最好方式是使用( 5.

资源文件

灰盒 同事审查

容易形成偏见

)o

6. 网页的特点使得对网页的测试非常适合( 7. 代码正式审查的三种主要形式是:(

检验

)o

)测试。 ),(

走查

)

,

8. 在本质上,集成测试都是测试 9. 在测试网站时,首先应建立(

),超级链接当做(

接口之间的关系

)o

状态表 ),把每个网页当做( 状态之间的连接线 寻找软件缺陷

)o

不同状

10. 动态白盒测试的目标是(

)。

),调试的目标是

修复缺

二、判断正误(每题 1分,共10

分)

1所有测试发现的缺陷都必须得到修复。(x ) . 2. 软件可以完全测试。(x )

在进行软件测试工作期间,大爆炸模式是最有可能遇到的。(x ) 3.

4软件测试不能报告软件不存在缺陷。(寸) . 5. 产品说明书无法进行白盒测试。(x )

6在某软件的测试中,如果发现的缺陷越多,则余下的部分就可以认为较可靠。(x ) .

测试错误提示信息同属于文档测试和代码测试的范围。(寸) 7.

网页的文本应该按照文档测试的方法进行。(/ ) 8.

9. 单元测试是针对代码的测试。(x )

10.在显示随时间推移打开的软件缺陷的图表中,若标示每天打开缺陷的曲线在某一时间点

后急剧下降,则肯定意味着可发布软件。(x )

三、选择题(单选或多选)(每题1分,共10分)

1.下列各项,属于用户界面的测试应依据的标准有:(a b c e

B. 一致

C.灵活

D.

)o

A.直观

符合标准和规范

给用户大量可选项

E.

E.

2.以下几项中, 属于系统测试的主要内容的有:(abode )

B.容量测试

C.性能测试

D安全性测试 .

A.功能性测试

请简要分析原因,并说明如何修改。unsigned是无符号整型变量。假定在32位机上运行。 答:该代码的问题是从有符号数到无符号数的隐式强制类型转换出错。Length是无符号整

型数,因此length-1将按无符号数进行计算。当length为0时,即0-1按照无符号数进行

计算,即发生了整数溢出,相当于进行了模数加法,结果为FFFFFFFF。而〈二比较也是按 照无符号数进行比较。因为任意的32位整数都是小于或等于FF FF FF FF的,因此这个比 较运算符始终为真,代码将访问到数组a的无效元素,引起存储器错误。

两种方法改正代码,其一是将length型声明为int型;其二是将for循环的测试条件改为 i< lengtho 一、 名词解释 1. 黑盒测试

答:黑盒测试有时又称功能性测试(functional testing)或行为测试(behavioral testing)。指

测试员只需要了解软件的功能而不知道其内部运行方式,通过输入数据,检查输出结果来发 现软件缺陷。 2. 白盒测试

答:白盒测试有时称为透明盒测试(clear-box testing)或结构测试、逻辑驱动测试。指测试 员可以访问程序代码,并通过检查代码的线索协助测试。 3. 等价类

等价类是指测试相同目标或者暴露相同软件缺陷的一组测试。可以进一步分为有效等价类和 无效等价类。 4. 压迫测试

答:压迫测试(strees testing)是为测试软件对外部资源的要求和依赖的程度。方式是使 软件在不够理想的条件下运行:内存小,磁盘空间少,CPU慢等等。尽可能限制软件的必要 条件。类似边界测试 5. 缺陷轰炸压迫测试

答:缺陷轰炸是在一段时间(一般为儿个小时)内整个测试小组停下指定的常规测试任务, 选择软件中某一块区域,所有测试员集中测试这个区域或者这组特性。 二、 判断正误(每题1分,共10分)

1. 在进行软件测试工作期间,螺旋模式是最有可能碰到的。( X ) 2. 在模拟飞行类游戏中,对准确度和精确度,更应关注精确度。(x ) 3. 不能报告软件不存在缺陷。(/

4. 测试产品说明书属于静态白盒测试。(x )

5. 迫使软件出现错误提示信息既可以算作通过性测试爷可以算作失效性测试。( V ) 6. 2的幕次是重要的次边界条件。(寸 )

7. 对于一般的软件,测试其所有状态是可以实现的。(

8. 检验是代码正式审查的主要形式之一。其中,代码的表述者是原来的程序员。(x 9. 分段测试的策略的效用容易隔离缺陷。(寸 )

10.在显示随时间推移软件缺陷累计数目曲线如果在某一时间点后趋于平坦,则肯定意味着 可发布软件。(x )

三、选择题(单选或多选)(每题2分,共20分)

以下术语中,描述严重甚至危险的情况的是(a, c, d) A. 缺点(defect) E. 问题(problem)

2. 哪个阶段引入的缺陷最多,修复成本最低 (A) A. 需求分析阶段 B.概要设计阶段 E. 测试阶段

3. 对软件缺陷不做修复的原因有(a b c e) A. 没有足够时间 B.不算真正缺陷 E. 不值得修复

4. 测试产品说明书属于(A C ) A. 静态测试 E. 单元测试

5. 以下说法中符合动态黑盒测试的有: (a b c d) A. 测试员像用户一样使用软件 B. 据、接收输出、检验结果

B.偏差(variance) C.故障(fault) D.失败(failure)

C.详细设计阶段 D.编码阶段

C.修复风险太大 D.软件开发模式决定

B.动态测试 C.黑盒测试 D.白盒测试

测试时不知道程序实现细节

C.测试员输入数

D.也称为行为测试 E.依据详细设计进行

6. 动态白盒测试主要包括以下内容(A B C D)

A.直接测试底层函数、过程、子程序、库 B.以完整程序的方式从顶层测试软件,根 据对软件运行的了解调整测试用例

C.从软件获得读取变量和状态信息的访问权

E.像用户一样使用软件

D.

估算执行测试时命中的代码量和具体代码

7. 以下各项中,属于在BETA测试中需要注意的要点的有(a b c d e)

A.指定所需要的beta测试者的类型B.仔细选择参加者C・Beta测试程序会耗费大量时 间,必须计划

D.保证测试者使用软件 E.和程序beta版的管理者密

切合作,使测试结果为人所知

8. 以下几项中,属于配置测试中用于等价划分硬件还应考虑的是(A B C D E)、 A.使用的年头

B.流行程度 C.制造商 D.驱动程序版本

E.国家和地区

9. 良好的安全的系统必须具备哪层面的安全:(A B C D E) A.物理层的安全

B.网络层的安全 C.操作系统层的安全

D.应用程序层的安全 E.第三方的安全

10. 测试计划的高级期望包括(A B D ) A.测试计划过程和软件测试计划的目的是什么 C. 是什么

四、简述题(每题6分,共30分)

1. 在进行白盒测试前,为什么应该先建立黑盒测试用例?

答:因为如果先从模块的白盒角度建立测试用例,检查代码,就会偏向于以模块工作方式建 立测试用例。但代码编写者也许误解了产品说明书,因此偏向代码建立测试用例就不会设计 出完整的测试用例,并没有测试预期的操作。所以为真正测试模块的功能和作用,应先按照 产品说明书建立黑盒测试用例。

2. 既然生产硬件都要符合标准,为什么还要进行配置测试呢?

答:原因是:因为厂商相互之间总是激烈竞争刻意追求性能,所以硬件标准并非总是被严 格遵守,甚至有时标准本身也是松散的一一仅仅是规范。此外,硬件的驱动程序通常开发周 期较短,开发过程较为仓促,经常未严格测试,也会导致软件在使用某种硬件配置时无法正 常工作。因此要进行配置测试

3. 请简述RAM损耗和磁盘损耗的来源以及其引起的安全问题

答:数据在写到磁盘上时以块(扇区)形式写,扇区组合成簇,由于文件系统以一个2048 个字节的簇(4个扇区)来写磁盘(仅指FAT文件系统),这就出现了 RAM损耗(RAM slack) 和磁盘损耗(disk slack)o在大文件的最后一个簇中,常常会保存有随机的数据。因为文 件的最后一部分写入硬盘时并不一定能充满整个扇区,因此0S会从内存中随机找出一些数 据进行填充,这些数据即RAM损耗中的内容。在磁盘损耗位置保存的数据是该文件被写入 前的数据。可能是其他文件的残余数据,也可能是一个以前的,更长的文件。这些潜在数据 可能是个开头,或者包含特意删除的文件甚至是很保密的信息。 4. 最基本的测试自动化类型是什么?

答:是利用宏录制和播放器,录制第一次执行测试用例时的键盘和鼠标操作,然后在需要重 新执行时回放一次,达到测试软件的目的。

5. 严重程度高的Bug必须优先解决、优先级高的Bug其严重性也一定高,这两句话对吗? 答:不对。一般而言,严重性程度高的软件缺陷具有较高的优先级,严重性高意味着缺陷对 软件质量造成的危害大,需要优先处理,而严重性低的缺陷可能允许稍候处理,但是有例外: 1) 严重程度高但优先级不一定高

如果某个缺陷只在极端的条件下产生,则没有必要马上解决;

如果修正一个缺陷需要修改乃至推翻原有软件的架构,则可能会产生更多的潜在缺陷,而且 软件出于市场压力需要尽快发布,此时即使软件缺陷的严重性很高,是否去修复,需要全盘 考虑。

B.测试的是什么产品

审查代码D.产品的质量和可靠性目标E.进行黑盒测试还是白盒测试

2) 严重程度低但优先级不一定低

如果是软件名称或公司名称的拼写错误,虽然仅仅属于界面错误,严重程度不高,但关系到

软件和公司的形象问题,则必须尽快修正。 六、设计测试用例(共25分)

1. 假定一台ATM机允许提取的增量为50元,总额从50元到5000元不等的现金,并要求一 次最多取2000元,一天最多取5000元,一天最多取3次。运用等价类和边界值方法编写测 试用例。(12分) 答:测试用例见下:

用例编号 1 2 3 4 5 6 7 8 9 10 输入数据 一次取50元 一次取2000元 一次取20元 一次取2050元 连取 3 次:2000+2000+1000 连取 3 次:2000+2000+1050 连取 3 次:50+50+50 ATM机余额不足 卡内余额不足 取款过程中机器出故障 卡被机器吞掉 预期结果 提取成功 提取成功 显示一次提取现金最少为50元 业不 次提取现金最多为2000兀 提取成功 显示一天提取现金不能多于5000 提取成功 显示ATM机余额不足,用户提款操作取消 显7K卡内余额不足,用户提款操作取消 显示机器故障,用具提款操作取消 显示请和工作人员联系,用户提款操作取消 11 2. 为下面函数构造一个驱动模块,设计3个测试用例。(13分) double swap_add (int * xp, int * yp)

int X

int y 二

*xp

; *yp;

*xp y;

x*yp 二 ; return x+y;

答:驱动模块和测试用例见下: void main (void)

int x; int y;

int z;

scanf (%d %d\z= swap_add(&x, &y);

printf (\"%d, %d, %d \\n”,x, y, z);

66

编写以下3条测试用例 用例编号 1 2 3 输入数据 x=4, y=2 x=l, y=-5 x=3, y=0 预期结果 2, 4, 6 -5, 1, -4 0, 3, 3 兼容性和配置测试

3. 集成测试的依据主要是:( A. 软件需求 代码

B.产品说明书 C.概要设计 D.详细设计 E.

4 .火星极地登陆飞船的事故归根结底是什么测试不充分造成的?

B. 集成测试

(a b c d e)

B.被测代码静态检查工具检查通过

C.兼容性测试

(b)

D.易用性测试

A.单元测试

E.安全性测试

5.单元测试的入口条件有: A.被测代码编译链接通过

C.单元测试用例的检视

通过D.己完成至少一轮代码检视或走读 6. 重复测试主要可以检查:(a) A.内存泄漏

E.单元测试代码写完并通过检视

B.软件对外部资源的要求和依赖程度

E.软件的易用性

C.软件处理尽可能

大的数据文件的能力D.软件的安全性

7. 以下几项中,属于网站兼容性测试和配置测试考虑的有:(a A.硬件平台

B.浏览器软件和版本C.浏览器插件

D. 视频分辨率

E.

网站动态内容

8. 测试测试工具类型的选择取决于:(c e) A.进度

B.质量要求 C.被测软件类型

D. 软件开发模式

E.

进行黑盒测试还是白盒测试

9) IEEE 829-1998中对软件测试计划的目的描述包括:(a b c d e) A.规定测试活动的范围、方法、资源、进度B.明确正在测试的项目、待测的特性

C.

明确要执行的测试任务 D. 明确任务的责任人 E. 明确与计划相关的风

10. 以下各项中,属于有效的软件缺陷描述所应具备的特征有: (abed)

B.单一

C.明显并通用

D.可再现

E.

A.短小

对软件缺陷做了评价

简述题(每题6分,共30分) 四、

1. 简述静态测试和动态测试的内涵,并举例说明。

答: 二者是描述软件测试的两个主要术语,静态测试是指测试不运行的部分,只是检查和审

动态测试时指通常意义上的测试,使用和运行软件。例如,审查说明书和代码都属于静 核;

态测试的范畴,而通过性测试、实效性测试和单元测试、集成测试盒系统测试等都属于动态

测试的范畴。(两种测试的描述4分,最后一部分2分)

2. 简述在配置测试中如何辨别发现的软件缺陷是普通的问题还是特定配置的问题? 答:在几个不同的配置中重新运行暴露软件缺陷的相同步骤,如果软件缺陷不出现了,就可

能是配置缺陷。如果在不同的配置中都出现,就可能是通用的问题。但一定要注意,配置问 题可能跨越整个等价类划分。例如,软件缺陷仅在激光打印机上出现,而在喷墨打印机上表 现不出来。因此在等价类划分时需要仔细考虑。(如何辨别4分,注意点2分) 3. 简述alpha测试和beta测试的主要内涵

答:Alpha测试属于内部用户测试,将软件发放给内部的用户进行测试,由这些用户自由使 用,并不按照测试用例进行。其步骤包括选择alpha测试人,背景知识介绍,执行alpha 测试盒记录问题及交流。

Beta测试属于外部用户的测试。将软件产品有计划地发放给挑选好的外部用户,由其使用 然后从其收集反馈信息。Beta测试是一个保证质量的重要环节。是产品发布前最后一道关 口。Beta测试完成后,软件问题修改完并通过回归测试后,进行完其他例行工作就可以发 布产品了。(两种测试基本描述5分,Beta测试注意点1分) 4. 简述软件缺陷的定义。

答:1)软件未实现产品说明书要求的功能。 2) 软件出现了产品说明书指明不会出现的错误。 3) 软件实现了产品说明书未提到的功能。

4) 软件未实现产品说明书虽未明确提及但应该实现的目标。

5) 软件难以理解、不易使用、运行缓慢或者一一从测试员的角度看一一最终用户会认为不 好。

只有满足至少一个条件才称发生了一个软件缺陷。(每点1分,注意点1分)

5. 简述软件测试工具的两种主要类型,并分析软件测试员在选择这些工具上主要注意什么。 答:软件测试工具可以分为非入侵式工具和入侵式工具。如果工具仅用于监视和检查软件而 不对其进行修改,就是非入侵工具。如果工具以任何方式修改了程序代码或者控制了操作环 境,就属于入侵式工具。两种类型的工具的共同之处是都可以深入到软件中一般用户在正常 方式下难以访问的地方。非侵入式工具一般只查看发生了什么;入侵式工具不仅可以查看发 生了什么,还可以操纵这些工具尝试在普通用户层难以执行或不能执行到的测试用例。因此 软件测试员在选择时应该考虑测试软件的类型、以及进行的是黑盒还是白盒测试。如果选择 了入侵式工具,应该设法使用侵入性尽可能小的工具,以减少工具影响测试结果的可能性。 (两种工具的含义3分,选择依据2分,入侵式工具的注意点1分) 五、试为以下几题设计测试用例(每题9分,共18分) 1. 假设x是unsigned int型,对以下的代码片段:

if ( x>10 ) (

fund ();

else {

func2 ();

如果要揭示将“>”写成和将写成“>二”两种错误,应怎样划分等价类?

答:因为x为unsigned int型变量,因此只考虑大于等于0的整数。按照等价类划分的原

则,应该划分为两个等价类:有效等价类:(11, 12, 13, ... }和无效等价类(0,1,..., 10} o

对{0, 1, ...,10}这个集合,在判断条件误写成x>=10时,10和(T9中的任一个数据都不等价,

在判断条件误写成x<10时,10和0~9中的任一个数据也不等价。综上,将数据划分为3个 等价类:{0, 1, 2, ... ,9}, {10}, (11, 12, 13,

从这三个等价类中各取一个数据

就可以揭示出上述两种缺陷。(按等价类划分的实际情况评分。思路对但写错的给5分) 2. 假设x是unsigned int型,对以下的代码片段:

if( a>10 && b<=10 ) (

return (a~b); } else {

return (a*b); )

请按照条件组合覆盖设计测试用例 答:记a>10为条件1, b<=10为条件2,

编号 1 2 3

覆盖条件取值 Tl, T2 Tl, F2 Fl, T2 Fl, F2 具体条件取值 a>10 a>10 b<=10 b>10 a<=10 b〈=10 a<=10 b>10 4

取测试用例如下:

输入数据 测试用例1 测试用例2 测试用例3 预期输出 2 121 90 110 a=ll,b=9; a=ll,b=ll; a=10, b=9; a=10, b=ll; 测试用例4 (测试用例不唯一。仅给出测试用例,没有分析过程,只给5分) 六、论述题(每题12分,共12分)

库函数gets的实现代码如下:

char * gets ( char * s) {

char * dest 二 s;

while( (c = getchar( ) ) != '\\n' && c != EOF )(

*dest ++ = c;

*dest ++ = ‘\\0‘; if( c = = EOF ) {

return NULL;

return s;

请具体分析该函数中可能引起安全问题的缺陷,并说明恶意代码如何利用这个缺陷。

答:C语言对于数组引言不进行边界检查,而且局部变量和状态信息,例如寄存器值和返回 指针都存放在栈中。这两种情况结合到一起就能导致严重的程序错误。一个越界的数组元素 的写操作可以破坏存储在栈中的状态信息。然后,当程序使用这个被破坏的状态,试图重新 加载寄存器或执行ret指令时,就会出现严重错误。例如,下面的代码调用了 gets函数:

viod echo () {

char buf[4]; gets (buf);

由于gets函数没有办法确定是否为从标准输入输入的字符串分配了足够的存储空间。在实 例程序中,缓冲区只分配了 32个字节,echo函数的栈组织为下图所示情况

栈底

较早的帧

调用者

的帧

返回地址 帧指针 %ebp

保存的帧指针%ebp [3】|2] . . 12] (0| ----------------------- 7 echo 帧

由栈组织图可知,如果输入的字符超过了 buf的大小,则对buf[4]~buf[7]的写都会导致%ebp 的保存值被破坏,当程序随后试图以这个值为栈指针进行恢复时,所有的栈引用都是非法的。 而对buf[8]^buf[ll]的写都会导致返回地址被破坏。在函数结尾执行ret指令时,程序返 回到错误地址。则如果给程序输入一个字符串,其中包含一些可执行代码的字节编码,另外 -些字节用一个指向缓冲区的这些可执行代码的指针覆盖返回地址,则执行ret指令后跳转 到漏洞入侵的那些代码。(允许不画图,但必须解释栈的结构。如果没有扣3、5分)

一、填空题(每题1分,共20分)

1. 导致软件缺陷的最大原因是( 产品说明书 ),第二大来源是( 设计 )。 2. 在进行软件测试工作期间,(边写边改 3. 在测试产品说明书时,高层审查技术可以( 术可以(

确保所有细节都被定义

)o

)模式是最有可能碰到的。 查出遗漏和丢失之处

),低层测试技

4. 在数据测试中,根据一些关键原则进行等价类划分,可以合理地减少测试用例,这些关 键原则是(边界条件 )、( 次边界条件 )、( 空值和无效数 据

)o

5. 代码正式审查的三种主要形式中,检验和同事审查、走查的最大不同之处在于:( 代 码的表述者或宣读者不是原来的程序员 6.

方法有:(

自顶向下集成 )、(

)o

集成测试中,主要的集成自底向上集成 )、 大爆炸集成 )、( 三明治集成

)o

7.在测试工具中,有两种有重大差别的工具:( 式工具 8.(

非入侵式工具 ),( 入侵

)o

配置和兼容性测试 本地化测试 )是适合外包测试

的两个典型。

9. 使用宏录制和回放进行自动化测试时,有两个严重的问题:( ( 回放速度)。

10.

早找出软件缺陷并确保其得到修复

软件测试员工作的目标是( )。

尽可能

缺乏验证

)和

二、判断正误(每题1分,共10分)

1. 所有测试发现的缺陷都必须得到修复。(X ) 2. 错误信息不属于软件产品。(x )

3. 在常见的开发模式中,瀑布模式对测试人员而言最有利。(x )

4. 在设计和执行测试用例的时候,对于通过性测试和失效性测试,应该首先进行失效性测 试。(x )

5. 经测试后,可以报告软件不存在缺陷。(x )

6. 为保证质量,必须要将软件中所有的缺陷都修复后才能发布软件产品(x ) 7. 设计测试用例时,总是首先设计黑盒测试用例(/

8. 在测试设计中,测试用例的确认这个步骤不定义实际测试用例值(V ) 9. 单元测试中,驱动函数中包含测试代码(4 10. 代码覆盖率分析器一般都是入侵式工具(廿) 三、选择题(单选或多选)(每题I分,共10分)

1. 动态白盒测试和动态黑盒测试也分别称为是(a )

A.结构化测试和行为测试 非透明盒测试盒透明盒测试

B.功能性测试和行为测试C.静态测试和动态测试 D.

2. 属于影响网站易用性的主要要素的是:(abed ) a.使用不成熟的新技术b.滚动显示的长页面

c.非标准的链接颜色d.过期信息 e.

网站需要收费

3.以下几项中,属于系统测试的主要内容的有:(a A.功能性测试

bed

D.安全性测试

E.

B.容量测试 C.性能测试

兼容性和配置测试

4. 单元测试的依据主要是:(d ) A.软件需求

B.产品说明书 C.概要设计 D.详细设计 E.

代码

5. 迪斯尼的狮子王游戏这个软件错误用例中,是什么测试不充分造成的? ( d A.单元测试 配置测试

6. 单元测试的出口条件有:(a b c )

A.所用测试用例执行通过B.单元测试覆盖率达到预定要求C.单元测试未被执行的代 码的检查D.完成至少一轮代码检视或走读 7. 压迫测试主要可以检查:(b ) A.内存泄漏

B.观察软件对外部资源的要求和依赖程度C.让软件处理尽

E.软件的易用性 E.单元测试代码通过检视

B.集成测试

C.兼容性测试

D.易用性测试

E.

可能大的数据文件D.软件的安全性

8. 网页的特点使得对网页的测试非常适合(c ) A.黑盒测试 易用性测试

B.白盒测试

C.灰盒测试 D.重复测试 E.

9. 软件测试小组应提交的主要文档有:(a b c d e ) A.测试计划

B.测试用例

C.缺陷报告 D.测试工具和自动测试

E.度量、统计和总结

10. 以下各项中,不属于软件缺陷的官方定义的有:(c )

A.软件未实现产品说明书要求的功能 B.软件出现了产品说明书指明不应该出现的错误

C.软件文档不齐全 D.软件难以理解、不易使用、运行缓慢或从测试员角度看最终用户 会认为不好

E.软件实现了产品说明书未提到的功能

四、简述题(每题6分,共30分)

1. 下述语句摘自产品说明书,指出其存在的问题:“用户如果希望加快邮件处理的速度时, 则通常应该选择'快速压缩'选项,在这种情况下程序将有迅速的响应。”。

答:“通常”过于模糊,无法测试;“迅速”是无法量化的术语,无法测试;“如果…则”没

有与之对应的“否则”陈述,陈述不完整,也属于缺陷

2. 简述软件兼容性测试及兼容性测试中向后兼容和向前兼容的概念。

答:软件的兼容性测试是指检查软件之间是否正确地交互和共享信息。注意这里的交互不仅 局限于运行于同一台计算机上的两个程序。关于兼容性测试的两个常用术语是向后兼容和向 前兼容。向后兼容是指可以使用软件的以前版本,向前兼容是指可以使用软件的未来版本。 3. 简述状态测试中如何减少要测试的状态及其转换的数量

答:可以按照以下方法来实现:每种状态至少访问一次;测试看起来是最常见和最普遍的 状态转换;测试状态之间最不常用的分支;测试所有错误状态及其返回值;测试随机状态转 换

4. 简述驱动函数和桩函数的概念。

答:在单元测试中,由于被测函数调用了其他函数,当被调函数失败时一般都很难重现。为 模拟被调函数失败的情况,可以写一个和被调函数原型一样的函数替换被测函数,此函数称 桩函数。

驱动函数是用来测试函数的函数,驱动函数中包含真正的测试代码,是测试用例的代码实现 5. 文本与代码脱离为何重要?达到该目的的最佳方式是什么? 使文本和字符串脱离的方法是什么?意义在哪里?

答:文本与代码脱离的意义在于:如果进行本地化,只用修改文字而不必修改程序代码。因 此工作将简单很多。还会简化测试。因为软件的本地化版本中的代码不变。而修改代码常常 是有风险的行为。最佳方法是把软件可以显示的全部信息都应该存放在与源代码独立的文件 中,该文件称为资源文件(resource file)。软件启动时通过查找该文件来引用信息,而不 管信息的内容是什么。

五、试为以下几题设计测试用例(每题9分,共18分) 1 .假设x是unsigned int型,对以下的代码片段:

if(x<200 && x>10) (

Fund (); } else {

Func2 (); }

按照边界值法进行分析,应该取哪儿个值作为测试用例?

答:按照边界值分析法,对大小范围边界测试时,需要取比下边界值小1的值、下边界值、 上边界值和比上边界值大1这4个数值。因此本题应该取x=10, x=11, x=199, x=200这4 个值作为测试用例。

2.假设x是unsigned int型,对以下的代码片段:

if( a<10 || b>=20 ) { return a; } else {

return (a~b); }

请按照条件组合覆盖设计测试用例 答:记a<10为条件1, b>二20为条件2,

编号 1 2 3

覆盖条件取值 Tl, T2 Tl, F2 Fl, T2 Fl, F2 具体条件取值 a<10 a<10 b>=20 b<20 a>=10 b>=20 a〉=10 b<20 4 取测试用例如下:

输入数据 测试用例1 测试用例2 测试用例3 预期输出 9 9 10 -9 a=9, b=21; a=9, b=19; a=10, b=21: a=10, b=19; 测试用例4 六、论述题(每题12分,共12分)

以下的代码试图计算数组a所有元素的和,其中数组元素的个数由参量length给出: int func (int a[], unsigned length)(

int i;

int result = 0;

for ( i = 0; i<= length-1: i++) (

result += a[i]; }

return result;

当参数length为0时,代码应该返回0,但是实际上以上代码无法达到该目的。

因篇幅问题不能全部显示,请点此查看更多更全内容