软件测试技术 习题答案 朱少民 第二版
-
目录
第章软件测试概述
.......
..................................................
.......................
................
....................1
第章软件测试方法与过程
....
..................................................
..........................
.............
............4
第章黑盒测试
.............................................
...................................
....
........................................7
第章白盒测试方法
.......
..................................................
.......................
................
..................13
第章软件测试管理及自动化测试基础
.................................................
...............................
....18
第章
WINRUNNER
测试工具
p>
.........................................
.......................................
.................19
第章
LOADRUNNER
测试工具
<
/p>
........................................
........................................
..............21
第章
JUNIT........................................
...................................
....
..............................................23
PDF
文件使用
试用版本创建
第
1
章软件测试概述
1.
简述软件测试的意义。
解:随着计算
机技术的迅速发展和广泛深入的应用,软件质量问题已成为开发和使用软件人
员关注的焦点。而由于软件本身的特性,软件中的错误是不开避免的。不断改进的开发技术
和工具只能减少错误的发生,但是却不可能完全避免错误。因此为了
保证软件质量,必须对
软件进行测试。软件测试是软件开发中
必不可少的环节,是最有效的排除和防治软件缺陷的
手段,是保证软件质量、提高软件可靠性的最重要手段。
2.
什么是软件缺陷?它的表现形式有哪些?
解:
从产品内部看,
软件缺陷是软件产品开发或维护过程中
所存在的错误、
毛病等各种问题;
从外部看,软件缺陷是系统所需实现的某种功能的失效或违背。
软)
2
;<
/p>
(能功的经标明中已未达到产品说明书软件)
1
< br>(:以下几种有表现形式主要的它
当但应虽未指出中未
达到产品说明书软件)
3
;
(的错误会
出现不指明中产品说明书了出现件
难为软件认软件测试人员)
5
范围;
(的指出中产品说明书了超出
能功软件)
4
目标;
(的达到
以理解、不易使用,或者最终用户认为该软件使用效果不良。
3.
简单分析软件缺陷产生的原因,其中那个阶段引入的缺陷最多,修复成本又最低?
p>
解:软件缺陷产生的主要原因有:需求规格说明错误;设计错误;程序代码有误;其他。其<
/p>
中在需求分析阶段引入的缺陷最多,修复的成本又最低。
4.
当用户登录某网站购物完毕并退出后,忽然想查查购物时付账的总金额,于是按了浏览
器左上角的
“退回”按钮,就又回
到了退出前的网页,你认为该购物软件有缺陷吗?如果
有,属于哪一类?
解:有缺陷。其所属类别与软件产品说明书的要求有关。
5.
什么是软件测试?简述其目的与原则。
解:软件测试是为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个
软件开发生命周期,对软件产品(包括阶段性产品)进行验证和确认的活动过程。
测试目的:
(
1
)证明:获取系统在可接受风险范围内可用的信心;尝试
在非正常情况和
条件下的功能和特性;保证一个工作产品是完
整的并且可用或可被集成。
(
2
)检测
:发现
缺陷、
错误和系统不足;
p>
定义系统的能力和局限性;
提供组件、
工作
产品和系统的质量信息。
(
3
)预防:澄清系统的规格和性能;提供预防或减少可能制造错误的信
息;在过程中尽早
检测错误;确认问题和风险,并且提前确认
解决这些问题和风险的途径。
测试过程中应注意和遵循的原则
:
(
1
)测试不是为了证明程序的正确
性,而是为了证明
程序不能工作。
(
2
)测试应当有重点。
(
3
)事先定义好产品的质量标准。
(
4
)软件项目一启
动,软件
测试也就开始,而不是等到程序写完才开始进行测试。
(
5
p>
)穷举测试是不可能的。
(
6
)第三方进行测试会更客观,更有效。
(
7
)软件测试计划是做好软件测试工作的前提
。
1
PDF
文件使用
试用版本创建
(
p>
8
)测试用例是设计出来的,不是写出来的。
(
9
)对发现错误较多的程序段,应进行更深
入的测试。
(
10
)重视文档,妥善保存一切测试过程文档。
6.
件测试阶段是如何划分的?
p>
解:
软件测试的阶段划分为:
规格说明书审
查;
系统和程序设计审查;
单元测试;
集成测试;
确认测试;系统测试;验收测试。
7.
简述软件开发的几个模式,并说
明每种模式对软件测试的影响。
解:大棒模式简单,计划、进
度安排和正规开发过程几乎没有,其开发过程是非工程化的。
大棒模式的软件测试通常在开发任务完成后进行,很难回头修复存在的问题,测试工作只是
向客户报告软件经过测试后发现的情况。
边写边改模式通常最初只有粗略的想法就进行简单的设计,然
后开始较长的反复编写、
测试和修复过程,在认为无法更精细
地描述软件产品要求时就发布产品。该模式下,软件测
试人员将和程序员一起陷入可能是长期的循环往复过程。
瀑布模式将软件生命周期的各项活动规定为按照固定顺序相连
的若干个阶段性工作,
形如瀑布流水,最终得到软件产品。软
件测试在后期展开,使得开发中出现的问题直到开发
后期才显露,失去了及早纠正的机会。
快速原型模式首先构造一个功能简单的原型系统,然后通过对
原型系统逐步求精,不
断扩充完善得到最终的软件系统。原型
系统在扩充完善过程中不断被检查、测试和修改。
螺旋模式是瀑布模式与边写边改模式演化结合的形式,并加入了风险评估所建立的软
件开发模式,
其主要思想是在开始时不必详细定义
所有细节,
而是从小开始,
定义重要功能,
尽量实现,接受客户反馈,进入下一阶段并重复上述过程,直到获得最终产品。测
试在每个
阶段都要进行,并从最初就参与。
8.
简述软件测试过程。
解:软件测试过程主要包括如下
6
个活动:测试计划;测试需求分析;测试设计;测试规程
实现;测试执行;总结生成报告。
9.
“软件测试能够保证软件的质
量”这句话对吗?软件测试和软件质量之间是什么关系?
解:
不对。软件测试是保障软件质量的手段之一,但不是唯一手段。测试是产品高质量的必
要非充分条件,软件测试不能决定软件质量。
10.
判断以下说法是否正确。
p>
(
1
)软件测试和软件调试是同一回事。<
/p>
(
2
)软件测
试是可以无穷尽的。
(
3
)测试是为了证明软件的正确性。
(
4
)测试过程中应重视测试的执行,可以轻视测试的设计。
(
5
)测试不能修复所有的
软件故障。
(
6
)因为测试工作简单,对软件产品影响不大,所以可以把测试作为新员工的一个过渡工
作,或安排不合格的开发人员做测试。
2
PDF
文件使用
试用版本创建
。正确
)
5
(错误,
)
6
)
(
4
)
(
<
/p>
3
)
(
2
)
(
1
(解:
11.
简述软件
开发进程与测试进程的关系。
解:软件测试是一个贯穿软件开
发生命周期的活动,它可以是一个与开发并行的过程,也可
以是在开发完成某个阶段任务之后的活动。
3
PDF
文件使用
试用版本创建
第
2
章软件测试方法与过程
1
.对软
件测试的复杂性进行归纳分析。
解:软件测试的复杂性在于:
无法对程序进行完全的测试;测试无法保证被测程序中无遗留
错误;不能修复所有的软件故障。
2
.分别解释什么是静态测试、动态
测试、黑盒测试、白盒测试、人工测试和自动化测试。
解:所
谓静态测试是指不运行被测软件,仅通过分析或检查等其他手段达到检测的目的。
所谓动态测试是指通过运行被测软件,检查运行结果与预期结
果的差异,并分析运行效
率和健壮性等性能。
黑盒测试是指在对程序进行的功能抽象的基础上,将程序划分成功能单元,然后对每个
功能单元生成测试数据进行测试。用这种方法进行测试时,被测程序被当作打
不开的黑盒,
因而无法了解其内部构造,因此又称为功能测试。
白盒测试又称为结构测试或逻辑驱动测试,它是知道产品内部
工作过程,可通过测试来
检测产品内部动作是否按照规格说明
书的规定正常进行,按照程序内部的结构测试程序,检
验程序
中的每条通路是否都有能按预定要求正确工作,而不顾它的功能。
广义上,人工测试是人为测试和手工测试的统称。人为测试的
主要方法有桌前检查,代
码审查和走查。手工测试指的是在测
试过程中,按测试计划一步一步执行程序,得出测试结
果并进行分析的测试行为。
自动化测试指的是利用测试工具来执行测试,并进行测试结果分析的测试行为。
3
< br>.如果没有软件规格说明或需求文档,可以进行动态黑盒测试吗?为什么?
解:不行。因为黑盒测试是基于软件规格说明的测试。
4
.在单
元测试中,所谓单元是如何划分的?
解:单元测试的对象通常
是软件设计的最小逻辑单元,单元的划分在面向过程的结构化程序
中一般是函数或子过程,在面向对象的程序中可以是类或类的成员函数。
5
.简述单元测试的主要任务。
p>
解:
单元测试的主要任务是:
模块接口测试
;
局部数据结构测试;
路径测试;
错误
处理测试;
边界测试。
6
.如果
开发时间紧迫,是否可以跳过单元测试而直接进行集成测试?为什么?
解:不可以。因为没有经过单元测试的模块会遗留大量的缺陷到集成测试阶段,而在集成测
试阶段对这些缺陷定位困难,导致后续工作展开困难,修复缺陷成本成指数
级增长。
7
.什么是驱动模块和桩模块?为下面的函数构造一个驱动模块。
< br>
int divide(int a, int b)
4
PDF
文件使用
试用版本创建
{
int c;
if (b==0)
{printf(
除数不能为
0
c=a/b;
return c;
}
解:驱动模块是用以模拟被测模块的上级模块,它接收测试数
据,传送数据给被测模块,启
动被测模块,最后输出实测结果。
桩模块用以模拟被测模块工作过程中所调用的子模块。
函数驱动模块:
void main( )
{
int x,y,z;
scan
f(
“
%d%d
”
,&x,&y);
z=divide(x,y);
printf(
“
< br>%d
”
,z);
}
8
.
什么是回归测试?什么时候进行回归测试?
解:回归测试就是
重新运行现有测试用例测试原有功能,以便确定变更是否达到了预期的目
的,检查变更是否损害了原有的正常功能。每当软件发生变化时就应进行回归测试。
< br>
9
.集成测试有哪些不同的集成方法?简述不同方法的特点。
解:集成测试通常有一次性集成、自顶向下集成、自底向上集成和混合集成
4
种集成方法。
一次性集成方法需要的测试用例数目少,测试方法简单、易行
。但是由于不可避免存在
模块间接口、全局数据结构等方面的
问题,所以一次运行成功的可能性不大;如果一次集成
的模块
数量多,集成测试后可能会出现大量的错误,给程序的错误定位与修改带来很大的麻
烦;即使集成测试通过,也会遗漏很多错误进入系统测试。
自顶向下集成在测试的过程中,可以较早地验证主要的控制和
判断点;一般不需要驱动
程序,
减少
了测试驱动程序开发和维护的费用;
可以和开发设计工作一起并行执行集成测试,
能够灵活的适应目标环境;容易进行故障隔离和错误定位。但是在测
试时需要为每个模块的
下层模块提供桩模块,桩模块的开发和
维护费用大;桩模块不能反映真实情况,重要数据不
能及时回送到上层模块,导致测试不充分;涉及复杂算法和真正
I/O
的底层模块最易出问题,
在后期才遇到导致过多的回归测试。
自底向上集成可以尽早的验证底层模块的行为;提高了测试效率;一般不需要桩模块;<
/p>
容易对错误进行定位。但是直到最后一个模块加进去之后才能看
到整个系统的框架;驱动模
块的设计工作量大;不能及时发现高层模块设计上的错误。
混合集成具有自顶向下和自底向上两种集成策略的优点,但是
在被集成之前,中间层不
能尽早得到充分的测试。
10
.系统测试主要包括哪些内容?
解:
系统测试主要包括强度测试、
性能
测试、
恢复测试、
安全测试、
可靠性测
试、
安装测试、
5
PDF
文件使用
试用版本创建
容量测试和文档测试。
11
.验收测试是由谁完成的?通常
包含哪些过程?
解:验收测试是以用户为主的测试,软件开发人员和
QA
(质量保证)人员也应参加。通常
包含
α
测试和
β
测试过程。
12
.分
析比较面向对象的软件测试与传统的软件测试的异同。
解:传
统的单元测试的对象是软件设计的最小单位——模块。当考虑面向对象软件时,单元
<
/p>
的概念发生了变化,此时最小的可测试单位是封装的类或对象,而不再是个体的模块。传统
单元测试主要关注模块的算法实现和模块接口间数据的传递,
而面向对象的单元测试主要考
察封装在一个类中的方法和类的状态行为。
面向对象软件没有层次的控制结构,因此传统的自顶向下和自
底向上集成策略就不再适
合,它主要有以下两种集成策略:基
于类间协作关系的横向测试;基于类间继承关系的纵
向测试。
系统测试一般不考虑内部结构和中间结果,因此面向对象软件系统测试与传统的系统测
试差别不大。
面向对象软件测试的整体目标和传统软件测试的目标是一致的,即以最小的工作量发现
尽可能多的错误,但是面向对象测试的策略和战术有很大不同。测试的视角扩大到包
括复审
分析和设计模型,此外,测试的焦点从过程构件
(
模块
)
移向了类。
6
PDF
文件使用
试用版本创建
第
3
章黑盒测试
1
.分析黑盒测试方法的特点。
p>
解:黑盒测试又称为功能测试或数据驱动测试,主要针对软件界面、软件功能、外部数据库<
/p>
访问以及软件初始化等方面进行测试。
优点:
1
)比较简单,不需要了解程序
内部的代码及实现;
2
)与软件的内部实现无关;
3
)
从用户角度出发,能
很容易的知道用户会用到哪些功能,会遇到哪些问题;
4
)基于
软件开
发文档,所以也能知道软件实现了文档中的哪些功能;
5
)在做软件自动化测试时较为方便。
缺点:
1
)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的
< br>30%
;
2
)自动
化测试的复用性较低。
2
.健壮
等价类测试与标准等价类测试的主要区别是什么?
解:主要区
别在于健壮等价类测试在标准等价类的基础上还要进行有效取值范围之外的输入
(无效输入)的测试。
3
.试用等价分类法测试党政管理系
统中党员出生年月的输入设计是否符合要求,假设出生
年月格式为
yyyymmdd
。
解:
输入数据无效等价类有效等价类
出生年月日
①
8
位数字字符
②有非数字字符
③少于
8
个数字符
④多于
8
个数字符
对应数值
⑤在
1909
之间
⑥
<19090101
⑦
>19900101
月份对应数值
⑧在
1-12
之间
⑨等于
⑩
>12
日期对应值
○○
111,3,5,7,8,10,12
月在
1-31
之间
<
/p>
15
等于
12<
/p>
○
4,6,9,11
月在
1-30
之间
○
16>31
13
○闰年
2
月在
1-29
之间
○
172
,4,6,9,11
月等于
14
○非闰年
2
月在
1-28
之间
○
182
月等于
○
19
非闰年
2
月等于
<
/p>
4
.找零钱最佳组合:假设商店货品价格
(R)
皆不大于
100
元(且为整数)
,若顾客付款在
100
元内
(P)
< br>,求找给顾客之最少货币个(张)数?(货币面值
5
0
元
(N50)
,
10
元
(N10)
,
5
元
(N5)
,
1
元
(N1)
四种。试根据边界值法设计测试用例。
解:
1
)分析输入的边界情况:
/
R>100 0
P>100
R<=P<=100 P
2
)分析零钱最佳组合的输出情况:
7
PDF
文件使用
试用版本创建
N50=1 N50=0
4>N10>= 1 N10 =
0
N5=1 N5=0
4>N1>=1 N1=0
3
)分析规格中每一决策点之情形,以
RR1,RR2,RR3
表示计算要找
50,10,5
元货币数时
的剩余金额。
R>100
R<=0
P>100 P
RR1>=50
RR2>=10 RR3>=5
4
)根据上述的输入
/
输出条件组合
出可能的情况:
R > 100
R <= 0
0 < R <= 100, P >
100
0 < R <= 100, P < R
0
< R <= 100, R <= P <= 100, RR = 50
0 <
R <= 100, R <= P <= 100, RR = 49
0 < R
<= 100, R <= P <= 100, RR = 10
0 < R
<= 100, R <= P <= 100, RR = 9
0 < R <=
100, R <= P <= 100, RR = 5
0 < R <=
100, R <= P <= 100, RR = 4
0 < R <=
100, R <= P <= 100, RR = 1
0 < R <=
100, R <= P <= 100, RR = 0
5
)为满足以上各种情形,测试用例
设计如下:
测试用例货品价格
R
付款金额
P
test1 101 -
test2 0 -
test3 -1 -
test4 100 101
test5 100 99
test6 50 100
test7 51 100
test8 90 100
test9 91 100
test10 95 100
test11 96 100
test12 99 100
test13 100
100
5
.试为三角形问题中的
直角三角形开发一个决策表和相应的测试用例。注意,会有等腰直
角三角形。
解:判断构成的是否为直角三角形的问题的决策表设计如下:
c1:a
种可能的结果都应该至少执行一次。判定条件覆盖比语句覆盖强,但是对程
序逻辑的覆盖程
度仍然不高。
条件覆盖的含义是,使判定表达式中的每个条件都取到各种可
能的结果。条件覆盖通常
比判定覆盖强,但是也可能有相反的
情况:虽然每个条件都取到了两个不同的结果,判定表
达式却始终只取一个值。
判定
/
条件覆盖的含义是,选取足够多的测试数
据,使得判定表达式中的每个条件都取
到各种可能的值,而且
每个判定表达式也都取到各种可能的结果。但有时判定
/
条件覆
盖也
并不比条件覆盖更强。
条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够的测试
数据,使得每个判定表达
式中条件的各种可能组合都至少出现
一次。满足条件组合覆盖标准的测试数据,也一定满足
判定覆
盖、条件覆盖和判定
/
条件覆盖标准。因此,条件组合覆盖是前
述几种覆盖标准中最
强的。
但是,<
/p>
满足条件组合覆盖标准的测试数据并不一定能使程序中的每一条路径都执行到。
路径覆盖的定义是选取足够多测试数据,使程
序的每一条可能路径都至少执行一次。但
在实际问题中,一个
不太复杂的程序,其路径数都可能是一个庞大的数字,以致要在测试中
覆盖所有的路径是不可能实现的。即使对于路径数有限的程序做到了路径覆盖,也不能保证
被测程序的正确性。
3
.对图所示程序段进行语句覆盖、
判定覆盖、条件覆盖、判定
/
条件覆盖、条件组合覆盖和
路径覆盖方法进行测试用例设计。
13
PDF
文件使用
试用版本创建
图
4.14
练习题
3
解:语句覆盖:
x=90,y=90
x=79,y=90
x=70,y=60
判定覆盖:同上
条件覆盖:同上
判定
/
条件覆盖:同上
条件组合覆盖:错误!未找到引用源。
x>=80,y>=80
错误!未找到引用源。
x>=80,y<80
错误!未找到引用源。
x<80,y>=80
错误!未找到引用源。
x<80,y<80
错误!未找到引用源。
x>=90,y>=90,x+y>=140
错误!未找到引用源。
x>=90,y<90,x+y>=140
错误!未找到引用源。
x<90,y>=90,x+y>=140
错误!未找到引用源。
x<90,y<90,x+y>=140
错误!未找到引用源。
x>=90
,y>=90,x+y<140
不存在
错误!未找到引用源。
x>=90,y<90,x+y<140
错误!未找到引用源。
x<90,y>=90,x+y<140
错误!未找到引用源。
x<90,y<90,x+y<140
x=90,y=90
x=90,y=70
x=70,y=90
x=70,y=70
x=100,y=30
x=30,y=100
x=80,y=50
路径覆盖:同语句覆盖
4
.请下述语句按照各种覆盖方法设
计测试用例。
if (a>2 && b<3 &&
(c>4 || d<5))
14
PDF
文件使用
试用版本创建
{
statement;
}
else
{
statement;
}
解:语句覆盖:
a=3,b=2,c=5,d=5
a=2,b=2,c=5,d=5
判定覆盖:同上
条件覆盖:
a=3,b=2,c=5,d=5
a=2,b=4,c=3,d=4
判定
条件覆盖:同条件覆盖
条件组合覆盖:错误!未找到引用源。
a>2,b<3,c>4,d<5
错误!未找到引用源。
a>2,b<3,c>4,d>=5
错误!未找到引用源。
a>2,b<3,c<=4,d<5
错误!未找到引用源。
a>2,b<3,c<=4,d>=5
错误!未找到引用源。
a>2,b>=3,c>4,d<5
错误!未找到引用源。
a>2,b>=3, c>4,d>=5
错误!未找到引用源。
a>2,b>=3, c<=4,d<5
错误!未找到引用源。
a>2,b>=3, c<=4,d>=5
错误!未找到引用源。
a<=2,b<3,c>4,d<5
错误!未找到引用源。
a<=2,
b<3,c>4,d>=5
错误!未找到引用源。
a<=2, b<3,c<=4,d<5
错误!未找到引用源。
a<=2,
b<3,c<=4,d>=5
错误!未找到引用源。
a<=2, b>=3,c>4,d<5 -
-