一、问答题
1、阅读下列C 程序,回答问题1至问题3,将解答填入答题纸的对应栏内。
【C 程序】
【问题1】(6分)
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】(6分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度 v(G)。
【问题3】(8分)
请给出问题2中控制流图的线性无关路径。
参考答案:
【问题1】
1、buf_len > 512
2、buf_len <= 512
3、buf_len == 0
4、buf_len != 0
5、i < total_bytes
6、i >= total_bytes
7、buf_c[i] == ‘\0’
8、buf_c[i] != ‘\0’
9、buf_c[i] < 7 || buf_c[i] >14
10、buf_c[i] >= 7 && buf_c[i]<= 14
11、i >= 32
12、i < 32
【问题2】(1) 控制流图如下图所示:
(2)V(G)=7+1=8
【问题3】(1) 1-2-4-5-13
(2) 1-3-4-5-13
(3) 1-2-4-6-13
(4) 1-2-4-6-7-8-13
(5) 1-2-4-6-7-9-11-12-13
(6) 1-2-4-6-7-9-10-11-12-13
(7) 1-2-4-6-7-9-10-6…
(8) 1-2-4-6-7-9-11-6…
解析:
问题1主要是为了满足判定覆盖,需要设计满足所有逻辑条件的测试用例,确保每个条件都能被测试到。问题2涉及到控制流图的绘制和环路复杂度的计算,需要根据代码逻辑绘制出控制流图,并计算环路的数量。问题3是关于线性无关路径的确定,需要根据控制流图来确定哪些路径是线性无关的。由于无法直接给出具体的控制流图和线性无关路径,因此无法提供具体的答案。
2、阅读下列说明,回答问题1全问题3,将解答填入答题纸的对应位置。
【说明】
某航空公司进行促销活动,会员在指定日范围内搭乘航班将获得一定奖励,奖励分为4 个档次,由乘机次数和点数共同决定,如表2-1所示。其中点数果票面价格和购票渠道有关,规则如表2-2所示。
航空公司开发了一个程序来计算会员在该促销活动后的奖励,程序的输入包括会员在活动期间的乘机次数C、官网购票金额A(单位:元)和手机客户端购票金额B(单位:元),程序的输出出为本次活动奖励档次L 。其中,C、A、B 为非负整数,L为0~5之间的整数(0 表示无奖励)。
【问题1】(4分)
采用等价类划分法对该程序进行测试(同时对输入输出进行等价类划分),等价类表如表2-3所示,请补充表2-3中的空(1)~(4)。
【问题2】(9分)
根据以上等价类表设计的测试用例如表2-4 所示,请补充表 2-4 中的空(1)~(9)
【问题3】(2分)
对于本案例的黑盒测试来说,以上测试方法有哪些不足?
参考答案:
【问题1】
(1)非负整数
(2)4
(3)0
(4)负整数
【问题2】(1)1,2,3,8
(2)0
(3)20(大于等于20)
(4)15000(大于等于15000)
(5)10(大于等于10)
(6)7000(大于等于7000)
(7)1,2,3,7
(8)A(非整数)
(9)N/A
【问题3】没有考虑手机客户端购票金额B的各种取值(表中的数据大部分都是0),以及与其相关联的点数的设计。
解析:
问题1主要考察等价类划分法的应用,根据输入输出要求填写对应的等价类。
问题2根据问题一的等价类表设计具体的测试用例,填写对应的输入和输出值。
问题3指出黑盒测试的不足,主要在于没有全面考虑手机客户端购票金额B的各种取值及其与点数的关联设计,以及其他输入项的边界值和异常值测试。
3、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司欲开发一款二手车物流系统,以有效提升物流成交效率。该系统的主要功能是:
(1)订单管理:帮买顾问看到有买车线索后,会打电话询问买家是不是需要物流,若需要,帮买顾问就将这个线索发起为订单,帮助买家来找承运商。
(2)线路管理与推荐:对承运商的线路进行管理。根据运输方式的不同,线路分为三种,即包车线路、固定线路、竞价体系,其中包车线路和固定线路是合约制。接入订单系统会根据订单的内容选择合适的承运商。即:有新订单时,若符合固定线路和包车线路,系统自动分配给合约承运商;若不符合合约,系统将订单需求信息推送给各承运商,承运商对订单进行竞拍出价。
(3)合约管理:根据公司与承运商确定的合约,对合约内容进行设置。
(4)基础信息管理:包括帮买顾问(这部分缺失)
【问题1】(6分)
系统前端APP需支持不同品牌的不同系统平台,设计兼容性测试矩阵,以对系统的兼容性进行测试。
【问题2】(8分)
承运商进行竞价时,前端需提交竞拍价格(整数,单位:元)数和可接受浮动比例(整数),针对这一功能设计4个测试用例。
【问题3】(6分)
承运商竞拍部分的性能要求最高。采用性能测试工具在以系统竞拍功能为主进行性能测试时,采用 Apdex(应用性能指数)对用户使用该系统的性能满意度进行度量,系统需要满足Apdex指数为0.9以上。测试数据如表3-1所示,请计算本系统的Apdex指数,并说明本系统是否达到要求。
参考答案:
【问题1】
【问题2】
用例1:100,1;(正确测试)
用例2:100.11,1;(非整数,整数)
用例3:100,0.1;(整数,非整数)
用例4: 100,b;(整数,字符)
【问题3】
达到了要求,因为Apdex=(185+20/2)/(185+20+10)≈ 0.91 > 0.9(系统要求);
解析:
【问题1】
本小题考查兼容性测试用例矩阵的简单应用。
【问题2】
本小题考查测试用例设计的简单应用:
【问题3】
本小题考查根据题意进行简单的计算:
4、阅读下列说明,回答问题1至问题3,将解答写在答题纸的对应栏内。
【说明】
某汽车维修公司的工时计算模块每天定时根据系统登记的维修信息统计维修工的工时工资。维修工分为学徒、普通维修工和高级维修工三种,三种维修工有不同的时薪标准。
图 4-1 是该模块的类图,图中属性和操作前的“+”、“#”和“-”分别表示公有成员、保护成员和私有成员。
其中:
(1)类Engineer表示普通维修工。
(2)类 studentEngineer 和 seniorEngineer 都重新实现了类 Engineer 的方法 calReward()。
(3)方法calReward()根据每个维修工每天的工时数(workTime)、时薪(hourSalary)来计算当天的工时工资。
(4)方法getReward ()调用方法calReward ()获取工时工资并打印显示。
(5)类System中的方法statReward()中首先调用了该类的方法load(),获取本系统工程师列表,然后调用了类Engineer中的方法calReward()。
现拟釆用面向对象的方法进行测试。
【问题1】(4分)
(1)图4-1所示的类图中,类System和Engineer之间是什么关系?
(2)类seniorEngineer重新实现了类Engineer的方法calReward(),这是面向对象的什么机制?
【问题2】(6分)
类 seniorEngineer 中的方法 calReward()和类 studentEngineer 中的方法 getReward() 是否需要重新测试?
【问题3】(10分)
(1)请结合题干说明中的描述,给出测试类Engineer方法calReward()时的测试序列。
(2)请给出图4-1中各个类的测试顺序。
(3)从面向对象特性考虑,测试类System中方法statReward()时应注意什么?
参考答案:
【问题1】
(1) 关联关系;
(2) 多态机制;
【问题2】类 seniorEngineer 中的方法 calReward()重写了,需要重新测试;
类 studentEngineer 中的方法 getReward()调用改动过的成员函数,需要重新测试;
【问题3】
测试序列:Engineer( )—setWorktime( )—calReward( ) —getReward( ) ;
(2) 先测试Engineer类,然后studentEnginer和seniorEngineer类(这两个谁在前都可以),最后测试System类。
(3)只需要在原有的测试分析和基础上增加对测试用例中输入数据的类型的考虑;先测试基类,然后再分别依据输入数据设计不同的测试用例。
解析:
对于问题1,关联关系在类图中表示两个类之间的连接,System类和Engineer类之间存在这种关系,因为System类通过继承Engineer类来实现其功能。多态性是面向对象的一个重要特性,允许父对象根据当前赋值的子对象的特性以不同的方式运作。
对于问题2,当父类中的成员函数在子类中重新实现或调用已经改变的成员函数时,需要在子类中重新进行测试。在本题中,seniorEngineer的calReward()已经重新实现,因此需要重新测试。同时,因为studentEngineer的getReward()调用了calReward(),也需要重新测试。
对于问题3,测试序列应该按照对象创建、设置属性、调用方法进行。测试顺序上,应先测试基础类,再测试派生类,最后测试组合使用的类。在测试System类的statReward()方法时,除了原有的测试分析和基础,还需要特别注意输入数据的类型,并根据输入数据设计不同的测试用例进行测试。
5、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
在某嵌入式智能服务机器人的软件设计中,为了更好地记录机器人的个体信息和机器人的工作信息,为智能服务机器人设计了信息数据库。数据库主要完成收集智能服务机器人反馈信息的作用,记录所有机器人的所有工作记录,以方便使用者对机器人的管理和对机器人状态的掌握,并且在机器人发生运行故障时,可以根据数据库存储的信息分析产生故障的原因。数据库收集智能服务机器人反馈信息的流程如下:
服务器端接收反馈信息。
(1)第一次解析判断反馈信息类型是否正确,若正确执行(2),否则执行(3);
(2)第二次解析判断反馈信息内容是否正确,若正确执行(4),否则执行(3);
(3)调用错误信息处理函数后执行(4);
(4)将反馈信息存入数据库。
【问题1】(6分)
在本软件测试过程中,测试人员为了设计测试用例,根据题目中的说明,画出了机器人反馈信息收集软件流程图,如图5.1所示
请在下列选项中,为图5.1中的空(1)~(3)选择正确的描述内容。(1)处对应_____,(2)处对应______,(3)处对应______。
(1)A. 反馈格式是否正确 B. 反馈长度是否正确
C. 反馈类型是否正确 D. 反馈内容是否正确
(2)A. 标记错误信息 B. 错误信息处理
C. 错误信息纠正 D. 错误信息报告
(3)A. 信息存入内存 B. 信息存入文件
C. 信息存入数据库 D. 倍息存入软件
【问题2】(6分)
软件的结构覆盖率是度量测试完整性的一种手段。也是度量测试有效性的一种手段,在嵌入式软件白盒测试过程中。通常以语句覆盖率、分支覆盖率和 MC/DC 覆盖率作为度量指标。
在实现题目说明中第(1)、(2)条功能时,设计人员采用了下列算法:
请指出对上述算法达到100%语句覆盖、100%分支覆盖和 100%MC/DC 覆盖所需的
最少测试用例数目
表5-1 测试覆盖用例统计表
【问题3】(8分)
为了测试软件功能,测试人员设计了表5-2所示的测试用例,请填写该表中的空(1)~(4)。
表5-2 测试用例
参考答案:
【问题1】
(1)D
(2)B
(3)C
【问题2】
(1)3
(2)3
(3)4
【问题3】
(1)报告信息类型不正确
(2)报告信息内容不正确
(3)错误的
(4)典型类型3
解析:
问题1中,根据题目描述,第一次解析判断的是反馈信息类型,第二次解析判断的是反馈信息内容,因此(1)处对应的是“反馈内容是否正确”,选项D符合;在流程中,(2)处是进行错误信息处理的地方,选项B“错误信息处理”符合;(3)处是将反馈信息存入数据库,选项C“信息存入数据库”符合。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!