1、嵌入式系统设计师-35 及答案解析(总分:8.01,做题时间:90 分钟)一、试题一(总题数:3,分数:9.00)1.【问题 1】 请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖的含义。 (分数:3.00)_2.【问题 2】 根据本题所示的软件关键级别,回答该软件需要做哪几项覆盖测试?要求的覆盖率指标是多少?如果是一般级软件,应做哪几项覆盖测试? (分数:3.00)_3.【问题 3】 在软件单元测试中,主要测试对象是软件模块,如果被测程序中有多处调用了其他过程代码,测试中应如何处理这些功能的引用?软件的性能测试在测试工作的哪个阶段进行? (分数:3.00)_
2、二、试题二(总题数:1,分数:-1.00)阅读以下说明和 C语言代码,回答问题 1至问题 4,将解答填入对应栏内。 说明 有两个任务(编号分别为 0和 1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。 代码一 1: int flag2; /* flag 数组,初始化为 FALSE */ 2: Enter_Critical_Section(int my_task_id, int other_task_id) 3: 4: while (flagother_task_id
3、= TRUE); /* 空循环语句 */ 5: flagmy_task_id = TRUE; 6: 7: Exit_Critical_Section(int my_task_id, int other_task_id) 8: 9: flagmy_task_id = FALSE; 10: 当一个任务要访问临界资源时,就可以调用代码一给出的这两个函数。代码二给出了任务 0的一个例子。 代码二 Enter_Critical_Section(0,1); 使用这个资源 Exit_Critical_Section(0,1); 做其他事情(分数:-0.99)(1).什么是临界资源(critical reso
4、urce)?请用 100字以内文字简要说明。(分数:-0.33)_(2).代码一所示的方法能够实现共享资源的互斥访问吗?请用 300字以内文字举例说明。(分数:-0.33)_(3).代码一采用了一种繁忙等待(busywaiting)的策略,这种策略的缺点是什么?请用 100字以内的文字简要说明。(分数:-0.33)_嵌入式系统设计师-35 答案解析(总分:8.01,做题时间:90 分钟)一、试题一(总题数:3,分数:9.00)1.【问题 1】 请根据测试要求,简要说明语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖的含义。 (分数:3.00)_正确答案:()解析:覆盖测试分类 含类
5、语句覆盖 使程序中的每一条语句都至少执行一次 判定覆盖 使程序中的每个判定都得到一次“真“值和“假“值,即每个 分支至少执行一次 条件覆盖 使用判定中的每个条件都获得所有可能的逻辑值 判定/条件覆盖 使每个分支至少执行一次,且判定中的每个条件都获得所有可 能的逻辑值 条件组合覆盖 使每个判定中的各种条件组合都至少出现一次 解析 本题是一道有关军用嵌入式系统软件测试技术概念的考题。需要考生具有一定软件测试的相关基础知识。请考生仔细阅读本题中的相关内容,搞清楚军用软件重要级别的划分原则和不同级别软件具体含义,了解不同级别软件的测试项要求,在此基础上,才能回答好以下问题。 本题要关注以下几点: (1
6、)飞机起落架控制,关系着飞机安全起飞和着落。本系统中由于软件错误将会引起机毁人亡的悲剧。因此,软件的可靠性至关重要。 (2)提高软件的可靠性的主要方法之一,就是加强软件的测试工作。从目前软件测试方法的分类来看,不同级别的软件,测试的要求不相同,对于关键软件必须增加大量的测试项。 问题 1分析 本题主要考查考生对各个测试项的具体概念的理解。考生应能够区分各种测试项具体要求及其差别,掌握语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖和条件组合覆盖 5 种测试项方法。 语句覆盖指每条可执行语句至少执行一次。判定覆盖指每个判定的每个分支至少执行一次。条件覆盖指每个判定的每个条件应取到各种可能的值。判定/
7、条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。还有,路径覆盖使程序中每一条可能的路径至少执行一次。2.【问题 2】 根据本题所示的软件关键级别,回答该软件需要做哪几项覆盖测试?要求的覆盖率指标是多少?如果是一般级软件,应做哪几项覆盖测试? (分数:3.00)_正确答案:()解析:(1)本软件为关键级软件,应进行语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖,共 5项;要求的覆盖率指标是均达到 100%。 (2)如果是一般级软件,仅做语句覆盖和判定覆盖。 解析 本题主要考查对关键软件的测试要求,这里隐含着军用软件具体规范要求。对于关键软件要求
8、必须做完上述 5项的测试工作,并要求对每项测试结果,其覆盖率达到 100%;而对于一般软件,仅仅要求做完语句覆盖和判定覆盖两种,其覆盖率不一定达到 100%,但必须说明达不到的原因,即应有缺陷分析。3.【问题 3】 在软件单元测试中,主要测试对象是软件模块,如果被测程序中有多处调用了其他过程代码,测试中应如何处理这些功能的引用?软件的性能测试在测试工作的哪个阶段进行? (分数:3.00)_正确答案:()解析:(1)用打桩技术处理这些功能的引用。 (2)性能测试在系统测试阶段进行。 解析 本题主要考查考生对具体测试技术的掌握程度。进行单元测试时,打桩技术是测试工作中常用的方法。在软件测试的各个阶
9、段中没有性能测试阶段,这里主要检查考生对测试工作的基本概念。性能测试非常重要,只有在系统测试阶段,才能完成性能测试,其他阶段是无法进行性能检测的。二、试题二(总题数:1,分数:-1.00)阅读以下说明和 C语言代码,回答问题 1至问题 4,将解答填入对应栏内。 说明 有两个任务(编号分别为 0和 1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。 代码一 1: int flag2; /* flag 数组,初始化为 FALSE */ 2: Enter_Critical_S
10、ection(int my_task_id, int other_task_id) 3: 4: while (flagother_task_id = TRUE); /* 空循环语句 */ 5: flagmy_task_id = TRUE; 6: 7: Exit_Critical_Section(int my_task_id, int other_task_id) 8: 9: flagmy_task_id = FALSE; 10: 当一个任务要访问临界资源时,就可以调用代码一给出的这两个函数。代码二给出了任务 0的一个例子。 代码二 Enter_Critical_Section(0,1); 使用
11、这个资源 Exit_Critical_Section(0,1); 做其他事情(分数:-0.99)(1).什么是临界资源(critical resource)?请用 100字以内文字简要说明。(分数:-0.33)_正确答案:()解析:在多道程序系统中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用。需要互斥访问的资源称为临界资源(critical resource),如打印机、共享变量和表格等。(2).代码一所示的方法能够实现共享资源的互斥访问吗?请用 300字以内文字举例说明。(分数:-0.33)_正确答案:()解析:代码一所示的方法不能实现资源的互斥访问。 例如,考虑如下的情形;
12、(1)初始化的时候,flag 数组的两个元素值均为 PALSE; (2)任务 0先执行,在执行 while循环语句时,由于 flag1=FALSE,所以顺利结束,不会被卡住,假设这个时候来了一个时钟中断,打断其运行: (3)任务 1去执行,在执行 while循环语句时,由于 flag0=FALSE,所以顺利结束,不会被卡住,然后就进入了临界区; (4)后来当任务 0再执行时,也进入了临界区,这样就同时有两个任务在临界区。(3).代码一采用了一种繁忙等待(busywaiting)的策略,这种策略的缺点是什么?请用 100字以内的文字简要说明。(分数:-0.33)_正确答案:()解析:缺点是会浪费大量的 CPU时间。 简要说明:繁忙等待(busy waiting)的基本思路是,当一个任务要进入临界区,首先需要检查是否允许它进入,若允许,则直接进入;否则,循环等待,使用一个循环语句不断执行测试指令,从而浪费了大量的 CPU资源。