Web测试是软件测试的一部分,是针对Web应用的一类测试。由于Web应用与用户直接相关,又通常需要承受长时间的大量操作,因此Web项目的功能和性能都必须经过可靠的验证。本专题将从Web功能测试、Web性能测试、Web安全性测试、Web兼容性测试四个方面带你全面认识Web测试!
一、web功能测试
1、链接测试
链接测试主要是页面之间的跳转,是web应用系统的特征之一。
主要关注点:
链接页面是否与需求一致,链接到指定界面
确认该链接的页面是否真实存在
确认系统是否存在独立的页面(若没有链接指向,能够通过正确的url地址访问)
2、表单测试
表单测试也可以叫做数据落地,当用户在web应用系统向服务器提交信息时,需要使用表单操作,比如:用户注册、登录、信息提交等,
主要关注点:
必须测试提交信息的完整性:默认值、必填项、输入验证、上传、表单操作
输入验证:特殊字符(null、代码、sql)、特殊文本(邮箱、电话、url)、字符串(长度、边界值、等价类)、正负数、小数位数等
上传测试:文件格式类型、大小等
表单操作:增删查改、数据完整性、正确性
常理性逻辑:日期、省份地区匹配、年限等是否恰当,一般有默认值,不要忘记也需要测试的
注:(●文本框测试点●密码框测试点●日期输入框测试点●电话号码输入框测试点●邮件地址测试点●必填字段测试点●单选框测试点●复选框测试点●下拉列表测试点●表单按钮(提交、取消、重置等)●搜索、排序、分页测试点●共用页面Session测试点)
3、Cookies测试
Cookies通常用来存储用户信息和用户在某应用系统的操作,当一个用户使用Cookies访问了某一个应用系统时,Web 服务器将发送关于用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登陆等信息。
如果Web 应用系统使用了Cookies ,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies 有什么影响等。
4、设计语言测试
Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。当在分布式环境中开发时,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java 、JavaScript 、ActiveX 、VBScript 或Perl等也要进行验证。
5、数据库测试
在Web 应用技术中,数据库起着重要的作用,数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在Web应用中,最常用的数据库类型是关系型数据库,可以使用SQL 对信息进行处理。
在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的,针对这两种情况,可分别进行测试。
6、输入框测试
web应用系统中,通常会有各种输入框输入的操作。根据平时的测试整理了如下:
验证输入输出信息一致性
输入框前面文字提示是否正确
对特殊字符的出来、识别:单双引号,逗号、分号等等,以及大小写状态,半角全角状态下的情况
输入框的大小、长度、边框等
不同字符的输入,以及字符组合情况的出来(数字+字母+字符等)
对空格、tab换行键的处理机制
密码输入框加密显示(\*)或者其他星号的转行,加密
输入框输入字符长度是否有限制
字符本身显示的验证,规格等
有些输入框需要加以限制,如输错,是否有提示?提示是否简单合理?
输入状态,某种情况下输入框不可编辑,当处于编辑状态,输入框的输入状态是否有变化?
输入类型:是否允许复制粘贴剪切等输入操作
关键字是否支持通配符,以及关键字的搜索能力,敏感字等情况
输入框输入空格的情况
比如登录注册,各项输入条件的判定:是否输入,输入是否正确等
给某账号赋予权限后,登录该账号,查看是否拥有已赋予的权限,以及权限设置是否正确(权限是否超过或者不足)
删除或修改已登录并且执行的账号权限,程序能否正确处理,验证重新注册系统变更登录身份后再登录,程序能否正确执行,之前所拥有的权限能否继续使用
在工作分配或者角色管理情况下,删除包含用户的工作组或者角色,程序能否正确处理
不同权限账号登录同一系统,权限范围是否正确
能否给信息为空,长用户名的账号添加权限
是否允许删除系统管理员或者修改管理员权限?删除或者修改后的实际情况
已登录的用户能否修改或删除自己他人的权限,信息
添加用户(有编号或者标识),不同用户标识的组合情况下,权限能否处理正确
修改用户权限或者信息后,对其他模块是否有影响
如果修改用户信息为和已存在的其他用户信息相同,能否修改成功?是否有对应提示?
修改某些设置,是否会对该账号权限相同或者高于/低于该账号的其他账号的权限造成影响
同一用户是否可以同时属于其他组,各个组的权限能否交叉?
二、web可用性测试
1、界面测试
界面测试就是我们常说的用户体验,浏览界面是否感觉舒服、系统整体风格、设计排版等等。
2、 导航测试
站在用户的角度上去考虑,当用户访问一个系统时,需要做什么操作?大多数用户都是目的驱动的,当他访问一个系统时,会很快浏览系统,
找不到自己需要的信息,则会离开系统。很少人会去了解系统结构,因此导航测试变得尤为重要。
判断应用是否易于导航、直观?(从页面之间的跳转、按钮、对话框、列表、窗口、是否系统主页访问等因素去考虑)
页面结构、导航、菜单、风格、内容简单是否一致,确保用户凭直觉或者简单的判断就能找到需要的信息
系统内是否需要地图、搜索引擎等其他操作
3、图形测试
图形测试也可以理解为ui测试,其中包括:图片、动画、边框、字体、颜色、背景、按钮等
页面整体风格是否与系统的用途一致
背景颜色、字体,搭配是否合理
图片要有明确的用途,图片尺寸、大小,质量(一般是GIF、JPG、PNG格式,在不影响质量的情况下能使图片大小压缩到30k一下)
图形链接:链接是否有效,链接属性正确(新窗口还是当前页面打开)
4、内容测试
内容测试:检查web系统提供信息的正确性、准确性和相关性。
文字表达是否恰当、是否有错别字
字体、大小、颜色、对齐方式、风格
页面元素排版:导航、表单、图形、控件等位置、大小排版
页面结构、背景颜色、字体颜色是否合理搭配
5、容器测试
DIV和表格在页面布局上作为一种容器,主要测试点:
作为控件,检查其是否设置正确,宽度是否合理,文字内容是否合理显示
作为布局方式,需要考虑浏览器窗口尺寸变化、web页面内容动态增加或者删除对web界面的影响。
三、web兼容性测试
1、系统兼容测试
市面上有很多的操作系统:windows、Linux、UNIX、Macintosh等;用户使用哪个取决于用户,因此,系统兼容测试就很有必要了。
2、浏览器兼容测试
浏览器是web客户端最核心的组件,不同浏览器,对HTML、css、javascript的规格都有不同的支持。开发所采用的web前端框架和结构风格在不同浏览器中不同的显示甚至不显示,不同的浏览器对安全想的设置也是不同的。测试浏览器兼容性:创建一个兼容性矩阵,来测试不同厂商不同版本浏览器兼容。例如:ie:一般使用F12切换来测试IE8~11的兼容。一般问题是IE8及IE9会对一些JS、控件等有兼容问题。
注意:
●界面:在不同的浏览器中,整体界面可能会错位
●控件:在不同的浏览器中,某些控件可能会无法使用,如文本框输入、日期选择框等
●图片:在不同的浏览器中,某些图片的背景、位置可能会偏差很大
●动画:在不同的浏览器中,某些gif动画或flash动画,可能会无法显示
●响应时间:在不同的浏览器中,某些功能可能加载时间过长,如某些地图界面
●超链接:在不同的浏览器中,某些超链接可能会出现点不动问题
兼容性测试一般用真实的浏览器比较好(工具作为辅助),即使采用工具进行测试,也必须要用真实的浏览器进行复测
需要覆盖主流平台和主流浏览器,测试页面不仅包含网址首页,还需要包含系统的主流程和主界面。发现BUG需要记录浏览器类型、版本,以及操作系统,位置,准确定位bug产生的原因等。
四、性能测试
1、连接速度测试
用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。
另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
2、负载测试
负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面的请求?
3、压力测试
负载测试应该安排在Web系统发布以后,在实际的网络环境中进行测试。因为一个企业内部员工,特别是项目组人员总是有限的,而一个Web系统能同时处理的请求数量将远远超出这个限度,所以,只有放在Internet上,接受负载测试,其结果才是正确可信的。
进行压力测试是指实际破坏一个Web应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。
压力测试的区域包括表单、登陆和其他信息传输页面等。
五、安全性测试
一个系统的安全验证点包括上传功能、注册功能/登陆功能、验证码功能、密码、敏感信息泄露、越权测试、错误信息、session等。
Web 应用系统的安全性测试区域主要有:
(1 )现在的Web应用系统基本采用先注册,后登陆的方式。因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。
(2 )Web 应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。
(3 )为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。
(4 )当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。
(5)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被***利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。
(6)sql注入,例如登录注册信息的输入框每输入相关的sql代码,观察能否登录成功。xxs跨域攻击,在url地址输入js代码,是否能作出响应
*测试点注意*
一、页面链接检查:
测试每一个链接是否都有对应的页面,并且页面之前可以正确切换。
二、相关性检查:
功能相关性:删除/增加一项会不会对其他项产生影响,如产品影响,这些影响是否正确(常见的错误是:增加某个数据记录后,如果该记录某个字段值内容过长,可能在查询的时候让数据例表变形)
数据相关性:下拉列表默认值检查(如果某个列表的数据项依赖于其他模块中的数据,同样需要检查,比如:某个数据如果被禁用了,可能在引用该数据项的列表中不可见)
检查“页面元素”是否显示正常
检查“按钮”功能是否实现(如:重置 按钮不能起到清空输入的作用)
输入项中类型的检查:在指定输入类型的地方输入其他类型(如 在“电话号码”一列中输入字符型,系统是否正确给予提示)
边界值检查:规定某个输入项中最多输入50个字符,测试时,要测试输入50及>50个字符的情况
检查符号检查:输入的内容包括各种标点符号,特别是空格,各种引号,回车,看系统处理是否正确(常见错误是:系统对空格的处理,在增加的时候,将空格作为一个字符,而在查询的时候空格被屏蔽,导致无法查询到增加的记录)
特殊字符检查:输入特殊符号,如\@、&、%、#等,系统处理是否正确
对输入中文字符的检查:有些系统的某些地方,可能对英文的处理OK,但对中文字符则出现乱码之类的
检查信息的完整性:如更新某个记录时,是否将更新的所有信息都更新过来,还是只更新了其中一部分
信息重复:如名称、ID、空格、是否区别大小写等,系统是否给予正确提示(修改或新建)
检查删除功能:单条记录删除;多条记录同时删除;未选择任何记录,点删除或delete
必填项检查:对于必填项的时候要考虑不填或全空格,验证其是否有做必填项校验
上传文件的检查:文件格式是否正确;文件中某些字段是否允许为空;不允许为空的字段为空,系统是否校验不通过;文件中是否允许为空的记录;文件是否对记录中字段的长度、是否重复作校验;
快捷键检查:是否支持常用快捷键,如ctrl+c、ctrl+v、shift+选择、ctrl+选择、backspace等,对于不允许手工输入信息的字段,是否有做限制。
页面单位检查:页面中显示的单位是否正确,如获取某数据库中值为分,到页面显示时未做转换,页面显示的单位为:元,其他如GPRS流量、数量等单位
文档的测试:文档二义性的确认、用户手册等
密码检查:一些系统的加密方法采用对字符的asccii码移位的方式,处理密码加密相对较为简单,且安全较高,对于局域网系统来说,此种方式完全可以起到加密的作用,但同时,会造成一些问题,即>128的asccii对应的字符在解密时无法解析,尝试使用”uvwxyz”等一些码值较大的字符作为密码,同时,密码尽可能的长,如17位密码,造成加密后的密码无法解析
用户检查:任何一个系统,都有各类不同的用户,同样具有一个或多个管理员用户,检查各个管理员之间是否可以相互管理,编辑,删除管理员用户。同时,对于一般用户,尝试删除,并重建同名的用户,检查该用户其他信息是否重现。同样,提供注销功能的系统,些用户再次注册时,是否作为一个新的用户。而且还要检查该用户的有效日期,过了有效日期的用户是不能登录系统的。(可能出现的错误是:用户管理权限为非超级管理员,能够修改超级管理员的权限)
字符串长度检查:输入超出需求规格所说明的字符串长度的内容,查看系统是否检查字符串的长度。
搜索检查:有搜索功能的地方输入系统存在和不存在的内容,看搜索结果是否正确。如果可以输入多个搜索条件,可以同时添加合理和不合理的条件,看系统处理是否正确,搜索的时候同样要注意特殊字符,某些系统会在输入特殊字符的时候,会将系统中所有的信息都搜索到。
输入信息位置:注意在光标停留的地方输入信息时,光标和所输入的信息会否跳到别的地方。