软件测试习题(更新ing)

软件测试复习

软件测试复习题

软件测试复习

判断题

1a、软件测试的目的仅仅是尽可能多的找出软件中的缺陷( )

1b、没有检测出错误的测试用例是低质量的测试用例( )

2、自适应随机测试的错误检测效率高于随机测试( )

3a、回归测试是由最终用户来实施的( )

3b、回归测试中,必须运行前次测试中的所有测试用例( )

4、需求规格说明书确定后,软件实现的额外功能越多越好( )

5a、大多数软件缺陷是在程序编码阶段导致的( )

5b、编码开始前的活动不会导致软件缺陷( )

5c、大多数软件缺陷是在需求分析阶段导致的( )

6a、白盒测试中,满足判定覆盖标准的测试用例集,其错误检测能力强于满足条件覆盖标准的测试用例集( )

6b、白盒测试中,满足判定覆盖标准的测试用例集,其对逻辑表达式的覆盖能力强于满足条件覆盖标准的测试用例集( )

7a、自底向上集成需要测试员编写驱动模块( )

7b、自底向上集成需要测试员编写桩模块( )

7c、自顶向下集成需要测试员编写驱动模块( )

7d、自顶向下集成需要测试员编写桩模块( )

8、负载测试是验证要检验的系统的能力最高能达到什么程度( )

9、测试人员要坚持原则,缺陷未修复完坚决不予通过( )

10、发现错误多的模块,残留在模块中的错误也多( )

11a、编码完成之前测试人员不需要提交任何工作( )

11b、编码完成之前测试人员不需要开展任何工作( )

12a、软件测试只能发现错误,但不能保证测试后的软件没有错误( )

12b、测试计划中指定的所有测试用例运行均通过,说明软件没有错误( )

12c、软件项目进入需求分析阶段,测试人员就应该开始介入其中( )

13、在设计测试用例时,应包括合理的输入和不合理的输入( )

14、在进行软件测试时,只要故障代码在执行某条测试用例时被覆盖,则该测试用例的运行结果就一定是失败( )

15a、白盒测试中,可以通过大量设计测试用例的方式,使得这些测试用例的语句覆盖率达到100%( )

15b、白盒测试中,满足条件组合覆盖的测试用例集,一定能保证判定语句取真取假的情况出现至少各一次( )

16、决策表中条件的数量为n,则最终决策表中规则的数量一定是2n2^n( )

17、自适应随机测试的错误检测效率高于随机测试( )

选择题

1a、系统测试通常使用_______技术,主要测试被测应用的高级互操作性需求,而无需考虑被测试应用的内部结构。

1b、单元测试的主要测试技术不包括( )
A、白盒测试 B、压力测试
C、静态测试 D、结构化测试

2、软件生命周期中所花费用最多的阶段是______

3、软件确认测试合格通过的准则是___________________

4a、根据用户在软件使用过程中提出的建设性意见而进行的维护活动称为_______

5、下列关于Alpha测试时的描述中正确的是__
A、Alpha测试是集成测试的一种 B、Alpha测试不需要用户代表参加
C、Alpha测试不需要测试人员参加 D、Alpha测试需要用户代表参加

6a、关于软件测试目的的描述,以下哪些是正确的( )
A、评价软件的质量 B、更正软件的错误
C、找出软件中的所有错误 D、证明软件是正确的

6b、关于软件测试目的的描述,以下哪些是错误的( )
A、评价软件的质量 B、更正软件的错误
C、找出软件中的所有错误 D、证明软件是正确的

7a、下列方法中,不属于黑盒测试的是( )
A、基本路径测试法 B、等价类测试法
C、边界值分析法 D、基于场景的测试方法

7b、以下不属于白盒测试的技术的是( )
A、逻辑覆盖 B、基本路径测试
C、循环覆盖测试 D、等价类划分

8a、使用白盒测试方法时,确定测试数据应根据( )和指定的覆盖标准。
A、使用说明书 B、程序的代码及结构
C、需求说明书 D、程序的功能

8b、使用黑盒测试方法时,确定测试数据应根据( )和指定的覆盖标准。
A、程序的内部逻辑 B、程序的复杂结构
C、程序的源代码 D、程序的功能

9、测试结束的标准可能包括( )
A、运行完指定的所有测试用例 B、覆盖率达到给定的标准
C、检测到所有的错误 D、时间及其他资源耗尽

10a、如果一个判定中的谓词为(A>1)or(B<=3),则为了达到100%的条件覆盖率,至少需要设计__个测试用例

10b、如果一个判定中的谓词为(A>1)or(B<=3),则为了达到100%的判定条件覆盖率,至少需要设计__个测试用例

10c、如果一个判定中的谓词为(A>1)or(B<=3),则为了达到100%的条件组合覆盖率,至少需要设计__个测试用例

简答题

一、在列出等价类表后确定测试用例的具体步骤
(1)首先为等价类表中的每一个等价类分别规定一个唯一的编号
(2)设计一个新的测试用例,使它能够尽量覆盖尚未覆盖的有效等价类,重复这个步骤,直到所有的有效等价类均被测试用例所覆盖
(3)设计一个新的测试用例,使它仅覆盖一个尚未覆盖的无效等价类,重复这一步骤,直到所有的无效等价类均被测试用例所覆盖

二、为什么使用自适应随机测试
自适应随机测试(Adaptive Random Testing,ART)是一种增强的随机测试,比随机测试更有效。自适应随机测试(Adaptive Random Testing)是一种更加平滑的测试用例生成技术。在给定的测试用例集中,随机选取第一个测试用例,并从集合中删除。

三、自适应随机测试(Adaptive Random Testing)相对于随机测试(Random Testing)具有什么优势?
自适应随机测试的检查错误的效率高于随机测试。自适应随机测试吸取随机测试的优点,并在选取测试用例时按照一定的规则,保证测试用例均匀分布在整个解空间中,提升其检测出错误的能力。

四、为什么使用边界值分析法?
无数的测试实践表明,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在其内部,因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。

五、怎样用边界值分析法设计测试用例?
(1)首先确定边界情况,通常输入或输出等价类的边界就是应该着重测试的边界情况
(2)选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值

六、白盒测试中什么是判定/条件覆盖?它与判定覆盖和条件覆盖的关系?
设计足够多的测试用例,使得程序中每个判定包含的每个条件的所有情况(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次
——满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖

七、采用因果图法设计测试用例的步骤
(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图
(2)将得到的因果图转换为判定表
(3)为判定表中每一列所表示的情况设计一个测试用例

八、使用因果图法的优点
(1)考虑到了输入情况的各种组合以及各个输入情况之间的相互制约关系
(2)能够帮助测试人员按照一定的步骤,高效率的开发测试用例
(3)因果图法是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明存在的不完整性和二义性

九、构造决策表的五个步骤
(1)确定规则的个数(有n个条件的决策表有2n个规则(每个条件取真、假值))
(2)列出所有的条件桩和动作桩
(3)填入条件项
(4)填入动作项,得到初始决策表
(5)简化决策表,合并相似规则

十、 适用于使用决策表设计测试用例的条件:
规格说明以决策表形式给出,或较容易转换为决策表
条件的排列顺序不会也不应影响执行的操作
规则的排列顺序不会也不应影响执行的操作
当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要

十一、简述负载测试、压力测试、性能测试的联系与区别
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时系统各指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

十二、软件测试的自动化包含哪些内容?为什么要使用自动化测试?
标识、设计、建立、执行、比较
可以执行一些手工测试困难或者难以完成的测试,例如并发测试;更好的利用资源,可以利用整晚或周末空闲机器时间进行测试;通过较少的可以获得更彻底的测试,以及提高产品的质量

十三、假设程序中存在一行错误的代码,根据PIE模型,测试用例运行‘失败’需要满足哪些条件,请给出一个简单的例子,测试用例覆盖错误代码,但测试用例运行结果‘通过’。
(1)执行/可达性:必须包含程序中包含故障的位置
(2)感染:程序的状态必须是不正确的
(3)传播:受感染的状态必须传播导致一些输出的程序是不正确的
例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
public static void CSta(int []numbers)
{
int length = numbers.length;
double mean, sum;
sum = 0.0;
for(int i = 1; i<length; i++)//i=0
{
sum += numbers[i];
}
mean = sum / (double) length;
System.out.println("mean: " + mean);
}
Test Input:[0,4,5] sum=0+4+5 sum=4+5 mean=3 mean=3

十四、假设存在两个串行循环,且两者的循环无约束关系,如何进行测试?逻辑覆盖测试(循环测试)
(1)如果串行循环的循环体是彼此之间独立的话,可以使用简单循环的测试方法
循环变量的初值是否正确
循环变量的最大值是否正确
何时退出循环,循环变量的增量是否正确
(2)两个循环串接起来,则考虑使用嵌套循环:
当外循环变量为最小值,内层循环也为最小值时,运算结果
当外循环变量为最小值,内层循环也为最大值时,运算结果
当外循环变量为最大值,内层循环也为最小值时,运算结果
当外循环变量为最大值,内层循环也为最大值时,运算结果
循环变量的增量是否正确
何时退出内循环
何时退出外循环

十五、为什么需要进行组合测试?
输入输出测试、配置测试、兼容性测试等因素间的存在复杂关系,不容易简单测试,而组合测试能够在保证错误检出率的前提下采用较少的测试用例测试系统。

十六、用等价类划分法设计下面的测试用例
输入三个整数a、b、c,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形,等腰三角形,一般三角形(特殊的还有直角三角形),以及构不成三角形
现在要求输入三个整数a,b,c,必须满足以下条件
条件1: 1≤a≤100 条件4: a<b+c
条件2: 1≤b≤100 条件5: b<a+c
条件3: 1≤c≤100 条件6: c<a+b
如果输入值a、b、c不满足条件1、条件2和条件3,程序会给出“非法输入”的信息,如果输入值a、b、c满足条件1、条件2和条件3,则输入下列四种情况之一:
(1)如果不满足条件4、条件5和条件6中的一个,则程序输出为“非三角形”。
(2)如果三条边相等,则程序输出为”等边三角形“。
(3)如果恰好有两条边相等,则程序输出为”等腰三角形“。
(4)如果三条边都不相等,则程序输出为“一般三角形”。
要求:
(1)分析程序的规格说明,列出等价类表(有效等价类、无效等价类);
(2)设计若干条测试用用例以覆盖所有等价类。

十七、c语言中的字符串拷贝函数声明如下:
extern char *strcpy(char *dest, const char *src)
头文件: #include <string.h>
功能: 把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间
说明: 指针src和dest所指内存不重叠,dest有足够的空间,返回指向dest的指针
请:(1)尝试给出函数的实现;(2)针对该函数的功能编写测试用例;(3)将这些测试用例用gTest(或CppUnit、或JUnit)测试代码的形式给出。

1
char* strcpy(char* Dest, const char* Src)     {       assert((Dest != NULL)&&(Src != NULL));       if(Dest == Src)return Dest;        char* tempStr = Dest;      while((*(Dest++) = *(Src++)) != '/0')            NULL;                                              return tempStr;                          }void main(){ clrscr();Char* strDest,*strSrc,*str;strDest="ABCD";strSrc="EFG";str = strcpy(strDest, strSrc);Printf("%s",str);}输出:EFG

未完待续、、、