2023年11月28日发(作者:)
2022下半年软件评测师考试真题及答案-下午卷
试题一
【说明】
场景法是黑盒测试中重要的测试用例设计方法,通过场景描绘业务流程〔包括根本流〔根
本业务流程〕和备选流〔分支业务流程〕〕,设计测试用例遍历软件系统功能,验证其正确性。
下面是对电子不停车收费系统〔ETC〕的根本流和备选流的描绘。
表1-1 根本流
步骤 步骤描绘
A1 用例开始,ETC准备就绪,自动栏杆放下
A2 ETC与车辆通信,读取车辆信息
A3 对车辆拍照
A4 根据公式计算通行费用
A5 查找关联账户信息,确认账户余额大于通行费用
A6 从账户中扣除该费用
A7 显示费用信息
A8 自动栏杆翻开
A9 车辆通过
A10 自动栏杆放下,ETC回到就绪状态
表1-2 备选流
编号 名称 描绘
B 读取车辆信息出错
不够五次那么返回A2,否那么显示告警信息后退出根本流
在根本流A5步骤,在银行系统中不存在该账户信息,退出根
C 账户不存在
本流
在根本流A5步骤,账户余额小于通行费用,显示账户余额缺
D 账户余额缺乏
乏警告,退出根本流
在根本流A5步骤,账户已销户、冻结或由于其他原因此无法
E 账户状态异常
使用,显示账户状态异常信息,退出根本流
在根本流A2步骤,ETC读取车辆信息错误〔重复读取五次〕,
【问题1】
使用场景法设计测试用例,指出所涉及到的根本流和备选流。根本流用A字母编号表示,
备选流用表1-2中对应的字母编号表示。
例如:
T01: A
T02: A、B
【问题2】
针对问题1设计的测试用例,依次将初次读取车辆信息、最终读取车辆信息、账户号码、
账户余额和账户状态等信息填入下述测试用例表中。表中行代表各个测试用例,列代表测试
用例的输入值,用V表示有效数据元素,用I表示无效数据元素,n/a表示不适用,例如T01
表示“成功通过〞用例。
表1-3 测试用例表
测试初次读取 最终读取 账户 账户 账户
预期结果
用例 车辆信息 车辆信息 号码 余额 状态
扣除通行费,车辆顺利通过,用例
T01 V n/a V V V
完毕
连续5次读取失败,显示警告信息,
T02 I I n/a n/a n/a
T03
T04
T05
T06
T07
T08
用例完毕
答案:
【问题1】
〔场景顺序可以任意,重复内容不计分〕
共包括8个场景:
T01:A 〔收费停车〕
T02:A、B 〔停车时,读取车辆信息出错〕
T03:A、C 〔停车时,账户不存在〕
T04:A、D 〔停车时,账户余额缺乏〕
T05:A、E 〔停车时,账户状态异常〕
T06:A、B、C 〔重复读才获得正确车辆信息,但出现账户不存在异常〕
T07:A、B、D 〔重复读才获得正确车辆信息,但出现账户余额缺乏〕
T08:A、B、E
【问题2】
测试初次读取 最终读取 账户 账户 账户
预期结果
用例 车辆信息 车辆信息 号码 余额 状态
扣除通行费,车辆顺利通过,用例
T01 V n/a V V V
完毕
连续5次读取失败,显示警告信息,
T02 I I n/a n/a n/a
用例完毕
账户不存在,提示警告信息,用例
T03 V n/a I n/a n/a
完毕
账户余额缺乏,提示警告信息,用
T04 V n/a V I n/a
例完毕
账户状态异常,提示警告信息,用
T05 V n/a V V I
例完毕
屡次读取车辆信息,最终成功;账
T06 I V I n/a n/a 户不存在,提示警告信息,用例完
毕
屡次读取车辆信息,最终成功;账
T07 I V V I n/a 户余额缺乏,提示警告信息,用例
完毕
屡次读取车辆信息,最终成功;账
T08 I V V V I 户状态异常,提示警告信息,用例
完毕
解析:
【问题1】
根据题目中题干确定的根本流和备选流,可以设计场景,每个场景覆盖一种在该案例中
事件的不同触发顺序与处理结果形成的事件流,最后得出所有的测试用例。下面是所有的测
试用例以及用例中所涉及的根本流与备选流。
【问题2】
根据问题1中设计的所有测试用例,测试人员需要设计详细的场景分析,其中应包括场
景变化中系统所关心的状态信息的变化,以及测试完毕后预期的结果。这样,在测试人员进
展实际测试后,可以用实际输出结果与预期结果进展比较,来评价测试的结果。
试题二
【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑构造的遍历实现程
序的覆盖。针对以下由C语言编写的程序,按要求答复以下问题。
gz_open (const char *mode)
{
char * p = (char*)mode; //1
char fmode[4];
char * m = fmode;
char smode = ’0’;
char level = ’0’;
int strategy = 0;
do {
if (*p == ’r’) //2
smode = ’r’; //3
if (*p >= ’0’&& *p <= ’9’) { //4,5
level = *p - ’0’; //6
} else if (*p == ’f’) { //7
strategy = 1; //8
} else { //9
*m++ = *p;
}
*p++; //10
}while (m != fmode + sizeof(fmode)); //11
} //12
【问题1】
请给出满足100%DC〔断定覆盖〕所需的逻辑条件。
【问题2】
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V〔G〕。
【问题3】
假设函数gz_open的参数mode是由26个小写字母'a’-'z’、数字'0'-'9’以及空格组
成的字符串,请使用根本途径测试法构造1个测试用例,使之覆盖所有根本途径。
答案:
【问题1】
断定覆盖即分支覆盖,对于每一个断定,都至少要获得一次真值和假值。在此题中,我
们从程序中不难找出所有的逻辑判断语句,很显然在题目给出的程序中,包含的逻辑判断语
句有:*p == ’r’、*p >= ’0’&& *p <= ’9’、*p == ’f’及m != fmode + sizeof(fmode)。
那么首先是断定*p == ’r’,应分别设置其为真与为假的情况;然后是*p >= ’0’&& *p <= ’
9’,设置其为真,然后设置其为假,在为假的情况下,出现断定*p == ’f’,分别设计其为
真和假;最后是m != fmode + sizeof(fmode),分别设置真、假即可。
【问题2】
控制流图
环路复杂度V〔G〕=6
【问题3】
构造一个6个字符构成的字符串〔设为x,y,Z,u,v,w6个字符〕,使得每个字符覆
盖一 条根本途径。其中,x='r',y='f,z∈['0'-'9'], u<'0', v>'9' 并且v!='f', w任意,
这6个字符可任意排列。例如,mode="r0faa"。
试题三
【说明】
在CNCERT/CC 〔国家计算机网络应急技术处理协调中心〕处理的平安事件中,国内政
府机构和重要信息系统部门的网页篡改类事件数量增长迅速。2022年6月的某一周,中国
境内仅网页被篡改的网站就有660个,其中政府网站105个。网站内容复制容易,转载速度
快,后果难以意料,网页假设被篡改,将直接危害该网站的利益,尤其是门户网站作为政府
发布重要新闻、重大方针政策、法规和企业信息等的重要渠道,一旦被黑客篡改,将严重损
害政府和企业形象。
从网站页面被篡改的角度来看,存在两种攻击的可能,一种是网站被入侵,也就是说网
站页面确实被篡改了,另外一种是网站被劫持,这种情况下网站的页面实际上并没有被篡改,
但是攻击者劫持了网络访问并发送欺骗页面给来访者,进而造成页面被篡改的表象。
【问题1】〔6分〕
通过入侵从而进展网页篡改的可能途径有哪些?这些途径各对应平安系统防护体系的
哪个层次?
【问题2】〔6分〕
针对网页被篡改的问题,从技术层面看有哪些防范措施?
【问题3】〔3分〕
如今出现了一些基于监测与恢复的页面防篡改系统,这类防篡改系统应具备哪些根本功
能?
答案:
【问题1】
要入侵来篡改网页,主要途径有如下几种:
〔1〕通过操作系统、网络效劳、数据库破绽来获取主机的控制权,从而到达篡改网页
的目的,这一类对应的平安防护体系层次是平台平安。
〔2〕通过猜测或者破解密码来获取管理员的权限,从而到达篡改网页的目的,这一类
对应的平安防护体系层次是数据平安。
〔3〕通过Web破绽或者设计缺陷来进展攻击入侵,从而到达篡改网页的目的,这一类
对应的平安防护体系层次是应用平安。
【问题2】
〔1〕给效劳器打上最新的平安补丁程序
〔2〕封闭未用但开放的网络效劳端口
〔3〕合理设计网站程序并编写平安代码
〔4〕设置复杂的管理员密码
〔5〕设置适宜的网站权限
〔6〕安装专业的网站防火墙和入侵检测系统
【问题3】
〔1〕自动监控
〔2〕自动备份和恢复
〔3〕自动报警
〔4〕区分合法更新与非法篡改
解析:
【问题1】
本问题考査入侵方法和平安防护体系层次。
通过入侵进而篡改页面的方法从大的方面来说可以分为三类,即通过操作系统、网络效
劳、数据库等破绽获得主机控制权、通过猜测或者破解密码获得管理员密码和通过Web破绽
和设计缺陷进展攻击入侵。而平安防护体系层次分为7层,分别是实体平安、平台平安、数
据平安、通信平安、应用平安、运行平安以及管理平安。通过操作系统、网络效劳、数据库
等破绽获得主机控制权威胁的是平台、操作系统和根本应用平台的平安,因此对应于平台平
安;通过猜测或者破解密码获得管理员密码威胁的是系统数据的机密性和访问控制,因此对
应于数据平安;而通过Web破绽和设计缺陷进展攻击入侵威胁的是业务逻辑或者业务资源的
平安,因此对应于应用平安。
【问题2】
本问题考査防篡改的技术防范措施。
对于通过操作系统、网络效劳、数据库等破绽获得主机控制权这一类篡改途径,需要的
防范措施是给效劳器打平安补丁、关闭不需要的网络效劳端口以及设置防火墙;对于通过猜
测或者破解密码获得管理员密码这一类篡改途径,需要的是设置足够复杂的管理员密码并定
期进展更换;而对于通过Web破绽和设计缺陷进展攻击入侵,那么需要对网站程序进展合理
的设计与实现,考虑到可能的平安威胁,另外需要设置适宜的网站访问权限。
【问题3】
本问题考察网页防篡改系统的根本功能。
对一个专业的网页防篡改系统来说,首先必须能对所有页面进展自动监控,一旦发现非
法篡改后能自己报警,并找到一个最新的备份自动回复,此外,这个系统也必须可以区分出
某一次的更新是属于合法的更新还是非法的篡改。
试题四
【说明】
某公司开发基于Web的招聘系统,采用Java EE系统架构。系统提供用户注册、职位设
置、承受应聘者的申请和评估录取应聘者等功能。承受申请主要是验证应聘者提交的姓名、
地址、照片、简历和预申请职位等信息的完好性,并发送给应聘者相关通知;评估应聘者主
要是根据部门经理设置所需职位,对已经受理的申请进展资格审查,发送给应聘者录用与否
的相关决策信息。
系统要支持:
〔1〕在50个用户并发时,主要功能的处理才能至少要到达5个恳求/秒,平均数据量
12KB/恳求;
〔2〕用户可以通过PC、挪动设备上的不同操作系统和阅读器进展访问。
【问题1】〔3分〕
简要表达招聘系统链接测试的主要测试内容。
【问题2】〔4分〕
简要表达为了到达系统要支持的〔2〕,需要进展哪些兼容性测试,并设计一个兼容性测
试矩阵实例。
【问题3】〔3分〕
在满足系统要支持的〔1〕时,计算系统的通信吞吐量。
【问题4】〔5分〕
系统实现时,对用户的登录判断所用的动态SQL语句如下:
"SELECT * FROM Users WHERE User一Name = ' " + strUserName + " 'AND Password
=' " + strPassword + " ';"
该SQL语句是否能防止SQL注入?请设计一个测试用例,以测试SQL注入,并说明防止
SQL注入的方法。
答案:
【问题1】
招聘系统的链接测试主要测试如下3个方面:
〔1〕每个链接是否可以链接到目的页面
〔2〕被链接的页面是否存在
〔3〕是否存在孤立页面
【问题2】
招聘系统的兼容性测试:
〔1〕平台兼容性和阅读器兼容性。
〔2〕兼容性测试矩阵例如如下:
游览器 Google
IE7、8/9 Firefox Safari ……
平台 Chrome
Windows XP
Windows 7
Android
iOS
……
【问题3】
通信吞吐量:P=N 〔并发用户的数量=50〕 *T 〔每单位时间的在线事务数量=5〕 * D
〔事务效劳器每次处理的数据负载=12KB/s〕 =50*5*12 = 3000KB/s。
【问题4】
该SQL语句不平安,容易造成SQL注入。
设计测试用例:
【注:设计类似如下用例的一个即可,其中应包含SQL功能符号,使得该SQL语句变得
不符合设计意图即可,例如,包含了"--"或“',〞等】
参考用例1:
strUserName: Zhang1-- strPassword:San
【注:上述用例将使得该SQL语句变为:
SELECT * FROM Users WHERE User—Name = 'Zhang'-- AND Password =,San*;】
参考用例2:
strUserName:Zhang'or 'a', = 'a strPassword: San * or * 'a' ='a
【注:上述用例将使得该SQL语句变为:
SELECT * FROM Users WHERE User_Name = 'Zhang' or 'a'—a' AND Password = 'San' or
'a'-'a';】
防止SQL注入的方法主要有:拼接SQL之前对特殊符号进展转义,使其不作为SQL 语句
的功能符号。
解析:
【问题1】
本问题考察链接测试的主要内容。链接测试是Web应用功能测试的重要内容,测试时需
要测试所有页面的外向链接、内部链接、页面中链接跳转、发送Email等功能性链接、是否
存在孤立页面、链接的目的是否存在等等。链接测试主要测试如下3个方面:
〔1〕每个链接是否可以链接到目的页面;
〔2〕被链接的页面是否存在;
〔3〕是否存在孤立页面,即无法通过应用主要入口页面链接到,而只有通过特定URL
才能访问到的页面。
【问题2】
本问题考察Web应用兼容性测试的内容。Web应用的兼容性是Web应用可用的重要方面,
Web应用具有支持多渠道访问的特性,设备、平台、阅读器等的开发商不同、版本不同,会
影响Web应用的可用性、可访问性甚至功能性等诸多方面。因此,兼容性测试是Web应用测
试的重要方面。
Web应用兼容测试是测试Web应用在各种硬件、软件、操作系统、网络等不同的环境下,
发现程序运行时出现的错误。常见的Web应用兼容性测试有平台的兼容性测试、阅读器兼容
性测试、分辨率测试、连接速度测试、打印机测试、数据库兼容性测试和应用软件之间的兼
容性测试。
本系统用户可以通过PC和挪动设备的不同操作系统和阅读器进展访问,涉及到PC和挪
动设备使用多种操作系统,如Windows的多种版本、Linux、Unix、Android、iOS,而各种
系统上又有多种可用的阅读器,如IE的多种版本、Firefox、Google Chrome、Safari等,
因此需要针对不同设备,进展相应的操作系统平台和阅读器的兼容性测试。
兼容性测试矩阵是进展兼容性测试的常用工具,将操作系统平台和阅读器为矩阵的两
维,对相应组合进展测试。
【问题3】
本问题考察Web应用系统的性能指标计算。通信吞吐量,设定如下指标参数:
N:并发用户的数量;
T:每单位时间的在线事务数量
D:事务效劳器每次处理的数据负载
P:系统的通信吞吐量
有如下计算公式:
P=N*T*D
此题中系统要求支持的〔1〕中给出50个用户并发,即N=50;主要功能的处理才能至少
要到达5个恳求/秒,即T=5;平均数据量12KB/恳求,即D=12KBh 那么:通信吞吐量
P= 50*5*12 = 3000KB/S
【问题4】
本问题考察Web应用平安性方面。SQL注入是Web应用平安性测试的重要方面。许多Web
应用系统采用某种数据库,接收用户从Web页面中的输入,完成展示相关存储的数据〔如,
检查用户登录信息〕、将输入数据存储到数据库〔如,用户输入表单中数据域并点击提交后,
系统将用户名密码等注册信息存入数据库〕等操作。在有些情况下,将用户输入的数据和设
计好的SQL框架拼接后提交给数据库执行,就可能存在用户输入的数据并非设计的正确格
式,就给恶意用户提供了破坏的时机,即SQL注入。恶意用户输入不期望的数据,拼接后提
交给数据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据
库的构造,甚至是删除应用的数据库表等严重后果。因此需要在测试阶段进展认真严格的测
试。
本系统实现时,对用户的登录判断所用的动态SQL语句是:
"SELECT * FROM Users WHERE User_Name = ' " + strUserName + AND Password =’’’
+ strPassword + n';";"
釆用拼接字符串方式,无法防止SQL注入。
例如 strUserName: 'Zhang'--, strPassword:San,那么该SQL 变为:
SELECT * FROM Users WHERE User_Name = 'Zhang'-- AND Password = 'San';
'--'是SQL中注释符号,其后的内容为注释,这样上述语句中“--〞之后的内容变为注
释,只要用户表中有用户名为Zhang,系统就允许用户以Zhang的身份登录,并以Zhang的
身份做任何可做的操作。
再比方 strUserName: Zhang’or ’a’='a,strPassword: San' or 'a*=*a,那么该
SQL 变为:
SELECT * FROM Users WHERE User一Name = 1 Zhang1 or f a1 =1 a * AND Password
= 'San' or 'a' = 'a ';
因为’aya'条件总是成立,因此,SQL执行结果包括用户表中所有行,系统就允许以第
一行的身份进展登录。
更为严重的情况下,假设用户输入 strUserName: Zhang'; DROP table users details;*
-,以及任何字符串作为strPassword,该SQL就变为:
SELECT * FROM Users WHERE User一Name = 'John '; DROP table users_details;
'--'AND Password = 'San';
这就造成数据库中users_details表被永久删除。
防止SQL注入的方法主要有:拼接SQL之前对特殊符号进展转义,使其不作为SQL 语句
的功能符号。
SQL注入在使用SSL的应用中仍然存在,甚至是防火墙也无法防止SQL注入。因 此,
在测试Web应用时,需要认真仔细设计测试用例,采用Web破绽扫描工具等进展 检查,以
保证不存在SQL注入时机。
试题五
【说明】
某数据管理系统有两个重要模块:数据接收模块和数据查询模块。数据接收模块按照一
定的时间间隔从多个不同数据源接收数据进展一定的预处理后存入数据库中;数据查询模块
根据用户恳求从数据库中査询相应的数据并返回给用户。现需要对该系统执行负载压力测
试。
该数据管理系统的性能要求为:
〔1〕交易执行成功率100%;
〔2〕接收间隔最小为200ms;
〔3〕查询响应时间在3s以内;
〔4〕查询功能支持至少10个并发用户;
〔5〕数据接收模块CPU利用率不超过40%;
〔6〕数据查询模块CPU利用率不超过20%。
【问题1】〔3分〕
简述负载压力测试的主要目的。
【问题2】〔6分〕
对该数据管理系统进展性能测试时,主要关注哪些性能指标?
【问题3】〔3分〕
该系统数据接收模块和数据查询模块的测试结果如表5-1、表5-2所示,请分别指出测
试结果是否满足性能需求并说明原因。
表5-1 数据接收模块测试结果
数据接收模块执行情况
处理时间〔s〕
交易执行成功率
接收间隔
〔平均值〕
预处理 存数据库 预处理 存数据库
1000ms 0.12 0.11 100% 100%
500ms 0.12 0.14 100% 100%
200ms 0.15 0.21 100% 80%
表5-1 数据接收模块测试结果〔续〕
资源指标 CPU占用率〔%〕 可用内存〔Mbytes〕
接收频率 〔平均值〕 〔平均值〕
1000ms 15.2 3128
500ms 25.5 3089
200ms 43.8 2980
表5-2 数据查询模块测试结果
响应时间〔s〕
并发用户数 交易执行成功率
〔平均值〕
5 1.6 100%
10 2.3 100%
15 3.8 100%
应用效劳器资源利用
资源指标 CPU占用率〔%〕 可用内存〔Mbytes〕
接收频率 〔平均值〕 〔平均值〕
5 5.3 2550
10 7.2 2283
15 10.2 1980
【问题4】〔3分〕
根据问题3的测试结果,试分析该系统的可能瓶颈。
答案:
【问题1】
〔1〕在真实环境下检测系统性能,评估系统性能以及效劳等级的满足情况
〔2〕预见系统负载压力承受力,在应用实际部署之前,评估系统性能
〔3〕分析系统瓶颈、优化系统
【问题2】
〔1〕并发用户数
〔2〕响应时间
〔3〕资源利用率
【问题3】
数据接收模块的测试结果不满足性能指标。当接收间隔为200ms时,存数据库交易成功
率为80%,不满足交易成功率100%的要求;当接收间隔为200ms时,CPU利用率为43.8%,
不满足不超过40%的要求。 .
数据查询模块的测试结果满足性能指标。要求至少支持10个并发用户,所以在15个并
发用户的时候响应时间超出3s不能算作不满足。
【问题4】
〔1〕数据接收模块软件没有采用适宜的并发/并行策略
〔2〕效劳器CPU性能缺乏
〔3〕数据库设计缺乏或者优化不够
解析:
【问题1】
本问题考察负载压力测试的测试目的。
负载压力测试的目的包括:在真实环境下检测系统性能,评估系统性能以及效劳等级的
满足情况;预见系统负载压力承受力,在应用实际部署之前,评估系统性能;分析系统瓶颈、
优化系统。
【问题2】
本问题考察性能测试的性能指标。性能测试指标包括并发用户数、响应时间、吞吐量、
资源利用率等。
该系统涉及的性能指标包括:并发用户数,响应时间和资源利用率。
【问题3】
本问题考察能否正确判断测试指标是否合理。
对数据接收模块来说,当接收频率为200ms时,存数据库交易成功率为80%,不满足交
易成功率100%的要求;当接收频率为200ms时,CPU利用率为43.8%,不满足不超过40%的
要求。因此数据接收模块的测试结果不满足性能指标。
对数据查询模块来说,要求至少支持10个并发用户的情况下响应时间在3秒以内,这
样在15个并发用户的时候响应时间超出3秒不能算作不满足。数据査询模块的测试结果满
足性能指标。
【问题4】
本问题考察工程师对系统瓶颈的初步判断。
根据问题3可以看出,当接收频率过高时,存数据库交易成功率和CPU利用率均不满足
需求。存数据库交易成功率问题的可能原因有两个,一是该模块程序没有采用适宜的并发/
并行策略,二是数据库本身的设计或者优化不够;而CPU利用率的问题那么是因为效劳器
CPU本身性能不够。
因此,可能瓶颈为:数据接收模块软件没有采用适宜的并发/并行策略;效劳器CPU性
能缺乏;数据库设计缺乏或者优化不够。
发布评论