201711评测下午真题

第 1 题

阅读下列 C 程序,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【C程序】
Int DoString(charstring){
  char  
argv[100];
  Int     argc=1; 
  while(1) {                                                                                //1
     while(string&& string!='-')                                                  //2,3
         String++;                                                                         //4
     if(!string)                                                                            //5
         break;                                                                             //6
     argv[argc]=string;               
     while(
string && string!="&& string!='\n'&& *string!= '\t')   //7,8,9,10
       string++;                                                                          //11
    argc++;                                                                                 //12
  }
  return 0;                                                                                 //13

【问题1】
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】
请给出问题2中控制流图的线性无关路径。

答案与解析

  • 试题难度:较难
  • 知识点:下午题>白盒测试
  • 试题答案:【问题1】(3分)
    string && String !=’-’   ;
    !string && String =’-’  (或者是判定结果出现真假的等价答案)
    !String              ;
    String
    string && String !=’ ’ &&String !=’\n’ && String!=’\t’  ;
    string && String =’ ’ &&String =’\n’ && String=’\t’ (或者是判定结果出现真假的等价答案)
     【问题2】(8分)

    V(g)=8
    【问题3】(4分)
    1、2、5、6、13.
    1、2、3、5、6、13
    1、2、3、4、2、5、6、13
    1、2、5、7、12、1. . .
    1、2、5、7、8、12、1. . .
    1、2、5、7、8、9、12、1. . .
    1、2、5、7、8、9、10、12、1. . .
    1、2、5、7、8、9、10、11、7、12、1. . .
  • 试题解析:
    【问题1】 
    需要找出判定覆盖所需的逻辑条件,这种主要从两种结构中查找,即条件结构和循环结构。
    题干代码中有条件为:
    while(*string&& *string!='-') ;if(!*string)   ;while(*string && *string!="&& *string!='\n'&& *string!= '\t')
    满足问题1要求的条件为括号中的代码。即参考答案中的代码段。
    【问题2】  
    需要绘制控制流图,此题代码中有多个循环,所以在绘制控制流图的时候,要注意走向,对于循环来说,真假都是从开始结点出发,只是若循环条件为真,则执行循环体,若循环条件为假,则结束循环,执行循环后面的代码。
    控制流图的效果图为参考答案中的图例。环路复杂度为8,可以数结点数和边数,通过公式边数-结点数+2求得;也可以数区域数,数区域数记得是封闭的区域数+1。
    【问题3】  
    列出线性无关路径:
    此题能回答正确的关键在于问题2的控制流图是否画对。线性无关路径即不走与之前完全重复的路径。也就是走之前至少有一条没有走过的路径。

第 2 题

阅读下列说明,回答问题 1至问题 3,将解答填入答题纸的对应栏内。
【说明】
某银行 B 和某公司 C 发行联名信用卡,用户使用联名信用卡刷卡可累计积分,积分累计规则与刷卡金额和刷卡日期有关,具体积分规则如表 2-1 所示。此外,公司 C 的 会员分为普通会员、超级会员和 PASS 会员三个级别,超级会员和 PASS 会员在刷卡时有额外积分奖励,奖励规则如表 2-2 所示。

 表 2-1 积分规则

</div>                                                                   表 2-2  额外积分奖励规则</span>

银行 B 开发了一个程序来计算用户每次刷卡所累积的积分,程序的输入包括会员级别 L、刷卡日期D 和刷卡金额 A,程序的输出为本次积分 S。其中,L 为单个字母且大小写不敏感,D 由程序直接获取系统日期,A 为正浮点数最多保留两位小数,S 为整数。

【问题1】(5分)
采用等价类划分法对该程序进行测试,等价类表如下表所示,请补充表2-3中空(1)~(5)

表2-3 等价表

【问题2】(9分)
根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)~(9)
表 2-4测试用例

【问题3】(6分)
如果规定了单次刷卡的积分上限为 20000(即 S 取值大于等于 0 且小于等于 20000), 则还需要针对 S 的取值补充一些测试用例。假设采用等价类划分法和边界值分析法来补充用例,请补充表 2-5、表2-6中的空(1)~(6)。
表 2-5补充等价类

 表 2-6 边界值



**答案与解析** - 试题难度:较难 - 知识点:下午题>黑盒测试 - 试题答案:

【问题1】(5分)
1:P
2:12月12日
3:正浮点数带2位小数
4:MSP以外的字母
5:非正浮点数
【问题2】(9分)
1:1000
2:500.25 (500)
3:3、6、8
4:1月8日 (其他日期)
5:1 (非字母)
6:N/A
7:K (MSP以外的单个字母)
8:1、7、12
9:500.12345 (多于两位小数的正浮点数)
【问题3】(6分)
1:S<0
2:s>20000
3:S=19999
4:S=-1
5:S=20001
6:S=1

- 试题解析:此题只提醒大家:倍数。要注意一下。
不然,在回答问题2中的1,2小问,很麻烦。
特定的值,是可以不同于参考答案的。只要符合题意,满足要求的都可以作为测试数据。
只是在能写测试等价类的时候,尽量写这些,因为没有争议。而测试数据多种多类。 ### 第 3 题

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司欲开发一套基于Web的通用共享单车系统。该系统的主要功能如下:
1.商家注册、在线支付;后台业务员进行车辆管理与监控、查询统计、报表管理、价格设置、管理用户信息。
2.用户输入手机号并在取验证码后进行注册、点击用车后扫描并获取开锁密码、锁车(机械锁由用户点击结束用车)后 3 秒内显示计算的费用,用户确认后支付、查看显示时间与路线及其里程、预约用车、投诉。

【问题1】(6分)
采用性能测试工具在对系统性能测试时,用Apdex(应用性能指数)对用户使用共享单车的满意度进行量化,系统需要满足Apdex指数为0.90以上。
Apdex 量化时,对应用户满意度分为三个区间,通过响应时间数值 T 来划分,T 值代表着用户对应用性能满意的响应时间界限或者说是“门槛”(Threshold) 。
针对用户请求的响应时间,Apdex 的用户满意度区间如下 :
满意: (0,T]让用户感到很愉快
容忍:(T, 4T] 慢了一点,但还可以接受,继续这一应用过程
失望: >4T,太慢了,受不了了,用户决定放弃这个应用
Apdex的计算如下:
Apdex= (小于T的样本数+T~4T 的样本数/2) /总样本数
针对用户功能,本系统设定 T=2 秒,记录响应时间,统计样本数量,2 秒以下记录数3000,2~8秒记录数1000,大于8秒500。
请计算本系统的Apdex指数,并说明本系统是否达到要求。
【问题2】(6分)
系统前端采用HTML5实现,已使用户可以通过不同的移动设备的浏览器进行访问。设计兼用行测试矩阵,对系统浏览器兼容性进行测试。
【问题3】(8分)
针对用户手机号码获取验证码进行注册的功能,设计4个测试用例。(假设合法手机号码为11位数字,验证码为4位数字)

**答案与解析** - 试题难度:较难 - 知识点:下午题>web测试 - 试题答案:【问题1】  (6分)
未达到要求。
因为Apdex = (3000+1000/2)/(3000+1000+500) = 3500/4500 = 0.78 < 0.90.,所以未达到要求。
【问题2】  (6分)

【问题3】  (8分)

用例1:11位数字的手机号码,4位数字验证码:188 1234 1234,1234
用例2:非11为数字的手机号码,4位数字验证码:188 1234 12345 ,1234
用例3:11位数字的手机号码,非4位数字验证码:188 1234 1234,12345
用例4: SQL注入共计或XSS攻击的测试用:-- 

- 试题解析:问题1需要注意:大于8秒500。这也是样本数量总数中的一部分。不能落掉。
其他解析略。 ### 第 4 题 阅读下列问题,回答问题1到问题4,将解答写在答题纸的对应栏内。
【说明】
图4-1 是某企业信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:
图4-1 类图

(1)类Manager重新实现了类 Employee的方法 calSalary(),类Manager中的方法querySalary()继承了其父类Employee的方法querySalary()。
(2)创建类 Employee的对象时,给其设置职位(position)、基本工资(basicSalary)等信息。方法calSalary()根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算员工工资。
(3)类Department中的方法statSalary中首先调用了该类的方法load(),获取本部门员工列表,然后调用了类 Employee中的方法calSalary()。
现拟采用面向对象的方法进行测试。

【问题1】
图4-1 所示的类图中,类manager 和类Employee之间是什么关系?该关系对测试的影响是什么?
【问题2】
(1)类Manager重新实现了类 Employee的方法calSalary(),这是面向对象的什么机制?是否需要重新测试该方法?
(2)类Manager中的方法querySalary()继承了其父类 Employee 的方法querySalary(),是否需要重新测试该方法?
【问题3】
(1)请结合题干说明中的描述,给出测试类Employee 方法calSalary( )时的测试序列。
(2)请给出类图4- 1 中各个类的测试顺序。
【问题4】
从面向对象多态特性考虑,测试方法statSalary()时应注意什么?

**答案与解析** - 试题难度:较难 - 知识点:下午题>面向对象测试 - 试题答案:

【问题1】(5分)
泛化关系;(继承关系)
继承的成员函数是否需要测试;对父类的测试是否能搬到子类上
【问题2】(6分)
多态
需要重新测试,在子类中重新进行了定义,需要重新测试
不需要重新测试
【问题3】(6分)
测试序列:Employee-calWorkdays()-setBonus()-calSalary()-querySalary()
测试顺序:Employee-Manager-Department
【问题4】(3分)
只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑。

- 试题解析:

【问题1】
继承(UML图中对应泛化关系)是指一个类直接使用另一个类的属性和方法,即子类具有父类的属性和方法。
类Employee和类Manager之间是继承关系
继承关系对面向对象测试的影响主要体现在两个方面:若子类某些方法继承了其父类,方法进行了修改,则需要进行测试;继承的方法没有修改,用父类的方法,但该方法调用了子类修改过的其他方法时,也需要对该方法进行测试。
【问题2】
在面向对象技术中,不同的对象收到同一消息产生完全不同的结果,称为多态;
多态可以利用类继承层次来支持,本题中由于类Manager中的方法calSalary()和其父类Employee中的该方法有了不同的实现,因此需要重新测试
子类Manager中的方法querySalary()继承了其父类Employee的方法querySalary(),没有重新实现,因此不需要重新测试
【问题3】
题干说明,方法擦了Salary()根据个人的基本工资,当月工资天数和奖金等按特定规则计算,因此需要先计算天数、奖金,才能计算工资,最后才能查询工资。
由类结构可以分析出,Employee应该先测,而Department依赖于Manager,因此,Manager应先于Department测试式
【问题4】
题干描述,方法stat Salary()需要调用Employee中的calSalary()。而该方法在Employee和Manager中有不同的实现,因此需要同时考虑Employee和Manager中的calSalary()

### 第 5 题

阅读下列说明,回答问题 1至问题 3, 将解答填入答题纸的对应栏内。
【说明】
某飞行器供油阀控制软件通过控制左右两边的油箱BL、BR 向左右发动机 EL、ER 供油,既要保证飞行器的安全飞行,又要保证飞行器的平衡,该软件主要完成的功能如下:
(1)无故障情况下,控制左油箱 BL 向左发动机 EL 供油,右油箱BR向右发动机 ER供油,不上报故障;
(2)当左油箱 BL 故障时,控制右油箱BR分别向左、右发动机EL和 ER供油,并上报二级故障——左油箱故障;
(3)当右油箱 BR故障时,控制左油箱BL 分别向左、右发动机EL 和 ER 供油,并上报二级故障——右油箱故障;
(4)当左发动机BL 故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL 还是右油箱 BR 向右发动机 ER 供油,并上报一级故障——左发动机故障;
(5)当右发动机ER故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱且还是右油箱 BR 向左发动机BL 供油,并上报一级故障——右发动机故障;
(6)当一个油箱和一个发动机同时故障时,则无故障的油箱为无故障发动机供油, 并上报一级故障——故障油箱和发动机所处位置;
(7)当两个油箱或两个发动机同时故障或存在更多故障时,则应进行双发断油控制, 并上报特级故障——两侧油箱或两侧发动机故障;
(8)故障级别从低级到高级依次为二级故障、一级故障和特级故障,如果低级故障和高级故障同时发生,则只上报最高级别故障。

【问题1】 (6 分)
覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、条件覆盖率和 MC/DC 覆盖率作为度量指标。
在实现第 6 条功能时,设计人员采用了下列算法:
if   ((BL==故障)  &&  ( EL==故障))
{BR供油ER;BL断油;EL断油;}
if   ((BL==故障)  &&  ( ER==故障))
    {BR供油EL;BL断油;ER断油;}
if   ((BR==故障)  &&  ( EL==故障))
{BL供油ER;BR断油;EL断油;}
if   ((BR==故障)  &&  ( ER==故障)) 
    {BL供油EL;BR断油;ER断油;}

请指出对上述算法达到 100%语句覆盖、100%条件覆盖和 100%MC/DC 覆盖所需的最少测试用例数目,填写表 5-1 中的空(1)~(3)。

【问题2】(12分)
为了测试此软件功能,测试人员设计了表5-2所示的测试用例,请填写该表中的空(1)~(12)。
表 5-2  


【问题3】
常见的黑盒测试的测试用例设计方法包括等价类划分、决策表、因果图、边界值分析等。测试人员在针对本题设计测试时,使用哪种测试用例设计方法最恰当?

答案与解析

  • 试题难度:较难
  • 知识点:下午题>综合知识点
  • 试题答案:【问题1】  
    (1)4            (2)2               (3)4
    【问题2】  
    (1)BR          (2)BL           (3)BR             (4)BL               (5)100          (6)90           (7)断油
    (8)BL          (9)BL          (10)BR            (11)故障          (12)特级故障
    【问题3】  
    等价类划分法
  • 试题解析:【问题1】  
    对于代码条件为:
    if   ((BL==故障)  &&  ( EL==故障))
    {BR供油ER;BL断油;EL断油;}
    if   ((BL==故障)  &&  ( ER==故障))
        {BR供油EL;BL断油;ER断油;}
    if   ((BR==故障)  &&  ( EL==故障))
    {BL供油ER;BR断油;EL断油;}
    if   ((BR==故障)  &&  ( ER==故障)) 
        {BL供油EL;BR断油;ER断油;}
    是由(BL==故障) (BR==故障) ( ER==故障) ( EL==故障)四个条件组合而成的判断。

    语句覆盖:由于条件6约定,不可能同时4个条件都出现故障,所以,当一个出现故障的时候,会出现TT,TF,FT,FF的情况,所以需要4个语句才能完成语句覆盖。
    条件覆盖:由于条件6约定,不可能同时4个条件都出现故障,所以,当一个出现故障的时候,会出现TT,TF,FT,FF的情况,因此可以选项 TT,TF,FT,FF 和FF,FT,TF,TT两组测试用例。
    判定的条件有两个,共四组:当一组中的条件都为真时,即 TT,TF,FT,FF,由于是逻辑与运算,要满足MCDC必须每一组都出现TT的情况,所以综合起来,一共需要4组测试用例。


    【问题2】
    问题2的回答,要注意是的相差50L油的情况。即题干陈述中4和5的内容。
    (4)当左发动机BL 故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL 还是右油箱 BR 向右发动机 ER 供油,并上报一级故障——左发动机故障;
    (5)当右发动机ER故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱且还是右油箱 BR 向左发动机BL 供油,并上报一级故障——右发动机故障;
    【问题3】
    由于题干设计说明中是依据故障数目来进行说明,从无故障、一个故障、两个故障到多个故障进行软件设计说明,所以采用以故障数目进行等价类划分来设计测试用例方法最恰当。

results matching ""

    No results matching ""