51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1904|回复: 6
打印 上一主题 下一主题

[原创] 浅谈自动化测试

[复制链接]
  • TA的每日心情
    开心
    2016-5-11 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2009-8-26 11:42:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    [local]1[/local]刚才贴的没有图,直接再发一次原文件
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-5-11 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2009-8-26 11:44:41 | 只看该作者

    浅谈自动化测试

    浅谈自动化测试
    最近已实现自己项目中部分模块的自动化测试,现把一些做基本思路写出来,与大家共享。我们项目是用Felx3.0做的前台,所以我们是用QTP9.3+Flex3.0 add in实现的。其中遇到的最多问题是Felx在自动化中的应用。因为国内用这一块的比较少,好在问题已基本慢慢解决了。
    一、        自动化可行性研究:一般适合做自动化的项目必须具备以下特点
    1.        项目周期长:因为只有项目的周期非常长的时候,才能看得到自动化的效果。如果项目非常短也采用自动化的时候,可能脚本还没开发完,项目就结束了,那这就是一种极大的资源浪费。
    2.        稳定性好:只能对于那些大部分模块比较稳定的项目才能做自动化测试,因为很多自动化工具是基于对象录制与识别原理的。如果界面变化非常频繁,可能会导致大部分的脚本不能正常运行。
    3.        资源具备:首先要考虑的是采用什么工具来实施自动化。现在市场上用得较多的的是QuickTestProfessional.那么如果采用这个工具的话,就得考虑公司决策层愿不愿意花钱购买此产品的License。另外还有非常重要的一点,是你所在的项目适不适合用此工具。因为有些项目用了很多自定义控件,那么对于这些自定义控件,QTP是不能识别的,需要开发人员自针对这些自定义控件写代码,来让QTP识别。当然还有很重要的因素是人。项目中有没有具备自动化经验的人。如果没有,培训起来的时间关系也要考虑。
    二、        自动化测试计划:软硬件资源,配置管理 ,框架思想,编码规范等等。
    三、        框架搭建:框架搭建常见的有三种,关键字驱动,数据驱动,混合式驱动。这里以简单易用的数据驱动方法来

    四、        脚本开发,调试:
    框架设计好后就可以分模块开始写Function.一般是一个test中包括多个action,一个action中又包括多个Function. Function写好后就由当前所以action调用,然后各个action又由主action来调用。具体运行哪些action和Function,是由一个单独的驱动控件表来完成。
    Script ID        Script name        Run
    1        Login_IMT        Y
    2        Back_end        N
    3        Site        N
    4        Branch        Y
    6        Agent        Y
    7        Support        Y
    另外错误处理一定要做好,要做到真正的无人值守,可以参考如下代码:
    这是最上层控制action运行的代码
    Dim row                               
    Dim datapath  
    '存储控制表中记录数
    datapath=Environment ("TestDir")& "\FrameData\Framework.xls"
      '存储当前控制表路径
    row=rowCount(datapath,"IMT")

    '依次读取Framework.xls中IMT中记录,来确定要运行的action
    For i=2 to row
            Err.Clear
            On Error Resume Next        '出现错误,继续执行后面的操作
            '依次调用需要运行的action
            If getcell(datapath,"IMT",i,3)<>"N" Then
                    Runaction getcell(datapath,"IMT",i,2),oneIteration
            End If
    '如果捕获到错误,则写错误结果到Report
            If Err.Number <> 0 Then
               Call Report( Err.Number,"FAIL", Err.Description)
               End if
            Err.Clear
            On Error goto 0                '清除错误
    Next


    五、        自动化测试运行
    脚本都调试好后,就开始正式运行了。如果错误处理做得好的话,就可以无人值守了。晚上要脚本自动运行,自动报Bug,自动拍图,自动写报告。第二天早上等着来抓虫子吧。
            测试结果       
                           
            测试日期:        2009-8-25       
            执行时间:        3:25:07 PM       
            结束时间:        3:33:52 PM       
            执行时长:         0:08:45       
            执行总数:        8       
            测试机器:        192.168.118.190       
                           
            测试业务        结果        注释
            Login: Login_IMT        PASS        login in successfully!
            Branch: Create branch        PASS        The branch already exists
            Login: Login_IMT        PASS        login in successfully!
            Branch: Create Branch        FAIL        The "Reset" FlexButton object was not found in the Object Repository.
    Check the Object Repository to confirm that the object exists or to find the correct name for the object.

    六、        脚本的维护与增强
    所以自动化测试运行正常后,并不是万事无忧了。如果软件有更新,或模块有变化,可能要对脚本进行维护。祝你好运了。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2009-8-26 15:17:03 | 只看该作者

    质疑

    粗略看了下,先单独看下这一段:
            On Error Resume Next        '出现错误,继续执行后面的操作
            '依次调用需要运行的action
            If getcell(datapath,"IMT",i,3)<>"N" Then
                    Runaction getcell(datapath,"IMT",i,2),oneIteration
            End If
    '如果捕获到错误,则写错误结果到Report
            If Err.Number <> 0 Then
               Call Report( Err.Number,"FAIL", Err.Description)
               End if
            Err.Clear
            On Error goto 0                '清除错误
    ‘------------------------------------------------------
    LZ确认这样能捕获到错误?
    尝试下如下的例子看看
    新建个action2,写入
    msgbox 1/0
    然后在action1中写入
    Err.Clear
    On Error Resume Next   
    RunAction "Action2", oneIteration
    If Err.Number <> 0 Then
       msgbox  Err.Number & vbnewline & err.description
    End If
    Err.Clear
    On Error goto 0
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2009-8-26 15:21:48 | 只看该作者
    呵呵,这个报告是excel的吧,我在论坛上也下载了。。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2009-8-26 16:15:54 | 只看该作者

    都说的不错

    2.        稳定性好:只能对于那些大部分模块比较稳定的项目才能做自动化测试,因为很多自动化工具是基于对象录制与识别原理的。如果界面变化非常频繁,可能会导致大部分的脚本不能正常运行。

    即使不录制,如果界面频繁更新,也不适合做自动化。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-5-11 13:12
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    6#
     楼主| 发表于 2009-8-28 10:06:43 | 只看该作者

    回3楼

    其实这只是最上层的控制,在每个子action内调用function的时候,我也是用的这种错误处理。所以action内部的错误就已经补捕获了。最上层的是控制最上层的action。可能我前面没说清楚。现在我们的这边没问题,碰到错误会自己拍图,然后重新登录,继续运行下一个功能。
    不过hsjzfling应该是在自动化非常有经验,有机会我们可以交流以。我的MSN是:zhangchunhua130@hotmail.com
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2009-8-28 12:50:21 | 只看该作者
    同疑惑,这样能捕获异常?
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-8 17:59 , Processed in 0.071354 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表