首页
登录
从业资格
某嵌入式系统中,存在16路数据采集通道,为了提高数据采集的可靠性,对16路采集通
某嵌入式系统中,存在16路数据采集通道,为了提高数据采集的可靠性,对16路采集通
资格题库
2022-08-02
72
问题
某嵌入式系统中,存在16路数据采集通道,为了提高数据采集的可靠性,对16路采集通道均采用双余度设计,为了监控采集通道是否发生故障,对各路双余度通道采集值进行比较,只有当该通道两个余度设备采集值均不小于45时,才表示该路通道正常。设计人员设计函数num_of_passer用于统计无故障通道数目,在该函数的设计中考虑了如下因素:9采用如下数据结构存储通道号及采集值:Struct value {unsigned int No; //通道号,1到16 unsigned short Value1; //余度1采集值 unsigned short Value2; //余度2采集值 } 10当输入参数异常时,函数返回-1; 11若正确统计了无故障通道数目,则返回该数目; 12该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目。 开发人员根据上述要求使用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-1; //当输入参数异常时,函数返回-1 6)for(n=0; nimage.png=num; n++) { 7)if((array[n].Value1>45) && ((array[n].Value2>45))) 8)counter=counter+1; } 9)return counter; }1、嵌入式软件中通常使用圈复杂度来衡量程序的可维护性(一般要求圈复杂度不大于10),请计算函数num_of_passer的圈复杂度。2、作为测试人员,请参照表1序号1的方式使用代码审查的方法找出该程序中所包含的至少3处错误。
3、覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请指出对函数num_of_passer达到100%语句覆盖、100%分支(DC.覆盖和100%MC/DC覆盖所需的最少测试用例数目,如表2所示。
选项
答案
解析
1、圈复杂度:72、
3、
1、本题考查软件测试的一些基本概念和通过代码审查查找软件缺陷以及设计测试用例的能力。 此题目要求考生认真阅读题目所给的软件设计说明信息和软件代码,熟悉结构体数据类型和不同代码覆盖率的要求,结合软件测试的一些基本概念,在此嵌入式软件中进行实际应用。 控制流程图分析是一个静态的分析过程,它提供静态的度量标准技术,一般主要运用在白盒测试的方法中。控制流图是McCabe复杂度计算的基础,McCabe度量标准是将软件的流程图转化为有向图,然后以图论的知识和计算方法来衡量软件的质量。McCabe复杂度包括圈复杂度(Cyclomatic complexity)、基本复杂度、模块涉及复杂度、设计复杂度和集成复杂度等。 在软件测试的概念里,圈复杂度“用来衡量一个模块判定结构的复杂程度,数量上表现为独立线性路径条数,即合理的预防错误所需测试的最少路径条数,圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系”。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有着很大关系。 嵌入式软件中通常使用圈复杂度来衡量程序的可维护性,一般要求圈复杂度不大于10。函数num_of_passer。的流程图如图1所示。
有以下3种方法计算圈复杂度: (1)没有流程图的算法:基数为1,碰到以下项加1:分支数(如if、for、while和do while);switch中的case语句数;如果条件是2个复合条件的话,则加2,否则加1。 (2)给定流程图G的圈复杂度V(G),定义为V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量。 (3)给定流程图G的圈复杂度V(G),定义为V(G)=P+1,P是流图G中判定结点的数量。 按第1种没有流程图的算法,函数num_of_passer中一个for,两个if,但是一个if是3个复合条件应该加3,另一个if是两个组合条件,应该加2,所以圈复杂度为基数(1)+for(1)+if(3)+if(2)=7,圈复杂度为7。 按第2种圈复杂度V(G),定义为V(G)=E-N+2算法,函数num_of_passer流程图中E为16,N为11,所以V(G)=16-11+2=7。 按第3种圈复杂度V(G),定义为V(G)=P+1,函数num_of_passer流程图中P为6,所以V(G)=P+1=6+1=7。 上述3种算法中的任意方法,函数num_of_passer的圈复杂度都计算为7。2、代码审查是不执行软件代码,而通过阅读软件代码发现代码可能存在的错误的过程。代码审查的测试内容包括检查代码和设计的一致性;检查代码执行标准的情况;检查代码逻辑表达的正确性;检查代码结构的合理性;检查代码的可读性。通过对说明的阅读,按照说明中描述的要求进行函数num_of_passer的代码审查。 阅读第1行代码,函数返回值定义为unsigned int;而在说明的第(2)条描述了当输入参数异常时,函数返回-1;这样发现说明和代码不一致,显然代码定义的unsigned int不能返回-1,此为第1处错误。修改函数返回值的定义为int类型即可。 阅读第3行代码,定义了无故障通道数目counter,在定义时未进行初始化,并且在第8行使用前依然未初始化。这就导致counter的初值为非确定值,可能出错,此为第2处错误。在第3行定义counter时初始化为0或者在使用前进行初始化为0均可。 阅读第4行代码,对模块输入参数进行合法性检查,num合法值为1至16;然后查找使用num之处,在第6行对num进行了使用,但第6行使用时却从0开始,而且是小于等于num,这就意味着如果第4行num值为最大值16,在第6行就需要循环判断17次(0到16),而本题的说明中描述很清楚,最多就16路通道,此为第3处错误。但此问题的更改有两种方案,方案1可以更改第4行num>16为num>=16,缩小此参数的合法范围;方案2可以更改第6行n<=num为n<num减少循环次数。 阅读第7行代码,对每个通道采集的双余度值进行有效性判断。按照说明,当余度设备采集值均不小于45时,才表示该路通道正常;但代码中使用当余度设备采集值均大于45时,表示该路通道正常,在对边界点45的处理上与说明不一致,此为第4处错误。将第7行代码中的两个“>”符号修改为“>=”即可与说明一致。3、覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和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_passer100%的分支覆盖也最少两个测试用例就可以满足,即一个第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://tihaiku.com/congyezige/2424789.html
本试题收录于:
中级 嵌入式系统设计师题库软件水平考试初中高级分类
中级 嵌入式系统设计师
软件水平考试初中高级
相关试题推荐
关于羊水检查描述,正确的是A.羊水中卵磷脂/鞘磷脂比值>2提示胎儿神经系统发育成
处于活动期的系统性红斑狼疮患者,其辅助检查可能出现A.血沉降低 B.免疫球蛋白
不能诱发产褥期泌尿系统感染的因素是A.女性尿道短、直,细菌容易上行感染 B.分
在女性生殖系统肿瘤中,患病年龄分布呈双峰状的是A.子宫内膜异位症B.卵巢恶性肿瘤
系统性红斑狼疮往往导致多脏器受累,最常见的受损害部位是A.胰腺B.胃肠道C.肝D
巨幼细胞性贫血患者常出现神经系统症状,其主因是A.叶酸和维生素B缺乏 B.铁剂
新生儿化脓性脑膜炎,脑膜刺激征不明显是由于A.婴幼儿神经系统发育不完善 B.免
以下哪项是影响小儿生长发育的最基本因素A.神经系统发育状况 B.发育的顺序
A.神经系统 B.淋巴系统 C.循环系统 D.生殖系统 E.消化系统发育
制订计划要全面考虑系统中各构成部分的关系以及它们与环境的关系,进行统筹规划。遵循
随机试题
Thecreationofauniversallanguageunitingallmankindisanideathatha
AllthefollowingsentenceshaveanobjectclauseEXCEPT______.A、Idon’tknowwh
[originaltext]HowdoAmericanhusbandsfeelabouthavingworkingwives?Ma
A、SheisaJapanese.B、ShecomesfromGermany.C、SheisanAmericancitizen.D、S
TheworstrecessionsinceWorldWarIItookplaceonthehighstreet,witho
Choiceblindness:Youdon’tknowwhatyouwant[A]Wehaveall
组合电器气体外逸在事故发生后15min之内,只准抢救人员进入室内。
某小型企业拟新建检修车间、办公附属房屋和10/0.4kV车间变电所各一处。变电所
施工方案经济评价常用的方法是( )。A.因素分析法 B.排列图法 C.综合
下列航班信息显示系统建设环节中,应在系统初验之前完成的有()。A、系统联调 B
最新回复
(
0
)