问答题
.阅读下列说明,回答下列问题。
【说明】 某飞行器供油阀控制软件通过控制左右两边的油箱B
L、B
R向左右发动机E
L、E
R供油,既要保证飞行器的正常飞行,又要保证飞行器的平衡,该软件主要完成的功能如下:
(1)无故障情况下,控制左油箱B
L向左发动机E
L供油,右油箱B
R向右发动机E
R供油,不上报故障;
(2)当左油箱B
L故障时,控制右油箱B
R分别向左、右发动机E
L和E
R供油,并上报二级故障——左油箱故障;
(3)当右油箱B
R故障时,控制左油箱B
L分别向左、右发动机E
L和E
R供油,并上报二级故障——右油箱故障;
(4)当左发动机E
L故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱B
L还是右油箱B
R向右发动机E
R供油,并上报一级故障——左发动机故障;
(5)当右发动机E
R故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱B
L还是右油箱B
R向左发动机E
L供油,并上报一级故障——右发动机故障;
(6)当一个油箱和一个发动机同时故障时,则无故障的油箱为无故障发动机供油,并上报一级故障——故障油箱和发动机所处位置;
(7)当两个油箱或两个发动机同时故障或存在更多故障时,则应进行双发断油控制,并上报特级故障——两侧油箱或两侧发动机故障;
(8)故障级别从低到高依次为二级故障、一级故障和特级故障,如果低级故障和高级故障同时发生,则只上报最高级别故障。
问答题
1. 【问题1】 在嵌入式软件测试中,一般采用的测试方法有白盒测试、黑盒测试和灰盒测试方法,白盒测试方法中需要基于______进行测试;根据本题给定的条件,最恰当的测试方法应选择______。
问答题
2. 【问题2】 覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标。
在实现第6条功能时,设计人员对部分功能采用了下列算法:
if((B
L]==故障)&& (E
L]==故障))
{B
R]供油E
R]; B
L]断油; E
L]断油;}
请指出对上述算法达到100%语句覆盖、100%分支(DC)覆盖和100%MC/DC覆盖所需的最少测试用例数目。请将下表1补充完整。
| 表1 测试覆盖用例统计表 |
| 覆盖率类型 | 所需的最少用例数 |
| 100%语句覆盖 | ______ |
| 100%分支(DC)覆盖 | ______ |
| 100%MC/DC覆盖 | ______ |
问答题
3. 【问题3】 为了测试此软件功能,测试人员设计了表2所示的测试用例,将表补充完整。
| 表2 测试用例 |
| 序号 | 前置条件(剩油量) | 输入 | 输出(预期结果) |
| BL | BR | BL | BR | EL | ER | EL | ER | 上报故障 |
| 1 | 200 | 200 | 无故障 | 无故障 | 无故障 | 无故障 | BL | BR | 无 |
| 2 | 200 | 200 | 故障 | 无故障 | 无故障 | 无故障 | ______ | BR | 二级故障 |
| 3 | 200 | 200 | 无故障 | 故障 | 无故障 | 无故障 | BL | ______ | 二级故障 |
| 4 | 130 | 120 | 无故障 | 无故障 | 故障 | 无故障 | 断油 | ______ | 一级故障 |
| 5 | 150 | 90 | 无故障 | 无故障 | 故障 | 无故障 | 断油 | ______ | 一级故障 |
| 6 | 200 | 200 | 无故障 | 故障 | 无故障 | 故障 | ______ | 断油 | 一级故障 |
| 7 | 200 | 200 | 无故障 | 故障 | 故障 | 无故障 | 断油 | ______ | 一级故障 |
| 8 | 200 | 200 | 故障 | 无故障 | 无故障 | 故障 | ______ | 断油 | 一级故障 |
| 9 | 200 | 200 | 故障 | 故障 | 无故障 | 无放障 | 断油 | 断油 | 特级故障 |
| 10 | 200 | 200 | 无故障 | 无故障 | 故障 | ______ | 断油 | 断油 | 特级故障 |
| 11 | 200 | 200 | 故障 | 无故障 | 故障 | 故障 | 断油 | 断油 | ______ |
【正确答案】BR
BL
BR
BL
BL
BL
BR
故障
特级故障
【答案解析】 本题考查软件测试的一些基本概念和方法在测试实践中的应用。
在软件测试过程中,测试人员不仅需要熟悉一些基本的测试概念和测试方法,而且需要通过对软件设计和算法的理解,运用测试概念和方法进行基于需求的测试用例设计,不仅需要选择恰当的测试方法,而且需要保证测试用例的充分性。
此题目要求考生认真阅读题目所给的软件需求和算法信息,结合嵌入式软件测试的基本概念和测试用例设计要求,在此嵌入式软件测试中进行实际应用。
【问题1】
在嵌入式软件测试过程中,一般采用的测试方法有白盒测试、黑盒测试和灰盒测试方法。
白盒测试也称为结构测试、逻辑测试或基于程序源代码的测试,这种测试应了解程序的内部构造,并且根据内部构造设计测试用例。
黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,这种测试不必了解被测对象的内部情况,而依靠需求规格说明中的功能来设计测试用例。
灰盒测试是介于白盒测试与黑盒测试之间的一种测试方法,既关注输出对于输入的正确性,同时也关注代码的内部结构,但这种关注不像白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒测试方法。
根据本问题的条件,给定的说明为功能说明,故应该采用黑盒测试方法。
【问题2】
本问题主要考查对语句覆盖、条件覆盖和MC/DC覆盖概念的掌握以及应用。
语句覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每一条语句至少被运行一遍,语句覆盖在测试中主要发现错误语句。
分支覆盖要求设计适当数量的测试用例,运行被测程序,使得程序中每个真值分支和假值分支至少执行一次,分支覆盖也称判定覆盖。
修正判定条件覆盖(MC/DC)要求设计适当数量的测试用例,保证在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每个判断中的每个条件必须能够独立影响一个判断的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判断结果改变。
按照上述语句覆盖要求,语句覆盖就要使得问题2中的所有语句执行一次,问题2中只有一个语句块,故为了使问题2中的一个语句块执行一次,仅仅需要1个测试用例来覆盖。
按照上述分支覆盖要求,分支覆盖要使得程序中每个真值分支和假值分支至少执行一次。对问题2中的判断条件进行分析,只有一个判断条件,取真值分支和假值分支即可满足,故最少需要两个测试用例来满足分支覆盖要求。
按照上述MC/DC覆盖要求,即每个判断中的每个条件必须能够独立影响一个判断的输出。对问题2中的一个判断进行分析,此判断有两个条件,两个条件共有四种组合,即TT(TRUE和TRUE)、TF(TRUE和FALSE)、FT(FALSE和TRUE)和FF (FALSE和FALSE)。但是由于此判断为逻辑与条件,当前一个条件为FALSE时,其整个判断值为FALSE,后一个条件的真或假均不能独立影响整个判断的输出,所以只需要TT、TF和FX(X表示后一个条件为TRUE或FALSE都可以)三种情况就可以,故此判断最少需要3个测试用例即可满足MC/DC覆盖要求。
【问题3】
为了测试某飞行器供油阀控制软件的功能,就要依据题目说明中对某飞行器供油阀控制软件的具体功能描述,进行测试用例的设计。此题考查测试用例的设计,不仅包括输入数据的设计,还包括前置条件(比如剩油量)及预期输出的设计(比如给发动机供油的邮箱和上报故障情况),条件较多,需要综合考虑。
序号1,前置条件中两个油箱BL、BR剩余油量均为200升,左、右油箱BL、BR与左、右发动机EL、ER均无故障,依据第1条设计说明,输出控制左油箱BL向左发动机EL供油,右油箱BR向右发动机ER供油,不上报故障。
序号2,前置条件中两个油箱BL、BR剩余油量均为200升,左油箱BL故障,右油箱BR与左、右发动机EL、ER均无故障,依据第2条设计说明,输出控制右油箱BR分别向左、右发动机EL和ER供油,并上报二级故障——左油箱故障。
序号3,前置条件中两个油箱BL、BR剩余油量均为200升,右油箱BR故障,左油箱BL与左、右发动机EL、ER均无故障,依据第3条设计说明,输出控制左油箱BL分别向左、右发动机EL和ER供油,并上报二级故障——右油箱故障。
序号4,前置条件中左油箱BL剩余油量为130升,BR剩余油量为120升,左右油箱剩油量之差为10升,左发动机EL故障,左、右油箱BL、BR与右发动机ER均无故障,依据第4条设计说明,输出控制左发动机EL断油,油箱BR向右发动机ER供油,并上报一级故障——左发动机故障。
序号5,前置条件中左油箱BL剩余油量为150升,BR剩余油量为90升,左右油箱剩油量之差为60升,左发动机EL故障,左、右油箱BL、BR与右发动机ER均无故障,依据第4条设计说明,如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,则应输出控制左发动机EL断油,油箱BL向右发动机ER供油,并上报一级故障——左发动机故障。
序号6,前置条件中两个油箱BL、BR剩余油量均为200升,左右油箱剩油量之差等于0升,右油箱BR与右发动机ER均故障,左油箱BL与左发动机EL均无故障,依据第6条设计说明,输出控制故障发动机(右发动机ER)断油,无故障的油箱(左油箱BL)为无故障发动机(左发动机EL)供油,并上报一级故障——右发动机ER故障。
序号7,前置条件中两个油箱BL、BR剩余油量均为200升,左右油箱剩油量之差等于0升,右油箱BR与左发动机EL均故障,左油箱BL与右发动机ER均无故障,依据第6条设计说明,输出控制故障发动机(左发动机EL)断油,无故障的油箱(左油箱BL)为无故障发动机(右发动机ER)供油,并上报一级故障——左发动机EL故障。
序号8,前置条件中两个油箱BL、BR剩余油量均为200升,左右油箱剩油量之差等于0升,左油箱BL与右发动机ER均故障,右油箱BR与左发动机EL均无故障,依据第6条设计说明,输出控制故障发动机(右发动机ER)断油,无故障的油箱(右油箱BR)为无故障发动机(左发动机EL)供油,并上报一级故障——右发动机ER故障。
序号9,前置条件中两个油箱BL、BR剩余油量均为200升,左右油箱剩油量之差等于0升,左、右油箱BL、BR均故障,左、右发动机EL、ER均无故障,依据第7条设计说明,输出控制左、右发动机EL、ER均断油,并上报特级故障——两侧油箱均故障。
序号10,前置条件中两个油箱BL、BR剩余油量均为200升,左右油箱剩油量之差等于0升,左、右油箱BL、BR均无故障,左发动机EL故障,右发动机ER未知,但是输出控制左、右发动机EL、ER均断油,并上报特级故障,依据第7条设计说明,只有当两个油箱或两个发动机同时故障或存在更多故障时,才会得到如此的控制,故断定右发动机ER一定故障。
序号11,前置条件中两个油箱BL、BR剩余油量均为200升,左右油箱剩油量之差等于0升,左油箱BL故障,左、右发动机EL、ER均故障,只有右油箱BR无故障,依据第7条和第8条设计说明,输出控制左、右发动机EL、ER均断油,并上报特级故障——两侧发动机均故障。左油箱故障的二级故障和两侧发动机均故障的特级故障同时发生,只上报特级故障。