51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 13208|回复: 2
打印 上一主题 下一主题

[转贴] 反对盲目的UI自动化测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-8-23 11:24:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 悠悠小仙仙 于 2017-8-23 11:25 编辑


首先,建议大家看看这篇文章,写的很不错:自动化测试: 真的是银弹?这里就说一下结论:自动化测试不是银弹,自动化测试(包括UI自动化测试)是为了减少重复工作,增加测试的覆盖率,而不是为了替代手工测试,更不是为了减少测试人员(当然,有可能导致减少部分手工测试人员)…… 这里就不展开讨论这个了,我们来说UI自动化测试。产品是否适合UI自动化测试,是否有其它替代方式
前边文章也说过了,能不
用UI自动化测试就不用,能不用UI自动化测试就不用,能不用UI自动化测试就不用,这也是因为在所有种类的自动化测试中,UI自动化测试是最不稳定,测试用例最难写的稳定,维护成本最高的方式。所以,我们首先要考虑,是否有替代方案。
虽然UI自动化是比较高成本的方式,但是很多时候也是功能测试的唯一选择(当然,可以通过软件设计来减少这种依赖,我们后边的文章会讲到)。这个时候我们在决定采用UI自动化方案之前,需要考虑一下几点:

选择UI自动化工具:
看对产品的支持程度。比如产品是用WPF写的,那公司买的工具是否可以识别,是否有其它商业工具可以支持,价格是不是公司有预算去购买等等。
自动化工具的开发语言是否需要学习成本,自动化工具的第三方类库是否丰富,建议选择采用通用语言的自动化工具,比如用python或者c#作为脚本语言的工具。
在定义UI节点的时候,自动化工具是否提供方便的方式来生成UI的映射。而且这种映射是否比较容易维护
是否可以方便的调试测试程序,比如是否支持断点和变量值查看

产品里边自定义UI,或者叫自绘制的UI控件的比例,是否是关键节点控件(当然了,如果自绘制UI控件支持的Accessibility的接口,那就没有问题)。比如,产品的最主要功能是绘图,一般绘图区肯定都是自定义控件,而UI自动化工具基本上对绘图区都是无能为力的,那是否有其它方式可以来测试?比如把绘图相关的模块单独拿出来,通过API的方式来操作测试?
反对录制回放脚本
看到有些team把支持录制回放脚本作为评估自动化测试工具的一个必备条件,而且有些就是用录制回放来创建测试用例。些很小的项目,测试用例只有几十上百个倒是问题不大,但是当测试用例个数上百上千的时候,维护测试用例基本上就变成一个繁重的任务。比如一个UI节点细微的变化,可能导致自动化工具没有识别UI控件,那么所有用到这个控件的测试用例都需要更新,查找替换并且保证没有替换错就是一个很大的工作量,更别说一般录制的脚本人工都不容易理解。
UI自动化测试不只是脚本,也需要设计
软件测试脚本的开发也是软件开发,脚本必须符合规范,必须经过设计编码测试维护的全过程。
测试脚本的设计:根据面向对象设计的原则,我们需要对变化频繁的地方进行必要的封装。在这里变化相对最频繁的就是UI本身,而相对稳定的是业务逻辑。所以我们可以针对UI进行封装,然后再封装一层业务逻辑层,所有的测试用例都通过业务逻辑接口进行操作。比如我们要测试一个登录窗口,那么UI层就包含用户名,密码,登录按钮的UI定义,逻辑层包含接口类似login接口,测试用例里边就调用login接口登录并进行必要的验证。
测试脚本的编码:既然是软件工程,那么脚本也必须遵循代码规范,比如python的脚本需要遵循python的代码规范。
测试脚本的测试:脚本是用于测试程序的,那么自身的质量也是至关重要。建议有条件的team进行code review,当然这个很难做到…… 另外就是至少要人工观察脚本的操作,来确定它做了正确的事情。而且需要在不同的系统和机器上测试通过。
测试脚本的维护:UI相对来说比较容易变化,这就导致测试用例的fail,那么我们需要去调试并确认是脚本问题,确认之后如果设计良好,大部分情况下只需要更新UI层就可以了。另外我们需要考虑是否UI变化过于频繁,现在自动化开始是不是正确?
UI自动化测试开始的时机
从前边测试脚本的维护可以看出,维护工作量的大小,跟UI变动是否频繁直接相关。我们需要做的事情,就是确定什么时候UI已经稳定了,我们再开始UI自动化,否则还是考虑先人工测试覆盖。当然了,我们也没必要等整个程序的UI稳定,比如一个独立的功能UI稳定了之后,我们就可以先对那个功能进行自动化,然后等待其它功能的UI稳定。
而且一旦UI自动化开始,后边的维护工作也相应要开始
所以我建议开发过程中,有一个milestone叫UI freeze,这个阶段后就可以着手开始UI的自动化测试了。当然,非UI的自动化,比如Unit Test,Integration test和API test应该很早就开始了
另外一种情况,是针对上一个版本release的功能的回归测试,这个是最适合UI自动化的方面。一般来说,这种情况UI变动基本上没有,而且功能比较稳定,测试写好之后,可以有效减轻手工测试的压力,而且可以更专注于新功能的验证。
需要考虑UI自动化的投入产出比
我们先说投入:与软件的投入产出一样,一个设计良好的UI自动化框架,最大的投入应该是创建框架和实现测试自动化脚本,而尽量减少维护的工作量。一个坏的自动化框架,前期可能投入较少,后续的维护和更改的成本可能几倍与前期,甚至到最后只能丢弃掉。
说到产出,自动化测试跑的次数越多,平台覆盖越广,产出就越多,减少手工测试的工作量也越多。一旦自动化测试写好,那就应该让他们持续的跑起来,比如根据情况设置每周,每日,甚至是每次提交自动部署到所有平台运行并报告结果。这个配合Jenkins来实现会比较方便。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1
回复

使用道具 举报

  • TA的每日心情

    8 小时前
  • 签到天数: 942 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2017-8-23 17:18:52 | 只看该作者
    对  现在好多公司啥都不知道呢就要开展自动化
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2017-10-30 09:16
  • 签到天数: 264 天

    连续签到: 1 天

    [LV.8]测试军长

    3#
    发表于 2017-8-28 09:24:04 | 只看该作者
    是啊 好多都这样,天天喊着做自动化代替手工,我就说你另外找人做算了,我没时间
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-4-19 18:31 , Processed in 0.064024 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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