201511评测下午真题

第 1 题

阅读下列java程序,回答问题1至问题3,将解答填入答题纸内对应栏内
【Java程序】
public int addAppTask(Acitivity activity,Intent intent,
                                   TaskDescription description,Bitmap  thumbnail){
       Point size=getSize();                                                                                       //1
       final int tw=thumbnail.getWidth();
       final int th=thumbmail.getHeight();
       if(tw!=size.x||th!=size.y){                                                                                  //2,3
              Bitmap bm=Bitmap.createBitmap(size.x,size.y,thumbmail.getConfig());     //4
              float scale;
              float dx=0,dy=0;
              if(twsize.x>size.yth){                                                                              //5
                     scale=(float)size.x/(float)th;                                                                  //6
                     dx=(size.y-twscale)0.5f;
              }else{                                                                                                       //7
                     scale=(float)size.y/(float)tw;
                     dy=(size.x-thscale)0.5f;
              }
              Matrix matrix=new Matrix();
              matrix.setScale(scale, scale);
              matrix.postTranslate((int)(dx+0.5f),0);
              Canvas canvas=new Canvas(bm);
              canvas.drawBitmap(thumbmail,matrix,null);
              canvase.serBitmap(null);
              thumbnail=bm;
       }
       if(description==null){                                                                                        //8
              description =new TaskDescription();                                                             //9
       }
}                                                                                                                            //10

【问题1】(2分)
请简述基本路径测试法的概念。
【问题2】(8分)
请画出上述程序的控制流图,并计算其控制流图的环图复杂度V(G)。
【问题3】(5分)
请给出问题2中的控制流图的线性无关路径。

答案与解析

  • 试题难度:较难
  • 知识点:下午题>白盒测试
  • 试题答案:【问题1】
    基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次
    【问题2】

    V(g)=5
    【问题3】
    1:1、2、3、8、10
    2:1、2、4、5、6、8、10
    3:1、2、3、4、5、6、8、10
    4:1、2、4、5、7、8、10
    5:1、2、3、8、9、10
    (或者与之等价的)
  • 试题解析:【问题1】
    基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
    【问题2】
    控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:


    控制流程图的环路复杂性 V(G)等于:
    (1)控制流程图中的区域个数。
    (2)边数-结点数+2。
    (3)判定数+1。
    V(g)=5
    【问题3】
    线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:
    1:1、2、3、8、10
    2:1、2、4、5、6、8、10
    3:1、2、3、4、5、6、8、10
    4:1、2、4、5、7、8、10
    5:1、2、3、8、9、10
    (或者与之等价的)

第 2 题

阅读下列说明,回答问1至问3,将解答填入答题纸的对应栏内。
【说明】
某商店的货品价格(P)都不大于20元(且为整数),假设顾客每次付款为20元且每次限购一件商品,现有一个软件能在每位顾客购物后给出找零钱的最佳组合(找给顾客货币张数最少)。
假定此商店的找零货币面值只包括:10元(N10)、5元(N5)、1元(N1)3种。

【问题1】 (8分)
请采用等价类划分法为该软件设计测试用例(不考虑P为非整数的情况)并填入到下表中。(<<N1,2>>表示2张1元,若无输出或输出非法,则填入N/A)

    
【问题2】
    请采用边界值分析法为该软件设计测试用例。
【问题3】
    请给出采用决策表法进行测试用例设计的主要步骤。

答案与解析

  • 试题难度:较难
  • 知识点:下午题>黑盒测试
  • 试题答案:【问题1】

【问题2】
20、19、16、15、14、11、10、9、6、5、4、1、0
【问题3】
确定规则个数
列出所有的条件桩和动作桩
填入条件项
填入动作项。制定初始判定表
简化。合并相似规则或者相同动作

  • 试题解析:【问题1】
    等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。
    等价类划分的办法是把程序的输入域划分成若干部分,然后每个部分中选取少数代表性数据作为测试用例。
    本题中输入值是0~20,找零的货币为10、5、1的面额,因此可以分为:0,1~4,5,6~9,10,11~14,15,16~19,20,21
    因此测试用例可以在每个等级类上取任意值:

    【问题2】
    边界值分析法:是通过选择等价类边界的测试用例。
    边界值设计应遵循的原则。
    如果输入条件规定了值得范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围 边界的值作为测试输入数据。
    如果输入条件规定了值得个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
    根据规格说明的每个输出条件,使用前面的原则①
    根据规格说明的每个输出条件,使用前面的原则②
    如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
    如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
    分析规格说明,找出其他可能的边界条件。
    结合本题,边界值分析法的边界应为:
    20、19、16、15、14、11、10、9、6、5、4、1、0
    【问题3】
    决策表又称判断表,是一种呈表格状的图形工具,适用于描述处理判断条件较多,各条件又相互组合、有多种决策方案的情况。精确而简洁描述复杂逻辑的方式,将多个条件与这些条件满足后要执行动作相对应。
    具体步骤如下:
    依据软件规格说明:确定规则个数。
    列出所有的条件桩和动作桩。
    填入条件项。
    填入动作项。制定初始判定表。
    简化。合并相似规则或者相同动作。

第 3 题

阅读下列说明,回答问1至问4,将解答填入答题纸的对应栏内。
【说明】
某MOOC(慕课)教育平台欲开发一基于Web的在线作业批改系统,以实现高效的作业提交与批改并进行统计。系统页面中涉及内部的内容链接、外部参考链接以及邮件链接等。页面中采用表单实现作业题目的打分和评价,其中打分为1~5分制整数,评价为文本。
系统要支持:
(1)在特定时期内300个用户并发时,主要功能的处理能力至少要达到16个请求/秒,平均数据量16KB/请求。
(2)系统前端采用HTML5实现,以使用户可以通过不同的移动设备的浏览器进行访问。

【问题1】(4分)
针对此在线系统进行链接测试时,需要测试哪些方面?
【问题2】(5分)
为了达到系统要支持的(2),设计一个兼容性测试矩阵。
【问题3】(5分)
给出计算系统的通信吞吐量的方法,并计算在满足系统要支持的(1)时系统的通信吞吐量。
【问题4】(6分)
设计 4个打分和评价的测试输入,考虑多个方面的测试,如:正确输入、错误输入、XSS、SQL注入等测试。

答案与解析

  • 试题难度:较难
  • 知识点:下午题>web测试
  • 试题答案:【问题1】
    内部链接测试、外部连接测试、邮件链接测试、断链测试
    【问题2】

    【问题3】
    系统的通信吞吐量=系统的并发用户数单位时间的在线事务数(请求数)每个请求的平均数据流=3001616KB=75MB
    【问题4】
    (1)打分为任何在1-5范围内的数字,评价为任意文本;
    (2)打分为任何在1-5范围外的数字,评价为任意文本;
    (3)打分和评价其中任一字段包含HTML标签,如<HTML>,<SCRIPT>等;
    (4)打分和评价其中任一字段包含SQL功能符号,如包含',OR、'--、2015'OR‘1’=‘1’等。
  • 试题解析:

    本题考查Web应用测试相关知识。Web应用测试除了类似传统软件系统测试的性能测试 、压力测试等之外,还需要测试页面、链接、浏览器、表单和可用性等多个方面,由 于Web应用部署访问的大众化特点,对安全性尤其要重视。
    此类题目要求考生阅读题目对现实问题的描述,根据对问题的分析,回答测试有关的 问题。本题目说明中除了功能背景之外,给出了几个技术点:系统页面中涉及内部内容的链接、外部参考链接以及邮件链接等。页面中采用表单实现作业题目的打分和评 价,其中打分为1~5分制整数,评价为文本。
    【问题1】
    本题考查Web应用链接测试的内容。题目中涉及到内部内容的链接、外部参考链接以 及邮件链接,所以均需要测试。还要进行断链测试,测试每个链接是否有断链。
    【问题2】
    本题要求对不同的移动设备的浏览器进行兼容性测试,其兼容矩阵设计,参考如下:


    【问题3】
    本题考查Web应用系统的性能指标计算。通信吞吐量,设定如下指标参数:
    N:并发用户的数量
    T:每单位时间的在线事务数量
    D:事务服务器每次处理的数据负载
    P:系统的通信吞吐量
    有如下计算公式:
    P=N×T×D
    本题中系统要求支持的(1)中给出300个用户并发,即N=300;主要功能的处理能力至少要达到16个请求/秒,即T=16;平均数据量16kB/请求,即D=16kB/S。
    则可得:通信吞吐量P=300×16×16=76800kB/S(75MB/S)。
    【问题4】
    本题考查Web应用测试的输入方面,包括输入的不同情况、安全性方面的SQL注入和 XSS跨站攻击。
    打分和评价的测试输入应该考虑分值的取值范围之内和之外以及文本中的内容:
    (1)打分为任何在1~5范围内的数字,评论为任意文本;
    (2)打分为任何在1~5范围外的数字,评论为任意文本;
    输入的内容中输入符号可能会传到后台引起安全问题。
    许多Web应用系统采用某种数据库,接收用户从Web页面中输入,完成展示相关存储的数据、将输入数据存储到数据库(如用户输入表单中数据域并点击提交后,系统将信息存入数据库)等操作。在有些情况下,将用户输入的数据和设计好的SQL拼接后提交给数据库执行,就可能存在用户输入的数据并非设计的正确格式,就给恶意用户提供了破坏的机会,即SQL注入。恶意用户输入不期望的数据,拼接后提交给数据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。SQL注入在使用SSL的应用中仍然存在, 甚至是防火墙也无法防止SQL注入。因此,在测试Web应用时,需要认真仔细设计测试用例,进行认真严格的测试,以保证如果存在SQL注入可以及早发现。
    本系统测试时,设计测试如为:对打分和评价中任一字段设计包含SQL功能符号,如 包含‘,OR、’--、2015’OR‘1’=‘1’等,检查结果是否造成注入问题。
    许多Web应用系统在某些情况下,接收页面上传的内容,并入新页面,作为新页面的内容。例如,在本系统中进行打分和评论后,学生查看时显示分值和评价的内容。如果用户可以输入如下带有HTML标记的内容:

    <Script>alert("Hello World!");</Script>
    在提交之后,标记将提交到服务器上,并在有学生访问新的页面中显示,此时所看到 的网页中包含以上标记的部分元素可能是:
    <div>
    <Script>alert("Hello World!");</Script>
    </div>
    从学生的角度看,该网页中就出现了弹出窗口提示,显示Hello World!,如下图所示 :
    即:用户输入的内容已经被浏览器成功执行。再如输入如下内容:
    <b onmouseover=alert('Hello!')>click me!</b>
    在提交之后,后续学生再访问时,所看到的网页中包含标记的部分元素可能是:
    <div>
    <b onmouseover=alert('Hello!')>click me!</b>
    </div>
    即新用户所看到的网页中显示Click me!,当用户鼠标移过此文字时,就会弹出窗口 (左侧为Chrome弹出,右侧为IE9直接给出的提示窗口,多次鼠标滑过操作Chrome提 示窗口多了一行浏览器对阻止这类代码的创建新窗口的选项,Firefox类似):

    而如果这类代码都可以执行,就存在被真正恶意攻击者攻击的可能,而且可能造成各 类安全问题。所以网站提交代码中的任何脚本、页面功能符号都不应该被直接接受以作为功能符号在后续使用。所以测试时需要考虑设计包含HTML标记符、脚本等测试输 入,如<HTML>、<script>、<b>等功能符号。 

第 4 题

阅读下列说明,回答问题1至3,将解答填入答题纸的对应栏内。
【说明】
某嵌入系统中,存在16路数据采集通道,为了提高数据采集的可靠性,对16路采集通道均采用双余度设计;为了监控采集通道是否发生故障,对各路双余度通道采集值进行了比较。只有当该通道两个余度设备采集值不均小于45时,才表示该路通道正常。设计人员设计函数mun_of_passer用于统计无故障通道数目,在改函数的设计中考虑了如下以因素:

(1)采用如下数据库结构存储通道号及采集值:

Struct  Value
                 {   unsigned int               No;                         //通道号,1到16
                      unsigned short           Value1;                      //余度1采集值
unsigned short           Value2;                      //余度2采集值
}
(2)当输入参数异常时,函数返回-1;
(3)若正确统计了无故障通道数目,则返回该数目;
(4)该函数需要两个输入参数,第一个参数是用于存储通道号及余度采集值的数组,第二个参数为通道总数目;
(5)调用函数sort()对存储通道号及余度采集值得的数组进行排序处理。
开发人员根据上述要求使用ANSI C对代码实现如下,(代码中每行第一个数字代表行号):
1    unsigned int num_of_passer(struct Value array[ ], unsigned int num)
2    {
3            unsigned int n =0;                                   //循环变量
4            unsigned int counter;                              //无故障通道数目
5            if((array = = NULL) ||(num = = 0) ||(num > 16))
6                    return-1;                                          //当输入参数异常时,函数返回-1
7            sort(array);                                              //对存储值的数组进行排序处理
8            for(n = 0;n < = num;n++)
9            {
10                   if((array[n]. Valuel > 45)&& (array[n]. Value2 > 45))
11                        counter = counter + 1;
12            }
13            return counter
14    } 【问题1】(6分)
嵌入或软件中通常使用函数扇出数的注释来衡量程序的可维护性,请计算num_of_passer的扇出数和注释率,并判断此函数扇出数和注释率是否符合嵌入式软件的一般要求。
【问题2】(8分)
请使用代码审查的方法找出该程序中所包含的至少四处错误,批出错误的行号和问题描述。  

【问题3】(6分)
覆盖率是度量测试完整性的一个手段,也是度量测试有效性的一个手段。在嵌入式软件的白盒测试过程中,通常以语句覆盖率、分支覆盖率和MC/DC覆盖率作为度量指标,请分别指出对函数num_of_passer达到100%语句覆盖、100%分支覆盖和100%MC/DC覆盖所需的最少测试用例数目。

**答案与解析** - 试题难度:较难 - 知识点:下午题>综合知识点 - 试题答案:【问题1】
注释率:为4/14=28.6% 由于VC工程注释率要求为25%~50%,代码注释率要求为>=20%; 本题应为关键代码,注释率符合要求。
扇出数是指该模块调用了多少模块,本题中扇出数为:1 扇出一般3~4,不超过7,本题扇入 符合要求  
【问题2】

【问题3】


- 试题解析:

【问题1】
注释率是注释的行数/代码行数,本题为4/14=28.6%
扇出数,是指模块调用其他模块的个数,本题只调用了1个模块,所以扇出数为1,一般推荐模块扇出数位3~4比较合适,一般不超过7,扇出数为1说明模块比较大。
【问题2】
错误1:函数为无符号类型,而返回值中有-1的情况
错误2:题干中要求是不低于45,条件表达式应该是>=45,而不是>45
错误3:counter变量没有初始值,就直接counter=counter+1
错误4:由于整列的下标是从0开始,第16个值的下标应为15,题中循环判定条件为n<=num,而num的值是可以为16,当num为16时,会导致下标越界。
【问题3】
语句覆盖(SC):使被测试程序中每条语句至少执行一次
判定覆盖(DC):使程序中的每个判定至少都获得一次“真值”或“假值”
修正条件判定覆盖要求在一个程序中每一种输入输出至少得出现一次,在程序中的每一个条件必须产生所有可能的输出结果至少一次,并且每一个判定中的每一个条件必须能够独立影响一个判定的输出,即在其他条件不变的前提下仅改变这个条件的值,而使判定结果改变,其测试用例数一般为条件数+1~条件数*2的范围内。
对于语句覆盖,本题可以设计:一个测试用例使得第5行的判定为真,一个一切都正常的测试用例;因此语句覆盖使用2个测试用例即可覆盖。
对于判定覆盖,本题有3个判定,即第5行,第8行,第10行, 由于第一个判定为真时,结束,并返回;当第一个判定为假时,则进入第2个判定,由于第2个判定为循环控制结构,需二个测试用例即可实现真,假覆盖,当循环判定真,即进入第3个判定,第3个判定有真假两种情况,所以一个需要至少有3个测试用例用于100%DC覆盖(不考虑循环的情况)。但由于本题存在循环体,可以通过循环体来实现一个判定的真假覆盖,所以综合起来,本题最少需要2个测试用例。
对于array==null;num==0;num>16 需要四个测试用例
对于n<=num需要两个测试用例
对于array[n].Value1>45;array[n].Value2>45 需要三个测试用例
由于本题中,array[n].Value1>45;array[n].Value2>45 为TT的测试用例 可以覆盖 判定1 FFF 情况,判定2的T情况;所以综合起来测试用例最少数位1+3+1+2=7(不考虑循环的情况),但由于后面两个判定属于循环结构中,可以通过构造一定的测试用来通过循环减少数量,,所以,最后两个判定可以通过 多次循环来达成。所以最少为4个。

第 5 题

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。
【说明】
某互联网企业开发了一个大型电子商务平台,平台主要功能是支持注册卖家与买家的在线交易。在线交易的安全性是保证平台上正常运行的重要因素,安全中心是平台上提供安全保护措施的核心系统 ,该系统的主要功能包括:
(1)密钥管理功能,包括公钥加密体系中的公钥及私钥生成与管理,会话密的协商、生成、更新及分发等。
(2)基础加解密服务,包括基于RSA、ECC及AES 等多密码算法的期本加解密服务。
(3)认证服务,提供基于PKI及用户名/口令的认证机制。
(4)授权服务,为应用提供资源及功能的授权管理和访问控制服务。
现企业测试部门拟对平台的密钥管理与加密服务系统进行安全性测试,以检验平台的安全性。

【问题1】(4分)
给出安全中心需应对的常见安全攻击手段并简要说明。
【问题2】(6分)
针对安全中心的安全性测试,可采用哪些基本的安全性测试方法?
【问题3】(5分)
请分别说明针对密钥管理功能进行功能测试和性能测试各自应包含的基本测试点。
【问题4】(5分)
请分别说明针对加解密服务功能进行功能测试和性能测试各自应包含的基本测试点。

答案与解析

  • 试题难度:较难
  • 知识点:下午题>安全测试
  • 试题答案:

    【问题1】
    冒充:就是一个实体假装成一个不同的实体。常与主动攻击形式一起使用,特别是消息的重演与篡改。
    重演:当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。
    消息篡改:数据所传送的内容被改变而未被发觉,并导致非授权后果。
    服务拒绝:当一个实体不能执行它的正常功能,或它的动作妨碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。
    【问题2】
    功能验证
    漏洞扫描
    模拟攻击试验
    侦听技术
    【问题3】
    功能测试:
    是否制定了密钥管理策略
    是否具备密钥生成、密钥发送、密钥存储、密钥查询、密钥撤销、密钥恢复等基本功能
    密钥库管理功能是否完善
    密钥管理中心的系统、设备、数据、人员等安全管理是否严密
    密钥管理中心的审计、认证、恢复、统计等系统管理是否具备
    密钥管理系统与证书认证系统之间是否采用基于身份认证的安全通信协议
    性能测试:
    针对按实际需要配置密钥管理系统,利用企业级的并发压力测试工具测试受理点连接数、签发在用证书数目、密钥发放并发请求数是否满足基本业务需求。
    测试是否具备系统所需最大量的密钥生成、存储、传送、发布、归档等密钥管理功能。
    测试是否支持密钥5年(或用户要求的年限)保存期。
    是否具备异地容灾备份。
    是否具备可伸缩配置及扩展能力。
    关键部分是否采用双机热备份和磁盘镜像。
    【问题4】
    功能测试:
    是否具备基础加/解密服务功能。
    能否为应用提供相对稳定的统一安全服务接口。
    能否提供对多密码算法的支持。
    随着业务量的逐渐增加,是否可以灵活地增加密码服务模块,实现性能平滑扩展,且不影响上层的应用系统。
    性能测试:
    RSA算法密钥长度能否达到1024~2048位,ECC算法密钥长度能否达到192位。
    如果有必要进行系统速度测试,对应用层的客户端密码设备测试项:公钥密码算法签名速度、公钥密码算法验证速度、对称密钥密码算法加/解密速度,验证是否满足需求。
    处理性能如公钥密码算法签名等是否具有扩展能力。

  • 试题解析:

    【问题1】
    冒充:就是一个实体假装成一个不同的实体。常与主动攻击形式一起使用,特别是消息的重演与篡改。
    重演:当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。
    消息篡改:数据所传送的内容被改变而未被发觉,并导致非授权后果。
    服务拒绝:当一个实体不能执行它的正常功能,或它的动作妨碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。
    【问题2】
    功能验证
    漏洞扫描
    模拟攻击试验
    侦听技术
    【问题3】
    功能测试:
    是否制定了密钥管理策略。
    是否具备密钥生成、密钥发送、密钥存储、密钥查询、密钥撤销、密钥恢复等基本功能。
    密钥库管理功能是否完善。
    密钥管理中心的系统、设备、数据、人员等安全管理是否严密。
    密钥管理中心的审计、认证、恢复、统计等系统管理是否具备。
    密钥管理系统与证书认证系统之间是否采用基于身份认证的安全通信协议。
    性能测试:
    针对按实际需要配置密钥管理系统,利用企业级的并发压力测试工具测试受理点连接数、签发在用证书数目、密钥发放并发请求数是否满足基本业务需求。
    测试是否具备系统所需最大量的密钥生成、存储、传送、发布、归档等密钥管理功能。
    测试是否支持密钥5年(或用户要求的年限)保存期。
    是否具备异地容灾备份。
    是否具备可伸缩配置及扩展能力。
    关键部分是否采用双机热备份和磁盘镜像。
    【问题4】
    功能测试:
    是否具备基础加/解密服务功能。
    能否为应用提供相对稳定的统一安全服务接口。
    能否提供对多密码算法的支持。
    随着业务量的逐渐增加,是否可以灵活地增加密码服务模块,实现性能平滑扩展,且不影响上层的应用系统。
    性能测试:
    RSA算法密钥长度能否达到1024~2048位,ECC算法密钥长度能否达到192位。
    如果有必要进行系统速度测试,对应用层的客户端密码设备测试项:公钥密码算法签名速度、公钥密码算法验证速度、对称密钥密码算法加/解密速度,验证是否满足需求。
    处理性能如公钥密码算法签名等是否具有扩展能力。

results matching ""

    No results matching ""