移动测试基础 移动应用自动化测试的困惑

KevinXu · 2014年11月17日 · 最后由 mic 回复于 2014年11月19日 · 1735 次阅读

在我实施移动应用自动化测试的过程当中,我思考最多的倒不是技术实现上面的问题,而是:

  1. 面对迭代周期短的应用,自动化的开发维护成本实在太高,那是否有必要做自动化?
  2. UI 的自动化的产出是很少的,发现不了什么问题,是否有必要自动化? 我始终在思考 UI 自动化的意义,UI 自动化产生的价值有多少? 我目前的想法是前端 UI 和功能的测试全部手工执行,接口的测试实行自动化 对于上面的 2 个问题,期望移动应用测试大神来释疑,谢谢!
共收到 16 条回复 时间 点赞

#6 楼 @mic 移动测试的抛弃 UI 自动化?

#6 楼 @mic 感谢分享。 UI 确实是比较难搞的一块。

很多时候做 ui 自动化不是为了测试 ui,而是为了 endtoend 的模拟用户行为,以此曝露用户路径会发生的问题。

看到大家的讨论受益匪浅,自动化还是很有价值的,但是我这边的测试现在是分层来测试的,基本的套路是底层的单元测试,然后是接口的自动化测试和一点点 ui 的自动化测试以及最上层的验证测试。移动互联网迭代太快了,刚开始做比较费劲,也比较难推进一些思想的实现,不过还是坚持下来。做出了一些成果。

@mic, 赞有人的地方就有江湖。

赞同:自动化一定要证明有其存在的价值。

从我的个人实践上来说: UI 自动化一定要从最简单的做起,不一定是一定要 cover 一个主流程。常常见到一些测试经理说,自动化 cover 了几个主流程(外行话)。如果主流程太长(10 多个子模块交互),我想基本上一个主流程就搞死你。

我推荐的做法是:分拆,分拆成一个个颗粒度很细的小测试。
在这方面投点资还是可以的。

#10 楼 @mic 好的,谢谢你的建议!

#9 楼 @kevin_xu_v
其实最到最后,基本上除了真实的开发业务逻辑之外,整个架构从硬件到软件,从与 boss 谈判到动手搬机房,从人员招聘到团队稳定建设,真真的统统摸索了一遍。在国内来说,团队不够成熟的话,ui 自动化测试没有半年以上的迭代周期,可以先别碰了。

#6 楼 @mic 我其实很想了解别人在实现 ui 自动化的经验,你的回答就是我要的答案,谢谢!

#6 楼 @mic very helpful,经验是最宝贵的,非常感谢分享!

#6 楼 @mic 写的很好. 是实用的经验.

成本太大的话不走自动化也是一条路

大家想法都是一样的,不赚钱的买卖都是没有必要的~ *

说说我们的经历吧。
三年前
背景:一个传统软件做 UI 层面的自动化测试
没有 CI,手工打包,没有 UT,jquery4 个版本混用....
开始做自动化测试,前先花了三个月左右(中间还有其他事情)的时间,使用 jenkins+ant 实现自动打包,不能算 CI
然后一个月左右开始给大领导和其他利益相关群体做 “洗脑” 工作。半个月之后,得到结果开始执行,但是必须要有可量化的指标:

  1. 自动化测试覆盖率= 自动化测试覆盖的手工测试用例/手工测试用例总数 这其中有很大的问题,之前的用例根本就不是良好的用例。没有上下文,没有数据,
  2. 自动化测试的价值=自动化测试执行的时间/自动化测试代替手工测试的时间 这个还算客观,但是它依赖前一个指标

好了开始做了,

第一个问题:没有环境

怎么办?折腾以前淘汰的机器定制环境(先是 xp,后来统一升级到 win7)

第二个问题:环境不能自动部署

工程是跟 tomcat 耦合在一起的;而且 linux 部署还不成功!!
折腾 autoit,实现 windows 上的自动更新,自动部署(后台跟 webqq 做关联,qq 上发个消息就能自动部署了,还能查询状态和系统信息)

第三个问题:没有测试用例,也没有可使用的数据,这是一个大坑

又话费了接近三个月的时间,才梳理出来一个关键模块的测试用例(基于 BDD 的)跟它的数据。中间还返工了一次,因为版本更新,用例重构了。
然后陆陆续续花费了接近两个月的时间才准备好了相关数据。制定了以后数据准备的方案

第四个问题:人员能力差

这个问题从开始就很明显!没办法,招人,一边独自做,一边招人,来来回回折腾了 5 个人,最后一个人稳定了两年多。中间做了不下十次培训,文档写了至少三遍

第五个问题:版本也在更新,前台重构,对应的底层控件经常出妖怪问题

这些问题,有产品自身的可测性问题;也有 webdriver 的妖怪问题。
导致我们架构重构了两次,并分别做了针对不同版本的适配(主要是前台控件的操作适配)

简单来说是这些,还有很多与其他利益相关体的扯皮的因素(你懂得,有人的地方就有江湖)。这样一晃接近两年的过去了。
最终我们达到一个什么效果,不到 20% 的覆盖率,但是效果很明显。最先实现的那个模块(功能逻辑相对固定),从两年前开始到现在都是 bug 最少的!

现在


虽然换个团队,换个产品,以互联网的方式设计产品,设计架构。但是考虑到成本问题,毅然决然的抛弃了 UI。到目前为止只做接口测试。

啰啰嗦嗦写了不少,目的只有一个,别做收益不够的投资!

很多时候我们想了很多我们自动化的意义。有多少含金量。 领导说: 这个是项目指标, 需要一份数据。需要的只是一个报告数据。 这也是自动化的作用。。 自动化对于主要功能的回归质量保证还是很有用处的。保证基本功能,快速的发现主要功能存在的问题。

#3 楼 @seveniruby 释然,顿时就有了执行步骤了,非常感谢!

分层自动化

把接口测试做好, 这个可以很好的保证后端质量. 而且最不易变. 自动化价值高
UT 单测交给研发. 监督他们搞好. 保证一定的覆盖率,
UI 测试小部分业务要自动化, 保证质量还是有用的, 大部分是易变的, 手工测试即可. 我不看好 UI 自动化

充分利用云服务

兼容性测试 (Testin MTC)
众测服务 (花钱也不多, 值得尝试, 发众测任务, 比如把游戏打通 N 关, 注册 N 个帐号之类的, 发动少量群众可以发现更多问题)
安全测试 (类似乌云. 可能稍贵. 测试行业暂时还没有这种服务)
性能测试 (云服务目前还不太好用, 还得靠自己)

降低自动化的维护成本

比如录制回放技术, 不过这个录制回放工具的好坏很大程度决定了效率和成本
和研发约定规则 自动生成自动化测试用例
改善自动化的架构, 比如使用关键词驱动框架来维护. 这样贴近业务. 而且业务是基本不变的
成本太大的话不走自动化也是一条路.

#1 楼 @kasi 谢谢!ut 指的是 unit testing?如果是,目前这个环节开发在覆盖,稳定模块加入 UI 自动化是个可行的方案,多谢指导!

增加 ut 环节,其次稳定模块可以加入 ui

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册