image

编辑人: 流年絮语

calendar2025-05-10

message7

visits633

2013年11月软件评测师下午题参考答案

一、问答题

1、


阅读下列说明,回答问题。

【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。

int XOR(char * filename,unsigned long key){

    FILE * input = NULL , *output =  NULL;   //i

    char * outfilename = NULL;

    int len = strlen(filename);

    unsigned char buffer;

    if( (filename[len-2] == '.') && (filename[len-1] == 'c') ) { //2,3

    outfilename = new char[len+1];  //4

    strcpy(outfilename, filename);

    outfilename[len-2] = '\0';

    }

    else{   //5

    outfilename = new char[len+5];

    strcpy(outfilename, filename);

    strncat(outfilename,".c",2);

    }

    input =  fopen(filename,"rb");

    if( input == NULL) {   //6
 
    cout << "Error opening file " << filename << endl;  //7

    delete [] outfilename;

    outfilename = NULL;

    return 1;

    }

    output =  fopen(outfilename,"wb");

    if( output == NULL ) {   //8

    cout << "Error creating output file " << outfilename << endl;  //9

    delete [] outfilename;

    outfilename = NULL;

    return 1;

    }

    while( ! feof(input) ) {  //10

    if(fread(&buffer,sizeof(unsigned char),1,input) != 1 ) {   //11

    if( ! feof(input) ) {   //12

    delete [] outfilename;  //13

    outfilename = NULL;

    fclose(input);

    fclose(output);

    return 1;

    }

    }

    else{   //14

    buffer ^= key;

    fwrite(&buffer,sizeof(unsigned char),1,output);

    }

    }

    fclose(input);   //15

    fclose(output);

    delete [] outfilename;

    return 0;

    }
请给出满足100%DC(判定覆盖)所需的逻辑条件。

参考答案:


2、阅读下列说明,回答问题。

【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。

int XOR(char * filename,unsigned long key){

    FILE * input = NULL , *output =  NULL;   //i

    char * outfilename = NULL;

    int len = strlen(filename);

    unsigned char buffer;

    if( (filename[len-2] == '.') && (filename[len-1] == 'c') ) { //2,3

    outfilename = new char[len+1];  //4

    strcpy(outfilename, filename);

    outfilename[len-2] = '\0';

    }

    else{   //5

    outfilename = new char[len+5];

    strcpy(outfilename, filename);

    strncat(outfilename,".c",2);

    }

    input =  fopen(filename,"rb");

    if( input == NULL) {   //6
 
    cout << "Error opening file " << filename << endl;  //7

    delete [] outfilename;

    outfilename = NULL;

    return 1;

    }

    output =  fopen(outfilename,"wb");

    if( output == NULL ) {   //8

    cout << "Error creating output file " << outfilename << endl;  //9

    delete [] outfilename;

    outfilename = NULL;

    return 1;

    }

    while( ! feof(input) ) {  //10

    if(fread(&buffer,sizeof(unsigned char),1,input) != 1 ) {   //11

    if( ! feof(input) ) {   //12

    delete [] outfilename;  //13

    outfilename = NULL;

    fclose(input);

    fclose(output);

    return 1;

    }

    }

    else{   //14

    buffer ^= key;

    fwrite(&buffer,sizeof(unsigned char),1,output);

    }

    }

    fclose(input);   //15

    fclose(output);

    delete [] outfilename;

    return 0;

    }
请画出上述程序的控制流图,并计算其控制流图的环路复杂度VG。


参考答案:

环路复杂度V(G)=8。


3、阅读下列说明,回答问题。

【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。

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

参考答案:

线性无关路径:

    1.1-2-5-6-7

    2.1-2-3-5-6-7

    3.1-2-3-4-6-7

    4.1-2-5-6-8-9

    5.1-2-5-6-8-10-15

    6.1-2-5-6-8-10-11-14-10...

    7.1-2-5-6-8-10-11-12-10...

    8.1-2-5-6-8-10-11-12-13


4、阅读下列说明,回答问题。
【说明】
某软件公司为某银行设计开发了一套网上银行系统,该系统提供基本的支付、查询、转账和信息修改等功能。银行对网上银行系统提出了初步的性能指标:
(1)交易响应时间不超过2s
(2)并发用户数>=1000
(3)CPU利用率不超过80%
(4)系统需要7*24小时不间断的稳定运行
(5)每秒事务数为7
(6)交易成功率为100%
现需要对该软件进行性能测试。
常见的性能测试包括负载测试、压力测试、并发性能测试、疲劳强度测试和大数据量测试等。针对题目中所述的6个性能指标,并发性能测试和疲劳强度测试所涉及的指标各有哪些?

参考答案:并发性能测试涉及的指标有(1)、(2)、(5)
疲劳强度测试涉及的指标有(4)


5、【老版知识点】阅读下列说明,回答问题。
【说明】
某软件公司为某银行设计开发了一套网上银行系统,该系统提供基本的支付、查询、转账和信息修改等功能。银行对网上银行系统提出了初步的性能指标:
4交易响应时间不超过2s
5并发用户数>=1000
6CPU利用率不超过80%
7系统需要7*24小时不间断的稳定运行
8每秒事务数为7
9交易成功率为100%
现需要对该软件进行性能测试。
性能测试中,针对一个单独的性能指标,往往需要采用多种不同的测试方法。该软件公司需要测试性能指标(1)和(5),设计了如下的测试方案:
测试常规情况下的并发用户数,逐步增加并发用户数,分别测试:
(1)在响应时间为2s时,系统所能承受的最大并发访问用户的数量:
(2)系统在多大的并发访问用户数量下,响应时间不可接受(例如超过2s)。
请指出这两项测试分别属于哪种类型的测试,并分别解释这两种测试类型的基本概念。

参考答案:第一种测试属于负载测试,第二种属于压力测试。
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。
压力测试是通过逐步增加系统负载,测试系统性能变化,并最终确定在什么负载条件下系统性能处于失效状态,以此来获得系统能提供的最大服务级别的测试。


6、阅读下列说明,回答问题。
【说明】
某软件公司为某银行设计开发了一套网上银行系统,该系统提供基本的支付、查询、转账和信息修改等功能。银行对网上银行系统提出了初步的性能指标:
4交易响应时间不超过2s
5并发用户数>=1000
6CPU利用率不超过80%
7系统需要7*24小时不间断的稳定运行
8每秒事务数为7
9交易成功率为100%
现需要对该软件进行性能测试。
在测试性能指标(5)时,该软件公司在客户端模拟大量并发用户来执行业务操作,统计平均的每秒事务数。该软件公司认为客户端接收响应信息与该性能指标的测试无关,因此在模拟客户端上发起正常业务申请,接收系统响应后直接丢弃响应信息,没有进行功能校验。请说明该软件公司的做法正确与否,并简要说明原因以及执行功能校验的副作用。

参考答案:该软件公司的做法是错误的。
该软件公司在负载压力测试中没有进行功能校验,忽略了负载压力情况下的功能不稳定问题。没有正确的功能保证,负载压力性能测试就失去了意义。
在测试过程中进行功能校验,需要记录业务操作结果,会导致资源消耗、操作行为增加以及产生大量日志等问题。


7、阅读下列说明,回答问题。
【说明】
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成绩查询、教师上传成绩以及特殊情况下教务处对成绩进行修改等功能。系统基于Java EE平台实现,采用表单(Form)实现用户数据的提交并与用户交互。
系统要支持:
7在特定时期内100个用户并发时,主要功能的处理能力至少要达到10个请求/秒,平均数据量8KB/请求;
8用户可以通过不同的移动设备、操作系统和浏览器进行访问。
简要叙述教务管理系统表单测试的主要测试内容。

参考答案:表单测试是Web应用功能测试的重要内容,教务管理系统主要测试如下内容:
①每个字段的验证;
②字段的缺省值;
③表单中的输入;
④提交操作的完整性。


8、阅读下列说明,回答问题。
【说明】
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成绩查询、教师上传成绩以及特殊情况下教务处对成绩进行修改等功能。系统基于Java EE平台实现,采用表单(Form)实现用户数据的提交并与用户交互。
系统要支持:
7在特定时期内100个用户并发时,主要功能的处理能力至少要达到10个请求/秒,平均数据量8KB/请求;
8用户可以通过不同的移动设备、操作系统和浏览器进行访问。
简要叙述为了达到系统要支持的(2),需要进行哪些兼容性测试,并设计一个兼容性测试矩阵。

参考答案:"教务管理系统"的兼容性测试:
①平台兼容性和浏览器兼容性。
②兼容性测试矩阵如下:


9、阅读下列说明,回答问题。
【说明】
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成绩查询、教师上传成绩以及特殊情况下教务处对成绩进行修改等功能。系统基于Java EE平台实现,采用表单(Form)实现用户数据的提交并与用户交互。
系统要支持:
7在特定时期内100个用户并发时,主要功能的处理能力至少要达到10个请求/秒,平均数据量8KB/请求;
8用户可以通过不同的移动设备、操作系统和浏览器进行访问。
在满足系统要支持的(1)时,计算系统的通信吞吐量。

参考答案:通信吞吐量:P=N(并发用户的数量=100)×T(每单位时间的在线事务数量=10)×D(事务服务器每次处理的数据负载=8KB/s)=100×10×8=8000KB/s。


10、阅读下列说明,回答问题。

【说明】
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成绩查询、教师上传成绩以及特殊情况下教务处对成绩进行修改等功能。系统基于Java EE平台实现,采用表单(Form)实现用户数据的提交并与用户交互。
系统要支持:
7在特定时期内100个用户并发时,主要功能的处理能力至少要达到10个请求/秒,平均数据量8KB/请求;
8用户可以通过不同的移动设备、操作系统和浏览器进行访问。
系统实现时,对成绩更新所用的SQL语句如下:

"UPDATE StudentScore SET score="+intCTientSubmitScore+"WHERE Stuent_ID='"+strStudentID+"';"
设计1个测试用例,以测试该SQL语句是否能防止SQL注入,并说明该语句是否能防止SQL注入,以及如何防止SQL注入。

参考答案:设计如下测试:【注:设计类似如下用例的一个即可,其中包含SQL功能符号使SQL变为不符合设计意图即可,如包含',DROP等】。
(1)intClientSubmitScore: 100 --, strStudentID: 20130002,则该SQL变为:
UPDATE StudentScore SET score = 100 -- WHERE Student_ID='20130002';
(2)intClientSubmitScore: 100, strStudentID: 20130002';DROP TABLE StudentScore--,则该SQL语句变为:
UPDATE StudentScore SET score=100 WHERE Student_ID='20130002'; DROP TABLE StudentScore - -';
从测试用例所拼接处的SQL可以看出,该SQL语句不安全,容易造成SQL注入。
防止SQL注入的方法主要有:拼接SQL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。


11、阅读下列说明,回答问题。
【说明】
某企业最近上线了ERP系统,该系统运行的网络环境如图所示。企业信息中心目前拟对该系统相关安全防护体系进行全面的安全性测试,以提供全面的安全测评报告。

企业ERP系统上线后,企业主要业务的日常运作都高度依赖该系统的正常运行,因此ERP系统的稳定性与可靠性对企业至关重要。故障恢复与容灾备份措施是提高系统稳定性与可靠性的重要因素。对于故障恢复与容灾备份措施,参与测试的王工认为应从故障恢复、数据备份和容灾备份等三个方面进行测试。请用300字以内文字,对这三方面的测试内容进行简要说明。

参考答案:对于故障恢复与容灾备份措施,应从以下三个方面进行测试:
①故障恢复:测试整个ERP系统是否存在单点故障;任何一台设备失效时,能否按照预定义的规则实现快速切换;是否采用磁盘镜像技术,实现主机系统到磁盘系统的高速连接。
②数据备份:ERP系统关键业务是否具备必要的双机热备或磁盘镜像等热备份机制;对于整个ERP业务,是否提供外部存储器备份和恢复机制,保证系统能够根据备份策略恢复到指定时间的状态。
③容灾备份:ERP系统是否建立异地容灾备份中心,当主中心发生灾难性事件时,可由备份中心接管所有业务;备份中心是否有足够的带宽确保与主中心的数据同步,是否有足够处理能力来接管主中心的业务,能否确保快速可靠地与主中心的应用切换。


12、某企业最近上线了ERP系统,该系统运行的网络环境如图所示。企业信息中心目前拟对该系统相关安全防护体系进行全面的安全性测试,以提供全面的安全测评报告。

数据库服务器中目前主要存储ERP系统业务数据,后续还需要存储企业网站相关数据,当前ERP系统的用户认证方式包含口令认证方式,相应的用户权限和口令也存储在数据库二维表中。针对上述实际情况,参与测试的李工认为在对数据库权限进行测试时,除数据库账号保护及权限设置相关的常规测试外,还必须对敏感数据加密保护及对数据库访问方式进行相应测试。请用200字以内文字,对敏感数据加密保护和数据库访问方式两个方面的测试内容进行简要说明。

参考答案:敏感数据加密保护和数据库访问方式的测试内容为:
①敏感数据的加密保护:由于ERP系统的用户权限和口令存储在数据库中,因此需要测试相应敏感数据是否采用加密算法进行加密保护。
②数据库访问方式测试:是否为不同应用系统或业务设置不同的专门用户用于数据库访问,应杜绝在代码中使用超级用户及默认密码对数据库进行访问。


13、某企业最近上线了ERP系统,该系统运行的网络环境如图所示。企业信息中心目前拟对该系统相关安全防护体系进行全面的安全性测试,以提供全面的安全测评报告。


为对抗来自外网或内网的主动攻击,系统通常会采用多种安全防护策略,请给出四种常见的安全防护策略并进行简要解释。结合一种在图中明确标识出的安全防护策略机制,说明针对该机制的安全测试应包含哪些基本测试点。

参考答案:安全防护策略是软件系统对抗攻击的主要手段,常见的安全防护策略有以下四种:
①安全日志:安全曰志用于记录非法用户的登录名称、操作时间及内容等信息,以便发现问题并提出解决措施;安全日志仅记录相关信息,不对非法行为做出主动反应,属于被动防护的策略;
②入侵检测系统:入侵检测系统是一种主动的网络安全防护措施,从系统内部或各种网络资源中主动采集信息,从中分析可能的网络入侵或攻击,通常入侵检测系统还应对入侵行为做出紧急响应;
③漏洞扫描:漏洞扫描是对软件系统及网络系统进行与安全相关的检测,以找出安全隐患和可被黑客利用的漏洞;
④隔离防护:隔离防护是将系统中的安全部分与非安全部分进行隔离的措施,主要的技术手段有防火墙和隔离网闸等,其中防火墙主要用于内网和外网的逻辑隔离,而网闸则主要用于实现内网和外网的物理隔离。
图中明确标识出的安全防护策略机制为防火墙和入侵检测系统。(可选择防火墙或入侵检测系统中的任一机制描述相应安全测试的测试点)
针对防火墙的测试点:
(1)是否支持交换和路由两种工作模式;
(2)是否支持对FTP、HTTP、SMTP等服务类型的访问控制;
(3)是否考虑防火墙的冗余设计;
(4)是否支持对日志的统计分析功能,日志是否可存储在本地或网络数据库中;
(5)对防火墙或受保护内网的非法攻击,是否提供多种告警方式和多种级别的告警。
针对入侵检测系统的测试点:
①能否在检测到入侵事件时,自动执行切断服务、记录入侵过程、报警等动作;
②是否支持攻击特征信息的集中式发布和攻击取证信息的分布式上载;
③能否提供多种方式对监视引擎和检测特征进行定期更新;
④内置的网络能否使用状态监控工具或网络监听工具。


14、阅读下列说明,回答问题。
【说明】
软件在机载设备中的运用越来越广泛,驻留于机载设备中的嵌入式软件失效会产生灾难性后果,一般要求其具有较高的可靠性,因此,软件可靠性测试对机载软件至关重要。
解释软件可靠性的含义及影响软件可靠性的主要因素。

参考答案:软件可靠性是在规定的条件下,在规定的时间内,软件不引起系统失效的概率。影响软件可靠性的主要因素包括:运行剖面、软件规模、软件内部结构、软件的开发方法和开发环境、软件的可靠性投入等。


15、软件在机载设备中的运用越来越广泛,驻留于机载设备中的嵌入式软件失效会产生灾难性后果,一般要求其具有较高的可靠性,因此,软件可靠性测试对机载软件至关重要。
可靠性评价时,经常使用的定量指标包括失效概率、可靠度和平均无失效时间(MTTF),请分别解释其含义。

参考答案:失效概率是软件从运行开始到某一时刻t为止,出现失效的概率;
可靠度是软件系统在规定的条件下,规定的时间内不发生失效的概率;
平均无失效时间指软件运行后,到下一次出现失效的平均时间。


16、软件在机载设备中的运用越来越广泛,驻留于机载设备中的嵌入式软件失效会产生灾难性后果,一般要求其具有较高的可靠性,因此,软件可靠性测试对机载软件至关重要。
对某嵌入式软件,设计要求其可靠度为1000小时无失效概率99.99%。经实测得出其失效概率函数F(1000)=0.0012,问该软件是否符合设计可靠性要求,并说明原因。

参考答案:不符合可靠度要求。
软件可靠度R(t)和软件失效概率之间的关系为R(t)=1-F(t)。R(1000)=1-F(1000)=1-0.0012=0.9988=99.88%,99.88%<99.99%,因此不符合设计软件可靠度要求。


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2013年11月软件评测师下午题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share