`

Web测试心得

 
阅读更多

此文原创,转载请注明出处.

概论

文章中提到的东西都是工作中实践过的经验,并不保证全面性.

Web测试一般包含如下内容:

  1. 功能测试
  2. 性能测试
  3. 用户界面测试
  4. 兼容性测试
  5. 安全性测试

其实这只是大概的区分,各种不同的类别的测试之间其实是有很多交集的.比如:

  • 当网站出现性能问题的时候,同时网站的某些功能可能会失效,比如页面打开失败,表单提交失败等等
  • 当网站在一个它不兼容的浏览器下运行的时候,也会导致功能失效,用户界面出现混乱,甚至性能问题

以上的五项内容中的每一项都可以是一个大的主题做深入的分析.

 

另外,对于所有的web测试人员来说,学会使用Firebug以及Fiddler这样的抓包工具绝对是必不可少的。这些工具的使用应该始终贯穿的测试工作之中

 

一.功能测试

对于一般被测试的软件,我可以用"树"来比喻一个软件.一颗树有主干,分支和叶子.主干和分支代表软件的流程,叶子代表软件的局部步骤(页面). 我们测试软件的时候既要保证软件的流程正确,也要保证组成流程的各个分支步骤页面的正确性.

拿淘宝来购物来说,我们可以把登录页面,购物车页面之类的当成是叶子,完成一个购物流程,当成一个主干或者分支. 软件就是由这很多的叶子以及相对少一些的分支组成.

经典的教科书上往往会介绍如下功能测试测试用例的设计方法:

  • 边界值划分
  • 等价类
  • 正交表
  • 决策表

当我们测试单个页面的时候,往往会用到这些方法.但是这些方法只是测试到了软件的局部.

除此之外,我们还要考虑被测试软件的工作流程,保证所有的提供给用户的工作流程都可以跑通,这个时候,探索式测试可以派上用场.有时候,我们还需要化流程图来辅助测试.

 关于探索式测试,详见探索式测试读书笔记一文

 

另外,还有更重要的几点:

  1. 每当打开页面或者提交数据的时候,多打开Fiddler或者Firebug看看到底发送了哪些http请求,以及关键请求的http response是什么.当发现功能异常之后,根据我们用Fiddler看到的数据,往往可以自己判断问题到底是出在前台的JS还是后台service. 关于Fiddler,详见Fiddler小结一文
  2. 有空多看看系统的日志,哪里能找到一些隐藏在页面之外的异常
  3. 当我们在页面上完成了一些功能之后,要彻底明白系统背后(数据库)到底完成了什么东西,我们提交的数据到底被存储到哪里去了

 综上所述,我们做功能测试的总体思路是从 点(树叶)->面(主干,分支)->后台(根)

 

二.性能测试

性能测试主要要从前端和后台两个角度去理解,我们可以首先使用Fiddler去大概判断网站的性能问题是出在前台还是后台.

如果Http请求的大部分时间是花在html,css,js之类的静态资源加载上,那么基本是前台性能有问题.如果某个后台的service特别费时,那么后台必定存在性能问题

 

前台性能

除了用Fiddler看性能外,我们可以使用Yahoo的Firefox YSlow插件去检测前端的性能.此外,关于前端性能具体的优化策略,可以参阅<High Performance Web Sites>,其中主要涉及到http协议和浏览器缓存机制

 详见Web前端优化14条原则一文

后台性能

对于大部分测试工程师来说是很难直接去优化后台性能的,但是依然能去发现一些有意义的线索

  • 用Fiddler去查看http请求,如果某个请求特别耗时,则可能存在性能问题
  • 后台代码设计到SQL查询的时候,往往测试员也是有基础去测试那些SQL的查询时间和执行时间,如果因为数据量大而导致查询太慢的话,可以建议使用数据库的索引
  • 后台的cache机制: 我们的项目大量的使用了后台的cache机制

总之,做性能测试绝对不是简单地直接拿Loadrunner或者Jmeter去录制一下脚本,然后运行,分析结果.这一切的前提应该是充分了解了被测试系统的前台跟后台的性能

 

三.用户界面测试

这点关注不多,主要如下:

  • 字体大小颜色(主要通过修改css文件)
  • 弹窗的风格最好保持统一

四,兼容性测试

主要考虑如下几个因素组合:

  • 不同的操作系统
  • 不同的浏览器
  • 浏览器的不同版本
  • 显示器的不同分辨率
  • 不同的浏览设备(PC,手机,平板)

五.安全性测试

安全性测试主要知道有如下几点:

  1. SQL注入:后台使用Preparedstatement去处理SQL
  2. XSS攻击:这个问题非常复杂.学习中..

做为一个测试工程师,我觉得应该记住如下3点:

  • 前台的JS验证是不可靠的
  • 用户进行任何输入都是有可能的
  • Web本身似乎也是不安全的:无法解释更多....

接下去举一些实际的例子:

隐藏的按钮

当我们用Firebug看页面的HTML的时候,往往能找到一些隐藏的内容,比如某个元素的 class="gradient hide",或者类似的东西.当我们直接修改掉这些属性之后,这些隐藏的东西就会在页面上暴露出来,对系统的安全造成隐患.

另外如果有某些值也可能会存储在隐藏域中

Disabled按钮

与隐藏的按钮类似,页面上经常有些可见但是灰调的按钮,也可以尝试改变他的属性,让它变成可以触发的,或许会有所发现

不该被访问的URL

如果某个URL不该被某些人访问,一定要在权限上去控制.仅仅去掉某个链接/按钮是不够的

后台Service

如果网站后台的Service能被捕捉到,而且又没有权限控制,那将是灾难性的

 

1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics