本文章转载于搜狗测试
选择题
下列哪些产品的测试属于web测试?
A. 12306网站B. 搜狗输入法C. 搜狗浏览器D. 搜狗壁纸E. ie1.0
我的观点
要回答这道问题,首先要明确什么是web测试?
两年前的我会这样回答:网站的测试就是web测试;
而现在的我会这样回答:互联网产品的测试是web测试。
那什么是互联网产品呢?
互联网产品经理?肯定不是 :-D
我把互联网产品定义为有网络请求的软件(ps:这个理解可能不准确),按照我的理解,那开篇的这道题就有答案了,A一定是,B、C、D也是。
当代的互联网产品,在优化用户体验的路上越走越远,这些产品会通过发送网络请求的方式,在降低程序自身大小的同时提高用户体验。
ie1.0:为什么没有我?
我:个人认为,作为ie的第一个版本,应该只是个本地的脚本解释器吧(可能是对ie有偏见导致我这么想的。。。希望有了解的同学可以为ie正名)。
回到正题:web测试的关注点有哪些呢?
我们做为一名测试工程师,对功能、性能、兼容性、UI、安全、接口,这些名词应该都不陌生,而每个人对这些名词都有各自的理解。
下面先来说说我总结的功能测试关注点:
什么是功能测试?
问:这个产品要实现的功能是哪来的?
答:产品经理在需求文档中定义的。
问:那我们怎么进行功能测试呢?
答:根据需求文档写用例,然后执行用例。
说起来功能测试就这么简单,那为什么还会有犯迷糊的同学呢?因为功能测试难就难在设计用例的方法和执行用例的方法上。关于设计用例和执行用例的方法,大家可以翻阅之前关于黑盒测试的文章,会有详细的介绍,而今天我们说说页面功能测试的关注点:
链接
表单
页面写法
链接
一个网站是由千万个页面组成的,那么连接他们的就是“链接”,所以链接就是功能测试中的一个关注点。链接有很多种写法来实现:直接写个连接、js跳转、服务器跳转等等。一般的门户网站,例如搜狐主页,不用想就知道,一个页面上有成千上万个链接。如果一个一个点击去验证,那效率就太低了。所以测试这些链接,我们一定要用工具。这里介绍一个扫死链的工具,名叫“xenu”,他能快速的查出一个页面中的死链,而且可以检查多级链接(但是一定要记得设置扫描级别,不然它会像爬虫一样扫上百层的链接,这样会导致网络瘫痪的)。
表单
表单是web页面里最容易出问题的地方之一,因为他有很多危险的地方:post表单数据的时候、操作数据库的时候、接收返回值的时候;表单数据的格式是我们每次执行测试时都会验证的地方。对一个文本框设计用例,相信大家都有一箩筐的方法,边界值、等价类划分、多文本框时正交实验法等等,这里就不赘述了。我想说的是一些容易疏忽的地方,例如:注入js脚本、注入sql脚本、输入单独的特殊符号(例如:一个双引号,一个点)、输入一个空格,一个大括号等等,这些都是要特别注意的;我们的前端开发一般会通过正则来过滤这些特殊符号,但是可能会有一些遗漏,而一旦这些异常字符或者字符串顺利通过前端的过滤,进入后台,而后台同样没有做类似的处理,那后果是很严重的。12306官网曾经爆出的用户数据泄露,就是sql注入导致的,chrome浏览器的第一个bug,地址栏输入一个“.”,导致崩溃,这些都是活生生的例子,所以作为测试,一定不能放过每一个小符号。
页面写法
怎样才能说一个前端开发是个高手?
页面代码写的易读、注释清晰、代码复用度高,这是首先能想到的。再深入一点:页面符合w3c标准,静态文件引用合理,页面加载速度快,再高手一点呢?严格遵守雅虎34条军规---这个应该很少有开发能做到吧 。
那对于我们测试要关注哪些地方呢?
与开发确认页面里每一个引用的文件都是有用的,因为一个没用的引用会影响页面的加载速度;
header的第一行一定要是声明字符集的标签,如果不是可能会导致在声明字符集之前加载的页面元素乱码(当代浏览器会优化页面的加载顺序,优先加载字符集声明,但是优良的传统还是要保持下去);
JS最好放到页面的最后,一些需要先加载的js最好要抽离出来放到header里,这样能保证页面更快的展现出来;
js和css在上线前要做加密。查看一下搜狗主页的源码,你会发现一堆密密麻麻的代码,这就是加密过的,好处是减小页面的体积更利于网络传输、并且可以提高我们代码的阅读成本;
页面的js和css尽量外部调用。好处是页面的静态文件理论上都是可缓存的,外部调用提高页面的相应速度的同时还能减小服务器的压力,而且比起那些都写在一起的代码更易维护;
可能有人会说,这些都是开发要考虑的事儿啊?但是作为一名优秀的测试工程师,要做的不仅仅是发现Bug,而是要给产品提出合理化的改进建议;给开发提出效率更高、成本更低的实现方案;共同持续优化我们的产品;