推荐等级:
发布时间: 2021-12-17 14:32
扫码用手机做题
逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。
int XOR(char * filename, unsigned long key){
FILE * input = NULL,*output = NULL; //1
char * outfilename = NULL;
int len = strlen(filename);
unsigned char buffer;
if( (filename[len-2] == ‘.’) && (filename[len-l] == ‘c’)){ //2,3
outfilename = new char[len+l]; //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,”'wbf”);
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
outfllename = NULL;
fclose(input);
fclose(output);
return 1;
}
}
else{ //14
buffer A= key;
fwrite(&buffer,sizeof(unsigned char), 1,output);
}
}
fclose(input);
fclose(output);
delete [] outfllename;
return 0;
}
【问题1】(6分)
请给出满足100%DC (判定覆盖)所需的逻辑条件。
【问题2】(10分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
【问题3】(4分)
请给出问题2中控制流图的线性无关路径。
本题解析:
【问题1】
(filename[len-2] == ‘.’) && (filename[len-l] == ‘c’)
(filename[len-2] != ‘.’) && (filename[len-l]!= ‘c’)(或与之等价的表达式,使得判定结果为假)
input == NULL
input != NULL(或与之等价的表达式,使得判定结果为假)
output == NULL
output != NULL(或与之等价的表达式,使得判定结果为假)
! feof(input)
feof(input)(或与之等价的表达式,使得判定结果为假)
fread(&buffer,sizeof(unsigned char), 1,input) != 1
fread(&buffer,sizeof(unsigned char), 1,input) == 1(或与之等价的表达式,使得判定结果为假)
! feof(input)
feof(input)(或与之等价的表达式,使得判定结果为假)
【问题2】
V(G)=8
【问题3】
1、1 2 3 4 6 7
2、1 2 3 5 6 7
3、1 2 5 6 7
4、1 2 5 6 8 9
5、1 2 5 6 8 10
6、1 2 5 6 8 10 11 12 13
7、1 2 5 6 8 10 11 14
8、1 2 5 6 8 10 11 12
或者其他符合要求的等价的路径组合
某企业最近上线了 ERP系统,该系统运行的网络环境如图4-1所示。企业信息中心目前拟对该系统相关安全防护体系进行全面的安全性测试,以提供全面的安全测评报。
【问题1】(6分)
企业ERP系统上线后,企业主要业务的日常运作都高度依赖该系统的正常运行,因此ERP系统的稳定性与可靠性对企业至关重要。故障恢复与容灾备份措施是提高系统稳定性与可靠性的重要因素。对于故障恢复与容灾备份措施,参与测试的王工认为应从故障恢复、数据备份和容灾备份等三个方面进行测试。请用300字以内文字,对这三方面的测试内容进行简要说明。
【问题2】(4分)
数据库服务器中目前主要存储ERP系统业务数据,后续还需要存储企业网站相关数据,当前ERP系统的用户认证方式包含口令认证方式,相应的用户权限和口令也存储在数据库二维表中。针对上述实际情况,参与测试的李工认为在对数据库权限进行测试时,除数据库账号保护及权限设置相关的常规测试外,还必须对敏感数据加密保护及对数据库访问方式进行相应测试。请用200字以内文字,对敏感数据加密保护和数据库访问方式两个方面的测试内容进行简要说明。
【问题3】(10分)
为对抗来自外网或内网的主动攻击,系统通常会采用多种安全防护策略,请给出四种常见的安全防护策略并进行简要解释。结合一种图4-1中明确标识出的安全防护策略机制,说明针对该机制的安全测试应包含哪些基本测试点。
本题解析:
【问题1】
应用系统的稳定性与可靠性,在一定程度上取决于故障恢复和容灾备份措施。一般有以下三个测试点:
故障恢复:整个系统是否存在单点故障;对于关键性应用系统,当任何一台设备失效时,按照预先定义的规则是否能够快速切换;是否采用磁盘镜像技术,实现主机系统到磁盘系统的高速连接。
数据备份:对于关键的业务,是否具备必要的热备份机制,例如双机热备份、磁盘镜像等;对于所有业务,是否提供磁带备份和恢复机制,保证系统能根据备份策略恢复到指定时间的状态。
容灾备份:可否建立异地容灾备份中心,当主中心发生灾难事件时,由备份中心接管所有的业务;备份中心是否有足够的带宽确保与主中心的数据同步,有足够的处理能力来接管主中心的业务,能否确保快速可靠地与主中心的应用切换。
【问题2】
加密机制是保护数据安全的重要手段,加密的基本过程就是对原来明文的文件或数据,按某种算法进行处理,使其成为不可读的一段代码——密文,使其只能在输入相应的密钥之后才能显示出明文内容,通过这样的途径来达到保护数据不被非法窃取、阅读的目的。不同加密机制或密码函数的用途、强度是不相同的,一个软件或系统中的加密机制使用得是否合理,强度是否满足当前需求,是需要通过测试来完成的,通常模拟揭秘是测试的一个重要手段。
数据库权限管理的测试有如下三个方面:
应用软件部署后,数据库管理用户的设置应当注意对账号的保护,超级用户的口令不得为空或默认口令。对数据库的账号和组的权限作相应设置,如锁定一些默认的数据库用户;撤销不必要的权限。
数据库中关于应用软件用户权限和口令存储的相关表格,尽量采用加密算法进行加密。
软件企业在进行软件产品开发时,开发人员通常为了开发方便,在客户端与数据库通信时,均使用超级用户及默认密码访问数据库,这种方式将会带来严重的安全隐患,测试人员可以通过网络侦听的技术,或使用白盒测试方法进行测试,并且应当建议开发者,根据不同程序访问数据库的功能,使用不同的数据库用户进行连接,且必须设置复杂的密码。
【问题3】
安全防护策略是软件系统对抗攻击的主要手段,安全防护策略主要有安全日志、入侵检测、隔离防护、漏洞扫描等。
安全日志是记录非法用户的登录名称、操作时间及内容等信息,以便于发现问题并提出解决措施。安全日志仅记录相关信息,不对非法行为作出主动反应,属于被动防护的策略。
入侵检测系统是一种主动的网络安全防护措施,从系统内部和各种网络资源中主动采集信息,从中分析可能的网络入侵或攻击。一般来说,入侵检测系统还应对入侵行为作出紧急响应。入侵检测被认为是防火墙之后的第二道安全闸门,在不影响网络性能的情况下能对网络进行检测,从而提供对内部攻击,外部攻击和误操作的实时保护。
漏洞扫描就是对软件系统及网络系统进行与安全相关的检测,以找出安全隐患和可被黑客利用的漏洞,同时漏洞扫描技术也是安全性测试的一项必要手段。
隔离防护是将系统中的安全部分与非安全部分进行隔离的措施,目前采用的技术主要有两种,即隔离网闸和防火墙,隔离网闸主要目的在于实现内网和外面的物理隔离,防火墙主要用于内网和外网的逻辑隔离。
防火墙
1、是否支持交换和路由两种工作模式。
2、是否支持对HTTP、FTP、SMTP等服务类型的访问控制。
3、是否考虑到防火墙的冗余设计。
4、是否支持对日志的统计分析功能,同时,日志是否可以存储在本地和网络数据库上。
5、对防火墙本身或受保护网段的非法攻击系统,是否提供多种告警方式以及多种级别的告警。
入侵检测系统
1、能否在检测到入侵事件时,自动执行切断服务、记录入侵过程、邮件报警等动作。
2、是否支持攻击特征信息的集中式发布和攻击取证信息的分布式上载。
3、能否提供多种方式对监视引擎和检测特征的定期更新服务。
4、内置的网络能否使用状况监控工具和网络监听工具。
某高校开发了一套基于Web的教务管理系统,实现教务管理人员课程设置、学生选课和成绩查询、教师上传成绩以及特殊情况下教务处对成绩进行修改等功能。系统基于Java EE平台实现,采用表单(Form)实现用户数据的提交并与用户交互。
系统要支持:
(1)在特定时期内100个用户并发时,主要功能的处理能力至少要达到每秒10个请求,平均数据量8KB/请求;
(2)用户可以通过不同的移动设备、操作系统和浏览器进行访问。
【问题1】(4分)
简要叙述教务管理系统表单测试的主要测试内容。
【问题2】(5分)
简要叙述为了达到系统要支持的(2),需要进行哪些兼容性测试,并设计一个兼容性测试矩阵。
【问题3】(5分)
在满足系统要支持的(1)>时,计算系统的通信吞吐量。
【问题4】(6分)
系统实现时,对成绩更新所用的SQL语句如下:
“UPDATE StudentScore SET score = ” + intClientSubmitScore + “ WHERE Stuent_ID=“ + strStudentID +
设计1个测试用例,测试该SQL语句是否能防止SQL注入,并说明该语句是否能防止SQL注入,以及如何防止SQL注入。
本题解析:
【问题1】
每个字段的验证
字段的缺省值
表单中的输入
提交操作的完整性
【问题2】
浏览器兼容性测试、操作系统兼容性测试、移动终端浏览测试、打印测试等。
在设置的兼容性测试矩阵肯定要包含平台和浏览器的内容,矩阵的行可以是不同的平台,而列是不同的浏览器,同时平台和浏览器都是合理的,还要提醒出移动的元素在里面即可。
【问题3】
系统的通信吞吐量=系统的并发用户数*单位时间的在线事务数(请求数)*每个请求的平均数据流=100*10*8KB=8000KB
【问题4】
输入intClientSubmitScore为85 DELETE FROM score -- ;strStudentID为1000
这样SQL语句执行就变成: UPDATE StudentScore SET score =85 DELETE FROM score -- WHERE Stuent_ID= 1000 ;防止SQL注入的有些方法主要有:拼接SQL之前先对特殊符合进行转义,使其不作为SQL的功能符合即可。
软件在机载设备中的运用越来越广泛,驻留于机载设备中的嵌入式软件失效会产生灾难性后果,一般要求其具有较高的可靠性,因此,软件可靠性测试对机载软件至关重要。
【问题1】(8分)
解释软件可靠性的含义及影响软件可靠性的主要因素。
【问题2】(6分)
可靠性评价时,经常使用的定量指标包括失效概率、可靠度和平均无失效时间 (MTTF),请分别解释其含义。
【问题3】(6分)
对某嵌入式软件,设计要求其可靠度为1000小时无失效概率99.99%。经实测得出其失效概率函数F(1000)=0.0012,问该软件是否符合设计可靠性要求,并说明原因。
本题解析:
【问题1】
可靠性是指产品在规定的条件下和规定的时间内完成规定功能的能力或者在指定条件下使用时,软件产品维持规定的性能级别的能力。
从技术的角度来看,影响软件可靠性的主要因素如下:
运行剖面(环境);软件规模;软件内部结构;软件的开发方法和开发环境;软件的可靠性投入。
【问题2】
失效概率:软件从运行开始,到某一个时刻为止,出现失效的概率。
可靠度:是软件系统在规定的条件下,规定的时间内不发生失效的概率。
平均无失效时间(MTTF):是软件运行后,到下一次出现失效的平均时间。通常平均无失效时间更能直观地表明一个软件的可靠程度。
【问题3】
不符合设计要求,题干中要求无1000小时无失效概率为99.99%。依据公式R(t)=1-F(t)可以得出实际的R(t)=1-0.0012=99.88% < 99.99%
某软件公司为某银行设计开发了一套网上银行系统,该系统提供基本的支付、查询、转账和信息修改等功能。银行对网上银行系统提出了初步的性能指标:
(1)交易响应时间不超过2s
(2)并发用户数>=1000
(3)CPU利用率不超过80%
(4)系统需要7*24小时不间断的稳定运行
(5)每秒事务数为7
(6)交易成功率为100%
现需要对该软件进行性能测试。
【问题1】(4分)
常见的性能测试包括负载测试、压力测试、并发性能测试、疲劳强度测试和大数据量测试等。针对题目中所述的6个性能指标,并发性能测试和疲劳强度测试所涉及的指标各有哪些
【问题2】(6分)
性能测试中,针对一个单独的性能指标,往往需要采用多种不同的测试方法。该软件公司需要测试性能指标(1)和(5),设计了如下的测试方案:
测试常规情况下的并发用户数,逐步增加并发用户数,分别测试:
1. 在响应时间为2s时,系统所能承受的最大并发访问用户的数量;
2. 系统在多大的并发访问用户数量下,响应时间不可接受(例如超过2s)。
请指出这两项测试分别属于哪种类型的测试,并分别解释这两种测试类型的基本概念。
【问题3】(5分)
在测试性能指标(5)时,该软件公司在客户端模拟大量并发用户来执行业务操作,统计平均的每秒事务数。该软件公司认为客户端接收响应信息与该性能指标的测试无关,因此在模拟客户端上发起正常业务申请,接收系统响应后直接丢弃响应信息,没有进行功能校验。请说明该软件公司的做法正确与否,并简要说明原因以及执行功能校验的副作用。
本题解析:
【问题1】
属于并发性能的指标应有(1)(2)(5)
属于疲劳强度的指标应有:(4)
【问题2】
负载测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试
压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能提供的最大服务级别的测试。
因此本题中 1是属于负载测试,2是属于压力测试
【问题3】
(5)每秒事务数为7,本题的做法是等系统响应就丢弃没有执行功能验证,这种做法是不正确的:该软件公司在负载压力测试中没有进行功能校验,忽略了负载压力情况下的功能不稳定问题。没有正确的功能保证,负载压力性能测试就失去了意义
在测试过程中进行功能校验,需要记录业务操作结果,会导致资源消耗、操作行为增加以及产生大量日志等问题。
试卷分类:高级信息系统项目管理师
练习次数:0次
试卷分类:高级系统架构设计师
练习次数:0次
试卷分类:中级系统集成项目管理工程师
练习次数:0次
试卷分类:中级信息系统监理师
练习次数:0次
试卷分类:中级软件设计师
练习次数:0次
试卷分类:高级网络规划设计师
练习次数:0次
试卷分类:高级网络规划设计师
练习次数:0次
试卷分类:高级网络规划设计师
练习次数:0次
试卷分类:中级网络工程师
练习次数:0次
试卷分类:中级网络工程师
练习次数:0次