阅读以下关于某嵌入式系统多路数据采集的说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某嵌入式系统中,存在16路数据采集通道,为了提高数据采集的可靠性,对16路采集通道均采用双余度设计,为了监控采集通道是否发生故障,对各路双余度通

admin2016-11-11  34

问题 阅读以下关于某嵌入式系统多路数据采集的说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
    某嵌入式系统中,存在16路数据采集通道,为了提高数据采集的可靠性,对16路采集通道均采用双余度设计,为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较,只有当该通道两个余度设备采集值均不小于45时,才表示该路通道正常。设计人员设计函数num of passer用于统计无故障通道数目,在该函数的设计中考虑了如下因素:
    (1)采用如下数据结构存储通道号及采集值:
    Struct value
    {unsigned int    No;    //通道号,1到16
    unsigned short  Value1;  //余度1采集值
    unsigned short  Value2;  //余度2采集值
    }
    (2)当输入参数异常时,函数返回-1;
    (3)若正确统计了无故障通道数目,则返回该数目;
    (4)该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目。
    开发人员根据上述要求使用ANSI C对代码实现如下(代码中第一个数字代表行号):
    1)unsigned int num_of_passer(struct value array[],unsigned int num)
    {
    2)    unsigned int n=0;    //循环变量
    3)    unsigned int counter;    //无故障通道数目
    4)    if((array==NULL)||(num==0)||(num>16))
    5)    return-i;    //当输入参数异常时,函数返回-1
    6)    for in=0;  n<=num;  n++)
           {
    7)    if((array[n].Value1>45)&&((array[n].Value2>45)))
    8)    counter=counter+1;
       }
    9)    return counter;
        }
【问题3】
覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请指出对函数num_of_passer达到100%语句覆盖、100%分支(DC)覆盖和100%MC/DC覆盖所需的最少测试用例数目。

选项

答案[*]

解析 覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标。语句覆盖率指程序中每条可执行语句至少被执行一次。分支覆盖指程序中每个判定取所有可能值至少一次。MC/DC覆盖率指在一个程序中每一种输入输出至少应出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每个判定中的每个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。对函数num_of_passer来说,为了使其中所有的语句至少执行一次,程序中的两种返回值必须各覆盖一次,所以为达到100%语句覆盖率,至少需要两个测试用例,即参数异常的测试用例和参数正常的测试用例。
    函数num_of_passer在第4行和第7行有两处条件判断,为了使程序中每个判定取所有可能值至少一次,第4行需要取TRUE和FALSE,第7行需要取TRUE和FALSE。由于第4行取FALSE时,就能覆盖到第7行判定,同时又由于第7行的判定在一个大于一次的循环中,一个测试用例就可以覆盖到第7行的TRUE和FALSE,所以函数num_of_passer 100%的分支覆盖也最少两个测试用例就可以满足,即一个第4行取TRUE的测试用例和一个第4行取FALSE、第7行取TRUE和FALSE的测试用例即可,由于第7行的条件判断在多次循环中,取TRUE和FALSE的测试用例也比较好构造。函数。num_of_passer的组合条件也出现在第4:行和第7行。对第4行的组合条件需要4个测试用例来满足MC/DC覆盖,分别为①参数array为NULL,②array不为NULL且num为0,③array不为NULL且num为大于16的值,④array不为NULL且num为1到16之间的值。对第7行的组合条件需要3个测试用例来满足MC/DC覆盖,分别为①Value1>45且Value2>45,②Value1>45且Value2<=45,⑨Value1<=45且Value2为任意值。由于取第4行array不为NULL且num为1到16之间值的测试用例时,程序将执行到第7行,这时由于第7行在一个多次循环中,第7行需要的3个测试用例都可以在此用例中进行覆盖,所以最少需要4个测试用例就可以使函数num_of_passer满足100%的MC/DC覆盖。
转载请注明原文地址:https://jikaoti.com/ti/i6I7FFFM
0

最新回复(0)