第一类:1234565432A或1234565432或123456543210,2017(说明:针对手机号不合法字符输入、手机号长度少于11位、手机号长度大于11位);
第二类:12345654321,2017(说明:针对合法的手机号码和正确的验证码):
第三类:12345654321,201x或201或20111(说明:针对合法的手机号码和错误的验证码);
第四类:体现安全性的测试输入:其中任意输入域包含任何HTML,如:<HTML>,或任何脚本如:<SCRIPT>,或SQL功能符号,如:--、OR '1'='1等,以测试XSS脚本和使SQL改变为不符合设计意图的用例。
[解析] 本题考查Web应用测试相关知识及应用。Web应用测试除了类似传统软件系统测试的性能测试、压力测试等之外,还需要测试页面、链接、浏览器、表单和可用性等多个方面,由于Web应用部署访问的大众化特点,对安全性尤其要重视。
此类题目要求考生阅读题目对现实问题的描述,根据对问题的分析,回答测试有关的问题。本题目说明和问题中,除了功能背景之外,给出了响应时间、HTML5、性能指数的概念、兼容性等技术点。
【问题1】
本问题考查Web应用性能性测试的内容,题目背景是通用共享单车系统,属于用户量大、交易密集型的应用平台,用户满意是一个系统成功与否的关键。题目还涉及对交易的时间要求,所以需要采用测试工具来测试系统性能。
针对用户功能,本系统设定T=2秒,记录响应时间,统计样本数量,2秒以下记录数3000,2~8秒记录数1000,大于8秒500。Apdex(应用性能指数)对用户使用共享单车的满意度进行量化,系统需要满足Apdex指数为0.90以上。在上述条件下计算Apdex指数,判定是否达到给定的要求。
Apdex(Application Performance Index,应用性能指数)是对用户满意度进行度量的指标,是由Apdex联盟(一个由众多网络分析技术公司和测量工业组成的联盟组织)联合起来开发的。用一句话来概括,Apdex是用户对应用性能满意度的量化值。它提供了一个统一的测量和报告用户体验的方法,第一次把最终用户的体验和应用性能联系在了一起。Web应用的响应时间,决定了用户的满意程度。
Apdex量化时,对应用户满意度分为三个区间,通过响应时间数值T来划分,T值代表着用户对应用性能满意的响应时间界限或者说是“门槛”(Threshold)。
针对用户请求的响应时间,Apdex的用户满意度区间如下:
满意:(0,T]让用户感到很愉快;
容忍:(T,4T]慢了一点,但还可以接受,继续这一应用过程;
失望:大于4T,太慢了,受不了了,用户决定放弃这个应用。
Apdex的计算如下:
Apdex=(小于T的样本数+T~4T的样本数/2)/总样本数
在题目所给的测试数据条件下,T=2,小于T的样本数为3000,(T~4T]的样本数为1000,(4T~)的样本数为500,用这些数据对Apdex加以计算:
Apdex指数=(满意:小于T的样本数+容忍:T~4T的样本数/2)/总样本数
=(3000+1000/2)/4500
=0.78
0.78远没达到0.90,所以该系统的用户满意度没有达到要求。
【问题2】
本问题考查Web应用兼容性测试的内容。Web应用的兼容性是测试重要方面,包括:浏览器兼容性、操作系统平台兼容性、移动浏览、打印选项等。本题给出系统前端采用HTML5加以实现,需要通过不同移动设备、操作系统和浏览器进行访问,因此需要设计兼容性测试矩阵,针对不同移动设备进行操作系统平台和浏览器的兼容性测试。包括移动操作系统Windows Phone、iOS和Android等,与其上可以使用的浏览器移动版IE、UCWEB、Google Chrome、Android browser和Safari等进行结合,构建兼容性二维矩阵,行列分别表示操作系统平台和浏览器。测试时分别在单元格记录操作系统和浏览器组合的测试情况,如下表所示。
【问题3】
本问题考查Web应用功能测试的测试用例设计。针对本系统中的用户用手机号码获取验证码进行注册的功能设计测试用例。测试的输入包括不同情况、安全性方面的SQL注入和XSS跨站攻击等。题目假设合法手机号码为11位数字,验证码为4位数字。对输入不同情况,可以采用等价类划分或边界值分析发等设计测试输入。
等价类划分法是把所有可能的输入数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。其中,等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,它们具有等价特性,即每一类的代表性数据在测试中的作用都等价于这一类中的其他数据。这样,对于表征该类的数据输入将能代表整个子集合的输入。边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。边界值分析使用与等价类划分法相同的划分,只是边界值分析假定错误更多地存在于划分的边界上,因此在等价类的边界上以及两侧的情况设计测试用例。
根据等价类划分原则,测试输入应该考虑手机号码和验证码是否合法的不同组合。
第一类:针对手机号码不合法、验证码合法的情况。输入针对手机号不合法字符(非数字)输入、手机号长度少于11位、手机号长度大于11位,与合法四位数字组合。
第二类:针对合法的手机号码和正确的验证码,长度为11位的全数字手机号与四位合法数字验证码的组合。
第三类:针对合法的手机号码和错误的验证码。输入长度为11为的全数字手机号与思维非法的验证码,即验证码长度大于4、小于4,或包含非法字符(非数字)。
第四类:体现安全性的测试输入,即输入的内容中输入某些功能符号可能会传到后台引起安全问题。
Web应用系统在某些情况下,接收页面上传的内容,并作为新页面的内容。例如,在本系统中需要提交手机号码、验证码,在提交之后,需要在系统存储中验证相关的内容,个人信息中还需要显示手机号码。
在将输入内容作为新页面中内容的情况下,如果用户输入如下带有HTML标记的内容,如:
<Script>alert("Hello World!");</Script>
在提交之后,标记将提交到服务器上,并在有用户访问新的页面中显示,此时所看到的网页中包含以上标记的部分元素可能是:
<div>
<Script>alert("Hello World!");</Script>
</div>
从客户的角度看,该网页中就出现了弹出窗口提示,显示Hello World!,如下图所示:
即:用户输入的内容已经被浏览器成功执行。
而如果这类代码可以执行,就存在被真正恶意攻击者攻击的可能,而且可能造成各类安全问题。所以网站提交代码中的任何脚本、页面功能符号都不应该被直接接受使其作为功能符号在后续使用。所以测试时需要考虑设计包含HTML标记符、脚本等测试输入,如<HTML>、<script>、<b>等功能符号。
对于Web应用系统采用某种数据库,接收用户从Web页面中输入,通过将输入作为与数据库相关操作的一部分。如果将用户输入的数据和设计好的SQL拼接后提交给数据库执行,在有些情况下,就可能存在用户输入的数据并非设计的正确格式,就给了恶意用户提供了破坏的机会,即SQL注入。恶意用户输入不期望的数据,拼接后提交给数据库执行,造成可能使用其他用户身份、查看其他用户的私密信息,还可能修改数据库的结构,甚至是删除应用的数据库表等严重后果。因此,在测试Web应用时,需要认真仔细设计测试输入,进行认真严格的测试,以保证如果存在SQL注入及早发现。
本系统测试时,设计测试如为:对任一字段设计包含SQL功能符号,如包含'OR、'--、'OR'1'='1'等,检查结果是否造成注入问题。