前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2016年下半年《软件评测师》下午试卷及答案

2016年下半年《软件评测师》下午试卷及答案

作者头像
王大力测试进阶之路
发布2020-11-03 14:42:58
1.1K0
发布2020-11-03 14:42:58
举报
文章被收录于专栏:橙子探索测试橙子探索测试

一、阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。 【C程序】

问题:1.1 请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件

本问题考查白盒测试用例设计方法中的判定覆盖法。判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有3个判定,所以满足判定覆盖一共需要6个逻辑条件。

问题:1.2 请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。

控制流图

环路复杂度V(G)=5 本问题考查白盒测试用例设计方法中的基本路径测试法。涉及到的知识点包括根据代码绘制控制流图、计算环路复杂度。 控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表—个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为—系列单个条件的嵌套的判断。本题程序中,if(y==7||y==21)这条判断语句中的判定由两个条件组成,因此在画控制流图的时候需要拆开成两条判断语句。需要注意的是,复合条件之间是“&&”的关系还是“||”的关系反应在控制流图的画法是不同的。 程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为4,所以V(G)=5。

问题:1.3 请给出问题2中控制流图的线性无关路径。

线性无关路径: 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条线性无关路径。

二、阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。 【说明】 某航空公司的会员卡分为普卡、银卡、金卡和白金卡4个级别,会员每次搭乘该航空公司航班均可能获得积分,积分规则如表2-1所示。此外,银卡及以上级别会员有额外积分奖励,奖励规则如表2-2所示。

公司开发了一个程序来计算会员每次搭乘航班历累积的积分,程序的输入包括会员级别B、舱位代码C和飞行公里数K,程序的输出为本次积分S 。其中,B和C三字母且大小写不敏感,K为正整数,S为整数(小数部分四舍五入)。

问题:2.1 采用等价类型划分法对该程序进行测试,等价类表如2-3所示,请补充空(1)-(7)。

(1)P (2)Z/C (3)A/D/I/Y (4)任意正整数 (5)除F/S/G/P之外的单个字母 (6)非单个字母 (7)非正整数 本问题考查等价类划分法中等价类表的构造。 等价类划分法的等价类表是把程序的输入域按规则划分为若干子集。 本题中,B和C由多个输入值构成,并且需要对每个(或者每组)输入值分别处理,按规则可以划分为n个有效等价类(每个或者每组值确定一个有效等价类)和一个无效等价类(所有不允许输入值的集合)。 对B来说,分成4个有效等价类(B分别取F、S、G、P)和1个无效等价类(其他情况),而这个无效等价类又可以进一步细分为非字母、非单个字母以及除F/S/G/P之外其他字母。 对C来说,根据额外积分200%、150%、125%、100%、50%、0%可以分为6个有效等价类和1个无效等价类,而这个无效等价类可以进一步细分为非字母和非单个字母。(注意:这里26个字母已经全部使用,不存在其他字母这个无效等价类) 本题中对K是规定了输入值集合必须满足的条件(即正整数),根据规则可以划分为1个有效等价类(K是正整数)和1个无效等价类(K不是正整数)。

问题:2.2 根据以上等价类表设计的测试用例如表2-4所示,请补充空(1)~(13)。

(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)任意非字母,如0 (10)任意非单个字母,如FF (11)任意非整数,如A (12)N/A (13)任意非正整数,如0 本题考査等价类划分法中根据等价类表编写测试用例。 在编写等价类划分法的测试用例时,如果输入全部都来自有效等价类,则从每个有效等价类选取一个代表元素作为输入,如果要考虑无效等价类,则每次只选取一个无效等价类,其余输入都从有效等价类中选取。

三、阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。 【说明】 某证券交易所为了方便提供证券交易服务,欲开发一个基于Web的证券交易平台。其主要功能包括客户开户,记录查询、存取款、股票交易等。客户信息包括姓名、Email(必填且唯一)、地址等;股票交易信息包括股票代码(6位数字编码的字符串)、交易数量(100的整数倍)、买/卖价格(单位:元,精确到分)。 系统要支持: (1)在特定时朝内3000个用户并发时,主要功能的处理能力至少要达到128个请求/秒,平均数据量2KB/请求; (2)页面中采用表单实现客户信息、交易信息等的提交与交互,系统前端采用HTML5实现。

问题:3.1 在对此平台进行非功能测试时,需要测试哪些方面?

性能测试、负载测试、压力测试、并发测试、配置测试、可靠性测试、容量测试、失效恢复测试、链接速度测试等。 本题考查Web应用测试相关知识。Web应用测试除了类似传统软件系统测试的性能测试、压力测试等之外,还需要测试页面、链接、浏览器、表单和可用性等多个方面,由于Web应用部署访问的大众化特点,对安全性尤其要重视。 此类题目要求考生阅读题目对现实问题的描述,根据对问题的分析,回答测试有关的问题。本题目说明中除了功能背景之外,还给出了用户并发数、处理能力、表单、HTML5等。 本问题考查Web应用非功能性测试的内容。题目背景是股票交易,属于交易密集型的应用。题目还涉及到特定时期内3000个用户并发,并且处理能力至少要达到每秒128个请求,所以需要测试与并发能力相关的因素,即对性能、负载、压力、并发、配置、可靠性、容量、失效恢复、链接速度、兼容性等方面进行测试。

问题:3.2 在满足系统要支持的(1)时,计算系统的通信吞吐量

通信吞吐量:P=N(并发用户的数量=3000)×T(每单位时间的在线事务数量=128)×D(事务服务器每次处理的数据负载=2KB/s)=3000×128×2=768000KB/s=750MB/s。 本问题考查Web应用的性能指标计算。通信吞吐量的计算公式为: P=N×T×D 其中参数: N:并发用户的数量 T:每单位时间的在线事务数量 D:事务服务器每次处理的数据负载 P:系统的通信春吐量 本题中系统要求支持的(1)中给出3000个用户并发,即N=3000;主要功能的处理能力至少要达到128个请求/秒,即T=128;平均数据量2KB/请求,即D=2KB/s。 则:通信吞吐量P=3000×128×2=768000KB/s=750MB/s。

问题:3.3 表单输入测试需要测试哪几个方面?

表单输入测试需要验证:输入域、错误输入是否有错误提示、必填项和选填项。 本题考查表单测试相关内容。表单(Form)在Web页面中用来提供给用户填写信息,从而获得填写的相关信息,实现用户和系统之间的交互。本系统页面中采用表单实现客户信息、交易信息等的提交与交互。进行表单测试时,需要对表单输入进行验证,包括输入域、错误输入时是否有错误提示、必填项和选填项等方面的验证。

问题:3.4 (1)针对股票代码:111111、数量:10万、当前价格:6.00,设计4个股票交易的测试输入。 (2)设计2个客户开户的测试输入,以测试是否存在XSS、SQL注入。

(1)测试一:任一标准等价类测试输入,满足股票代码为111111,交易数量为100整数倍且小于等于10万,买/卖价格为包含两位小数的正数,如“111111,300,6.78”。 测试二至测试四:分别为任一健壮等价类测试输入,即每个输入有一个无效数据,其余输入为有效数据。如“11111A,300,6.78”“111111,301,6.78”“111111,300,6.789”。 (也可以釆用边界值分析法来设计测试用例,这样测试二至测试四需要选择一些边界上的值,比如交易数量取0、100、99900、100000、100100等情况。) (2)测试一:其中一字段包含任何HTML,如<HTML>,或任何脚本如<SCRIPT>; 测试二:其中一字段为:任何包含SQL功能符号测试是否使SQL改变为不符合设计意图即可,如包含‘OR、’--‘OR‘1’=‘1’’等。 本题考查Web应用测试的输入,包括输入的不同情况、安全性方面的SQL注入和XSS跨站攻击。 (1)针对股票代码:111111、数量:10万、当前价格:6.00,设计4个股票交易的测试输入,即包括对股票代码为6位数字编码的字符串、交易数量题目要求为100的整数倍、交易价格单位为元(精确到分)。对输入不同情况,可以采用等价类划分或边界值分析法等设计测试输入。 等价类划分法是把所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。其中,等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性,即每一类的代表性数据在测试中的作用都等价于这一类中的其他数据。这样,对于表征该类的数据输入将能代表整个子集合的输入。边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。 根据等价类划分原则,测试输入应该考虑股票代码是否全为数字、交易数量是否为100的整数倍、交易价格是否为小数点后2位。设计标准等价类和健壮等价类的测试输入,如下: 测试一:任一标准等价类测试输入,满足股票代码为111111,交易数量为100整数倍且小于等于10万,买/卖价格为包含两位小数的正数,如“111111,300,6.78”。 测试二至测试四:分别为任一健壮等价类测试输入,即每个输入有一个无效数据,其余输入为有效数据。如“11111A,300,6.78”、“111111,301,6.78”、“111111,300,6.789”。 如果采用边界值分析法来设计测试用例,则输入正确域中任何值作为输入之外,测试二至测试四需要选择一些边界上的值,比如交易数量取0、100、99900、100000、100100等情况。 (2)输入的内容中输入某些功能符号可能会传到后台引起安全问题。 Web应用系统在某些情况下,接收页面上传的内容,并作为新页面的内容。例如,在本系统中需要提交股票代码、交易数量、交易价格,在提交之后,需要查看交易情况时显示相关的内容。 在将输入内容作为新页面的情况下,如果用户输入如下带有HTML标记的内容:

在提交之后,标记将提交到服务器上,并在有用户访问新的页面中显示,此时所看到的网页中包含以上标记的部分元素可能是:

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

即用户输入的内容已经被浏览器成功执行。再如输入如下内容:

在提交之后,后续用户再访问时,所看到的网页中包含标记的部分元素可能是:

即新用户所看到网页中显示Click me!,当用户鼠标移过此文字时,就会弹出窗口(左侧为Chrome弹出,右侧为IE9直接给出的提示窗口,多次鼠标滑过操作Chrome提示窗口多了一行浏览器对阻止这类代码的创建新窗口的选项,firefox类似):

而如果这类代码可以执行,就存在被真正恶意攻击者攻击的可能,而且可能造成各类安全问题。所以网站提交代码中的任何脚本、页面功能符号都不应该被直接接受使其作为功能符号在后续使用。所以测试时需要考虑设计包含HTML标记符、脚本等测试输入,如<HTML>、<script>、<b>等功能符号。 对于Web应用系统采用某种数据库,接收用户从Web页面中输入,通过将输入作为与数据库相关操作的一部分。如果将用户输入的数据和设计好的SQL拼接后提交给数据库执行,在有些情况下,就可能存在用户输入的数据并非设计的正确格式,就给恶意用户提供了破坏的机会,即SQL注入。恶意用户输入不期望的数据,拼接后提交给数据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。因此,在测试Web应用时,需要认真仔细设计测试输入,进行认真严格的测试,以保证如果存在SQL注入及早发现。 本系统测试时,设计测试如为:对任一字段设计包含SQL功能符号,如包含‘OR、’--‘OR‘1’=‘1’’等,检查结果是否造成注入问题。

四、阅读下列说明,回答问题1至问题5,将解答写在答题纸的对应栏内。 【说明】 图4-1是银行卡应用的部分类图,图中属性和操作前的“+”和“-”分别表示公有成员和私有成员。银行卡Account有两种类型,借记卡SavingAccount和信用卡CreditAccount 。

(1)借记卡和信用卡都有卡号account Number和余额balance两个属性。借记卡的余额是正常余额,信用卡的余额是目前未还的金额,如果没有未还的金额,则为0;有开户set Up、取款withdraw、查询余额get Balance和销户close四个方法。借记卡取钱时,要求取钱金额不能超过余额;而信用卡取钱金额不能超过信用额度,因此需要在子类中实现该方法。 (2)借记卡可以存钱deposit。 (3)信用卡有信用额度creditLimit属性,可以查询信用额度getCreditLimit、修改信用额度updateCreditLimit和还款retumCredit。 现拟采用面向对象的方法进行测试。

问题:4.1 面向对象单元测试的主要对象是什么?

类和类方法 本题考查面向对象测试的基本知识。 此类题目要求考生认真阅读题目对问题的描述,分析问题并结合面向对象的基本概念来回答。题目给出三个类,基类Account及其两个子类SavingAccount和CreditAccount。 该问题考核基本概念,面向对象测试的对象为类和类中的方法。

问题:4.2 在继承关系上,若某方法在测试父类时已经测试过,那么在什么情况下在子类中也需要测试?

(1)继承的方法在子类中进行了修改 (2)继承的方法调用了修改过的方法 该问题考核基本概念,若子类的某方法继承了其基类,方法进行了修改,则需要进行测试;另一种情况是,继承的方法没有修改,用基类的方法,但是该方法调用了子类修改过的其他方法时,也需要对该方法进行测试。

问题:4.3 要测试方法deposit()时,还需要调用什么方法?给出测试序列。

需要调用的方法:getBalance() 测试序列:getBalance();deposit();getBalance(); 在测试方法deposit()时,由于其属性balance发生了变化,因此在测试方法deposit()前后,调用方法getBalance()。

问题:4.4 方法withdraw在基类Account中定义,但在两个子类中有不同的实现。这是面向对象的什么机制?这种情况在测试时如何进行?

面向对象机制:多态 如何测试:在两个子类中均要测试withdraw方法 在面向对象技术中,不同的对象收到统一消息可以产生完全不同的结果,这一现象叫做多态。多态可以利用类继承的层次关系来支持。本题干“方法wkhdmw在基类Account中定义,但在两个子类中有不同的实现。”就是一个典型的多态机制。 在这种情况下,需要对两个子类的方法withdraw()分别测试。

问题:4.5 给出类SavingAccount的最小测试序列。

setUp();getBalance();deposit();getBalance();withdraw();getBalance();close(); 子类SavingAccount有五个方法,可以完成开户、存款、取款、查询余额和销户功能。因此,测试过程中应该包含这些功能。可以根据上述功能序列来设计测试序列,即setUp();getBalance();deposit();getBalance();withdraw();getBalance();close();。

五、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某嵌入式控劁软件通过采集传感器数值来计算输出控制率,为了提高数据采集的可靠性,使用三余度采集方法进行三个通道的数据采集。 1.三余度通道数据采集及处理要求: (1)三通道采集值In_U[0]、In_U[1]、In_U[2]的正常范围为[一3.0,3.O]V,且任意两通道间差值不大于0.5V; (2)如果某通道采集值超过正常范围或者因为通道采集值造成与其它通道差值大于0.5V,则该通道数据不满足要求; (3)如果三通道值均满足要求,则取三通道中差值较小的两通道数据的平均值; (4)如果仅有一个通道数据不满足采集要求,取满足要求的两个通道数据的平均值; (5)如果多于一个通道数据不满足采集要求,取安全值0V。 2.对采集数值计算控制率的具体处理算法如下: (1)如果依据采集数据计算的控制率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,则上报传感器二级故障,使用目前实际控制率输出控制; (4)如果累计大于等于100个周期计算的控制率C1与目前实际控制率C0差大于0.01,则上报传感器一级故障,并清除二级故障,并切断输出控制(输出安全值0) (5)如果低级故障和高级故障同时发生,则按高级故障处理。

问题:5.1 为了测试采集算法,在不考虑测量误差的情况下,设计了表5-1所示的测试用例,请填写该表中的空(1)~(6)。

(1)1.90V (2)1.55V (3)2.70V (4)-2.90V (5)0V (6)0V 本题考查软件测试过程中,测试人员通过对软件设计和算法的理解,设计充分的测试用例的能力,以及通过测试用例设计过程找出软件设计过程中缺陷的能力。 此题目要求考生认真阅读题目所给的软件需求和算法信息,熟悉余度概念,结合软件测试的测试用例设计要求,在此嵌入式软件测试中进行实际应用。 为了测试三余度通道数据釆集算法,就要依据题目说明三余度通道数据采集及处理要求中给定的5条设计要求,进行测试用例的设计。首先依据第1条设计说明,采集值正常范围为[-3.0,3.0]V,将输入范围进行等价类划分,划分为无效等价类(超出正常范围)和有效等价类(正常范围),同时在有效等价类中,还存在“任意两通道间差值不大于0.5V”的约束。将设计测试用例的范围整理出来后,就可按照软件测试的要求设计测试用例。但是由于本题给出了采集值,只需要根据采集值计算输出即可。 序号1、序号2和序号3,因为三个采集值都是正常范围,且任意两通道间差值不大于0.5V,依据第3条设计说明,采集值应为差值较小的两通道数据的平均值。因为序号1数据差值都为0.0V,所以任意取两个通道数据的平均值即可,故采集值为0.00V;序号2取In_U[0]和In_U[2]的平均值,为1.90V;序号3取In_U[0]和In_U[1]的平均值,为1.55V。 序号4,三个通道采集值是正常范围,但In_U[2]通道与In_U[0]和In_U[1]间差值大于0.5V,依据第2条和第4条设计说明,In_U[2]通道采集值不满足要求,应取满足要求的In_U[0]和In_U[1]两个通道数据的平均值,故采集值为2.70V。 序号5,In_U[1]通道采集值是超出正常范围,In_U[0]和In_U[2]通道在正常范围,这里要注意In_U[0]采集值为边界点,依据第2条和第4条设计说明,In_U[1]通道采集值不满足要求,应取满足要求的In_U[0]和In_U[2]两个通道数据的平均值,故采集值为-2.90V。 序号6,三个通道采集值是正常范围,但三个通道采集值的任意两两差值均大于0.5V,依据第2条和第5条设计说明,应取安全值0V,故采集值为0V。 序号7,两个通道采集值超出正常范围,依据第2条和第5条设计说明,应取安全值0V,故采集值为0V。

问题:5.2 为了测试控制率计算算法,在不考虑测量误差的情况下,设计了表5-2所示的用例,请完善其中的空(1)~(6)。

(1)1.454 (2)2 (3)任意大于等于9小于等于98的整数 (4)二级故障 (5)0 (6)一级故障 为了测试控制率计算算法,就要依据题目说明对采集数值计算控制率的具体处理算法中给定的5条设计要求,进行测试用例的设计。此题考察测试用例的设计,不仅包括输入数据的设计,还包括前置条件(比如控制率超差连续计数和累计计数)及预期输出的设计(比如输出控制率和上报故障情况),条件增多,比问题1难度增加。 序号1,前置条件中控制率超差连续计数和累计计数都为0,计算控制率与实际控制率误差不超过0.01,依据第1条设计说明,输出控制率为计算控制率1.632,不上报故障。 序号2,前置条件中控制率超差连续计数和累计计数都为0,计算控制率与实际控制率误差超过0.01,依据第1条设计说明,输出控制率为实际控制率1.454,不上报故障。 序号3,前置条件中控制率超差累计计数为6,计算控制率与实际控制率误差超过0.01,并且上报了三级故障,输出控制率为实际控制率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,输出控制率为实际控制率2.234,依据第3条和第5条设计说明,确定控制率超差累计计数预期结果应该为10,所以应该上报二级故障。 序号6,前置条件中控制率超差连续计数为0并且累计计数为99,计算控制率与实际控制率误差超过0.01,上报了一级故障,依据第4条和第5条设计说明,确定控制率超差累计计数预期应为100,此时应该切断输出控制,即输出安全值0,所以输出控制率为0。 序号7,前置条件中控制率超差连续计数为2并且累计计数为99,计算控制率与实际控制率误差超过0.01,输出控制率为安全值0,依据第4条和第5条设计说明,确定控制率超差累计计数预期应为100,此时应该上报传感器一级故障,并清除二级故障,所以应上报一级故障。

问题:5.3 测试人员在设计测试用例进行采集算法测试时,发现本项目的三余度采集值的具体处理算法存在l处缺陷,请指出此处缺陷。

三余度采集值的具体处理算法对三次采集值均为有效值且相邻值的差形成等差数列的情况未进行处理。 软件设计人员在设计过程中容易忽略一些特殊情况的处理,而这些特殊情况往往会造成软件运行过程中的严重错误。此题目考查测试人员在设计测试用例的过程中,对一些特殊情况是否完全覆盖。本题目的三余度采集值的具体处理算法中,在设计测试用例过程中,发现当三次采集值均为有效值且相邻值的差形成等差数列时,应按照第3条设计要求处理,即三通道值均满足要求,取三通道中差值较小的两通道数据的平均值,但是此种情况中通道形成的两个差值相等,算法中缺少对此种特殊情况的处理,会导致此种情况出现时不能给出预期结果,存在算法缺陷。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 橙子探索测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档