月薪过万的入门级测试新手解读Web项目测试(测试点、兼容性及防御规则) | 当前位置: 首页> 学习中心> 测试知识> 详情 |
大家好,作为一个入门级的测试新手,我是怎样让自己轻松完成Web项目测试的呢?一起来看下我的工作日记~
No.1 测试点解析
其实大家都不陌生,Web项目测内容主要包括这几块:链接测试、表单测试、Cookies测试、设计语言测试、数据库测试。
那么,想要做好这部分内容,我们首先需要知道每个测试环节的测试点和测试目的。我认为,这部分需要知道以下内容:
1)链接测试的测试点及测试目的
目的:确保Web应用功能能够成功实现。
测试点:
A 链接是否能正确跳转到目标页面;
B 链接的页面是否存在;
C 测试是否存在孤立页面。即只有通过特定URL才能访问到的地址。
2)表单测试的测试点
A 每个字段的验证;
B 字段的缺省值;
C 表单中的输入;
D 提交操作的完整性。
3)图形测试的测试点
A 颜色饱和度和对比度是否合适;
B 需要突出的链接的颜色是否容易识别;
C 是否正确加载所有的图像。
4)页面设计的测试点
A 页面的一致性如何;
B 在每个页面上是否设计友好的用户界面和直观的导航系统;
C 是否考虑多种浏览器的需要;
D 是否建立了页面文件的命名体系;
E 是否充分考虑了合适的页面布局技术,如层叠样式表、表格和帧结构等。
No.2 Web兼容性测试
主要包括:平台(操作系统)兼容性、浏览器兼容、移动终端浏览测试、打印测试等。具体操作方法就不一一赘述了,想了解的小伙伴可以留意我之后的分享。
No.3 Web应用安全性测试
Web应用安全体系测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密、参数操作、异常管理、审核和日志记录等多个方面进行。
对通过SSL访问的系统,设计测试用例以解决Web应用的安全性问题。
1)SQL注入测试
例如:判断 "SELECT * FROM Users WHERE User_Name = ' " + strUserName + " ' AND Password = ' " + strPassword + " '; "
①如果输入strUserName:'Zhang'--,strPassword:San 则SQL变为:
SELECT * FROM Users WHERE User_Name='Zhang'-- AND Password='San';
“--”是SQL中注释符号,其后的内容为注释。
②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';
因为'a'='a'条件总是成了,因此,SQL执行结果包括用户表中所有行。
③strUserName:Zhang';DROP table users_details;'-- 则SQL变为:
SELECT * FROM Users WHERE User_Name='Zhang'; DROP table users_details; '--' AND Password='San';
这就造成数据库中users_details表被永久删除。
防止SQL注入的方法主要?拼接SQL之前对特殊符号进行转义,使其不作为SQL语句的功能符号。
2)测试SSL
某链接URL的https://换成http://;
3)内容访问
https://domain/foo/bar/content.doc(域名和路径为应用的域名和路径)
4)内部URL拷贝
将登录后的某URL拷贝出来,关闭浏览器并重启后将URL粘贴在地址栏访问内部内容。
No.4 一些安全问题的解决措施
1)XSS攻击
跨站点脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。比如这些代码包括HTML代码和客户端脚本。
A. < IMG SRC="javascript:alert('XSS攻击');" >;
B. < IMG SRC="javascrip t:alert(‘XSS攻击’);“ >(说明:在javascript中的每个字符间加入回车换行符)
C. <script>alert("xss")</script>
2)防御XSS攻击方法
A 验证所有输入数据,有效检测攻击;
B 对所有输出数据进行适当的编码,以防止任何已成功注入的脚本在浏览器端运行。
3)防御规则
A 不要在允许位置插入不可信数据;
B 在向HTML元素内容插入不可信数据前对HTML解码;
C 在向HTML常见属性插入不可信数据前进行属性解码;
D 在向HTML JavaScript DATA Values插入不可信数据前,进行JavaScript解码;
E 在向HTML样式属性插入不可信数据前,进行CSS解码;
F 在向HTML URL属性插入不可信数据前,进行URL解码。