阅读下列说明,回答问题l至问题4,将解答填入答题纸的对应栏内。【说明】某公司开发基于Web的招聘系统,采用JavaEE系统架构。系统提供用户注册、职位设置、接受应聘者的申请和评估录取应聘者等功能。接受申请主要是验证应聘者提交的姓名、地址、照片、简历和预申请职位等信息的完整性,并发送给应聘者相关通知;评估应聘者主要是根据部门经理设置所需职位,对已经受理的申请进行资格审查’发送给应聘者录用与否的相关决策信息。
系统要支持:(1)在50个用户并发时,主要功能的处理能力至少要达到5个请求/秒,平均数据量12KB/请求;(2)用户可以通过PC、移动设备上的不同操作系统和浏览器进行访问。
【问题1】(4分)简要叙述招聘系统链接测试的主要测试内容。
【问题2】(5分)简要叙述为了达到系统要支持的(2),需要进行哪些兼容性测试,并设计一个兼容性测试矩阵实例。
【问题3】(4分)在满足系统要支持的(1)时,计算系统的通信吞吐量。
【问题4】(7分)系统实现时,对用户的登录判断所用的动态SQL语句如下:
该SQL语句是否能防止SQL注入?请设计一个测试用例,以测试SQL注入,并说明防止SQL注入的方法。
参考答案:
【问题1】招聘系统的链接测试主要测试如下3个方面:1)每个链接是否能够链接到目标页面2)被链接的页面是否存在3)是否存在孤立页面
【问题2】招聘系统的兼容性测试:1)平台兼容性和浏览器兼容性。2)兼容性测试矩阵示例如下:
【问题3】通信吞吐量:P=N(并发用户的数量=50)×T(每单位时间的在线事务数量=5)×D(事务服务器每次处理的数据负载=12KB/s)=50×5×12=3000KB/s。
【问题4】该SQL语句不安全,容易造成SQL注入。设计测试用例:
【注:设计类似如下用例的一个即可,其中应包含SQL功能符号,使得该SQL语句变得不符合设计意图即可,例如,包含了“--”或“’,DROP......”等】
参考用例1:【注:上述用例将使得该SQL语句变为:
】
参考用例2:
】【注:上述用例将使得该SQL语句变为:
】
防止SQL注入的方法主要有:拼接SQL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。
解析:
本题考查Web应用测试相关内容。Web应用测试既要关注类似传统软件系统测试的多个方面,如性能测试、压力测试等,还需要测试链接、浏览器、安全等多个方面。
【问题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、GoogleChrome、Safari等,因此需要针对不同设备,进行相应的操作系统平台和浏览器的兼容性测试。兼容性测试矩阵是进行兼容性测试的常用工具,将操作系统平台和浏览器为矩阵的两维,对相应组合进行测试。
【问题3】本问题考查Web应用系统的性能指标计算。
通信吞吐量,设定如下指标参数:N:并发用户的数量;T:每单位时间的在线事务数量D:事务服务器每次处理的数据负载P:系统的通信吞吐量有如下计算公式:P=N×T×D本题中系统要求支持的(1)中给出50个用户并发,即N=50;主要功能的处理能力至少要达到5个请求/秒,即T=5;平均数据量12KB/请求,即D=12KB/s。
则:通信吞吐量P=50×5×12=3000KB/s
【问题4】本问题考查Web应用安全性方面。
SQL注入是Web应用安全性测试的重要方面。许多Web应用系统采用某种数据库,接收用户从Web页面中的输入,完成展示相关存储的数据(如,检查用户登录信息)、将输入数据存储到数据库(如,用户输入表单中数据域并点击提交后,系统将用户名密码等注册信息存入数据库)等操作。
在有些情况下,将用户输入的数据和设计好的SQL框架拼接后提交给数据库执行,就可能存在用户输入的数据并非设计的正确格式,就给恶意用户提供了破坏的机会,即SQL注入。
恶意用户输入不期望的数据,拼接后提交给数据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。
因此需要在测试阶段进行认真严格的测试。
本系统实现时,对用户的登录判断所用的动态SQL语句是:
采用拼接字符串方式,无法防止SQL注入。例如strUserName:'Zhang'--,strPassword:San,则该SQL变为:
“--”是SQL中注释符号,其后的内容为注释,这样上述语句中“--”之后的内容变为注释,只要用户表中有用户名为Zhang,系统就允许用户以Zhang的身份登录,并以Zhang的身份做任何可做的操作。再比如strUserName:Zhang'or'a'='a,strPassword:San'or'a'='a,则该SQL变为:
因为'a'='a'条件总是成立,因此,SQL执行结果包括用户表中所有行,系统就允许以第一行的身份进行登录。更为严重的情况下,如果用户输入strUserName:Zhartg’;DROPtableusers_details;’--,以及任何字符串作为strPassword,该SQL就变为:
这就造成数据库中usersdetails表被永久删除。防止SQL注入的方法主要有:拼接SQL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。
SQL注入在使用SSL的应用中仍然存在,甚至是防火墙也无法防止SQL注入。因此,在测试Web应用时,需要认真仔细设计测试用例,采用Web漏洞扫描工具等进行检查,以保证不存在SQL注入机会。