Spider概念在测试中的应用

发表于:2009-10-27 14:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:orange_10    来源:51Testing软件测试博客

  Spider,其实就是抓取网页的爬虫,大部分搜索引擎都会使用Spider来做数据源的收集。这真是一个很好的设计,那么好的设计我们是不是也能拿来在测试中使用一下呢。

  其实,目前还是有很多检查链接有效性的工具,诸如LinkBot等都是采用了Spider的概念来达到测试的目的的。

  那么我们就将这个思想再扩展一下。在互联网网的应用中,页面的数量一向是超级繁多的,我们在平时的测试中也很难做到各个页面都去检查,特别是一些小逻辑或 UI的改动,我们一般是利用等价类的方法论来做一些抽样的测试,但是这样的测试其实是不充分的,碍于成本和产出的失比,我们不会去测试过多的等价类。

  但是利用Spider的概念就可以很好的解决这种GET的问题了(当然POST的测试解决起来比较困难,还是建议采用“半自动化”),而且Spider可以进行多种行为控制,也是一种很灵活的应用。对于结果的分析,最简单的无非对于HTTP.STATUS的检查,那样很容易发现一些由于数据或者配置造成的异常。如果更进阶一步,可以Parse Spider获取到的Stream以精确地检查结果。

  首先,我们要统一一个概念,被测试的页面是由HTML、CSS和JS所组成的。而Spider的应用,是可以用来快速的进行HTML的检查和遍历,但是对于CSS和JS就有其局限性了。

  通过Spider其实很容易的获取到了所需要测试的页面的HTML,然后采用正则表达式的方式去获取所需的页面对象。因为HTML是标准的标签格式的,所以,获取起来也是比较方便的,然后根据标签的属性,比如ID,Class可以对对象进行区分,这就有些类似于一般的自动化测试对象,对GUI的SPY了。既然有了对象,然后对对象的内容或属性进行检查也是很方便的。

  这样做的好处是将HTML整个作为文本来处理,操作简单。

  以下是C#的示例,以获取页面上所有的链接对象:

     //获取页面HTML并保存到Page

     Regex regex = new Regex("<a[^>]+>");
     MatchCollection mc = regex.Matches(page);
   
     //mc中包含了结果对象,可以分别进行处理

  利用同样的方式,我们还可以获取页面上Div、Button、Text的对象,并且对其内容进行进一步的检查

  有人会说,看上去和QTP,Selenium等有异曲同工之处,而且,似乎要去搭建这样一个Framework还是比较麻烦的,为什么要这么做呢。其实这里有一个很大的优点是其他自动化工具不能做到的,即Spider可以多线程进行工作。我们是不是经常会碰到QTP,Selenium工作时,占用了当前进程,以致我们只能等待,并且一旦测试的内容海量,我们还得等很长的时间呢?Spider多线程的优势就在这里了。

  在下认为,对于WEB的测试,利用Spider的方式,能够很大的提高测试效率的。

版权声明:本文出自orange_10的51Testing软件测试博客:http://www.51testing.com/?236069

原创作品,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明,否则将追究法律责任。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号