1、2016年下半年软件水平考试(中级)软件评测师下午(应用技术)试题真题试卷及答案与解析 一、试题一( 15分) 0 阅读下列 C程序,回答问题 1至问题 3,将解答填入答题纸的对应栏内。【 C程序】 1 请针对上述 C程序给出满足 100 DC(判定覆盖 )所需的逻辑条件。 2 请画出上述程序的控制流图,并计算其控制流图的环路复杂度 V(G)。 3 请给出问题 2中控制流图的线性无关路径。 二、试题二( 15分) 3 阅读下列说明,回答问题 1和问题 2,将解答填入答题纸的对应栏内。【说明】 某航空公司的会员 卡分为普卡、银卡、金卡和白金卡 4个级别,会员每次搭乘该航空公司航班均可能获得积分,
2、积分规则如表 2-1所示。此外,银卡及以上级别会员有额外积分奖励,奖励规则如表 2-2所示。公司开发了一个程序来计算会员每次搭乘航班所累积的积分,程序的输入包括会员级别B、舱位代码 C和飞行公里数 K,程序的输出为本次积分 S。其中, B和 C为单个字母且大小写不敏感, K为正整数, S为整数 (小数部分四舍五入 )。 4 采用等价类划分法对该程序进行测试,等价类表如表 2-3所示,请补充空 (1)(7)。 5 根据以上等价类表设计的测试用例 如表 2-4所示,请补充空 (1) (13)。三、试题三( 15分) 5 阅读下列说明,回答问题 1至问题 4,将解答填入答题纸的对应栏内。 【说明】
3、某证券交易所为了方便提供证券交易服务,欲开发一个基于 Web的证券交易平台。其主要功能包括客户开户,记录查询、存取款、股票交易等。客户信息包括姓名、 Email(必填且唯一 )、地址等;股票交易信息包括股票代码 (6位数字编码的字符串 )、交易数量 (100的整数倍 )、买卖价格 (单位:元,精确到分 )。 系统要支持: (1)在特定时期内 3000个用户并 发时,主要功能的处理能力至少要达到 128个请求秒,平均数据量 2KB请求; (2)页面中采用表单实现客户信息、交易信息等的提交与交互,系统前端采用HTML5实现。 6 在对此平台进行非功能测试时,需要测试哪些方面 ? 7 在满足系统要支
4、持的 (1)时,计算系统的通信吞吐量。 8 表单输入测试需要测试哪几个方面 ? 9 (1)针对股票代码: 111111、数量: 10万、当前价格: 6 00,设计 4个股票交易的测试输入。 (2)设计 2个客户开户的测试输入,以测试是否存在 XSS、 SQL注入。 四、试题四( 15分) 9 阅读下列说明,回答问题 1至问题 5,将解答写在答题纸的对应栏内。【说明】 图 4 1是银行卡应用的部分类图,图中属性和操作前的 “+”和 “-”分别表示公有成员和私有成员。银行卡 Account有两种类型,借记卡 SavingAccount和信用卡CreditAccount。 (1)借记卡和信用卡都有卡
5、号 accountNumber和余额 balance两个属性。借记卡的余额是正常余额,信用卡的余额是目前未还的金额,如果没有未还的金额,则为 0;有开户 setUp、取款 withdraw、查询余额 getBalance和销户 close四个方法。借记卡取钱时,要求取钱金额不能超过余额;而信用卡取钱金额不能超过信用额度,因此需要在子类中实现该方法。 (2)借记卡可以存钱 deposit。 (3)信用卡有信用额度 creditLimit属性,可以查询信用额度 getCreditLimit、修改信用额度 updateCreditLimit和还款retumCredit。现拟采用面向对象的方法进行测试
6、。 10 面向对象单元测试的主要对象是什么 ? 11 在继承关系上,若某方法在测试父类时已经测试过,那么在什么情况下 在子类中也需要测试 ? 12 要测试方法 deposit()时,还需要调用什么方法 ?给出测试序列。 13 方法 withdraw在基类 Account中定义,但在两个子类中有不同的实现。这是面向对象的什么机制 ?这种情况在测试时如何进行 ? 14 给出类 SavingAccount的最小测试序列。 五、试题五( 15分) 14 阅读下列说明,回答问题 1至问题 3,将解答填入答题纸的对应栏内。 【说明】 某嵌入式控制软件通过采集传感器数值来计算输出控制率,为了提高数据采集的可
7、靠性,使用三余度采集方法进行三个通道 的数据采集。 1三余度通道数据采集及处理要求: (1)三通道采集值 In_U0、 In_U1、 In_2的正常范围为 -3 0, 3 0V,且任意两通道间差值不大于 0 5V; (2)如果某通道采集值超过正常范围或者因为通道采集值造成与其他通道差值大于 0 5V,则该通道数据不满足要求; (3)如果三通道值均满足要求,则取三通道中差值较小的两通道数据的平均值; (4)如果仅有一个通道数据不满足采集要求,取满足要求的两个通道数据的平均值; (5)如果多于一个通道数据不满足采集要求,取安全值 0V。 2对采 集数值计算控制率的具体处理算法如下: (1)如果依据
8、采集数据计算的控制率 C1与目前实际控制率 C0差值不大于 0 01,则使用本周期计算控制率 C1进行输出控制,否则使用目前实际控制率 C0输出控制,不上报传感器故障; (2)如果连续 3个周期计算的控制率 C1与目前实际控制率 C0差值大于 0 01,则上报传感器三级故障,连续超差计数清零,使用目前实际控制率 C0输出控制;如果已经连续 3个周期控制率超差,并上报三级故障,但第 4个周期计算的控制率 C1与目前实际控制率 C0差值不大于 0 01,则清除三级故障上报: (3)如果累计 大于等于 10个周期计算的控制率 C1与目前实际控制率 C0差值大于 0 01,则上报传感器二级故障,使用目
9、前实际控制率 C0输出控制; (4)如果累计大于等于 100个周期计算的控制率 C1与目前实际控制率 C0差值大于 0 01,则上报传感器一级故障,并清除二级故障,并切断输出控制 (输出安全值 0); (5)如果低级故障和高级故障同时发生,则按高级故障处理。 15 为了测试采集算法,在不考虑测量误差的情况下,设计了表 5-1所示的测试用例,请填写该表中的空 (1) (6)。16 为了测试控制率计算算法,在不考虑测量误差 的情况下,设计了表 5-2所示的测试用例,请完善其中的空 (1) (6)。17 测试人员在设计测试用例进行采集算法测试时,发现本项目的三余度采集值的具体处理算法存在 1处缺陷,
10、请指出此处缺陷。 2016年下半年软件水平考试(中级)软件评测师下午(应用技术)试题真题试卷答案与解析 一、试题一( 15分) 1 【正确答案】 【试题解析】 本问题考查白盒测试用例设计方法中的判定覆盖法。 判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次 “真 ”值和 “假 ”值,从而使程序的每 一个分支至少都通过一次。本题中程序有 3个判定,所以满足判定覆盖一共需要 6个逻辑条件。 2 【正确答案】 控制流图 环路复杂度 V(G)=5 【试题解析】 本问题考查白盒测试用例设计方法中的基本路径测试法。涉及到的知识点包括根据代码绘制控制流图、计算环路复杂度。 控制流图是描
11、述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变 复合条件的判断为一系列单个条件的嵌套的判断。本题程序中, if(y=7|y=21)这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。需要注意的是,复合条件之间是 “&”的关系还是 “|”的关系反应在控制流图的画法是不同的。 程序的环路复杂度等于控制流图中判定节点的个数加 1,本题控制流图中判定节点个数为 4,所以 V(G)=5。 3 【正确答
12、案】 线性无关路径: 1 1-9 2 1-2-3-8-1 3 1-2-4-5-7-8-1 4 1-2-4-5-6-7-8-1 5 1-2-4-5-6-8-1 【试题解析】 考查白盒测试用例设计方法中的基本路径法。涉及到的知识点包括:根据控制流图和环路复杂度给出线性无关路径。 线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有 5条线性无关路径。 二、试题二( 15分) 4 【正确答案】 (1)P (2)Z C (3)A D I Y (4)任意正整
13、数 (5)除 F S G P之外的单个字母 (6)非单个字母 (7)非正整数 【试题解析】 本问题考查等价类划分法中等价类表的构造。 等价类划分法的等价类表是把程序的输入域按规则划分为若干子集。 本题中, B和 C由多个输入值构成,并且需要对每个 (或者每组 )输入值分别处理,按规则可以划分为 n个有效等价类 (每个或者每组值确定一个有效等价类 )和一个无效等价类 (所有不允许输入值的集合 )。 对 B来说,分成 4个有效等价类 (B分别取 F、 S、 G、 P)和 1个无效等价 类 (其他情况 ),而这个无效等价类又可以进一步细分为非字母、非单个字母以及除 F SG P之外其他字母。 对 C
14、来说,根据额外积分 200、 150、 125、 100、 50、 0可以分为 6个有效等价类和 1个无效等价类,而这个无效等价类可以进一步细分为非字母和非单个字母。 (注意:这里 26个字母已经全部使用,不存在其他字母这个无效等价类 ) 本题中对 K是规定了输入值集合必须满足的条件 (即正整数 ),根据规则可以划分为 1个有效等价类 (K是正整数 )和 1个无效等价类 (K不是正整数 )。 5 【正确答案】 (1)1000 (2)500 (3)3, 7, 11 (4)R B H K L M W (5)F (6)0 (7)任意非字母,如 0 (8)任意非单个字母,如 FF (9)任意非字母,如
15、 0 (10)任意非单个字母,如 FF (11)任意非整数,如 A (12)N A (13)任意非正整数,如 0 【试题解析】 考查等价类划分法中根据等价类表编写测试用例。 在编写等价类划分法的测试用例时,如果输入全部都来自有效等价类,则从每个有效等价类 选取一个代表元素作为输入,如果要考虑无效等价类,则每次只选取一个无效等价类,其余输入都从有效等价类中选取。 三、试题三( 15分) 6 【正确答案】 性能测试、负载测试、压力测试、并发测试、配置测试、可靠性测试、容量测试、失效恢复测试、链接速度测试等。 【试题解析】 本问题考查 Web应用非功能性测试的内容。题目背景是股票交易,属于交易密集型
16、的应用。题目还涉及到特定时期内 3000个用户并发,并且处理能力至少要达到每秒 128个请求,所以需要测试与并发能力相关的因素,即对性能、负载、压力、并发、配置、可 靠性、容量、失效恢复、链接速度、兼容性等方面进行测试。 7 【正确答案】 通信吞吐量: P=N(并发用户的数量 =3000)T(每单位时间的在线事务数量 =128)D(事务服务器每次处理的数据负载 =2KB s)=30001282=768000KB s=750MB s。 【试题解析】 本问题考查 Web应用的性能指标计算。通信吞吐量的计算公式为: P=NxTxD 其中参数: N:并发用户的数量 T:每单位时间的在线事务数量 D:事
17、务服务器每次处理的数据负载 P:系统的通信吞吐量 本题中系统要求支持的 (1)中给出 3000个用户并发,即 N=3000;主要功能的处理能力至少要达到 128个请求秒,即 T=128;平均数据量 2KB请求,即D=2KB s。 则:通信吞吐量 P=3000x 128x2: 768000KB s=750MB s。 8 【正确答案】 表单输入测试需要验证:输入域、错误输入是否有错误提示、必填项和选填项。 【试题解析】 本题考查表单测试相关内容。表单 (Form)在 Web页面中用来提供给用户填写信息,从而获得填写的相关信息,实现 用户和系统之间的交互。本系统页面中采用表单实现客户信息、交易信息等
18、的提交与交互。进行表单测试时,需要对表单输入进行验证,包括输入域、错误输入时是否有错误提示、必填项和选填项等方面的验证。 9 【正确答案】 (1)测试一:任一标准等价类测试输入,满足股票代码为 11 11 11,交易数量为 100整数倍且小于等于 10万,买卖价格为包含两位小数的正数,如 “11 11 11, 300, 6 78”。 测试二至测试四:分别为任一健壮等价类测试输入,即每个输入有一个无效数据,其余输入为有效数据。如 “11111A, 300, 6 78”“111111, 301,6 78”“111111, 300, 6 789”。 (也可以采用边界值分析法来设计测试用例,这样测试二
19、至测试四需要选择一些边界上的值,比如交易数量取 0、 100、 99900、 100000、 100100等情况。 ) (2)测试一:其中一字段包含任何 HTMK,如 ,或任何脚本如; 测试二:其中一字段为:任何包含 SQL,功能符号测试是否使 SQL改变为不符合设计意图即可,如包含 OR、 一、 OR1=1等。 【试题解析】 本题考查 Web应用测试的输入,包括输入的不同情况、安全性方面的 SQL注入和 XSS跨站攻击。 (1)针对股票代码: 11 11 11、数量: 10万、当前价格: 6 00,设计 4个股票交易的测试输入,即包括对股票代码为 6位数字编码的字符串、交易数量题目要求为 1
20、00的整数倍、交易价格单位为元 (精确到分 )。对输入不同情况,可以采用等价类划分或边界值分析法等设计测试输入。 等价类划分法是把所有可能的输 入数据,即程序的输入域划分为若干部分 (子集 ),然后从每一个子集中选取少数具有代表性的数据作为测试用例。其中,等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性,即每一类的代表性数据在测试中的作用都等价于这一类中的其他数据。这样,对于表征该类的数据输入将能代表整个子集合的输入。边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其
21、测试用例来自等价类的边界。边界值分析使用与等价类划分法相同的 划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。 根据等价类划分原则,测试输入应该考虑股票代码是否全为数字、交易数量是否为 100的整数倍、交易价格是否为小数点后 2位。设计标准等价类和健壮等价类的测试输入,如下: 测试一:任一标准等价类测试输入,满足股票代码为 11 11 11,交易数量为 100整数倍且小于等于 10万,买卖价格为包含两位小数的正数,如 “11111l, 300, 6 78”。 测试二至测试四:分别为任一健壮等价类测试输入,即每个输入有一个无效数据 ,其余输入
22、为有效数据。如 “11111A, 300,6 78”、 “111111, 301, 6 78”、 “111111, 300, 6 789”。 如果采用边界值分析法来设计测试用例,则输入正确域中任何值作为输入之外,测试二至测试四需要选择一些边界上的值,比如交易数量取 0、 100、 99900、 100000、 100100等情况。 (2)输入的内容中输入某些功能符号可能会传到后台引起安全问题。 Web应用系统在某些情况下,接收页面上传的内容,并作为新页面的内容。例如,在本系统中需要提交股票代码、交易数量、交易价格,在提交之 后,需要查看交易情况时显示相关的内容。 在将输入内容作为新页面的情况下
23、,如果用户输入如下带有 HTML标记的内容:在提交之后,标记将提交到服务器上,并在有用户访问新的页面中显示,此时所看到的网页中包含以上标记的部分元素可能是:从客户的角度看,该网页中就出现了弹出窗口提示,显示 Hello World!,如下图所示。即用户输入的内容已经被浏览器成功执行。再如输入如下内容:在提交之后,后续用户再访问时,所看到的网页中包含标记的部分元素可能是:即新用户所看到网页中显示 Click me!,当用户鼠标 移过此文字时,就会弹出窗口 (左侧为 Chrome弹出,右侧为 IE9直接给出的提示窗口,多次鼠标滑过操作 Chrome提示窗口多了一行浏览器对阻止这类代码的创建新窗口的
24、选项, firefox类似 ):而如果这类代码可以执行,就存在被真正恶意攻击者攻击的可能,而且可能造成各类安全问题。所以网站提交代码中的任何脚本、页面功能符号都不应该被直接接受使其作为功能符号在后续使用。所以测试时需要考虑设计包含 HTML标记符、脚本等测试输入,如等功能符号。 对于 Web应用系统采用某种数据库,接收用户从 Web页面中输入,通过将输 入作为与数据库相关操作的一部分。如果将用户输入的数据和设计好的 SQL拼接后提交给数据库执行,在有些情况下,就可能存在用户输入的数据并非设计的正确格式,就给恶意用户提供了破坏的机会,即 SQL注入。恶意用户输入不期望的数据,拼接后提交给数据库执
25、行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。因此,在测试 Web应用时,需要认真仔细设计测试输入,进行认真严格的测试,以保证如果存在 SQL注入及早发现。 本系统测试时,设计测试如为:对任一字段设计包含 SQL功能符号,如包含OR、 -、 OR1=1等,检查结果是否造成注入问题。 四、试题四( 15分) 10 【正确答案】 类和类方法 【试题解析】 该问题考核基本概念,面向对象测试的对象为类和类中的方法。 11 【正确答案】 (1)继承的方法在子类中进行了修改 (2)继承的方法调用了修改过的方法 【试题解析】 该问题考核基本
26、概念,若子类的某方法继承了其基类,方法进行了修改,则需要进行测试;另一种情况是,继承的方法没有修改,用基类的方法,但是该方法调用了子类修改过的其他方法 时,也需要对该方法进行测试。 12 【正确答案】 需要调用的方法: getBalance() 测试序列: getBalance(); depositq(); getBalance(); 【试题解析】 在测试方法 deposit()时,由于其属性 balance发生了变化,因此在测试方法 deposit()前后,调用方法 getBalance()。 13 【正确答案】 面向对象机制:多态 如何测试:在两个子类中均要测试 withdraw方法 【试
27、题解析】 在面向对象技术中,不同的对象收到统一 消息可以产生完全不同的结果,这一现象叫做多态。多态可以利用类继承的层次关系来支持。本题干 “方法withdraw在基类 Account中定义,但在两个子类中有不同的实现。 ”就是一个典型的多态机制。 在这种情况下,需要对两个子类的方法 withdraw()分别测试。 14 【正确答案】 setUp(); getBalance(); deposit(); getBalance(); withdraw();getBalance(); close(); 【试题解析】 子类 SavingAccount有五个方法,可以 完成开户、存款、取款、查询余额和销户
28、功能。因此,测试过程中应该包含这些功能。可以根据上述功能序列来设计测试序列,即 setUp(); getBalance(); deposit(); getBalance();withdraw(); getBalance(); close();。 五、试题五( 15分) 15 【正确答案】 (1)1 90V (2)1 55V (3)2 70V (4)一 2 90V (5) 0V (6)0V 【试题解析】 为了测试三余度通道数据采集算法,就要依据题目说明三 余度通道数据采集及处理要求中给定的 5条设计要求,进行测试用例的设计。首先依据第 1条设计说明,采集值正常范围为 -3 0, 3 0V,将输入
29、范围进行等价类划分,划分为无效等价类 (超出正常范围 )和有效等价类 (正常范围 ),同时在有效等价类中,还存在 “任意两通道间差值不大于 0 5V”的约束。将设计测试用例的范围整理出来后,就可按照软件测试的要求设计测试用例。但是由于本题给出了采集值,只需要根据采集值计算输出即可。 序号 1、序号 2和序号 3,因为三个采集值都是正常范围,且任意两通道间差值不大于 0 5V,依据第 3条设计说明,采集值应为差值较小的两通道数据的平均值。因为序号 1数据差值都为 0 0V,所以任意取两个通道数据的平均值即可,故采集值为 0 00V;序号 2取 In_U0和 In_U2的平均值,为 1 90V;序
30、号 3取 In_U0和 In_U1的平均值,为 1 55V。 序号 4,三个通道采集值是正常范围,但 In_U2通道与 In_U0和 In_U1间差值大于 0 5V,依据第 2条和第 4条设计说明, In U2通道采集值不满足要求,应取满足要求的 In_U0和 In_U1两个通道数据的平均值, 故采集值为 2 70V。 序号 5, In_U1通道采集值是超出正常范围, In_U0和 In_U2通道在正常范围,这里要注意 In_U0采集值为边界点,依据第 2条和第 4条设计说明, In_U1通道采集值不满足要求,应取满足要求的 In_U0和 In_U2两个通道数据的平均值,故采集值为一 2 90
31、V。 序号 6,三个通道采集值是正常范围,但三个通道采集值的任意两两差值均大于0 5V,依据第 2条和第 5条设计说明,应取安全值 0V,故采集值为 0V。 序号 7,两个通道采集值超出正常范 围,依据第 2条和第 5条设计说明,应取安全值 0V,故采集值为 0V。 16 【正确答案】 (1)1 454 (2)2 (3)任意大于等于 9小于等于 98的整数 (4)二级故障 (5)0 (6)一级故障 【试题解析】 为了测试控制率计算算法,就要依据题目说明对采集数值计算控制率的具体处理算法中给定的 5条设计要求,进行测试用例的设计。此题考察测试用例的设计,不仅包括输入数据的设计,还包括前置条件 (
32、比如控制率超差连续计数和累计计数 )及预期输出的设计 (比如输出控制率和上报故障情况 ),条 件增多,比问题 1难度增加。 序号 1,前置条件中控制率超差连续计数和累计计数都为 0,计算控制率与实际控制率误差不超过 0 01,依据第 1条设计说明,输出控制率为计算控制率1 632,不上报故障。 序号 2,前置条件中控制率超差连续计数和累计计数都为 0,计算控制率与实际控制率误差超过 0 01,依据第 l条设计说明,输出控制率为实际控制率 1 454,不上报故障。 序号 3,前置条件中控制率超差累计计数为 6,计算控制率与实际控制率误差超过 0 01,并且上报了三级故障,输出控制率为实际控制率
33、2 369,依据第 2条设计说明,确定控制率超差连续计数预期值应该为 3,所以前置条件中的控制率超差连续计数只能为 2。 序号 4,前置条件中控制率超差连续计数为 1,计算控制率与实际控制率误差超过 0 01,并且上报了二级故障,输出控制率为实际控制率 1 557,依据第 3条、第 4条和第 5条设计说明,确定控制率超差累计计数预期结果应该为大于等于 10且小于等于 99的整数,所以前置条件中的控制率超差累计计数为 9至 98区间中的任意整数,即任意大于等于 9且小于等于 98的整数。 序号 5,前置条件中控制率超差连续计数为 2并且累 计计数为 9,计算控制率与实际控制率误差超过 0 01,
34、输出控制率为实际控制率 2 234,依据第 3条和第 5条设计说明,确定控制率超差累计计数预期结果应该为 10,所以应该上报二级故障。 序号 6,前置条件中控制率超差连续计数为 O并且累计计数为 99,计算控制率与实际控制率误差超过 0 01,上报了一级故障,依据第 4条和第 5条设计说明,确定控制率超差累计计数预期应为 100,此时应该切断输出控制,即输出安全值0,所以输出控制率为 0。 序号 7,前置条件中控制率超差连续计数为 2并且累计计数为 99,计算控制率与实 际控制率误差超过 0 01,输出控制率为安全值 0,依据第 4条和第 5条设计说明,确定控制率超差累计计数预期应为 100,
35、此时应该上报传感器一级故障,并清除二级故障,所以应上报一级故障。 17 【正确答案】 三余度采集值的具体处理算法对三次采集值均为有效值且相邻值的差形成等差数列的情况未进行处理。 【试题解析】 软件设计人员在设计过程中容易忽略一些特殊情况的处理,而这些特殊情况往往会造成软件运行过程中的严重错误。此题目考查测试人员在设计测试用例的过程中,对一些特殊情况是否完全覆盖。本题目的三余度采集值的具 体处理算法中,在设计测试用例过程中,发现当三次采集值均为有效值且相邻值的差形成等差数列时,应按照第 3条设计要求处理,即三通道值均满足要求,取三通道中差值较小的两通道数据的平均值,但是此种情况中,三通道形成的两个差值相等,算法中缺少对此种特殊情况的处理,会导致此种情况出现时不能给出预期结果,存在算法缺陷。