最全软件测试期末试题及答案(史上最全),2024年最新软件测试开发零基础教学

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

return 1;

return 0;

}

测试用例如下 :

条件判定如下 :

int CMyClass2::_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)

{

if(A && ( (B||C) && (D&&E) ) && ((F||G) && (H||I||J)||K) )

return 1;

return 0;

}

测试用例如下 :

条件判定如下 :

5、为成员函数_01_Pow()设计测试用例,使其被100%语句,条件和C/DC覆盖,统计出失败断言数,如果存在失败断言,列出失败断言(即测试用例的输入,预期输出和实际输出),指出软件曲线位置,并修复缺陷,保证测试结束,失败断言为0。

unsigned int CMyClass::_01_Pow(unsigned int g,unsigned int e){

unsigned int result = 0;

if(g0)

result = 0;

else if(g1)

result = 1;

else if(e0)

result = 1;

else if(e1)

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;

五、程序测试题(1、3题各15分,2题10分,共40分)

1、单元测试CMyClass2的成员函数_07_DeleteComment(char *,char *),补充给定的测试用例集的预期输出和实际输出,统计失败断言的数量,如果失败断言数大于0,则说明软件存在缺陷,找到缺陷的具体位置,并修复它。/_函数说明:

名称: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)){//非注释

if(ch==’/’){//注释开始的第一个字符

next = *pSrc;

if(next ‘\0’)//结束

break;

else if(next’/’)

cmmSin = true;

if(cmmMUl || cmmSin){

pSrc++;//忽略/后的一个字符

ch = *pStr++;

continue;

}

}

*pDes++ = ch;

ch = *pSrc++;

}else if(cmmSin){//单行注释

if(ch==’\n’){//单行注释结束

cmmSin = false;

*pDes++ = ch;//\n是不能丢的

}

ch = _pSrc++;

}else if(cmmMul){//多行注释

if(ch==’_’){//开始多行注释

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”

pDes

实际输出

Name Case4 Case5 Case6 Case7 Case8

pSrc “int a;/” “int a=c/d;” “int a;/_a = b_c*/\n” “” “int a”

pDes

实际输出

Case9:输入(char *pSrc = 0;char *pDes = 0;)(注:Case9不能表格化)

失败断言2个,有两处缺陷:1,没有判断空指针 2,测试用例4未得到正确结果。

修改:

1,在函数开始处加

if(pSrc0||pDes0)

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’;

return str;

}

失败断言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

*/

int findr(char *str,char *sub){

char *i,*j,*k,*n;

int l,m;

int len_str,len_sub;

( if(str0 | | sub0) 要改的地方

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++) 这是 m 一

if(*k==*j){

k–;

j–;

}else

break;

}

if(m>len_sub)

break;

i–;

j = n;

}

if(l<len_str - len_sub+1) //if(l<len_sub-1)

return -1;

else

return (l-len_sub+1);

}

缺陷有5个

int findr(char* str, char* sub)

{

char *i,*j,*k,*n;

int l,m;

int len_str,len_sub;

if(str0 || sub0)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–;

}else

break;

}

if(m>len_sub) //完全匹配时

break;

i–;

j = n;

}

if(l<=len_sub-1) //有误

return -1;

else

return (l-len_sub+1);

}

之前测试失败断言10个

测试用例

特殊测试用例

软件测试期末试题及答案

1、判定覆盖设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支_至少被执行一次。

2、黑盒测试的具体技术方法 ************、 ********

等价类划分法,边界值分析法,决策表法,因果图法

3、黑盒测试又称之为___________测试。

功能

4、等价类划分有两种不同的情况:

有效等价类,无效等价类

5、根据覆盖目标的不同,逻辑覆盖又可分为:************,条件组合覆盖,判断/条件覆盖。

语句覆盖,判定覆盖,条件覆盖,路径覆盖

6、根据软件生命周期中的定义,可以把自动化测试工具划分3大类____________,

白盒测试工具、黑盒测试工具、测试管理工具

7、软件测试是为发现程序中的______________而执行程序的**************。

错误,过程

8、测试用例是由______________和预期的______________两部分组成。

测试输入数据 ,输出数据

9、白盒测试又称为**********____,可以分为______________和______________两大类。

结构测试,静态测试,动态测试

10、软件是包括____________﹑************﹑************的完整集合。

程序,数据,相关文档

11、边界值分析法属于************。

黑盒测试

12、单元测试是以____________说明书为指导,测试源程序代码。

详细设计

13、集成测试以____________说明书指导,测试软件结构。

概要设计

14、确认测试以____________说明书为指导。

需求分析

15、软件开发的基本过程____________,______________,__

需求分析、概要设计、详细设计,编码,测试、维护

16、代码复审属于************,不实际运行程序。

静态测试

17、集成测试把模块组成成系统的测试方式:___。

一次性集成测试,增量式集成测试

18、黑盒测试有两种基本方法,即:___。

通过测试,失败测试

二、选择题(每题3分,共10题,分数为30分)

  1. 下列哪一项不是白盒测试?(C)

A.单元测试 B.集成测试 C.系统测试 D.回归测试

  1. 属于黑盒测试的方法?©

A.基于基本路径 B.控制流 C.基于用户需求测试 D.逻辑覆盖

3.在Assert类中断言对象为NULL是_____。(C)

A.assertEquals B.assertTrue C.assertNull D.fail

4.******_****的目的是对最终软件系统进行全面的测试确保最终软件系统产品满足需求。(A)

A.系统测试   B.集成测试

C.单元测试     D.功能测试

5.在Assert类中断言两个对象相等是****_。(A)

A.assertEquals B.assertTrue C.assertSame D.fail

6.有一组测试用例使得每一个被测试用例的分支覆盖至少被执行一次,它满足的覆盖标准******_____。(B)

A. 语句覆盖 B.判定覆盖 C.条件覆盖 D.路径覆盖

  1. 在Assert类中断言测试失败是_____。(D)

A.assertEquals B.assertTrue C.assertSame D.fail

8.软件测试的目的是___________。(C)

A.表明软件的正确性  B.评价软件质量

C.尽可能发现软件中的错误    D.判定软件是否合格

9.关于白盒测试与黑盒测试的最主要区别,正确的是___________。(A)

A.白盒测试侧重于程序结构,黑盒测试侧重于功能

B.白盒测试可以使用测试工具,黑盒测试不能使用工具

C.白盒测试需要程序参与,黑盒测试不需要

D.黑盒测试比白盒测试应用更广泛

10.软件测试类型按开发阶段划分___________。(B)

A.需要测试﹑ 单元测试﹑集成测试

B.单元测试﹑集成测试﹑确认测试﹑系统测试﹑验收测试

C.单元测试 ﹑集成测试﹑确认测试

D.调试﹑单元测试﹑功能测试

11.在Junit中,testXXX()方法就是一个测试用例,测试方法是______。(B)

A. private void testXXX()  B.public void testXXX()

C. public float testXXX()  D.public int testXXX()

12.在下面所列举中的逻辑测试覆盖中,测试覆盖最强的是__________。(B)

A.条件覆盖  B.条件组合覆盖

C.语句覆盖     D.判定覆盖

13.在下面所列举中的逻辑测试覆盖中,测试覆盖最弱的是__________。(C)

A.条件覆盖  B.条件组合覆盖

C.语句覆盖     D.判定覆盖

14.软件测试是软件质量保证的重要手段,下述哪种测试是软件测试的最基础环节?(B)

A.集成测试 B.单元测试

C.目的测试 D.确认测试

15.增量式集成测试有3种方式:自顶向下增量测试方法, 和混合增量测试方式。(B)

A.自中向下增量测试方法 B.自底向上增量测试方法

C.多次性测试 D.维护

16.Junit的TestCase类提供 和tearDown()方法,分别完成对测试环境的建立和拆除。(A)

A.setUp()

B.set()

C.setap()

D.setDown()

  1. _**********方法根据输出对输入的依赖关系设计测试用例。(C)

A.路径测试      B.等价类

C.因果图        D.归纳测试

18.Junit测试在单元测试阶段测试,主要用于********。(A)

A. 白盒测试 B.灰盒测试

C. 黑盒测试      D.确认测试

19.不属于白盒测试的技术是**_________。(C)

A.路径覆盖 B.判定覆盖

C.边界值分析 D.条件覆盖

20.软件测试过程中的集成测试主要是为了发现___________阶段的错误码。(B)

A.需求分析 B.概要设计

C.编码 D.维护

21.增量式集成测试有3种方式: ,自底向上增量测试方法和混合增量测试方式。(A)

A.自顶向下增量测试方法 B.一次性集成测试

C.多次性测试 D.维护

22.Junit适用于java开发人员在______阶段,进行单个方法实现功能或者类本身的测试,主要用于白盒测试。(C)

A.集成测试 B.验收测试

C.单元测试   D.确认测试

23.软件测试是按照特定的规程,_**********的过程。(A)

A.发现软件错误 B. 说明程序正确

C.证明程序没有错误   D.设计并运行测试用例

24.一个成功的测试是**********_。(B)

A.发现错误码 B. 发现了至今尚未发现的错误

C.没有发现错误码 D.证明发现不了错误

25.按照测试组织划分,软件测试可分为:开发方测试,第三方测试, ___________。(C)

A.集成测试 B.确认测试

C.用户测试 D.灰盒测试

26.下列模型哪个软件测试过程模型 ___________。(A)

A.W模型 B.漠布模型

C.L模 型 D.G模型

27.Junit有两个包:**********和Junit.extensions。(B)

A.Junit.frametest B. Junit.framework

C.Junit.amework   D.Junit.assert

28.单元测试一般以__________为主。(A)

A.白盒测试 B. 黑盒测试

C.系统测试   D.分析测试

29.编码阶段产生的错误由__________检查出来的。(A)

A.单元测试 B. 集成测试

C.系统测试   D.有效性测试

30.代码检查法有桌面检查法,走查和**********。(B)

A.静态测试 B. 代码审查

C.动态测试    D.白盒测试

三﹑简答题(每题10分,共4题,分数为40分)

1.计算环路复杂度方法有哪三种?

答:(1)V(G)=判定节点数+ 1 ;

(2)V(G) = E-N+2 ;

(3)V(G)=区域数+ 1

2.白盒测试有几种方法?

答:白盒测试方法分为两大类:静态测试方法和动态测试方法。

静态测试方法:检查软件的表示和描述是否一致,没有冲突或者没有歧义。

动态测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。

3.什么是软件测试,软件测试分为哪几个阶段。

答:软件测试是为了发现程序中的错误而执行程序的过程。

软件测试一般分为单元测试、集成测试和系统测试。

4.比较白盒测试和黑盒测试?

答:使用白盒测试方法时,测试根据程序的内部逻辑和指定的覆盖标准;

黑盒测试法是通过分析程序的接口功能设计测试用例的。

5. 为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。

int test(int A,int B)

{

if((A>1) AND (B<10)) then

X=A-B;

if((A=2) OR (B>20)) then

X=A+B;

return x;

}

答:语句覆盖测试用例:A=2,B=0;

判定覆盖测试用例:A=3,B=0;A=2,B=20;

条件覆盖测试用例:A=2,B=0;A=0,B=21;

  1. 为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。

void DoWork (int x,int y,int z)

{

int k=0,j=0;

if ( (x>3)&&(z<10) )

{ k=x_y-1;

j=sqrt(k);

} //语句块1

if ( (x==4)||(y>5) )

{ j=x_y+10; } //语句块2

j=j%3; //语句块3

}

答:语句覆盖测试用例:x=4、y=5、z=5;

判定覆盖测试用例::x=4、y=5、z=5;x=2、y=5、z=5;

条件覆盖测试用例:x=4、y=6、z=5 ;x=2、y=5、 z=15 ;

7.某公司人事软件的工资计算模块的需求规格说明书中描述:

(1)年薪制员工:严重过失,扣当月薪资的4%;过失,扣年终奖的2%.

(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%.

根据题目内容列出条件和结果,给出决策表。

答:条件:C1:年薪制

C2:严重过失

结果:e1:扣月4%

e2: 扣月8%

e3: 扣年2%

1 2 3 4

条件: C1

C2 1 1 0 0

1 0 1 0

动作 e1

e2

e3 √ √

8.看代码程序:

void Sort ( int iRecordNum, int iType )

1 {

2 int x=0;

3 int y=0;

4 while ( iRecordNum> 0 )

5 {

6 If ( iType0 )

7 x=y+2;

8 else

9 If ( iType1 )

10 x=y+10;

11 else

12 x=y+20;

13}

14}

要求(1)给以上代码画出控制流图(2)控制流图的环复杂度V(G),写出独立路径。

(1)控制流图:

(2)V(G)= 4

路径1:4→14

路径2:4→6→7→13 → 4 → 14

路径3:4→6→9→10→13→4→14

路径4:4→6→9→12→13→4→14


1.从供选择的答案中选出应填入下列(   )中的字句。

软件测试的目的是( A )。为了提高测试的效率,应该( B )。使用白盒测试方法时,确定测试数据应根据( C )和指定的覆盖标准。与设计测试数据无关的文档是( D )。

软件的集成测试工作最好由( E )承担,以提高集成测试的效果。

供选择的答案:

A.     ① 评价软件的质量              ② 发现软件的错误

③ 找出软件中的所有错误            ④ 证明软件是正确的

B.     ① 随机地选取测试数据

② 取一切可能的输入数据作为测试数据

③ 在完成编码以后制定软件的测试计划

④ 选择发现错误的可能性大的数据作为测试数据

C.      ① 程序的内部逻辑                        ② 程序的复杂程度

③ 使用说明书                        ④ 程序的功能

D.      ① 该软件的设计人员                  ② 程序的复杂程度

③ 源程序                              ④ 项目开发计划

E.      ① 该软件的设计人员                  ② 该软件开发组的负责人

③ 该软件的编程人员                  ④ 不属于该软件开发组的软件设计人员

2.请从供选择的答案中选出应填入下列(   )中的字句。

程序的三种基本控制结构是( A )。它们的共同点是( B )。结构化程序设计的一种基本方法是( C )。软件测试的目的是( D )。软件调试的目的是( E )。

供选择的答案:

A.      ① 过程,子程序,分程序                  ② 顺序,条件,循环

③ 递归,堆栈,队列                        ④ 调用,返回,转移

B.      ① 不能嵌套使用                      ② 只能用来写简单的程序

③ 已经用硬件实现                       ④ 只有一个入口和一个出口

C.      ① 筛选法        ② 递归法       ③ 归纳法      ④ 逐步求精法

D.      ① 证明程序中没有错误                  ② 发现程序中的错误

③ 测量程序的动态特性                  ④ 检查程序中的语法错误

E.     ① 找出错误所在并改正之                  ② 排除存在错误的可能性

3.从下列关于软件测试的叙述中,选出5条正确的叙述。

(1) 用黑盒法测试时,测试用例是根据程序内部逻辑设计的。

(2) 尽量用公共过程或子程序去代替重复的代码段。

(3) 测试是为了验证该软件已正确地实现了用户的要求。

(4) 对于连锁型分支结构,若有n个判定语句,则有2n条路径。

(5) 尽量采用复合的条件测试,以避免嵌套的分支结构。

(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写出的程序更加简洁。

(7) 发现错误多的程序模块,残留在模块中的错误也多。

(8) 黑盒测试方法中最有效的是因果图法。

(9) 在做程序的单元测试时,桩(存根)模块比驱动模块容易编写。

(10) 程序效率的提高主要应通过选择高效的算法来实现。

4.从供选择的答案中选出同下列关于软件测试的各条叙述关系最密切的字句。

A.对可靠性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检查。

B.已有的软件被改版时,由于受到变更的影响,改版前正常的功能可能发生异常,性能也可能下降。因此,对变更的软件进行测试是必要的。

C.在意识到被测试模块的内部结构或算法的情况下进行测试。

D.为了确认用户的需求,先做出系统的主要部分,提交给用户试用。

E.在测试具有层次结构的大型软件时,有一种方法是从上层模块开始,由上到下进行测试。此时,有必要用一些模块替代尚未测试过的下层模块。

供选择的答案:

AE: ① 仿真器       ② 代码审查   ③ 模拟器       ④ 桩             ⑤ 驱动器

⑥ 域测试       ⑦ 黑盒测试   ⑧ 原型      ⑨ 白盒测试       ⑩ 退化测试

三、判断题:共10小题,每小题1分,满分10分;请将答案以“√”、“×”形式填入题后括号中。

1.好的测试员不懈追求完美。( F )

2.测试程序仅仅按预期方式运行就行了。( F )

3.不存在质量很高但可靠性很差的产品。( T )

4.在没有产品说明书和需求文档的条件下可以进行动态黑盒测试。( T )

5.静态白盒测试可以找出遗漏之处和问题。( T )

6.测试错误提示信息不属于文档测试范围。( F )

7.单元测试能发现约80%的软件缺陷。( T )

8.代码评审是检查源代码是否达到模块的要求。( T )

9.自顶向下集成需要测试员编写程序。( F )

10.总是首先设计黑盒测试用例。( T )

一、名词解释(5×3=15分)

1.验收测试

是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动。

2.失败测试

纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试。

3.驱动模块

驱动模块就是用来代替主模块,用它来调用子模块

4. 桩模块

集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。

5.白盒测试

也称为结构化测试、基于代码的测试,是一种测试用例设计方法,它从程序的控制结构导出测试用例。

六.综合题(1×20=20分)

输入条件 有效等价类 无效等价类

开头字符 由0x或0X开头 (1) 以字母开头 以非0数字开头 (2)(3)

数值字符 数字或A—F的字母 (4) A—F以外的字母 (5)

数值字符个数 ≥1个 (6) 0个 (7)

数值 ≥-7f且≤7f (8) <-7f

>7f (9)(10)

用例1:0x7F,      覆盖等价类(1)(4)(6)(8)

用例2:-0Xb,      覆盖等价类(1)(4)(6)(8)

用例3:0X0,       覆盖等价类(1)(4)(6)(8)

用例4:0x,        覆盖等价类(1)(7)

用例5:A7,        覆盖等价类(2)

用例6:-1A,       覆盖等价类(3)

用例7:0X8h,      覆盖等价类(1)(5)

用例8:0x80,      覆盖等价类(1)(4)(10)

用例9:-0XaB,     覆盖等价类(1)(4)(9)

-------------------------------------------------------------------------------------------综合题:

1.如图显示某程序的逻辑结构。试为它设计足够的测试用例,分别实现对程序的判定覆盖、条件覆盖和条件组合覆盖。(20分)(每空

答案:

覆盖种类 需满足的条件 测试数据 期望结果

判定覆盖 A>1, B=0 A=2, B=0 执行S1

A>1, B0或

A1, B=0或

A1, B0 A=2, B=1或

A=1, B=0或

A=1, B=1

执行S2

条件覆盖 以下四种情况各出现一次

A>1 B=0 A=2,B=0 执行S1

A1 B0 A=1,B=1 执行S2

条件组合

覆盖 A>1, B=0 A=2, B=0 执行S1

A>1, B0 A=2, B=1 执行S2

A1, B=0 A=1, B=0 执行S2

A1, B0 A=1, B=1 执行S2

2、有二元函数f(x,y),其中x∈[1,21],y∈[1,31];请写出该函数采用基本边界值分析法设计的测试用例。(10分)

答:{ <1,15>, <2,15>, <20,15>, <21,15>, <10,15>, <10,1>, <10,2>, <10,30>, <10,31> }

3.设一个控制流图如下,请给出环形复杂度和基本测试路径。(20分)

答案:(1) 根据程序环形复杂度的计算公式,求出程序路径集合中的独立路径数目。

公式1:V(G)=11-9+2,其中10是控制流图G中边的数量,8是控制流图中节点的数目。

公式2:V(G)=3+1,其中3是控制流图G中判断节点的数目。

公式3:V(G)=4,其中4是控制流图G中区域的数目。

因此,控制流图G的环形复杂度是4。

(2) 根据上面环形复杂度的计算结果,源程序的基本路径集合中有4条独立路径:

路径1:5->22

路径2:5->7, 8->11, 12->21->5->22

路径3:5->7, 8->16->17->19->21->5->22

路径4:5->7, 8->16->18->19->21->5->22

4、设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1999年1月~2029年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。(20分)

1)划分等价类并编号,下表等价类划分的结果

输入等价类 有效等价类 无效等价类

日期的类型及长度 ①6位数字字符 ②有非数字字符

③少于6位数字字符

④多于6位数字字符

年份范围 ⑤在1999~2029之间 ⑥小于1999

⑦大于2029

月份范围 ⑧在01~12之间 ⑨等于00

⑩大于12

2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:

测试数据    期望结果      覆盖的有效等价类

200211      输入有效      ①、⑤、⑧

为每一个无效等价类设计一个测试用例,设计结果如下:

测试数据   期望结果     覆盖的无效等价类

99June     无效          ②

20036      无效           ③

2001006    无效         ④

199712     无效         ⑥

203001     无效         ⑦

200100     无效         ⑨

200113     无效         ⑩

四 简答题(30分)

1.试描述软件测试的定义?(3分)

答:利用手工或者自动化的方式,按照测试方案对系统执行测试用例的过程叫做软件测试。

2.什么是软件缺陷?(4分)

答:满足以下条件的问题都叫缺陷:

软件未达到产品说明书中已标明的功能

软件出现了产品说明书中指明不会出现的错误

软件功能超出了产品说明书指明的范围

软件未达到产品说明书虽未指出但应达到的目标

软件测试员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户认为该软件使用效果不好。

3.常见的黑盒测试用例的设计方法?并分别简单介绍一下各自的思想。(8分)

答:等价类划分:等价类划分法是一种重要的、常用的黑盒测试方法,它将不能穷举的测试过程进行合理分类,从而保证设计出来的测试用例具有完整性和代表性。

边界值分析:对输入输出的边界值进行测试的一种黑盒测试方法。

决策表法:决策表是分析和表达多逻辑条件下执行不同操作的情况的工具

因果图分析法:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。

4. 列举常见的系统测试方法。答出来5个即可。(5分)

答:恢复测试安全测试强度测试性能测试正确性测试可靠性测试兼容性测试Web测试

5.文档测试主要测试哪些内容?答出来5点即可(5分)

答:(1)检查产品说明书属性(2)检查是否完整(3)检查是否准确(4)检查是否精确(5)检查是否一致(6)检查是否贴切(7)检查是否合理(8)检查代码无关(9)检查可测试性

6. 单元测试主要测试那几方面的问题?(5分)

答:模块接口、局部数据结构、边界条件、独立的路径和错误处理。

五,设计题

输入条件 有效等价类 无效等价类

是否三角形的三条边 A>0 (1) A≤0 (7)

B>0 (2) B≤0 (8)

C>0 (3) C≤0 (9)

A+B>C (4) A+B≤C (10)

A+C>B (5) A+C≤B (11)

B+C>A (6) B+C≤A (12)

是否等腰三角形 A=B (13) A≠B AND A≠B AND B≠C (16)

B=C (14)

C=A (15)

是否等边三角形 A=B AND A=C AND B=C(17) A≠B (18)

A≠B (19)

A≠B (20)

编号 【A B C 】 覆盖等价类 输出

1 【3、4、5】 (1)、 (2)、 (3)、 (4)、 (5)、 (6) 一般三角形

2 【0、1、2】 (7)、 不能构成三角形

3 【1、0、2】 (8)、

4 【1、2、0】 (9)、

5 【1、2、3】 (10)、

6 【1、3、2】 (11)、

7 【3、1、2】 (12)、

8 【3、3、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(13) 等腰三角形

9 【3、4、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(14)

10 【3、4、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(15)

11 【3、4、5】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(16) 非等腰三角形

12 【3、3、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(17) 等边三角形

13 【3、4、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(18) 非等边三角形

14 【3、4、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(19)

15 【3、3、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(20)

一、单项选择题:共20小题,每小题2 分,满分40分。

1.软件测试的目的:( c )

A. 避免软件开发中出现的错误

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

无效等价类

是否三角形的三条边 A>0 (1) A≤0 (7)

B>0 (2) B≤0 (8)

C>0 (3) C≤0 (9)

A+B>C (4) A+B≤C (10)

A+C>B (5) A+C≤B (11)

B+C>A (6) B+C≤A (12)

是否等腰三角形 A=B (13) A≠B AND A≠B AND B≠C (16)

B=C (14)

C=A (15)

是否等边三角形 A=B AND A=C AND B=C(17) A≠B (18)

A≠B (19)

A≠B (20)

编号 【A B C 】 覆盖等价类 输出

1 【3、4、5】 (1)、 (2)、 (3)、 (4)、 (5)、 (6) 一般三角形

2 【0、1、2】 (7)、 不能构成三角形

3 【1、0、2】 (8)、

4 【1、2、0】 (9)、

5 【1、2、3】 (10)、

6 【1、3、2】 (11)、

7 【3、1、2】 (12)、

8 【3、3、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(13) 等腰三角形

9 【3、4、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(14)

10 【3、4、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(15)

11 【3、4、5】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(16) 非等腰三角形

12 【3、3、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(17) 等边三角形

13 【3、4、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(18) 非等边三角形

14 【3、4、3】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(19)

15 【3、3、4】 (1)、 (2)、 (3)、 (4)、 (5)、 (6)、(20)

一、单项选择题:共20小题,每小题2 分,满分40分。

1.软件测试的目的:( c )

A. 避免软件开发中出现的错误

[外链图片转存中…(img-SRLf9oOK-1715484692031)]
[外链图片转存中…(img-v3Y0a6IE-1715484692032)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值