【软考软件评测师】2014年下案例分析历年真题
2014下案例分析历年真题
2014下案例分析历年真题第一题(15分)
阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。
【C程序】
【问题1】
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
【问题2】
请画出上述程序的控制流图,并计算其环路复杂度V(G)。
【问题3】
请给出问题2中控制流图的线性无关路径。
【问题1我的解答】
month小于1;month大于12;month正常范围内;
month=2;month!=2但在正常范围内;
month在4,6,9,11;
year能否被4整除;
year能否被100整除(在能被4整除前提下)
year能否被400整除(在能被4和100整除前提下)
满足100%DC(判定覆盖)所需的逻辑条件为18;
【问题1标准答案】
判断覆盖:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称分支覆盖
对于本题中判定的条件有:(真/假都需要成立)
Month>=1&&month<=12
Month2
Year%40
Year%1000
Year%4000
Month4 ||Month6||Month9||Month11
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有6个判定,所以满足判定覆盖一共需要12个逻辑条件。
【问题2标准答案】
控制流程图的环路复杂性 V(G)等于:
(1)控制流程图中的区域个数。
(2)边数-结点数+2。
(3)判定数+1。
V(G)=11
【问题3标准答案】
线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:
1)1、2、19
2)1、2、3、19
3)1、2、3、4、12、13、17、19
4)1、2、3、4、12、13、14、17、19
5)1、2、3、4、12、13、14、15、17、19
6)1、2、3、4、12、13、14、15、16、17、19
7)1、2、3、4、12、13、14、15、16、18、19
8)1、2、3、4、5、11、19
9)1、2、3、4、5、6、10、19
10)1、2、3、4、5、6、7、9、19
11)1、2、3、4、5、6、7、8、19
【解题心得】
判定覆盖就是满足真与假,一行判定语句等于2个逻辑条件,不管这行判定语句中有几个条件组成;
环路复杂度为多少,那么线性无关路径就为多少;线性无关路径都测试了,那么就满足路径测试。
2014下案例分析历年真题第二题(20分)
某商店为购买不同数量商品的顾客报出不同的价格,其报价规则如表2-1所示。
如买11件需要支付1030+127=327元,买35件需要支付1030+1027+1025+522=930元
现在该商家开发一个软件,输入为商品数C(1<=C<=100),输出为因付的价钱P
【问题1】
请采用等价类划分法为该软件设计测试用例(不考虑C为非整数的情况).
【问题2】
请采用边界值分析法为该软件设计测试用例(不考虑健壮性测试,既不考虑C不在1到100之间或者是非整数的情况).
【问题3】
列举除了等价类划分法和边界值分析法以外的三种常见的黑盒测试用例设计方法。
【问题1我的解答】
C=1到10;✔️
C=11到20;✔️
C=21到30;✔️
C=31-100;✔️
无效等价类:C>100
无效等价类:C<0
【问题1标准答案】
测试用例1:31~100中任意一个数
测试用例2:101
测试用例3:0
测试用例4:1~10中任意一个数
测试用例5:11~20中任意一个数
测试用例6:21~30中任意一个数
【问题1解析】
划分等价类的6条原则:
(1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
(2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类
(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
(4)在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
(6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则再将该等价类进一步地划分为更小的等价类
本题中主要范围限制为1<=C<=100,即可以划分为两个无效和一个有效等价,但由于每一个小的等价类是单独处理。
【问题2我的解答】
边界值分析:1,2,9,10,11,19,20,21,29,30,31,99,100;
【问题2标准答案】
0、1、10、11、20、21、30、31、100、101
由于本题中不需考虑不在1至100之间的数,所以本题的测试用例应选择
1、10、11、20、21、30、31、100(5、15、25、35)
【问题2解析】
边界值设计测试用例,应遵循的原则:
1)如果输入条件规定了取值范围,则应取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据
2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少、比最大个数多1的数作为测试数据
3)根据规格说明的每个输出条件,使用前面的原则1
4)根据规格说明的每个输出条件,应用前面的原则2
5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例
7)分析规格说明,找出其他可能的边界条件
【问题3我的解答】
等价类划分,边界值法,决策表法,因果图法
【问题3标准答案】
黑盒测试的方法有等价类划分、边界值分析、因果图法、判定表法、正交试验法、功能图法、场景法、错误推测法等
因此本题可选:错误推测法、因果图法、判断表法、正交试验法、功能图法、场景法中的3种
2014下案例分析历年真题第三题(20分)
某大型披萨加工和销售商为了有效管理披萨的生产和销售情况,欲开发一套基于Web的信息系统。其主要功能为销售、生产控制、采购、运送、存储和财务管理等。系统采用Java EE平台开发,页面中采用表单实现数据的提交与交互,使用图形(Graphics)以提升展示效果。
【问题1】
设计两个表单项输入测试用例,以测试XSS(跨站点脚本)攻击。系统设计时可以采用哪些技术手段防止此类攻击。
【问题2】
简述图形测试的主要检查点。
【问题3】
简述页面测试的主要方面。
【问题4】
系统实现时,对销售订单的更新所用的SQL语句如下:
PreparedStatement pStmt = connection,prepareStatementC(“UPDATE SalesOrder SET
status=?WHERE OrderID=?;”);
然后通过setString(…);的方式设置参数值后加以执行。
设计测试用例以测试SQL注入,并说明该实现是否能防止SQL注入
【问题1标准答案】
用例1:“alert1(‘dddd’)”
用例2:< IMG SRC=“javascrip\r
\nt:alert(‘XSS’);” > 或<b οnmοuseοver=alert(‘dddd’)>click me
【问题2标准答案】
图形测试,主要检查点如下:
颜色饱和度和对比度是否合适
需要突出的链接颜色是否容易识别
是否正确加载所有的图形
【问题3标准答案】
页面的一致性如何
在每个页面上是否设计友好的用户界面和直观的导航系统
是否考虑多种浏览器的需要
是否建立了页面文件的命名体系
是否充分考虑了合适的页面布局技术,如层叠样式表、表格和帧结构等
【问题4标准答案】
测试用例设计可参考:
Pstmt.setString(‘1’ or ‘1’ = ‘1’–,status)
Pstmt.setString(‘2’ or ‘1’ = ‘1’,orderID)
【案例解析】
XSS攻击:
跨站脚本攻击(Cross Site Scripting)是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。
防御XSS攻击方法:
验证所有输入数据,有效检测攻击;
对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。
防御规则:
不要在允许位置插入不可信数据
在向HTML元素内容插入不可信数据前对HTML解码
在向HTML常见属性插入不可信数据前进行属性解码
在向HTML JavaScript DATA Values插入不可信数据前,进行JavaScript解码
在像HTML样式属性插入不可信数据前,进行CSS解码
在向HTML URL属性插入不可信数据前,进行URL解码
页面测试
页面是信息的载体,直接体现WEB站点的设计水平,一个好的页面因信息层次清晰而让用户一目了然;因涉及巧妙、精致美观而让用户流连忘返;因恰当使用各种元素能完成许多功能而不显拥挤。
SQL注入
是黑客攻击数据库的一种常用方法,其实就是通过把SQL命令插入到Web表单或页面请求的查询字符串中提交,最终达到欺骗服务器执行恶意的SQL命令,来达到攻击的目的。
对于本题由于将SQL语句中的输入值,使用参数方式传送,而且SQL语句进行预编译,这样用于防止注入式攻击
2014下案例分析历年真题第四题(20分)
某大型教育培训机构近期上线了在线网络学校系统,该系统拓扑结构如图4-1所示。
企业信息中心目前拟对该系统用户认证机制进行详细的安全性测试,系统注册用户分为网校学员、教师及管理员三类,其中网校学员采用用户名/口令机制进行认证,教师及管理员采用基于公钥的认证机制。
【问题1】
为防止针对网校学员的口令攻击,请从口令的强度、传输存储及管理等方面,说明可采取哪些安全防护措施。相应地,对于网校学员所采用的口令认证机制进行测试时,请说明从用户名称及用户口令两个方面开展测试时应包含哪些基本的测试点。
【问题2】
为提高系统认证环节安全性,系统在网校教师及管理员登录认证时引入了USB Key,请说明对公钥认证客户端进行安全测试时,USB Key的功能与性能测试应包含哪些基本的测试点。
【问题3】
系统证书服务器主要提供证书审核注册管理及证书认证两项功能,根据系统实际情况,目前只设置人员证书,请说明针对证书服务器的功能与性能测试应包含哪些基本的测试点。
【问题1标准答案】
通过安全策略设置密码的最小长度,设置口令锁定,使用通信加密技术,对存储在数据库中的数据进行加密,设置访问控制等。
对于用户名称的测试关键在于测试用户名称的唯一性:
1)同时存在的用户名称在不考虑大小写的状态下,不能同名。
2)对于关键领域的软件产品和对于安全性较高的软件,应当同时保证使用过的用户在用户删除或者停用后,保留该用户记录,并且新用户不能和该用户同名。
测试用户口令的强度和口令存储的位置和加密强度:
1.最大口令时效
2.最小口令时效
3.口令历史
4.最小口令长度
5.口令复杂度
6.加密选项
7.口令锁定
8.账户复位
【问题2标准答案】
功能测试:
•是否支持AES、RSA等常用加密算法。
•是否提供外部接口以支持用户证书及私钥的导入。
•是否提供外部接口支持将数据传入Key内,经过公钥/私钥计算后导出。
•是否能实现USB Key插入状态实时监测,当USB Key意外拨出时是否能自动锁定用户状态。
•是否使用口令进行保护。
性能测试:
•是否具备私钥不能导出的基本安全特性 Key内加解密算法的执行效率。
•是否满足系统最低要求。
【问题3标准答案】
对证书业务服务系统的功能测试:
证书认证系统是否采用国际密码主管部门审批的签名算法完成签名操作,是否提供证书的签发和管理、证书撤销列表的签发和管理、证书/证书撤销列表的发布以及证书审核注册中心的设立、审核及管理等功能。
按使用对象分类,系统是否能提供人员证书。
是否可以提供加密证书和签名证书。
数字证书格式是否采用X.509 V4。
系统是否提供证书申请、身份审核、证书下载等服务功能。
证书申请、身份审核、证书下载等服务是否都可采用在线或离线两种方式。
系统是否提供证书认证策略及操作策略管理、自身证书安全管理等证书管理服务。
证书业务服务系统性能测试:
检查证书业务服务系统设计的处理性能是否具备可伸缩配置及扩展的能力。
关键部分是否采用双机热备份和磁盘镜像。
是否满足系统的不间断运行、在线故障修复和在线系统升级。
是否满足需求说明中预测的最大数量用户正常访问的需求,并且,是否有3~4倍的冗余,如有必要,需要测试系统的并发压力承受能力
2014下案例分析历年真题第五题(20分)
阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某嵌入式刹车控制软件,应用于汽车刹车控制器,该软件需求如下:
1.模式选择:
采集模式控制离散量信号In-D1并通过模式识别信号灯显示软件当前工作模式。在信号In-D1为低电平时进入正常工作模式(模式识别信号灯为绿色),为高电平时进入维护模式(模式识别信号灯为红色)。软件在正常工作模式下仅进行刹车控制和记录刹车次数,在维护模式下仅进行中央控制器指令响应。
2.刹车控制:
采用定时中断机制,以5ms为周期采集来自驻车器发出的模拟量信号In-A1以及来自刹车踏板发出的模拟量信号In-A2,并向刹车执行组件发送模拟量信号Out-A1进行刹车控制。
模拟量信号说明:1)In- A1、In-A2以及Out-Al信号范围均为[0.0V,10.0V],信号精度均为0.1V;2)Out-A1信号的计算方法为:Out-Al=In-Al+ 0.3*ln-A2,在计算完成后需要在满足信号精度的要求下进行四舍五入及限幅处理
3.记录刹车次数;
在Out-A1大于4V时,读出非易失存储器NVRAM中保存的刹车次数记录进行加1操作,然后保存至非易失存储器NVRAM中。
4.响应中央控制器指令;
接收来自中央控制器的串行口指令字In-S1,回送串行口响应字Out-Sl。当接收的指令字错误时,软件直接丢弃该命令字,不进行任何响应。
指令字及响应字说明如表5-1所示
【问题1】(4分)
在不考虑测量误差的情况下,根据所设计的输入填写表5-2中的空(1)~(4)。
【问题2】(8分)
请简述本软件串行输入接口测试的测试策略及测试内容。针对表5-1中“读取刹车次数指令”进行鲁棒性测试时应考虑哪些情况?
**【问题3】(6分) **
某测试人员设计了如表5-3所示的操作步骤,对模式选择功能进行测试(表中END表示用例到此结束)。
为进一步提高刹车控制软件的安全性,在需求中增加了设计约束:软件在单次运行过程中,若进入正常工作模式,则不得再进入维护模式。请参照表5-3的测试用例完成表5-4,用于测试该设计约束。
【问题4】(2分)
本项目在开发过程中通过测试发现了17个错误,后期独立测试发现了31个软件错误,在实际使用中用户反馈了2个错误。请计算缺陷探测率(DDP)。
【问题1我的解答】
1)3.0+0.35.2=3.0+1.56=4.56✔️
2)5.3+6.80.3=5.3+2.04=7.34✔️
3)10.0✔️
4)10.0✔️
【问题1标准答案】
- 4.6V 2. 7.3V 3. 10.0V 4. 10.0V
【问题2标准答案】
测试策略包括测试正常和异常指令的响应。
测试内容包括读取刹车次数和清除刹车次数两种指令。
对“读取刹车次数指令”鲁棒性测试时应考虑输入接口帧头错误、指令码错误、帧长错误、帧尾错误以及整个指令长度超过4B的情况。
【问题3我的解答】
低电平 绿色
高电频 红色
END
【问题3标准答案】
依据题干中“软件在单次运行过程中,若进入正常工作模式,则不得再进入维护模式”要求,所以首先应该将工作模式设置为高电压模式,然后改变电压,进入工作模式,等应为绿色,然后再改变模式,由于约束条件是不允许“进入正常工作模式,则不得再进入维护模式” 所以系统应该不响应,这是灯应为绿色。
结合表5-3得出:
【问题4标准答案】
DDP = (17+31)/(17+31+2) = 96%✔️