试卷详情

2021年软件评测师模拟试题3

开始做题

试卷预览

问答题

【说明】下图是某学校信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

(1) 类Manager重新实现了类Student的方法 calScore( ),类Manager中的方法calWorkDays( )继承了其父类Employee的方法calWorkDays ( )。(2)创建类 Student的对象时,方法calStudent( ),根据每位同学的情况计算分数。(3)类Department中的方法statScore()中首先调用了该类的方法load( ),获取本班学生列表,然后调用了类 Student中的方法calScore( )。现拟采用面向对象的方法进行测试。 【问题1】(5分)图4-1 所示的类图中,类manager 和类Employee之间是什么关系?该关系对测试的影响是什么?

【问题2】(6分)(1) 类Manager重新实现了类Student的方法calScore( ),这是面向对象的什么机制?是否需要重新测试该方法?(2) 类Manager中的方法calWorkDays ( )继承了其父类 Student 的方法calWorkDays ( ),是否需要重新测试该方法?【问题3】(6分)请给出类图中各个类的测试顺序。【问题4】(3分)从面向对象多态特性考虑,测试方法statScore( )时应注意什么?

查看答案开始考试

正确答案:

本题解析:

【问题1】

(1) 泛化关系;(2) 继承的成员函数是否需要测试;对父类的测试是否能用到子类上。【问题2】

(1)、多态机制;需要重新测试,因为在子类中重新进行了定义,所以需要重新测试;(2)、不需要重新测试,因为子类继承了父类的方法,只要父类的该方法通过测试了即可。【问题3】

先测试Student类,然后Manager类,最后测试Department类。【问题4】

只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑即可。先测试基类,然后再分别依据输入数据设计不同的测试用例。

【解析】

【问题1】

考察类图的泛化关系。泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类,泛化关系通常用带空心三角形的直线来表示。对泛化关系有三个要求:1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;2、子类中除了与父类一致的信息以外,还包括额外的信息;3、可以使用父类的实例的地方,也可以使用子类的实例;

【问题2】

该题考察面向对象的多态机制和继承机制。多态就是在使用父类的引用调用方法的时候,不是使用父类中的方法,而是父类指向的对象的方法,这样就实现了多态。继承是指在一个类基础上定义一个新类,原有的类叫做父类,新生成的类叫子类,继承的过程是一个从一般到特殊的过程。【问题3】

由类结构可以分析出,Student应该先测,而Department依赖于Manager,因此,Manager应先于Department测试 【问题4】

题干描述,方法statScore()需要调用Student中的calScore()。而该方法在Student和Manager中有不同的实现,因此需要同时考虑Student和Manager中的calScore()。

问答题

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某快递公司欲开发一套基于Web的通用订单管理系统。该系统的主要功能如下:1.用户注册、在线下单、订单实时跟踪提醒等功能;后台管理员进行订单管理与监控、查询统计、管理用户信息等。2.用户输入手机号并在获取验证码后进行注册,用户确认下单后支付、查看订单情况、投诉等。 【问题1】(6分)采用性能测试工具在对系统性能测试时,用Apdex(应用性能指数)对用户使用共享单车的满意度进行量化,系统需要满足Apdex指数为0.78以上。Apdex 量化时,对应用户满意度分为三个区间,通过响应时间数值 T 来划分,T 值代表着用户对应用性能满意的响应时间界限或者说是“门槛” (Threshold) 。针对用户请求的响应时间,Apdex 的用户满意度区间如下 :满意: (0,T]让用户感到很愉快;容忍:(T, 4T] 慢了一点,但还可以接受,继续这一应用过程;失望: >4T,太慢了,受不了了,用户决定放弃这个应用;Apdex的计算如下:Apdex= (小于T的样本数+T~4T 的样本数/2) /总样本数针对用户功能,本系统设定 T=2秒,记录响应时间,统计样本数量,2 秒以下记录数10000,2~8秒记录数4000,大于8秒1000。请计算本系统的Apdex指数,并说明本系统是否达到要求。【问题2】(6分)系统前端采用HTML5实现,使用户可以通过不同电脑和移动设备的浏览器进行访问。设计兼容性测试矩阵,对系统浏览器兼容性进行测试。

【问题3】(8分) 针对用户手机号码获取验证码进行注册的功能,设计4个测试用例。(假设合法手机号码为11位数字,验证码为4位数字)。

查看答案开始考试

正确答案:

本题解析:

【问题1】达到了要求。因为Apdex = (10000+4000/2)/(10000+4000+1000) = 12000/15000 = 0.8> 0.78,所以达到了要求。【问题2】

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

【问题3】

用例1:11位数字的手机号码,得到4位数字验证码;(正确测试)用例2:小于11位数字的手机号码,无验证码;用例3:大于11位数字的手机号码,无验证码;用例4: 11位有非数字的手机号码,无验证码 ;

【解析】

【问题1】

本小题考查根据题意进行简单的计算,不要被大量的文字描述吓到,根据提示的公式和数据计算,其实本题是送分题。

【问题2】本小题考查兼容性测试用例矩阵的简单应用,要求对不同的移动设备的浏览器进行兼容性测试。只需要把设计的思路表示出来即可,可以不用写上具体的移动设备平台和浏览器,具体的情况可以在实践中根据实际要求设计。【问题3】本小题考查测试用例设计的简单应用,用例很多,只需要设计符合条件的4条即可,最好包含有效等价类和无效等价类。

问答题

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】下图是某商场购物系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

(1) 类Manager重新实现了类Customer的方法 calMoney( );(2) 方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。(3)类Admin中的方法statMoney()中首先调用了该类的方法load( ),获取顾客列表,然后调用了类Customer中的方法calMoney( )。现拟采用面向对象的方法进行测试。 【问题1】(4分)图4-1 所示的类图中,类Manager和类Customer之间是什么关系?该关系对测试的影响是什么?【问题2】(6分)(1) 类Manager重新实现了类Customer的方法calMoney( ),这是面向对象的什么机制?是否需要重新测试该方法?(2) 类Manager中的方法getMoney ( )继承了其父类 Customer 的方法getMoney ( ),是否需要重新测试该方法?【问题3】(6分)(1)请结合题干中说明的描述,给出测试类Customer方法calMoney()时的测试序列;(2)请给出类图中各个类的测试顺序。【问题4】(4分)从面向对象多态特性考虑,测试方法statMoney( )时应注意什么?

查看答案开始考试

正确答案:

本题解析:

【问题1】(1) 泛化关系;(2) 继承的成员函数是否需要测试;对父类的测试是否能用到子类上。【问题2】

(1)、多态机制;需要重新测试,因为在子类中重新进行了定义,所以需要重新测试;(2)、不需要重新测试,因为子类继承了父类的方法,只要父类的该方法通过测试了即可。【问题3】

(1) 测试序列:setBuyNum( )——setScanNum( )——calMoney( ) ——getMoney( ) ;(2)先测试Customer类,然后Manager类,最后测试Admin类。【问题4】

只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑即可。先测试基类,然后再分别依据输入数据设计不同的测试用例。

【解析】

【问题1】

考察类图的泛化关系。泛化关系也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类,泛化关系通常用带空心三角形的直线来表示。对泛化关系有三个要求:1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;2、子类中除了与父类一致的信息以外,还包括额外的信息;3、可以使用父类的实例的地方,也可以使用子类的实例;【问题2】

该题考察面向对象的多态机制和继承机制。多态就是在使用父类的引用调用方法的时候,不是使用父类中的方法,而是父类指向的对象的方法,这样就实现了多态。继承是指在一个类基础上定义一个新类,原有的类叫做父类,新生成的类叫子类,继承的过程是一个从一般到特殊的过程。【问题3】

根据题干提示,方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。类之间测试的先后关系可以参考各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。【问题4】

题干描述,方法statMoney()需要调用Customer中的calMoney()。而该方法在Customer和Manager中有不同的实现,因此需要同时考虑Customer和Manager中的calMoney()。

问答题

【说明】为了庆贺成立10周年,某书店为购买不同数量的顾客采取不同的优惠活动,其报价规则如下表所示.:1、 购买1-20本书可以享受九折优惠;2、 购买21-40本书可以享受八五折优惠;3、 以此类推,每增加20本书,就可以享受到更加优惠的折扣,100本封顶(即不考虑超过100本的情况)。现在该商家开发一个软件,输入为商品数:X(1<=X<=100),输出为所付的款:Y。问题1:(7分)请采用等价类划分法为该软件设计测试用例(不考虑X为非整数的情况)

问题2:(10分)请采用边界值分析法为该软件设计测试用例

问题3:(3分)列举除了等价类划分法和边界值分析法以外的三种常见的黑盒测试用例测试方法。

查看答案开始考试

正确答案:

本题解析:

问题1:用例1:0 用例2:1~20中任意一个数用例3:21~40中任意一个数 用例4:41~60中任意一个数用例5:61-80 中任意一个数 用例6:81-100 中任意一个数用例7:101 问题2:0、1、2、19、20、21、22、39、40、41、42、59、60、61、62、79、80、81、82、99、100、101

问题3:错误推测法、因果图法、场景法、正交试验法等任意三种即可。

【解析】

问题1:

本小题考查黑盒测试用例设计中的等价类划分法。等价类划分法:把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。本题中主要范围限制为1<=X<=100,即可以划分为两个无效和一个有效等价,但由于每一个小的等价类是单独处理的,因此需要再进一步的划分。划分等价类的6条原则:(1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类;(2)在输入条件规定了输入值的集合或者规定了必须如何的条件的情况下,可以确立一个有效等价类和一个无效等价类;(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类;(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类;(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则);(6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则再将该等价类进一步地划分为更小的等价类;

问题2:本小题考查黑盒测试用例设计中的边界值分析法。边界值分析法:对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。边界值设计测试用例,应遵循的原则:(1)如果输入条件规定了值得范围,则应取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据;(2)如果输入条件规定了值得个数,则用最大个数、最小个数、比最小个数少、比最大个数多1的数作为测试数据;(3)根据规格说明的每个输出条件,使用前面的原则(1);(4)根据规格说明的每个输出条件,应用前面的原则(2);(5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例;(6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例;(7)分析规格说明,找出其他可能的边界条件;依据边界值设计测试用例的原则,测试用例应选择:0、1、2、19、20、21、22、39、40、41、42、59、60、61、62、79、80、81、82、99、100、101 问题3:本小题考查常见的黑盒测试用例的设计方法。黑盒测试的方法有等价类划分、边界值分析、因果图法、判定表法、正交试验法、功能图法、场景法、错误推测法等。因此本题可选:错误推测法、因果图法、判定表法、正交试验法、功能图法、场景法中的任意3种即可。

问答题

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。

gz_open (const char*mode) { char*p= (char*)mode; //1 char fmode[4]; char*m=fmode; char smode= '\0'; charlevel='\0\'; intstrategy=0; do { if (*p=='r') //2 smode -'r'; //3 if (*p>='O'&&*p<='9') { //4,5 level=*p-'0'; //6 } else if (*p=='f') { //7 strategy=1; //8 }else { //9 *m++=*p; } *p++; //10 }while (m!=fmode+sizeof (fmode)); //11 }

1、请给出满足100%DC(判定覆盖)所需的逻辑条件。

2、请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG.。

3、假设函数gz_open的参数mode是由26个小写字母'a'-'z'、数字'0'-'9'以及空格组成的字符串,请使用基本路径测试法构造1个测试用例,使之覆盖所有基本路径。

查看答案开始考试

正确答案:

本题解析:

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

本题考查白盒测试法的应用。

本问题考查白盒测试用例设计方法中的判定覆盖法。

判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次"真"值和"假"值,从而使程序的每一个分支至少都通过一次。本题中程序有4个判定,所以满足判定覆盖一共需要8个逻辑条件,如下表所示。

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

控制流图

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

环路复杂度V(G)=6

[解析] 本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。

控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

根据题中程序绘制的控制流图如下所示。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,if(*p>='0'&&*p<='9')这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。

中级软件评测师,模拟考试,2021年软件评测师模拟试题3

环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度,数量上表现为独立路径的条数,即合理地预防错误所需测试的最少路径条数。环路复杂度等于图中判定结点的个数加1,图中判定结点个数为5,所以V(G)=6。

3、构造一个6个字符构成的字符串(设为x,y,z,u,v,w 6个字符),使得每个字符覆盖一条基本路径。其中,x='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。例如,mode="rOf aa"。

[解析] 本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据控制流图和环路复杂度设计测试用例。注意环路复杂度只是测试用例数的上限。

本题中程序的环路复杂度为6,因此测试用例上限为6,但本题程序比较特殊,只需要一个测试用例即可实现。例如,构造一个6个字符构成的字符串(设为x,y,z,u,v,w6个字符),使得每个字符覆盖一条基本路径即可。其中,X='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。

其他考生还关注了更多 +