软件测试期末考试含答案
A、指针值B、引用的地址C、指针指向的数据类型的值D、NULL
二、多项选择(每空2分,共18分)
1、底层模拟能很好的解决(BCF)。
A、集成测试问题B、装代码和数据失真C、测试不可控
D、性能测试问题E、内部输出的模拟
F、模拟参数为复杂数据类型,单元测试时难以初始化
2、底层模拟器能够模拟(ABCEH)。
E、语句覆盖:100%分支覆盖:95%路径覆盖:15%
6、在利用VU单元测试(ac//a)的过程中,可能会出现"语句:95%,分支:100%,路径:15%"的情况。
A、_01_pow()B、_11_Mcdc1()C、_12_Mcdc2()
三、判断题(每空2分,共12分)
注:正确的打钩,错误的打叉,并说明错误原因
1、一个测试用例只允许有一个底层模拟,而一个函数可以有多个底层模拟。(T)
错误原因:
2、底层模拟器可用于控制测试。(T)
错误原因:
3、底层模拟器模拟的内部输入能够实现用例数据的表格化。(T)
错误原因:
4、包含有空指针的测试用例能够实现用例数据的表格化。(F)
错误原因:空指针会被认为没有输入买自动设置为null,所以不能表格化
next = *pSrc;
if(next=='/'){
cmmMul = false;
*pSrc++;//忽略后面的/
}
}
ch = *pSrc++;
}
}
}
Name
Case1
Case2
Case3
pSrc
"int a;//comment\n"
"int a:/*comment*/\n"
"int /*Comment*/a;//comment\n"
3、简述C/Dc和Mc/Dc的定义。
C/DC:条件/判定覆盖:判断中每个条件的所有可能取值至少执行一次,同时每个判断本身所有可能结果也至少执行一次。
MC/DC:修正的条件/判定覆盖,是一种软件结构覆盖率的测试准则。
修正条件判定覆盖要求:单元的入口和出口必须被调用一次,程序中判断的每一个分支必须至少被执行一次。对于程序中通过逻辑运算组成判断的基本布尔条件,每个条件必须取遍所有可能的值,且每一个条件对判断的结果具有独立的作用。
}
ch = *pSrc++;
}else if(cmmSin){//单行注释
if(ch=='\n'){//单行注释结束
cmmSin = false;
*pDes++ = ch;//\n是不能丢的
}
ch = *pSrc++;
}else if(cmmMul){//多行注释
if(ch=='*'){//开始多行注释
**掌握理论和实际情况下白盒覆盖准则相互间包含的关系,如下
第六个成员函数
源代码
白盒覆盖率信息:均为100%
测试用例
4、分别设计出最少数量的测试用例,构成两套测试用例集,使CMyClass2的成员函数_11_Mcdc1(BOOL,BOOL,BOOL)被100%C/DC和Mc/Dc,
_12_Mcdc2(BOOL,BOOL,BOOL,BOOL,BOOL,BOOL,BOOL,BOOL,BOOL,BOOL,BOOL)被100%C/DC,
名称:CMyClass2::_07_DeleteComment
功能:删除C++代码中的注释
参数:pSrc:源代码
pDes:保存删除注释后的代码
返回:无*/
void CMyClass2::_07_DeleteComment(char * pSrc,char * pDes){
int len = strlen(pStr);
if(len == 0)
return;
bool cmmSin = false;//由//开始\n结束的单行注释
bool cmmMul = false;//由/*开始*/结束的多行注释
char ch = *pSrc++;
char next = 0;
while(ch){
if(!cmmSin && (cmmMul)){//非注释
A、深绿色B、深红色C、浅蓝色D、粉红色E、浅绿色
3、VU导出的测试报告文件格式为:(C),表格化测试用例数据导出的文件格式为:(E)
A、*.pdfB、*.txtC、*.htmD、*.csvE、*.xlsF、*.doc
4、在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来新的问题。软件的改变可能是源于发现错误并做好了修改,可能是因为在集成或维护阶段加入了新的模块,为了验证软件修改后的正确性需要进行(E)。
并为每个测试用例列出它在函数执行时所覆盖的条件的判定。
intCMyClass2::_11_Mcdc1(BOOL A,BOOL B,BOOL C)(100%C/DC和MC/DC)
{
if(A && (B || C))
return 1;
return 0;
}
测试用例如下:
条件判定如下:
intCMyClass2::_12_Mcdc2(BOOL A,BOOL B,BOOL C,BOOL D,BOOL E,BOOL F,BOOL G,BOOL H,BOOL I,BOOL J,BOOL K)(100%C/DC)
A、底层函数的参数B、底层函数的返回值C、全局变量
D、函数改写文件中的数据E、成员变量F、函数改写数据库中的数据
G、内部输出H、调用次数
3、执行函数测试后,源代码窗口能够标识出未覆盖的(BCD)。逻辑结构图窗口能够标识出未覆盖的(AF)。
A、路径B、条件C、MC/DC D、语句E、C/DCF、分支
4、VU与按自动的边界测试,用于边界测试的边界值是由菜单项"数据"→定义边界值来维护的。VU提供的int类型的默认值有(ACHJM),bool类型的默认边界值有(I L),double类型的默认类型边界值有(DFGKN)。
else if(e==1)
result = g;
else{
for(unsigned int i=0; i<e; i++)
result *=g;
}
return result;
}
失败断言数:1
失败断言为:case3
软件曲线位置:
修复缺陷:unsigned int result = 0;——>>unsigned int result =1;
/*
体验可视化编程:删除字符串左边的空格
参数:str,源字符串
返回:返回结果字符串指针
*/
char *triml(char *str){
char *i,*j;
i = str;
j = str;
while(*i==32)
++i;
while(*i!='\0'){
*j = *i;
++i;
++j;
}
*j = '\0';
A、0B、99999.9C、0x80000000D、0.0E、-99999.9
F、1.0G、9999.99H、1I、trueJ、0x7FFFFFFF
K、-9999.99L、falseM、-1N、-1.0O、0x80000000
P、0x7FFFFFFF
5、在利用VU进行单元测试的过程中,针对同一个测试用例集合,以下()类的白盒覆盖情况是可能会出现的。(AE//ac)
失败断言2个,有两处缺陷:1,没有判断空指针2,测试用例4未得到正确结果。
修改:
1,在函数开始处加
if(pSrc==0||pDes==0)
return;
2,2,在if(next==’\0’)里加上*pDes=ch;
3、单元测试triml()C函数,设计测试用例集(包括能表格化的普通测试用例和不能表格化的特殊测试用例),使语句、分支、条件、C/DC、MC/DC和路径的覆盖率达到100%,统计出失败断言的数量,列出包含失败断言的测试用例的实际输出,找出软件缺陷的位置,并修复它,使失败断言数为0。
西华师范大学计算机学院2013年度期末测试
软件测试A卷(11+18+12+19+40=100分)
一、单项选择(每空1分,共11分)
1、执行函数测试时,当多次调用底层函数,底层模拟器的"模拟值"输入栏可设定多个模拟值,一次最多可设置(C)个模拟值。
A、1B、3C、6D、11
2、当函数测试存在失败断言时,在白盒覆盖率信息窗口中VU会显示一个(B)的条块来提示,没有失败断言时,会显示一个(A)的条块来显示;在逻辑结构窗口中,未覆盖的路径用(B)画出,已覆盖的路径用(A)画出,未覆盖的分支是(D)的条块。
if(ch=='/'){//注释开始的第一个字符
next = *pSrc;
if(next =='\0')//结束
break;
else if(next=='/')
cmmSin = true;
if(cmmMUl || cmmSin){
pSrc++;//忽略/后的一个字符
ch = *pStr++;
continue;
五、程序测试题(1、3题各15分,2题10分,共40分)
1、单元测试CMyClass2的成员函数_07_DeleteComment(char *,char *),补充给定的测试用例集的预期输出和实际输出,统计失败断言的数量,如果失败断言数大于0,则说明软件存在缺陷,找到缺陷的具体位置,并修复它。/*函数说明: