1.什么是模块测试和集成测试?它们各有什么特点?
1)模块测试:
指把每个模块作为一个单独的实体来测试。目的是发现模块内部可能存在的差错,保证每个模块作为一个单元能正确运行,所以又称单元测试。对多个模块的测试可以并发进行。在这个测试步骤中所发现的往往是编码和详细设计的错误。
2)集成测试:
是测试和组装软件的系统化技术,包括子系统测试和系统测试。子系统测试着重测试模块接口以保证协调与通信;系统测试除发现设计和编码的错误,还应验证系统确实能提供需求说明书中指定的功能,且系统的动态特性也符合预定要求,因此在这个测试步骤中发现的往往是软件设计中的错误,也可能发现需求说明中的错误。
2.什么是黑盒测试?黑盒测试主要采用的技术有哪些?
1)主要检测软件的每一个功能是否能够正常使用,又称功能测试。不考虑程序内部结构和特性的基础上通过程序接口进行测试,检查程序功能是否按照设计需求以及说明书的规定能够正常打开使用。主要用于测试过程的后期。
2)主要采用等价划分、边界值分析、错误推测设计测试方案。
·等价划分
使用该方法首先需要划分输入数据的等价类,为此需要研究程序的功能说明,从而确定输入数据的有效等价类和无效等价类。而后主要使用以下两个步骤:设计一个新的测试方案以尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止;设计一个新的测试方案,使它覆盖且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止。
·边界值划分
使用该方法首先应确定边界情况,通常应着重测试输入等价类和输出等价类的边界。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值。通常总是与等价划分联合使用。
·错误推测
基本想法是列举出程序中可能有的错误和易发生错误的特殊情况,并根据它们选择测试方案。很大程度上靠直觉和经验进行,还应仔细分析规格说明书,注意找出遗漏或省略部分,以便设计相应的测试方案,检测程序员对这些部分的处理是否正确。
3.什么是白盒测试?白盒测试主要采用的技术有哪些?
1)主要检测软件编码过程中的错误,又称结构测试。软件程序被看作是一个打开的盒子,盒子里有测试软件的源程序,还能够分析盒子内部结构,所以能够全面地测试程序代码结构。在测试过程的早期阶段进行。
2)主要采用逻辑覆盖和控制结构测试设计测试用例。
·逻辑覆盖
是对一系列测试过程的总称,这组测试过程逐渐进行越来越完整的通路测试。测试数据执行程序逻辑的程度从覆盖源程序语句的详尽程度分析,发现错误能力从弱到强大致有以下不同标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。
·控制结构测试
以环形复杂度为基础,导出基本可执行路径集合,以设计测试用例的方法,是根据程序的控制结构设计测试数据的技术。测试用例要保证程序的每个可执行语句至少执行一次。常用的有:基本路径测试、条件测试、循环测试。
4.某程序规定,输入三个整数作为三角形的边长。当三角形为等边三角形、等腰三角形、一般三角形时,给出三角形类型并计算其面积。请用等价类划分法设计该程序的测试用例。
分析已知可得:
输入条件 |
三个数均大于零(正数) |
输出条件 |
一般三角形 |
等腰三角形 |
三个数均为整数 |
等边三角形 |
列出等价类并编号:
有效等价类 |
三边均为正数 |
1 |
三边均为整数 |
2 |
任意两边之和大于第三边 |
3 |
任意两边之和大于第三边且存在两边相等 |
4 |
任意两边之和大于第三边且三边相等 |
5 |
无效等价类 |
有一边不大于零 |
6 |
有两边不大于零 |
7 |
三边均不大于零 |
8 |
有一边不为整数 |
9 |
有两边不为整数 |
10 |
三边均不为整数 |
11 |
存在两边之和等于第三边 |
12 |
存在两边之和小于第三边 |
13 |
测试用例:
|
测试用例 |
覆盖等价类号码 |
预期输出 |
覆盖有效等价类 |
3 |
4 |
5 |
1、2、3 |
一般三角形 S=6 |
5 |
5 |
6 |
1、2、3、4 |
等腰三角形 S=12 |
3 |
3 |
3 |
1、2、3、4、5 |
等边三角形 S=3.9 |
覆盖无效等价类 |
-1 |
4 |
5 |
6 |
非法输入 |
-1 |
0 |
5 |
7 |
非法输入 |
-1 |
0 |
-2 |
8 |
非法输入 |
0.3 |
4 |
5 |
9 |
非法输入 |
0.3 |
0.4 |
5 |
10 |
非法输入 |
0.3 |
0.4 |
0.5 |
11 |
非法输入 |
3 |
4 |
7 |
12 |
非法输入 |
3 |
4 |
8 |
13 |
非法输入 |
5.基本路径测试。
void Func(int nPosX, int nPosY) {
while (nPosX > 0) {
int nSum = nPosX + nPosY;
if (nSum > 1) {
nPosX--;
nPosY--;
}
else {
if (nSum < -1)
nPosX -= 2;
else
nPosX -= 4;
}
} // end of while
}
用例编号 |
路径 |
输入数据 |
预期结果 |
1 |
1-11 |
nPosX = -3 nPosY = 2 |
nPosX = -3 nPosY = 2 |
2 |
1-2-3-6-7-9-10-1-11 |
nPosX = 1 nPosY = -3 |
nPosX = -1 nPosY = -3 |
3 |
1-2-3-6-8-9-10-1-11 |
nPosX = 3 nPosY = -3 |
nPosX = -1 nPosY = -3 |
4 |
1-2-3-4-5-10-1-11 |
nPosX = 3 nPosY = -1 |
nPosX = -2 nPosY = -2 |
6.回答下列问题。
1)什么是模块测试和集成测试?它们各有什么特点?
2)假设有一个由1000行FORTRAN语句构成的程序(经编译后大约有5000条机器指令),估计在对它进行测试期间将发生多少个错误?为什么?
3)设计下列伪码程序的语句覆盖和路径覆盖测试用例:
START
INPUT (A, B, C)
IF A> 5
THEN X = 10
ELSE X = 1
END IF
IF B > 10
THEN Y = 20
ELSE Y = 2
END IF
IF C > 15
THEN Z = 30
ELSE Z = 3
END IF
PRINT (X, Y, Z)
STOP
2)根据美国的一些统计数字可以推知每1000条指令中大约有5~20个错误,所以本题设程序约有25~100个错误。
3)由题可画出如下流程图:
在本题中语句覆盖和路径覆盖可使用相同用例:
用例编号 |
输入数据 |
预期输出 |
1 |
A = 10 B = 15 C = 20 |
X = 10 Y = 20 Z = 30 |
2 |
A = 1 B = 2 C = 3 |
X = 1 Y = 2 Z = 3 |
7.某图书馆有一个使用CRT终端的信息检索系统,该系统有下列4各基本检索命令:
名称 |
语法 |
操作 |
BROWSE (浏览) |
b(关键字) |
系统搜索给出的关键字,找出字母排序与此关键字相近的字。然后在屏幕上显示约20个加了行号的字,与给出的关键字完全相同的字约在中央 |
SELECT (选取) |
s(屏幕上的行号) |
系统创建一个文件保存含有由行号指定的关键字的全部图书的索引,这些索引都有编号(第一个索引编号为1,第二个为2……以此类推) |
DISPLAY (显示) |
d(索引号) |
系统在屏幕上显示与给定的索引号有关的信息,这些信息与通常在图书馆的目录卡片上给出的信息相同。这条命令接在BROWSE/SELECT或FIND命令后面用,以显示文件中的索引信息 |
FIND (查找) |
f(作者姓名) |
系统搜索指定的作者姓名,并在屏幕上显示该作者的著作的索引号,同时把这些索引存入文件 |
要求:
1)设计测试数据以全面测试系统的正常操作;
2)设计测试数据以测试系统的非正常操作。
1)正常操作
编号 |
输入 |
预期输出 |
1 |
b(海) |
约20个加了行号的字,“海”约在中央 |
2 |
b(海)s(3) |
创建“海”浏览结果第三行相应索引文件 |
3 |
b(海)s(3)d(7) |
显示“海”浏览结果第三行索引号为7的图书信息 |
4 |
f(Hemingway) |
显示Hemingway著作及索引号 |
5 |
f(Hemingway)d(1) |
显示Hemingway著作索引号为1的图书信息 |
2)非正常操作
编号 |
输入 |
预期输出 |
6 |
b() |
输入为空,请重新输入 |
7 |
s() |
8 |
d() |
9 |
f() |
10 |
s(3) |
未指定关键字,请先执行BROWSE |
11 |
d(7) |
未指定索引目录,请先执行BROWSE/SELECT或FIND |
12 |
b(海)s(1000) |
非法输入,请重新输入合法数字 |
13 |
b(海)s(3)d(1000) |
14 |
f(Hemingway)d(1000) |
15 |
b(海)s(v) |
16 |
b(海)s(3)d(v) |
17 |
f(Hemingway)d(v) |
初学者手写作业,对问题叙述较为简单浅显,仅作为学习过程记录。
欢迎指正与讨论!