某嵌入式系统中,存在16路数据采集通道。为了提高数据采集的可靠性,对16路采集通道均采用双余度设计;为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较。只有当该通道两个余度设备采集值均不小于45时,才表示该路通道正常。设计人员设计函数num_of_passer用于统计无故障通道数目,在该函数的设计中考虑了如下因素:11采用如下数据结构存储通道号及采集值:struct Value{ unsigned int No; //通道号,1到16unsigned short value1; //余度1采集值unsigned short value2; //余度2采集值}12当输入参数异常时,函数返回-1;13若正确统计了无故障通道数目,则返回该数目;14该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目;15调用函数sort16对存储通道号及余度采集值的数组进行排序处理。开发人员根据上述要求使用ANSI C对代码实现如下(代码中每行的第一个数字代表行号):1 unsigned int num_of_passer(struct Value array[], unsigned int num) 2 { 3 unsigned int n=0; //循环变量 4 unsigned int counter; //无故障通道数目 5 if((array==NULL)||(num==0)||(num>16)) 6 return-1; //当输入参数异常时,函数返回-1 7 sort(array); //对存储值的数组进行排序处理 8 for(n=0; n<=num; n++) 9 { 10 if((array[n].Valuel>45) 12 } 13 return counter; 14 }11、嵌入式软件中通常使用函数扇出数和注释率来衡量程序的可维护性,请计算函数num_of_passer的扇出数和注释率,并判断此函数扇出数和注释率是否符合嵌入式软件的一般要求。(6分)12、请使用代码审查的方法找出该程序中所包含的至少4处错误,指出错误所在的行号和问题描述。(8分)13、覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请分别指出对函数num_of_passer达到100%语句覆盖、100%分支覆盖和100%MC/DC覆盖所需的最少测试用例数目。(6分)

某嵌入式系统中,存在16路数据采集通道。为了提高数据采集的可靠性,对16路采集通道均采用双余度设计;为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较。只有当该通道两个余度设备采集值均不小于45时,才表示该路通道正常。设计人员设计函数num_of_passer用于统计无故障通道数目,在该函数的设计中考虑了如下因素:
11采用如下数据结构存储通道号及采集值:
struct Value
{ unsigned int No; //通道号,1到16
unsigned short value1; //余度1采集值
unsigned short value2; //余度2采集值
}
12当输入参数异常时,函数返回-1;
13若正确统计了无故障通道数目,则返回该数目;
14该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目;
15调用函数sort16对存储通道号及余度采集值的数组进行排序处理。
开发人员根据上述要求使用ANSI C对代码实现如下(代码中每行的第一个数字代表行号):
1 unsigned int num_of_passer(struct Value array[], unsigned int num)
2 {
3 unsigned int n=0; //循环变量
4 unsigned int counter; //无故障通道数目
5 if((array==NULL)||(num==0)||(num>16))
6 return-1; //当输入参数异常时,函数返回-1
7 sort(array); //对存储值的数组进行排序处理
8 for(n=0; n<=num; n++)
9 {
10 if((array[n].Valuel>45) && (array[n].value2>45))
11 counter=counter+1;
12 }
13 return counter;
14 }
11、嵌入式软件中通常使用函数扇出数和注释率来衡量程序的可维护性,请计算函数num_of_passer的扇出数和注释率,并判断此函数扇出数和注释率是否符合嵌入式软件的一般要求。(6分)
12、请使用代码审查的方法找出该程序中所包含的至少4处错误,指出错误所在的行号和问题描述。(8分)



13、覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请分别指出对函数num_of_passer达到100%语句覆盖、100%分支覆盖和100%MC/DC覆盖所需的最少测试用例数目。(6分)



参考解析

解析:11、
扇出数:1
注释率:28.6%(4/14)
嵌入式软件一般要求扇出数不大于7和注释率不小于20%,所以此函数扇出数和注释率均符合要求。
12、



13、



本题考查软件测试的一些基本概念和通过代码审查查找软件缺陷以及设计测试用例的能力。
此题目要求考生认真阅读题目所给的软件设计说明信息和软件代码,熟悉结构体数据类型和不同代码覆盖率的要求,结合软件测试的一些基本概念,在此嵌入式软件中进行实际应用。
扇出数指在结构图中,模块所属的直接下级模块个数,即本模块所调用的模块数目。模块num_of_passer中仅调用了排序模块sort,所以模块num_of_passer的扇出数为1。注释率指代码中注释的行数与代码总行数的比率,即注释行数/代码总行数×100%所得的结果。模块num_of_passer的注释率为4/14×100%=28.6%。为了保证软件的可维护性,嵌入式软件的相关标准中一般要求模块的扇出应控制在7以下,注释的行数不得少于源程序总行数的1/5。模块num_of_passer的扇出数为1,注释率为28.6%,均满足嵌入式软件的一般要求。
代码审查是不执行软件代码,而通过阅读软件代码发现代码可能存在的错误的过程。代码审查的测试内容包括检查代码和设计的一致性;检查代码执行标准的情况;检查代码逻辑表达的正确性;检查代码结构的合理性;检查代码的可读性。通过对说明的阅读,按照说明中描述的要求进行模块num_of_passer的代码审查。
阅读第1行代码,函数返回值定义为unsigned int;而在说明的第(2)条描述了当输入参数异常时,函数返回-1;这样发现说明和代码不一致,显然代码定义的unsigned int不能返回-1,此为第1处错误。修改函数返回值的定义为int类型即可。
阅读第4行代码,定义了无故障通道数目counter,在定义时未进行初始化,并且在11行使用前依然未初始化。这就导致counter的初值为非确定值,可能出错,此为第2处错误。在第4行定义counter时初始化为0或者在使用前进行初始化为0均可。
第5行代码对模块输入参数进行合法性检查,num合法值为1至16;然后查找使用num之处,在第8行对num进行了使用,但第8行使用时却从0开始,而且是小于等于num,这就意味着如果第5行num值为最大值16,在第8行就需要循环判断17次(0到16),而本题的说明中描述很清楚,最多就16路通道,此为第3处错误。但此问题的更改有两种方案,方案1可以更改第5行num>16为num>=16,缩小此参数的合法范围;方案2可以更改第8行n<=num为n<num减少循环次数。
阅读第10行代码,对每个通道采集的双余度值进行有效性判断。按照说明,当余度设备采集值均不小于45时,才表示该路通道正常;但代码中使用当余度设备采集值均大于45时,表示该路通道正常,在对边界点45的处理上与说明不一致,此为第4处错误。将第10行代码中的两个“>”符号修改为“>=”即可与说明一致。
覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标。语句覆盖率指程序中每条可执行语句至少被执行一次。分支覆盖指程序中每个判定取所有可能值至少一次。MC/DC覆盖率指在一个程序中每一种输入输出至少应出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每个判定中的每个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变。
对模块num_of_passer来说,为了使其中所有的语句至少执行一次,程序中的两种返回值必须各覆盖一次,所以为达到100%语句覆盖率,至少需要两个测试用例,即参数异常的测试用例和参数正常的测试用例。 模块num_of_passer在第5行和第10行有两处条件判断,为了使程序中每个判定取所有可能值至少一次,第5行需要取TRUE和FALSE,第10行需要取TRUE和FALSE。由于第5行取FALSE时,就能覆盖到第10行判定,同时又由于第10行的判定在一个大于一次的循环中,一个测试用例就可以覆盖到第10行的TRUE和FALSE,所以模块num_of_passer 100%的分支覆盖也最少两个测试用例就可以满足,即一个第5行取TRUE的测试用例和一个第5行取FALSE、第10行取TRUE和FALSE的测试用例即可,由于第10行的条件判断在多次循环中,取TRUE和FALSE的测试用例也比较好构造。
模块num_of_passer的组合条件也出现在第5行和第10行。对第5行的组合条件需要4个测试用例来满足MC/DC覆盖,分别为①参数array为NULL,②array不为NULL且num为0,③array不为NULL且num为大于16的值,④array不为NULL且num为1到16之间的值。对第10行的组合条件需要3个测试用例来满足MC/DC覆盖,分别为①Value1>45且Value12>45,②Value1>45且Value2<=45,③Value1<=45且Value2为任意值。由于取第5行array不为NULL且num为1到16之间值的测试用例时,程序将执行到第10行,这时由于第10行在一个多次循环中,第10行需要的3个测试用例都可以在此用例中进行覆盖,所以最少需要4个测试用例就可以使模块num_of_passer满足100%的MC/DC覆盖。

相关考题:

对被控对象进行数据采集或现场参数监视的信息通道称为后向通道。()

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某嵌入式控劁软件通过采集传感器数值来计算输出控制率,为了提高数据采集的可靠性,使用三余度采集方法进行三个通道的数据采集。 1.三余度通道数据采集及处理要求: (1)三通道采集值In_U[0]、In_U[1]、In_U[2]的正常范围为[一3.0,3.O]V,且任意两通道间差值不大于0.5V; (2)如果某通道采集值超过正常范围或者因为通道采集值造成与其它通道差值大于0.5V,则该通道数据不满足要求; (3)如果三通道值均满足要求,则取三通道中差值较小的两通道数据的平均值; (4)如果仅有一个通道数据不满足采集要求,取满足要求的两个通道数据的平均值; (5)如果多于一个通道数据不满足采集要求,取安全值0V。 2.对采集数值计算控制率的具体处理算法如下: (1)如果依据采集数据计算的控制率C1与目前实际控制率C0差值不大于0.01则使用本周期计算控制率C1进行输出控制,否则使用目前实际控制率C0输出控制.不上报传感器故障; (2)如果连续3个周期计算的控制率C1与目前实际控制率C0差值大于0.01,则上报传感器三级故障,连续超差计数清零,使用目前实际控制率C0输出控制;如果已经连续3个周期控制率超差,并上报三级故障,但第4个周期计算的控制率C1与目前实际控制率C0差值不大于0.01,则清除三级故障上报; (3)如果累计大于等于10个周期计算的控制率C1与目前实际控制率C0差值大于0.01,则上报传感器二级故障,使用目前实际控制率输出控制; (4)如果累计大于等于100个周期计算的控制率C1与目前实际控制率C0差大于0.01,则上报传感器一级故障,并清除二级故障,并切断输出控制(输出安全值0) (5)如果低级故障和高级故障同时发生,则按高级故障处理。【问题1】(9分) 为了测试采集算法,在不考虑测量误差的情况下,设计了表5-1所示的测试用例,请填写该表中的空(1)~(6)。 表5-1 测试用例 序号 输入 输出Out_A1 In_U[0] In_U[1] In_U[2] 预期输出(保留两位小数) 1 0.0V 0.0V 0.0V 0.0V 2 2.0V 2.3V 1.8V (1) 3 1.5V 1.6V 1.3V (2) 4 2.8V 2.6V 2.0V (3) 5 -3.0V -3.1V -2.8V (4) 6 2.0V 1.4V 2.6V (5) 7 3.1V 2.8V 3.2V (6) 【问题2】(9分) 为了测试控制率计算算法,在不考虑测量误差的情况下,设计了表5-2所示的用例,请完善其中的空(1)~(6)。 表5-2 测试用例 序号 前置条件 输入 输出(预期结果) 控制率超差 连续计数 控制率超差 累计计数 计算控制率C1 实际控制率C0 输出控制率 上报故障 1 0 0 1.632 1.638 1.632 无 2 0 0 1.465 1.454 (1) 无 3 (2) 6 2.358 2.369 2.369 三级故障 4 1 (3) 1.569 1.557 1.557 二级故障 5 2 9 2.221 2.234 2.234 (4) 6 0 99 1.835 1.822 (5) 一级故障 7 2 99 2.346 2.357 0 (6) 【问题3】(2分) 测试人员在设计测试用例进行采集算法测试时,发现本项目的三余度采集值的具体处理算法存在l处缺陷,请指出此处缺陷。

阅读下列说明,回答下列问题。[说明]某嵌入式系统中,存在16路数据采集通道。为了提高数据采集的可靠性,对16路采集通道均采用双余度设计;为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较。只有当该通道两个余度设备采集值均不小于45时,才表示该路通道正常。设计人员设计函数num_of_passer用于统计无故障通道数目,在该函数的设计中考虑了如下因素:11采用如下数据结构存储通道号及采集值:struct Value{ unsigned intNo;//通道号,1到16unsigned shortvalue1;//余度1采集值unsigned shortvalue2;//余度2采集值}12当输入参数异常时,函数返回-1;13若正确统计了无故障通道数目,则返回该数目;14该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目;15调用函数sort16对存储通道号及余度采集值的数组进行排序处理。开发人员根据上述要求使用ANSI C对代码实现如下(代码中每行的第一个数字代表行号):1unsigned int num_of_passer(struct Value array[], unsigned int num)2{3unsigned int n=0;//循环变量4unsigned int counter;//无故障通道数目5if((array==NULL)||(num==0)||(num>16))6return-1;//当输入参数异常时,函数返回-17sort(array);//对存储值的数组进行排序处理8for(n=0; n<=num; n++)9{10if((array[n].Valuel>45) 12}13return counter;14}1、嵌入式软件中通常使用函数扇出数和注释率来衡量程序的可维护性,请计算函数num_of_passer的扇出数和注释率,并判断此函数扇出数和注释率是否符合嵌入式软件的一般要求。2、请使用代码审查的方法找出该程序中所包含的至少4处错误,指出错误所在的行号和问题描述。3、覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请分别指出对函数num_of_passer达到100%语句覆盖、100%分支覆盖和100%MC/DC覆盖所需的最少测试用例数目。

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】某嵌入式控劁软件通过采集传感器数值来计算输出控制率,为了提高数据采集的可靠性,使用三余度采集方法进行三个通道的数据采集。1.三余度通道数据采集及处理要求:(1)三通道采集值In_U[0]、In_U[1]、In_U[2]的正常范围为[一3.0,3.O]V,且任意两通道间差值不大于0.5V;(2)如果某通道采集值超过正常范围或者因为通道采集值造成与其它通道差值大于0.5V,则该通道数据不满足要求;(3)如果三通道值均满足要求,则取三通道中差值较小的两通道数据的平均值;(4)如果仅有一个通道数据不满足采集要求,取满足要求的两个通道数据的平均值;(5)如果多于一个通道数据不满足采集要求,取安全值0V。2.对采集数值计算控制率的具体处理算法如下:(1)如果依据采集数据计算的控制率C1与目前实际控制率C0差值不大于0.01则使用本周期计算控制率C1进行输出控制,否则使用目前实际控制率C0输出控制.不上报传感器故障;(2)如果连续3个周期计算的控制率C1与目前实际控制率C0差值大于0.01,则上报传感器三级故障,连续超差计数清零,使用目前实际控制率C0输出控制;如果已经连续3个周期控制率超差,并上报三级故障,但第4个周期计算的控制率C1与目前实际控制率C0差值不大于0.01,则清除三级故障上报;(3)如果累计大于等于10个周期计算的控制率C1与目前实际控制率C0差值大于0.01,则上报传感器二级故障,使用目前实际控制率输出控制;(4)如果累计大于等于100个周期计算的控制率C1与目前实际控制率C0差大于0.01,则上报传感器一级故障,并清除二级故障,并切断输出控制(输出安全值0)(5)如果低级故障和高级故障同时发生,则按高级故障处理。问题1: (9分)为了测试采集算法,在不考虑测量误差的情况下,设计了表5-1所示的测试用例,请填写该表中的空(1)~(6)。问题2: (9分)为了测试控制率计算算法,在不考虑测量误差的情况下,设计了表5-2所示的用例,请完善其中的空(1)~(6)。问题3: (2分)测试人员在设计测试用例进行采集算法测试时,发现本项目的三余度采集值的具体处理算法存在l处缺陷,请指出此处缺陷。

在NI-DAQmx应用中何时应使用任务?()A、按照离散顺序使用通道采集数据B、按照相同的换算使用通道采集数据C、按照相同的定时和触发使用通道采集数据D、以上均不正确

电能量计量系统由安装在电厂、变电站的电度表,电能量采集终端,专用电能量采集通道(专用电话通道或数据网络通道)和安装在主站的电能量计量系统等构成。

在中兴通讯DWDM设备UnitransZXWM32(V1.1)系统中,复位NCP不会影响业务光通道,理由如下()A、主光通道业务和监控通道在单板电路上是独立设计的B、WDM系统的业务通道目前产品没有使用光交叉C、在WDM系统中NCP的角色只是对业务光通道进行监控和数据采集,不能对业务光通道进行任何操作D、由于WDM设备上各单板保留有相应的数据,复位NCP板不影响其他单板的数据,所以业务光通道不受影响E、网管上硬件或者软件复位有源OA和OTU单板,业务光通道中断

当站端采集装置无响应时,则认为该通道(),当站端采集装置通道发生故障时应发出告警,并在告警内容中提示通道故障原因。A、值班B、备用C、中断D、暂停

遥测量要进行死区运算,是为了()。A、提高通道的利用率;B、抗通道干扰;C、提高采集精度。

什么是数据采集系统的前向通道和后向通道?

设计一个完整的多通道数据采集(A/D转换系统),说明A/D通道部分应该包括哪几个环节?说明各个环节的作用。

某机房的环境监控了门碰和漏水两个信号,结果系统显示门开告警和漏水告警,现场查看均没有告警,最可能的原因是()A、配置库中通道号错误B、采集器通道配置错误C、采集器跳线错误D、信号的参数表达式错误

在中兴DWDM系统中,复位NCP不会影响业务光通道,理由如下()A、主光通道业务和监控通道在DWDM的独立设计B、WDM系统的业务通道目前产品没有使用光交叉C、在WDM系统中NCP的角色只是对业务光通道进行监控和数据采集,不能对业务光通道进行任何操作D、由于WDM设备上各单板保留有相应的数据,复位NCP板不影响其他单板的数据,所以业务光通道不受影响E、网管上硬件或者软件复位有源OA和OTU单板,业务光通道中断

在中兴DWDM系统中,复位NCP单板不会影响业务,理由是()A、WDM系统的业务通道目前产品没有使用光交叉B、由于WDM设备上各单板保留有相应的数据,复位NCP板不影响其他单板的数据,所以业务光通道不受影响C、在WDM系统中NCP的角色只是对业务光通道进行监控和数据采集,不能对业务光通道进行任何操作D、网管上硬件或者软件复位有源OA和OTU单板,业务光通道中断

在中兴DWDM系统中,复位NCP不会影响业务光通道,理由如下()。A、主光通道业务和监控通道在DWDM的独立设计B、WDM系统的业务通道目前产品没有使用光交叉C、在WDM系统中NCP的角色只是对业务光通道进行监控和数据采集,不能对业务光通道进行任何操作D、由于WDM设备上各单板保留有相应的数据,复位NCP板不影响其他单板的数据,所以业务光通道不受影响

在中兴通讯DWDM设备UnitransZXWM32(V1.1)系统中,复位NCP不会影响业务光通道,理由如下()A、主光通道业务和监控通道在单板电路上是独立设计的B、WDM系统的业务通道目前产品没有使用光交叉C、在WDM系统中NCP的角色只是对业务光通道进行监控和数据采集,不能对业务光通道进行任何操作D、由于WDM设备上各单板保留有相应的数据,复位NCP板不影响其他单板的数据,所以业务光通道不受影响

遥测量要进行死区运算,是为了()。A、提高采集精度B、提高通道的利用率C、抗通道干扰D、校验错误

信息采集系统采集的主要方式有()。A、定时自动采集B、随机召测C、在全双工通道和数据交换网络通道的数据传输中,允许终端启动数据传输过程(简称为主动上报)D、网络传输

微机保护装置中,采用“模式校验法”常用于对()的检测。A、RAMB、CPUC、出口通道D、数据采集系统

电能量系统由安装在电厂、变电站的电度表,电能量采集终端,专用电能量采集通道(专用电话通道或数据网络通道)和安装在主站的电能量系统等构成。

数据采集系统中的模拟量测量参数,其采样周期、显示周期和“不灵敏区”设置,应满足()需要,备用通道()设置。A、规范;可不进行B、规程;应按DCS厂家要求C、设计;应按设计D、机组运行;应按在线运行通道要求进行初步

遥测量需要进行死区运算,是为了()。A、提高通道的利用率B、抗通道干扰C、提高采集精度D、以上都不是

问答题设计一个完整的多通道数据采集(A/D转换系统),说明A/D通道部分应该包括哪几个环节?说明各个环节的作用。

单选题在NI-DAQmx应用中何时应使用任务?()A按照离散顺序使用通道采集数据B按照相同的换算使用通道采集数据C按照相同的定时和触发使用通道采集数据D以上均不正确

问答题多通道并行数据采集系统的组成?

单选题多通道设计是指()。A设计中存在这个多个数据采集和处理通道B一个设计中存在着多个完全相同的设计电路C设计中利用了可编程逻辑器件,可以扩展多个数据通道D设计中有很多平行的输入和输出通道

单选题以下关于DiscoveryIQClarity的双通道技术的描述中不正确的是()A双通道是GE独有的新型技术B双通道技术提高了采集效率C双通道技术是一种CT技术D双通道技术可以提高PET的灵敏度

问答题什么是数据采集系统的前向通道和后向通道?