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