软件测试期末考试含答案.docx
- 文档编号:15235725
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:15
- 大小:114.91KB
软件测试期末考试含答案.docx
《软件测试期末考试含答案.docx》由会员分享,可在线阅读,更多相关《软件测试期末考试含答案.docx(15页珍藏版)》请在冰点文库上搜索。
软件测试期末考试含答案
西华师范大学计算机学院2013年度期末测试
软件测试A卷(11+18+12+19+40=100分)
一、单项选择(每空1分,共11分)
1、执行函数测试时,当多次调用底层函数,底层模拟器的"模拟值"输入栏可设定多个模拟值,一次最多可设置(C)个模拟值。
A、1B、3C、6D、11
2、当函数测试存在失败断言时,在白盒覆盖率信息窗口中VU会显示一个
(B)的条块来提示,没有失败断言时,会显示一个(A)的条块来显示;在逻辑结构窗口中,未覆盖的路径用(B)画出,已覆盖的路径用(A)画出,未覆盖的分支是(D)的条块。
A、深绿色B、深红色C、浅蓝色D、粉红色E、浅绿色
3、VU导出的测试报告文件格式为:
(C),表格化测试用例数据导出的文件格式为:
(E)
A、*.pdfB、*.txtC、*.htmD、*.csvE、*.xlsF、*.doc
4、在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来新的问题。
软件的改变可能是源于发现错误并做好了修改,可能是因为在集成或维护阶段加入了新的模块,为了验证软件修改后的正确性需要进行(E)。
A、白盒测试B、黑盒测试C、单元测试D、性能测试
E、回归测试F、验收测试
5、当用底层模拟器去模拟被测单元调用的底层函数的输出函数,并且此输出参数为指针数据类型,应该设置此参数的模拟值为(D)。
A、指针值B、引用的地址C、指针指向的数据类型的值D、NULL
6、当用底层模拟器去模拟被测单元调用的底层函数的返回值,并且此输出参数为指针数据类型,应该设置此参数的模拟值为(C)。
A、指针值B、引用的地址C、指针指向的数据类型的值D、NULL
二、多项选择(每空2分,共18分)
1、底层模拟能很好的解决(BCF)。
A、集成测试问题B、装代码和数据失真C、测试不可控D、性能测试问题E、内部输出的模拟
F、模拟参数为复杂数据类型,单元测试时难以初始化
2、底层模拟器能够模拟(ABCEH)。
A、底层函数的参数B、底层函数的返回值C、全局变量
D、函数改写文件中的数据E、成员变量F、函数改写数据库中的数据
G、内部输出H、调用次数
3、执行函数测试后,源代码窗口能够标识出未覆盖的(BCD)。
逻辑结构图窗口
能够标识出未覆盖的(AF)。
A、路径B、条件C、MC/DCD、语句E、C/DCF、分支
4、VU与按自动的边界测试,用于边界测试的边界值是由菜单项"数据"→定义边界值来维护的。
VU提供的int类型的默认值有(ACHJM),bool类型的默认边界值有(IL),double类型的默认类型边界值有(DFGKN)。
100%,
A、语句覆盖:
100%
分支覆盖:
100%
路径覆盖:
100%
B、
语句覆盖:
32%
分支覆盖:
100%
路径覆盖:
98%
C、
语句覆盖:
100%
分支覆盖:
18%
路径覆盖:
100%
D、
语句覆盖:
30%
分支覆盖:
50%
路径覆盖:
47%
E、
语句覆盖:
100%
分支覆盖:
95%
路径覆盖:
15%
X
6、在利用VU单元测试(ac//a)的过程中,可能会出现"语句:
95%,分支:
路径:
15%"的情况。
A、_01_pow()B、_11_Mcdc1()C、_12_Mcdc2()
三、判断题(每空2分,共12分)注:
正确的打钩,错误的打叉,并说明错误原因
1、一个测试用例只允许有一个底层模拟,而一个函数可以有多个底层模拟。
(T)
错误原因:
2、底层模拟器可用于控制测试。
(T)错误原因:
3、底层模拟器模拟的内部输入能够实现用例数据的表格化。
(T)错误原因:
4、包含有空指针的测试用例能够实现用例数据的表格化。
(F)错误原因:
空指针会被认为没有输入买自动设置为null,所以不能表格化
5、VU在单元测试时,设计的每个测试用例都必须设置其预期输出。
(T)错误原因:
6、在测试用例集中,测试用例的数量等于断言的数量。
(F)错误原因:
错误,一个测试用例中可以出现多个断言
四、简述题(1、2、3题各3分,4题6分,5题4分,共19分)
1、简述在VU的单元测试中,提高路径覆盖率的3种方法。
1:
添加测试用例2:
删除分支3:
删除不可达路径
2、简述在VU的源代码窗口中,当前测试用例未覆盖的语句,VU如何标识测试用例集未覆盖的语句。
VU如何标识测试用例集未覆盖的条件和Mc/Dc,VU如何标识。
答:
未覆盖语句:
淡红色背景的红色字体表示未覆盖的条件和Mc/Dc:
淡红色背景的红色字体[TFM]表示
T表示真值未覆盖,F表示假值未覆盖,M表示MC/DC未覆盖
3、简述C/Dc和Mc/Dc的定义。
C/DC:
条件/判定覆盖:
判断中每个条件的所有可能取值至少执行一次,同时每个判断本身所有可能结果也至少执行一次。
MC/DC:
修正的条件/判定覆盖,是一种软件结构覆盖率的测试准则。
修正条件判定覆盖要求:
单元的入口和出口必须被调用一次,程序中判断的每一个分支必须至少被执行一次。
对于程序中通过逻辑运算组成判断的基本布尔条件,每个条件必须取遍所有可能的值,且每一个条件对判断的结果具有独立的作用。
**掌握理论和实际情况下白盒覆盖准则相互间包含的关系,如下
第六个成员函数
源代码
白盒覆盖率信息:
均为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,
并为每个测试用例列出它在函数执行时所覆盖的条件的判定。
intCMyClass2:
:
_11_Mcdc1(BOOLA,BOOLB,BOOLC)(100%C/DC和MC/DC)
{
if(A&&(B||C))
return1;
return0;
}测试用例如下:
条件判定如下:
intCMyClass2:
:
_12_Mcdc2(BOOLA,BOOLB,BOOLC,BOOLD,BOOLE,BOOLF,BOOLG,BOOLH,BOOLI,BOOLJ,BOOLK)(100%C/DC)
{
if(A&&((B||C)&&(D&&E))&&((F||G)&&(H||I||J)||K))
return1;
return0;
}
测试用例如下:
条件判定如下:
5、为成员函数_01_Pow()设计测试用例,使其被100%语句,条件和C/DC覆盖,统计出失败断言数,如果存在失败断言,列出失败断言(即测试用例的输入,预期输出和实际输出),指出软件曲线位置,并修复缺陷,保证测试结束,失败断言为0。
unsignedintCMyClass:
:
_01_Pow(unsignedintg,unsignedinte){
unsignedintresult=0;
if(g==0)
result=0;
elseif(g==1)
result=1;
elseif(e==0)
result=1;
elseif(e==1)
result=g;
else{
for(unsignedinti=0;i result*=g; } returnresult; 失败断言数: 1 失败断言为: case3 软件曲线位置: 修复缺陷: unsignedintresult=0;——>>unsignedintresult=1; 五、程序测试题(1、3题各15分,2题10分,共40分) 1、单元测试CMyClass2的成员函数_07_DeleteComment(char*,char*),补充给定的测试用例集的预期输出和实际输出,统计失败断言的数量,如果失败断言数大于0,则说明软件存在缺陷,找到缺陷的具体位置,并修复它。 /*函数说明: 名称: CMyClass2: : _07_DeleteComment 功能: 删除C++代码中的注释 参数: pSrc: 源代码 pDes: 保存删除注释后的代码 返回: 无*/ voidCMyClass2: : _07_DeleteComment(char*pSrc,char*pDes){ intlen=strlen(pStr); if(len==0) return; boolcmmSin=false;//由//开始\n结束的单行注释 boolcmmMul=false;//由/*开始*/结束的多行注释 charch=*pSrc++; charnext=0; while(ch){ if(! cmmSin&&(cmmMul)){//非注释if(ch=='/'){//注释开始的第一个字符next=*pSrc;if(next=='\0')//结束break; elseif(next=='/')cmmSin=true; if(cmmMUl||cmmSin){pSrc++;//忽略/后的一个字符ch=*pStr++;continue; } } *pDes++=ch; ch=*pSrc++; }elseif(cmmSin){//单行注释if(ch=='\n'){//单行注释结束cmmSin=false;*pDes++=ch;//\n是不能丢的} ch=*pSrc++; }elseif(cmmMul){//多行注释if(ch=='*'){//开始多行注释next=*pSrc;if(next=='/'){cmmMul=false;*pSrc++;//忽略后面的/} } ch=*pSrc++; } } } Name Case1 Case2 Case3 pSrc "inta;//comment\n" "inta: /*comment*/\n" "int/*Comment*/a;//comment\n" pDes 实际输出 Name Case4 Case5 Case6 Case7 Case8 pSrc "inta;/" "inta=c/d;" "inta;/*a=b*c*/\n" "inta" pDes 实际输出 Case9: 输入(char*pSrc=0;char*pDes=0;)(注: Case9不能表格化) 失败断言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。 /*体验可视化编程: 删除字符串左边的空格参数: 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';returnstr; } 失败断言1个,缺陷是没有判断空指针,修复在char*i,*j;后面加上if(str==0)return; 测试用例 NAME CASE1 CASE2 CASE3 CASE4 CASE5 str “aa” “aa” “aa” ret “aa” “aa” “aa” 4、单元测试findr()C函数,设计出测试用例集(包括能表格化的普通测试用例和不能表格化的特殊测试用例),使语句覆盖、C/DC覆盖和路径覆盖的覆盖率达到100%。 统计失败断言的数量,列出包含失败断言的测试用例的实际输出,找出软件缺陷的位置,并修复它,使失败断言数为0。 /*体验可视化编程: 在一个字符串中反向查找子串参数: str,源字符串 stub,需查找的子串返回: 如果找到返回子串的位置,否则返回-1*/intfindr(char*str,char*sub){char*i,*j,*k,*n; intl,m; intlen_str,len_sub; (if(str==0||sub==0)要改的地方return-1; if(*str=='\0'||*sub=='\0')return-1; ) len_str=0;len_sub=0; i=str; j=sub;while(*i! ='\0'){i++;len_str++; } i--;while(*j! ='\0'){ j++;len_sub++; } j--; n=j; for(l=len_str;l>len_str-len_sub+1;l--){//for(l=len_str;l>len_str-1;l--) k=i; for(m=l;m<=len_sub;m++){//for(m=1;m<=len_sub;m++)这是mif(*k==*j){k--;j--; }elsebreak; }if(m>len_sub)break; i--; j=n; }if(l else return(l-len_sub+1); } 缺陷有5个intfindr(char*str,char*sub){ char*i,*j,*k,*n; intl,m; intlen_str,len_sub; if(str==0||sub==0)return-1;//有误 if(*str=='\0'||*sub=='\0')return-1;len_str=0; len_sub=0; i=str; j=sub; while(*i! ='\0') { //有几个字符 i++;len_str++; i--;//计算字符串长度 while(*j! ='\0') { j++;len_sub++; } j--; n=j; for(l=len_str;l>len_sub-1;l--)//有误 {k=i;for(m=1;m<=len_sub;m++)//有误 { if(*k==*j) { k--;j--; }elsebreak; }if(m>len_sub)//完全匹配时 break; i--;j=n; } if(l<=len_sub-1)//有误 return-1; else return(l-len_sub+1); } 之前测试失败断言10个测试用例 特殊测试用例 Charsir[1024]={0} Charsub[1024]≡{0} STRCOPY(str,-TDlSTR.(Stl■)/犷abed"”)STRCOPY(sub,-TDISTR-(SUb)/Tab=/) //用于别试参数空指针的用例char*Str=Ochar*SUb=O 〃用于测试缕繆空鴉针的用例char*Str=*,abc*char*SUb=O //用于测谊卷教空指针的用例char*Str=Ochar*SUb="abc"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 测试 期末考试 答案