将测试进行到底

发布新日志

  • [转]教你如何学习自动化测试

    2012-11-28 15:07:34

    教你如何学习自动化测试

    字体:        | 上一篇 下一篇 | 打印  | 我要投稿  | 推荐标签: 软件测试 自动化测试

      软件测试行业经过这么多年的发展,如今测试行业对从业者的要求是越来越高,不再仅仅局限于要求会写测试用例、会细致的执行测试、能有效的发现系统缺陷等;越来越多的企业对应聘者本身的技能要求也越来越高,招聘信息中诸如“精通VBscrīpt、Perl/Rbuy等至少一门脚本语言”、“至少熟悉一门开发语言”、“精通QTP、LR等自动化测试工具”、“有大型项目自动化实施成功经验”此类的字眼也逐渐增多。

      目前看来,除白盒测试内容和测试管理外,主流的方向有两个:功能自动化测试和性能测试。这就要求从业人员能够在短时间内快速的掌握这些知识,才能获取到更好的工作机会。

      一、想从事自动化测试,必须先了解What/Why/How,也就是常说的去了解什么是自动化测试、为什么要进行自动化测试、该如何进行自动化测试,这类的资料在网上有很多,这里就不做重复了;

      二、需要根据项目的特点,选择合适的自动化测试工具,并了解工具的特性。以QTP为例,该如何去掌握它呢?对于初学者,大多数都是通过录制的方式来生成脚本,这个阶段应该掌握的基础知识有:

      1)QTP是如何去识别对象的,对于新手经常会出现录制的脚本回放的时候报错的现象,这个时候就应该考虑为什么呢?如果很了解QTP识别对象的原理啊,我想就能很快定位到原因了。

      2)去掌握一些QTP对象的方法,如GetROPreperty、GetTOPreperty、ChildObjects等等,对于相似的方法应该去搞清楚到底区别在哪?像GetROPreperty、GetTOPreperty有什么区别等。

      3)什么是Action参数、什么又是Test参数?两者有什么区别,又有什么联系,在同一Test和不同Test间这些参数如何工作。

      4)什么是环境变量?环境变量是如何建立和使用的,环境变量在参数传递中和action参数、test参数有什么不同。

      5)了解检查点的知识,明白什么是内置检查点,什么又是自定义检查点,并搞清楚在什么时候该如何使用检查点。

      6)掌握对象库的操作,了解对象库对于测试的意义,象是否启用智能识别对测试脚本有何影响、为什么同一对象识别起来会有_1、_2之类的后缀等都是需要去研究清楚的问题。

      这几个问题都搞清楚的话,那基本就能够利用QTP生成正确的脚本了,当然以上只是部分必须掌握的内容,其实还是很多细节的设置,就需要在实际运用中去掌握了。

      三、到此为止就可以进一步提升自己的QTP运用水平了,这个阶段就需要去学习vbs知识和如何运用描述性编程实现脚本了,同时在这个过程中还需要去学习html知识、DOM、XML、以及像excel、word等的API知识了,总的来说,这个阶段应该掌握的内容大体上包括:

      1)VBscrīpt的基础知识,熟悉常用的方法和函数,掌握文件对象的操作等。

      2)熟练掌握XML技术;excel、word等API对象,可以根据需要创建日志等。

      3)熟练掌握DOM和HTML知识,能够结合这些技术对Web页面进行解析。

      4)掌握数据库的基本操作语句,能够利用ADO对象进行数据操纵。

      5)熟练掌握正则表达式,很多时候处理对象问题相当方便。

      6)掌握如何调用dll进行工作。

      7)能够利用QTP的自动化对象模型创建出需要的运行模式。

      8)掌握WMI知识。

      以上只是考虑到的一部分,并不全面,但技术基本是通用的,供大家参考。如果这些知识都能够扎实的掌握的话,基本上能够处理自动化过程中的绝大多数问题了,这个时候你对自动化测试的技术应该是有一定积累了。

    四、接下来就需要考虑自动化测试框架问题了。当脚本规模到了一定的程度,就会面临一些问题,如:

      1)如何有效的管理并调度脚本

      2)如何实现脚本运行的无人值守,测试过程中能够自动进行错误处理并进行日志记录

      3)如何生成简介明确的测试报告

      4)如何能够更加高效的维护测试脚本

      5)实现框架代码和业务代码的分层、业务脚本和业务数据的分离

      这个阶段主要体现的是测试人员的测试思想,是可以脱离工具独立存在的过程。当然各个公司项目的实际情况不同,导致设计出来的思想不同,但总体上 来说一般包括数据驱动和关键字驱动两种模式。后者实现的技术难度大于前者,大多数公司目前都采用的数据驱动模式。这个阶段不应局限于技术运用上,而需要从 测试全局考虑,进行分层设计、模块化实现,减少代码之间的耦合,你要懂得自动化测试框架的设计和测试框架的基本编写。

      五、自动化测试的实施,这点非常重要,如何让自动化测试有条不紊地运行起来,这是需要自动化测试工程师关注的。

      以下几点你需要明白:

      1)没有自动化测试框架,那么很难把自动化测试做得很好很规范的。

      2)当有了自动化测试框架,这并不代表什么,更不能代表自动化测试就成功了,同一套框架,不同的经验级别的自动化测试人员来实施,效果肯定是不同的。

      3)自动化测试的实施,应该是在基于一套符合公司业务特点的测试框架+良好的实施计划+良好的实施方案。

      4)自动化测试的实施,千万不能落入“只埋头做事,不抬头看路”的形态,不要落入技术的深渊,需要明白,不是所有的东西都能用技术解决,要充分发挥人的作用因素。

      如果以上四个方面都能够做的很好的话,那么你已经可以独立负责项目的自动化测试建立工作了,甚至可以开始考虑如何组织自动化测试团队!

      总之,学习自动化测试需要在实际项目中进行,这样提高的会比较快,项目中运用了很多种技术,自动化实施过程会碰见各种各样的问题,是很好的学习机会,关键要善于总结、积累经验,只要能够把各个细节做好,那么你一定能够成为一名优秀的自动化测试工程师(主管)。


  • QTP识别和操作对象的原理

    2007-06-20 17:06:16

    QTP识别和操作对象的原理

       QTP为用户提供了两种操作对象的接口,一种就是对象的封装接口,另一种是对象的自身接口。
        对象的自身接口是对象控件本身的接口,只要做过软件开发,使用过控件的人应该很清楚。
        对象的封装接口是QTP为对象封装的另一层接口,它是QTP通过调用对象的自身接口来实现的。


    两种接口的脚本书写格式的差别在于:
        自身接口需要在对象名后面加object再加属性名或方法名,封装接口就不用在对象名后面加object。

        比如操作JavaEdit对象,通过QTP封装的封装接口,脚本如下:
        设置JavaEdit的内容:
         JavaDialog("Add NE").JavaEdit("NE Name").Set "NE1"
        读取JavaEdit的内容:
         msgbox JavaDialog("Add NE").JavaEdit("NE Name").GetROProperty("value")

        如果通过JavaEdit的自身接口,脚本如下:
        设置JavaEdit的内容:
        JavaDialog("Add NE").JavaEdit("NE Name").object.setText("NE1")
        读取JavaEdit的内容:
        Msgbox JavaDialog("Add NE").JavaEdit("NE Name").object.getText()

        QTP执行JavaEdit().Set语句时,是通过执行JavaEdit().object.setText()来实现的。
        QTP执行JavaEdit().GetROProperty("value"),是通过执行JavaEdit().object.getText()来实现的。
        JavaEdit对象的封装接口Set()和GetROProperty("value"),是QTP封装JavaEdit对象的自身接口setText()和getText()而得来的。

        对象的封装接口是QTP使用的缺省接口,我们录制出来的脚本都是使用封装接口,大家用的也都是封装接口。
        但是封装接口不如自身接口丰富,因为QTP只是封装了部分常用的自身接口嘛。
        所以我们在需要时,可以绕过封装接口,直接调用对象的自身接口。
        不过有些自身接口不够稳定,在实践中偶尔会出现问题,但是概率很少。
       封装接口有相应功能的话,就尽量用封装接口吧!

      
        理解了封装接口和自身接口的原理,我们就可以更加灵活的操作对象了。

        但是我们怎么知道对象都有哪些封装接口和自身接口呢?
        其实很简单,用对象查看器(Object Spy)查看对象,在查看窗口里有列出这些接口,包括属性和方法。
        窗口中间有选择栏让你选择Run-time Object或者Test Object,当你选择Run-time Object时,它显示的就是对象的自身接口(自身的属性和方法)当你选择Test Object时,它显示的就是对象的封装接口(封装的属性和方法)

        明白了这些,你还等什么呢?快拿起对象查看器,看看对象都有哪些封装接口和自身接口,肆意的操作它,玩弄它吧!

        比如执行
        JavaDialog("Add NE").JavaEdit("NE Name").object.setVisible(false)
         哈哈,你的JavaEdit对象就当场消失不见了!!!

    摘自:http://www.rjzl.gov.cn/news.asp?id=1733
  • WinRunner和QTP的区别

    2007-06-20 14:18:35

    WinRunner和Quick Test Professional(简称QTP)都是MERCURY公司开发的非常强大功能自动化测试工具,从时间上来看,WinRunner在1995年便已经推出,而QTP直到2002年才正式推出。
    我想从以下几点来谈谈我个人的看法,这里只列出它们两者的不同点:
    1.从界面来看:WinRunner只有一个显示脚本的界面,而QTP的Kyword View 、Expert View、Data Table、Active Screen四个界面可以显示在同一个窗口,在脚本回放时让人可以时时刻刻了解到脚本运行的情况,虽然这些功能WinRunner都可以实现,但相比较下QTP更直观、更好;
    2.从支持的语言来看:如上表列出的,两者有所不同,在这我就不再列出;
    3.从生成的脚本来看:WinRunner生成的是TSL脚本,这是MI公司独有的语言,是一种类C语言,而QTP生成的是VBscrīpt,从编程能力上,WinRunner更胜一筹,因为它拥有相当丰富的C语言函数库,相对而言QTP则更显得大众化,它面向的是没有太多技术背景和编程经验的测试人员;
    4.从适用范围来看:WinRunner比较适用于C/S架构软件,而QTP虽然对于C/S架构的也适用,但对于B/S架构的适用性更剩一筹;
    5.QTP8.0具有的一大特性:关键字驱动测试(keyword-driven testing),这点我实践的比较少,理解不是很深,希望能和大家共同讨论;
        具体选用那种工具,应该根据公司自身的情况来定。这些只是个人理解,如果有不完整或者不对的地方,欢迎大家跟帖讨论!
     
Open Toolbar