1、2011年下半年软件水平考试(中级)软件评测师下午(应用技术)试题真题试卷及答案与解析 一、试题一( 15分) 0 阅读下列说明。 说明 场景法是黑盒测试中重要的测试用例设计方法,通过场景描述业务流程 (包括基本流 (基本业务流程 )和备选流 (分支业务流程 ),设计测试用例遍历软件系统功能,验证其正确性。 下面是对电子不停车收费系统 (ETC)的基本流和备选流的描述。1 使用场景法设计测试用例,指出所涉及到的基本流和备选流。基本流用 A字母编号表示,备选流用表 1-2中对应的字母编号表示。 例如: T01: A T02: A、 B 2 针对问题 1设计的测试用例,依次将初次读取车辆信息、最终
2、读取车辆信息、账户号码、账户余额和账户状态等信息填入下述测试用例表中。表中行代表各个测试用例,列代表测试用例的输入值,用 V表示有效数据元素,用 I表示无效数据元素, n/a表示不适用,例如 T01表示 “成功通过 ”用例。二、试题二( 15分) 2 阅读下列说明,回答问题 1至问题 3,将解答填入答题纸的对应栏内。 逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程序的覆盖。针对以 下由 C语言编写的程序,按要求回答问题。 gz_open (const char*mode) char*p= (char*)mode; /1 char fmode4; char*m=fm
3、ode; char smode= 0; char level=0; int strategy=0; do if (*p=r) /2 smode - r; /3 if (*p =O /6 else if (*p=f) /7 strategy=1; /8 else /9 *m+=*p; *p+; /10 while (m!=fmode+sizeof (fmode); /11 /12 3 请给出满足 100%DC(判定覆盖 )所需的逻辑条件。 4 请画出上述程序的控制流图,并计算其控制流图的环路复杂度 V(G)。 5 假设函数 gz_open的参数 mode是由 26个小写字母 a-z、数字 0-9
4、以及空格组成的字符串,请使用基本路径测试法构造 1个测试用例,使之覆盖所有基本路径。 三、试题三( 15分) 5 阅读下列说明。 说明 在 CNCERT/CC(国家计算机网络应急技术处理协调中心 )处理的安全事件中,国内政府机构和重要信息系统部门的网页篡改类事件数量增长迅速。 2011年 6月的某一周,中国境内仅网页被篡改的网站就有 660个,其中政府网站 105个。网站内容复制容易,转载速度快,后果难以预料,网页如果被篡改,将直接危害该网站的利益,尤其是门户网站作为政府发布重要新闻、重大方针政策、法规和企业信息等的重要渠道,一旦被黑客篡改,将严重损害政府和企业形象。 从网站页面被篡改的角度来
5、看,存在两种攻击的可能,一种是网站被入侵,也就是说网站页面确实被篡改了,另外一种是网站被劫持,这种情况下网站的页面实际上并没有被篡改,但是攻击者劫持了网络访问并发送欺骗页面给来访者,进而造成页面被篡改的 表象。 6 通过入侵从而进行网页篡改的可能途径有哪些?这些途径各对应安全系统防护体系的哪个层次? 7 针对网页被篡改的问题,从技术层面看有哪些防范措施? 8 现在出现了一些基于监测与恢复的页面防篡改系统,这类防篡改系统应具备哪些基本功能? 四、试题四( 15分) 8 阅读下列说明。 说明 某公司开发基于 Web的招聘系统,采用 Java EE系统架构。系统提供用户注册、职位设置、接受应聘者的申
6、请和评估录取应聘者等功能。接受申请主要是验证应聘者提交的姓名、地址、照片、简历和预申请职 位等信息的完整性,并发送给应聘者相关通知;评估应聘者主要是根据部门经理设置所需职位,对已经受理的申请进行资格审查,发送给应聘者录用与否的相关决策信息。 系统要支持: (1)在 50个用户并发时,主要功能的处理能力至少要达到 5个请求 /秒,平均数据量 12KB/请求; (2)用户可以通过 PC、移动设备上的不同操作系统和浏览器进行访问。 9 简要叙述招聘系统链接测试的主要测试内容。 10 简要叙述为了达到系统要支持的 (2),需要进行哪些兼容性测试,并设计一个兼容性测试矩阵实例。 11 在 满足系统要支持
7、的 (1)时,计算系统的通信吞吐量。 12 系统实现时,对用户的登录判断所用的动态 SQL语句如下: “SELECT*FROM Users WHERE User_ Name=“+ strUserName+“AND Password=“+ strPassword+“;“ 该 SQL语句是否能防止 SQL注入 ?请设计一个测试用例,以测试 SQL注入,并说明防止 SQL注入的方法。 五、试题五( 15分) 12 阅读下列说明。 说明 某数据管理系统有两个重要模块:数据 接收模块和数据查询模块。数据接收模块按照一定的时间间隔从多个不同数据源接收数据进行一定的预处理后存入数据库中;数据查询模块根据用户
8、请求从数据库中查询相应的数据并返回给用户。现需要对该系统执行负载压力测试。 该数据管理系统的性能要求为: (1)交易执行成功率 100%; (2)接收间隔最小为 200ms; (3)查询响应时间在 3s以内; (4)查询功能支持至少 10个并发用户: (5)数据接收模块 CPU利用率不超过 40%; (6)数据查询模块 CPU利用率不超过 20%。 13 简述负载压力测试的主要目的。 14 对该数据管理系统进行性能测试时,主要关注哪些性能指标 ? 15 该系统数据接收模块和数据查询模块的测试结果如表 5-1、表 5-2所示,请分别指出测试结果是否满足性能需求并说明原因。16 根据问题 3的测试
9、结果,试分析该系统的可能瓶颈。 2011年下半年软件水平考试(中级)软件评测师下午(应用技术)试题真题试卷答案与解析 一、试题一( 15分) 1 【正确答案】 T03: A、 C T04: A、 D T05: A、 E T06: A、 B、 C T07: A、 B、 D T08: A、 B、 E 【试题解析】 本题考查黑盒测试中场景法的应用。 问题 1 根据题目中题干确定的基本流和备选流,可以设计场景,每个场景覆盖一种在该案例中事件的不同触发顺序与处理结果形成的事件流,最后得出所有的测试用例。下面是所有的测试用例以及用例中所涉及的基本流与备选流。 T01: A T02: A、 B T03: A
10、、 C T04: A、 D T05: A、 E T06: A、 B、 C T07: A、 B、 D T08: A、 B、 E 2 【正确答案】 【试题解析】 根据问题 1中设计的所有测试用例,测试人员需要设计具体的场景分析,其中应包括场景变化中系统所关心的状态信息的变化,以及测试结束后预期的结果。这样,在测试人员进行实际测试后,可以用实际输出结果与预期结果进行比较,来评价测试的结果。 问题 2中给出了系统所关心的状态,包括:次读取车辆信息、最终读取车辆信息、账户号码、账户余额和账户状态等,因此对应的测试用例表如下所示。二、试题二( 15分) 3 【正确答案】 【试题解析】 本题考查白盒测试法的
11、应用。 本问题考查白 盒测试用例设计方法中的判定覆盖法。 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次 “真 ”值和 “假 ”值,从而使程序的每一个分支至少都通过一次。本题中程序有 4个判定,所以满足判定覆盖一共需要 8个逻辑条件,如下表所示。4 【正确答案】 控制流图 环路复杂度 V(G)=6 【试题解析】 本问题考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。 控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示 一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制
12、流。基本结构如下所示:根据题中程序绘制的控制流图如下所示。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中, if(*p =0主要功能的处理能力至少要达到 5个请求 /秒,即 T=5;平均数据量 12KB/请求,即 D=12KB/s。 则:通信吞吐量 P=50512=3000KB/s 12 【正确答案】 该 SQL语句不安全,容易造成 SQL注入。 设计测试用例: 注:设计类似如下用例的一个即可,其中应包含 SQL功能符号,使得该 SQL语句变得不符合设计意图即可,例如
13、,包含了 “-”或 “, DROP” 等 参考 用例 1: strUserName:Zhang-strPassword:San 注:上述用例将使得该 SQL语句变为: SELECT*FROM Users WHERE User_Name=Zhang-AND Password=San; 参考用例 2: strUserName:Zhangora=a strPassword:Sanora=a 注:上述用例将使得该 SQL语句变为: SELECT*FROM Users WHERE User Name=Zhangora=aAND Password=Sanora=a: 防止 SQL注入的方法主要有:拼接 S
14、QL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。 【试题解析】 本问题考查 Web应用安全性方面。 SQL注入是 Web应用安全性测试的重要方面。 许多 Web应用系统采用某种数据库,接收用户从 Web页面中的输入,完成展示相关存储的数据 (如,检查用户登录信息 )、将输入数据存储到数据库 (如,用户输入表单中数据域并点击提交后,系统将用户名密码等注册信息存 入数据库 )等操作。在有些情况下,将用户输入的数据和设计好的 SQL框架拼接后提交给数据库执行,就可能存在用户输入的数据并非设计的正确格式,就给恶意用户提供了破坏的机会,即 SQL注入。恶意用户输入不期望的数据,拼接后提交给数
15、据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。因此需要在测试阶段进行认真严格的测试。 本系统实现时,对用户的登录判断所用的动态 SQL语句是: “SELECT*FROM Users WHERE User_Name=“+strUserName+“AND Password=“+ strPassword+“;“ 采用拼接字符串方式,无法防止 SQL注入。 例如 strUserName: Zhang-, strPassword:San,则该 SQL变为: SELECT*FROM Users WHERE User_ Name=Zh
16、ang-AND Password=San; “-”是 SQL中注释符号,其后的内容为注释,这样上述语句中 “-”之后的内容变为注释,只要用户表中有用户名为 Zhang,系统就允许用户以 Zhang的身份登录,并以 Zhang的身份做任何可做的操作。 再比如 strUserName:Zhangora=a, strPassword:Sanora=a,则该 SQL变为: SELECT*FROM Users WHERE User_Name=Zhangora=aAND Password=Sanora=a; 因为 a=a条件总是成立,因此, SQL执行结果包括用户表中所有行,系统就允许以第一行的身份进行登
17、录。 更为严 重的情况下,如果用户输入 strUserName:Zhang;DROP table users_details;-以及任何字符串作为 strPassword,该 SQL就变为: SELECT*FROM Users WHERE User=Name=John;DROP table users_details;-AND Password=San; 这就造成数据库中 users_details表被永久删除。 防止 SQL注入的方法主要有:拼接 SQL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。 SQL注入在使用 SSL的应用中仍然存在,甚至是防火墙也无法防止 SQL注入。因此
18、,在测试 Web应用时,需要认真仔细设计测试用例,采用 Web漏洞扫描工具等进行检查,以保证不存在 SQL注入机会 五、试题五( 15分) 13 【正确答案】 1)在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况 2)预见系统负载压力承受力,在应用实际部署之前,评估系统性能 3)分析系统瓶颈、优化系统 【试题解析】 本问题考查负载压力测试的测试目的。 负载压力测试的目的包括 :在真实环境下检测系统性能,评估系统性能以及服务等级的满足情况;预见系统负载压力承受力,在应用实际部署之前,评估系统性能;分析系统瓶颈、优化系统。 14 【正确答案】 1)并发用户数 2)响应时间 3)资源利用
19、率 【试题解析】 本问题考查性能测试的性能指标。性能测试指标包括并发用户数、响应时间、吞吐量、资源利用率等。 该系统涉及的性能指标包括:并发用户数,响应时间和资源利用率。 15 【正确答案】 数据接收模块的测试结果不满足性能指标。当接收间隔为 200ms时,存数据库交易成功率为 80%,不满足交易成功率 100%的要求;当接收间隔为200ms时, CPU利用率为 43.8%,不满足不超过 40%的要求。 数据查询模块的测试结果满足性能指标。要求至少支持 10个并发用户,所以在15个并发用户的时候响应时间超出 3s不能算作不满足。 【试题解析】 本问题考查能否正确判断测试指标是否合理。 对数据接
20、收模块来说,当接收频率为 200ms时,存数据库交易成功率为 80%,不满足交易成功率 100%的要求;当接收频率为 200ms时, CPU利用率为43.8%,不满足不超过 40%的要求。因此数据接收模块 的测试结果不满足性能指标。 对数据查询模块来说,要求至少支持 10个并发用户的情况下响应时间在 3秒以内,这样在 15个并发用户的时候响应时间超出 3秒不能算作不满足。数据查询模块的测试结果满足性能指标。 16 【正确答案】 1)数据接收模块软件没有采用合适的并发 /并行策略 2)服务器 CPU性能不足 【试题解析】 本问题考查工程师对系统瓶颈的初步判断。 根据问题 3可以看出,当接收频率过高时,存数据库交易成功率和 CPU剩用率均不满足需求。存数据库交易成功率问题的可能原因有两个,一是该模块程序没有 采用合适的并发 /并行策略,二是数据库本身的设计或者优化不够;而 CPU利用率的问题则是因为服务器 CPU本身性能不够。 因此,可能瓶颈为:数据接收模块软件没有采用合适的并发 /并行策略;服务器CPU性能不足;数据库设计不足或者优化不够。