【软考软件评测师】2017年下案例分析历年真题

【软考软件评测师】2017年下案例分析历年真题

2017下案例分析历年真题第一题(15分)

阅读下列 C 程序,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【C程序】
Int DoString(char*string){
char *argv[100];
Int argc=1;
while(1) { //1
while(*string&& *string!=‘-’) //2,3
String++; //4
if(!*string) //5
break; //6
argv[argc]=string;
while(*string && *string!="&& *string!=‘\n’&& *string!= ‘\t’) //7,8,9,10
string++; //11
argc++; //12

return 0; //13

【问题1】
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】
请给出问题2中控制流图的线性无关路径。

【问题1我的解答】
*string等于¥0;
*string等于-;
*string等于空格;
*string等于¥n;
*string等于¥t;
1)*string不等于¥0且不等于-的时候;
2)*string等于-的时候;
3)等于¥0的时候;
4)*string不等于¥0且不等于空格,回车,制表符的时候;
5)*string等于¥0或者等于空格,回车,制表符的时候;
【问题1标准答案】
在这里插入图片描述
本问题考查白盒测试用例设计方法中的判定覆盖法。
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有3个判定,所以满足判定覆盖一共需要6个逻辑条件。
【问题2标准答案】
在这里插入图片描述
V(g)=8
控制流图的画法是不同的。
程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为7,所以V(G)=8。
【问题3我的解答】
1,2,5,6,13✔️
1,2,3,5,6,13✔️
1,2,3,4,2,5,6,13✔️
1,2,3,4,2,3,5,6,13
1,2,5,7,12
1,2,5,7,8,12
1,2,5,7,8,9,12
1,2,5,7,8,9,10,12
1,2,5,7,8,9,10,11,7
【问题3标准答案】
线性无关路径:
1.1-2-3-4-2…5-6-13
2.1-2-5-6-13
3.1-2-3-5-6-13
4.1-2…5-7-8-9-10-11-7…12-1…5-6-13
5.1-2…5-7-12-1…5-6-13
6.1-2…5-7-8-12-1…5-6-13
7.1-2…5-7-8-9-12-1…5-6-13
8.1-2…5-7-8-9-10-12-1…5-6-13
线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有8条线性无关路径。

2017下案例分析历年真题第二题(20分)

某银行B和某公司C发行联名信用卡,用户使用联名信用卡刷卡可累计积分,积分累计规则与刷卡金额和刷卡日期有关,具体积分规则如表2-1所示。此外,公司C的会员分为普通会员、超级会员和PASS会员三个级别,超级会员和PASS会员在刷卡时有额外积分奖励,奖励规则如表2-2所示。
在这里插入图片描述
银行B开发了一个程序来计算用户每次刷卡所累积的积分,程序的输入包括会员级别L、刷卡日期D和刷卡金额A,程序的输出为本次积分S。其中,L为单个字母且大小写不敏感,D由程序直接获取系统日期,A为正浮点数最多保留两位小数,S为整数。
【问题1】(5分)
采用等价类划分法对该程序进行测试,等价类表如下表所示,请补充表2-3中空(1)~(5)。
在这里插入图片描述
【问题2】(9分)
根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)~(9)。
在这里插入图片描述
【问题3】(6分)
如果规定了单次刷卡的积分上限为20000( 即S取值大于等于0且小于等于20000),则还需要针对S的取值补充一些测试用例。假设采用等价类划分法和边界值分析法来补充用例,请补充表2-5、表2-6中的空(1)~(6)。
在这里插入图片描述

【问题1我的解答】
1)P会员
2)12月12日
3)正浮点数
4)其他字母(三个字母以外)
5)负浮点数
【问题1标准答案】
1)P
2)12月12日
3)最多两位小数的正浮点数
4)除M/S/P之外的单个字母
5)非正的浮点数
【问题2我的解答】
1)1000✔️
2)857.14✖️
3)3,6,8✔️
4)其他日期✔️
5)非字母✔️
6)N/A✔️
7)三个字母外其他字母✔️
8)1,7,12✔️
9)多于两位小数的正浮点数✔️
【问题2标准答案】
1.1000
2.大于等于499.50小于等于500.49之间的最多两位小数的浮点数
3. 3,6,8
4. 其他日期(除每月9日、19日,11月11日,12月12日)
5. 非字母
6. N/A
7. 除M/S/P之外的单个字母,如A
8. 1,7,12
9. 多于两位小数的正浮点数,如500.123
【问题3我的解答】
1)S<0✔️
2)S>20000✔️
3)19999✔️
4)1✖️
5)-1✖️
6)-20000✖️
【问题3标准答案】
1.S<0
2.S>20000
3.S=19999
4.S=20001
5.S=1
6.S=-1
【解析问题】
等价类划分法是将测试过程中的输入、输出、操作等相似内容分组,从每组中挑选具有代表性的内容作为测试用例测试,划分时分有效等价和无效等价来筛选。
边界值分析法是确认输入、输出的边界,然后取刚好等于、大于、小于边界的参数作为测试用例。
在编写等价类划分法的测试用例时,如果输入全部都来自有效等价类,则从每个有效等价类选取一个代表元素作为输入,如果要考虑无效等价类,则每次只选取一个无效等价类,其余输入都从有效等价类中选取。

等价类划分法的等价类表是把程序的输入域按规则划分为若干子集。
本题中L由多个输入值构成,并且需要对每个(或者每组)输入值分别处理,按规则可以划分为n个有效等价类(每个或者每组值确定一个有效等价类)和一个无效等价类(所有不允许输入值的集合)。
对L来说,分成3个有效等价类(L分别取M、S、P)和1个无效等价类(其他情况),而这个无效等价类又可以进一步细分为非字母、非单个字母以及除M/S/P之外其他字母。
对D来说,根据日期可以分为4个有效等价类,这个有效等价类可以进一步细分为每月9日、19日,11月11日,12月12日和其他日期。
本题中对A是规定了输入值集合必须满足的条件(即最多两位小数的正浮点数),根据规则可以划分为1个有效等价类(K是最多两位小数的正浮点数)和3个无效等价类(非浮点数,非正的浮点数,多于两位小数的正浮点数)。

2017下案例分析历年真题第三题(20分)

读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
【说明】
某公司欲开发一套基于Web的通用共享单车系统。该系统的主要功能如下:
1.商家注册、在线支付;后台业务员进行车辆管理与监控、查询统计、报表管理、价格设置、管理用户信息。
2.用户输入手机号并在取验证码后进行注册、点击用车后扫描并获取开锁密码、锁车(机械锁由用户点击结束用车)后 3 秒内显示计算的费用,用户确认后支付、查看显示时间与路线及其里程、预约用车、投诉。
【问题1】(6分)
采用性能测试工具在对系统性能测试时,用Apdex(应用性能指数)对用户使用共享单车的满意度进行量化,系统需要满足Apdex指数为0.90以上。
Apdex 量化时,对应用户满意度分为三个区间,通过响应时间数值 T 来划分,T 值代表着用户对应用性能满意的响应时间界限或者说是“门槛”(Threshold) 。
针对用户请求的响应时间,Apdex 的用户满意度区间如下 :
满意: (0,T]让用户感到很愉快
容忍:(T, 4T] 慢了一点,但还可以接受,继续这一应用过程
失望: >4T,太慢了,受不了了,用户决定放弃这个应用
Apdex的计算如下:
Apdex= (小于T的样本数+T~4T 的样本数/2) /总样本数
针对用户功能,本系统设定 T=2 秒,记录响应时间,统计样本数量,2 秒以下记录数3000,2~8秒记录数1000,大于8秒500。
请计算本系统的Apdex指数,并说明本系统是否达到要求。
【问题2】(6分)
系统前端采用HTML5实现,已使用户可以通过不同的移动设备的浏览器进行访问。设计兼用行测试矩阵,对系统浏览器兼容性进行测试。
【问题3】(8分)
针对用户手机号码获取验证码进行注册的功能,设计4个测试用例。(假设合法手机号码为11位数字,验证码为4位数字)

【问题1我的解答】
Apdex = (小于T的样本数+T~4T 的样本数/2) /总样本数
(3000+1000)/2=3500;
3500/4500=78%
没有达到要求。
【问题1标准答案】
同上。
【问题2我的解答】
平台/浏览器 火狐 IE Edge
安卓手机
PC
黑莓手机
苹果手机
【问题2标准答案】
在这里插入图片描述
【问题3我的解答】
11位数字,四位验证码;
11位数字,三位验证码;
10位数字,四位验证码;
10位数字,三位验证码;
【问题3标准答案】
第一类:1234565432A或1234565432或123456543210,2017 (说明:针对手机号不合法字符输入、手机号长度少于11位、手机号长度大于11位);
第二类:12345654321,2017 (说明:针对合法的手机号码和正确的验证码);
第三类:12345654321,201x或201或20111 (说明:针对合法的手机号码和错误的验证码);
第四类:体现安全性的测试输入:其中任意输入域包含任何HTML,如:,或任何脚本如:

从客户的角度看,该网页中就出现了弹出窗口提示,显示Hello World!,如下图所示:

即:用户输入的内容已经被浏览器成功执行。
而如果这类代码可以执行,就存在被真正恶意攻击者攻击的可能,而且可能造成各类安全问题。所以网站提交代码中的任何脚本、页面功能符号都不应该被直接接受使其作为功能符号在后续使用。所以测试时需要考虑设计包含HTML标记符、脚本等测试输入,如、

2017下案例分析历年真题第四题(20分)

图4-1是某企业信息系统的一个类图,图中属性和方法前的"+“、”#“和”- " 分别表示公有成员、保护成员和私有成员。其中:
在这里插入图片描述
(1)类Manager重新实现了类Employee的方法calSalary( ),类Manager中的方法querySalary( )继承了其父类Employee的方法querySalary( )。
(2)创建类Employee的对象时,给其设置职位(position)、基本工资(basicSalary)等信息。方法calSalary( )根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算员工工资。
(3)类Department中的方法statSalary中首先调用了该类的方法load( ),获取本部门员工列表,然后调用了类Employee中的方法calSalary( )。
现拟采用面向对象的方法进行测试。
【问题1】(5分)
图4-1所示的类图中,类manager和类Employee之间是什么关系?该关系对测试的影响是什么?
【问题2】(6分)
(1)类Manager重新实现了类Employee的方法calSalary( ),这是面向对象的什么机制?是否需要重新测试该方法?
(2)类Manager中的方法querySalary( )继承了其父类Employee的方法querySalary( ),是否需要重新测试该方法?
【问题3】(6分)
(1)请结合题干说明中的描述,给出测试类Employee方法calSalary( )时的测试序列。
(2)请给出类图4- 1中各个类的测试顺序。
【问题4】(3分)
从面向对象多态特性考虑,测试方法statSalary()时应注意什么?

【问题1我的解答】
类Manager和类Employee之间的关系是继承,类Manager继承自类Employee。✔️
在测试类Manage的时候,需要测试继承自类Employee的方法和属性。✔️
【问题1标准答案】
继承关系。
若子类Manager重新实现父类Employee的方法或者子类的某方法中调用了自己实现的方法,需要重新进行测试。
题目给出三个类,类Employee、类Manager及类Department。本问题考查面向对象的基本概念。
类和类之间的关系主要有继承、关联和依赖三种关系,其中关联又包括一般关联、聚合和组合三种。其中,继承是指一个类直接使用另一个类的属性和方法,即子类具有父类的属性和方法。类Employee和类Manager之间是继承关系。
继承关系对面向对象测试的影响主要体现在两个方面:若子类的某方法继承了其父类,方法进行了修改,则需要进行测试;继承的方法没有修改,用父类的方法,但是该方法调用了子类修改过的其他方法时,也需要对该方法进行测试。
【问题2我的解答】
1)面向对象中的覆盖,需要重新测试该方法✖️
2)需要重新测试该方法✖️
【问题2标准答案】
1.多态;类Manager中的方法calSalaryO需要重新测试。
2.不需要。
【问题3我的解答】
1)先测试类Employee的方法在测试Manage类的方法
2)先测试类Employee再测试Manage类,最后测试Department类✔️
【问题3标准答案】
1.测试序列:
new Employee()—calWorkDays()—-setBonus()—calSalary()—querySalary()。
2.测试顺序:Employee—Manager—Department。
1.由题干说明,方法calSalary()根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算工资,因此测试时需要先生成一个Employee对象,然后计算工作时间calWorkDays()和计算奖金setBonus(),才能计算工资calSalary(),最后查询工资queirySalary()以判断计算是否正确。其中,计算工作时间calWorkDays()和计算奖金setBonus()是顺序无关的。因此,测试序列:
new Employee()—calWorkDays()—setBonus()—calSalary()—querySalary()。或
new Employee()—setBonus()—calWorkDays()—calSalary()—query Salary()。
2.由类结构图可以容易看出,类Employee最先测试,因为测试类Manager和类Department都需要依赖该类;而测试类Department还需要依赖类Manager,因此类的测试顺序为Employee——Manager—Department。
【问题4标准答案】
测试方法statSalary()时,要同时考虑类Employee和类Manager的calSalary()。

2017下案例分析历年真题第二题(20分)

某飞行器供油阀控制软件通过控制左右两边的油箱BL、BR 向左右发动机EL、ER供油,既要保证飞行器的安全飞行,又要保证飞行器的平衡,该软件主要完成的功能如下:
(1)无故障情况下,控制左油箱BL向左发动机EL供油,右油箱BR向右发动机ER供油,不上报故障;
(2)当左油箱BL故障时,控制右油箱BR分别向左、右发动机EL和ER供油,并上报二级故障一—左油箱故障;
(3)当右油箱BR故障时,控制左油箱BL分别向左、右发动机EL和ER供油,并上报二级故障——右油箱故障;
(4)当左发动机BL故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL还是右油箱BR向右发动机ER供油,并上报一级故障——左发动机故障;
(5)当右发动机ER故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于50升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱且还是右油箱BR向左发动机BL供油,并上报一级故障——右发动机故障;
(6)当一个油箱和一个发动机同时故障时,则无故障的油箱为无故障发动机供油,并上报一级故障——故障油箱和发动机所处位置;
(7)当两个油箱或两个发动机同时故障或存在更多故障时,则应进行双发断油控制,并上报特级故障——两侧油箱或两侧发动机故障;
(8)故障级别从低级到高级依次为二级故障、一级故障和特级故障,如果低级故障和高级故障同时发生,则只上报最高级别故障。
【问题1】(6分)
覆盖率是度量拥试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、条件覆盖率和MC/DC覆盖率作为度量指标。
在实现第6条功能时,设计人员采用了下列算法:
if ((BL故障) && ( EL故障))
{BR供油ER;BL断油;EL断油;}
if ((BL故障) && ( ER故障))
{BR供油EL;BL断油;ER断油;}
if ((BR故障) && ( EL故障))
{BL供油ER;BR断油;EL断油;}
if ((BR=故障) && ( ER==故障))
{BL供油EL;BR断油;ER断油;}
请指出对上述算法达到100%语句覆盖、100%条件覆盖和100%MC/DC覆盖所需的最少测试用例数目,填写表5-1中的空(1)~(3)。
在这里插入图片描述
【问题2】(12分)
为了测试此软件功能,测试人员设计了表5-2所示的测试用例,请填写该表中的空(1)~(12)。
在这里插入图片描述
【问题3】(2分)
常见的黑盒测试的测试用例设计方法包括等价类划分、决策表、因果图、边界值分析等。测试人员在针对本题设计测试用例时,使用哪种测试用例设计方法最恰当。

【问题1我的解答】
1)4✔️
2)8✖️
3)16✖️
【问题1标准答案】
对于代码条件为:
if ((BL故障) && ( EL故障))
{BR供油ER;BL断油;EL断油;}
if ((BL故障) && ( ER故障))
{BR供油EL;BL断油;ER断油;}
if ((BR故障) && ( EL故障))
{BL供油ER;BR断油;EL断油;}
if ((BR故障) && ( ER故障))
{BL供油EL;BR断油;ER断油;}
是由(BL故障) (BR故障) ( ER故障) ( EL故障)四个条件组合而成的判断。
语句覆盖:
由于条件6约定,不可能同时4个条件都出现故障,所以,当一个出现故障的时候,会出现TT,TF,FT,FF的情况,所以需要4个语句才能完成语句覆盖。
条件覆盖:
由于条件6约定,不可能同时4个条件都出现故障,所以,当一个出现故障的时候,会出现TT,TF,FT,FF的情况,因此可以选项 TT,TF,FT,FF 和FF,FT,TF,TT两组测试用例。
判定的条件有两个,共四组:当一组中的条件都为真时,即 TT,TF,FT,FF,由于是逻辑与运算,要满足MCDC必须每一组都出现TT的情况,所以综合起来,一共需要4组测试用例
在这里插入图片描述
【问题2我的解答】
1)BR 右边油箱 ✔️
2)BL 左边油箱✔️
3)BR 右边油箱✔️
4)BL 左边油箱✔️
5)小于120整数✔️
6)90上下浮动60内✔️
7)断油✔️
8)BL左边油箱✔️
9)BL左边油箱✔️
10)BR右边油箱✔️
11)故障✔️
12)特级故障✔️
【问题2标准答案】
问题2的回答,要注意是的相差50L油的情况。即题干陈述中4和5的内容。
(4)当左发动机BL 故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱BL 还是右油箱 BR 向右发动机 ER 供油,并上报一级故障——左发动机故障;
(5)当右发动机ER故障时,根据左右油箱的剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多的油箱供油,否则同侧优先供油)左油箱且还是右油箱 BR 向左发动机BL 供油,并上报一级故障——右发动机故障;
【问题3标准答案】
等价类划分。
软件测试人员在基于需求设计测试用例的过程中,通常需要使用一些黑盒测试方法,黑盒测试方法一般包括功能分解、等价类划分、边界值分析、判定表、因果图、随机测试、猜错法和正交试验法等。就本题而言,由于设计说明中是依据故障数目来进行说明的,从无故障、一个故障、两个故障到多个故障进行软件设计说明,所以采用以故障数目进行等价类划分来设计测试用例方法最恰当。

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值