小白在学习实践Appium对APP进行自动化测试中遇到各种各样的问题,今天小白遇到了非技术问题,而是:哪些需要做自动化,自动化的意义出现了困惑。下面还是看小白和老鸟的对话,从中找到问题的答案。
老鸟:最近自动化测试进展如何了?
小白:一般什么地方适合做自动化?我现在对“不适合做自动化测试”,和“做起来有难度的自动化测试”有点分不清呢。当一个模块实现“自动化测试”会有难度的,是应该强攻呢,还是说明这个模块其实压根就不需要自动化?
老鸟:首先,周期性长或者迭代频繁的项目适用于自动化。其次,做自动化测试需要采用分层思想,如界面层、应用层和逻辑层自动化的分离。自动化在初期阶段应该尽可能的简单,后面随着技术和团队技能的提升,基于成本考虑尽可能多的去自动化,这应该是一个循序渐进的持续过程。最后,前期应针对基本业务做自动化。
不适合做自动化的:复杂的异常处理流程,用户体验性等非功能性测试活动,探索性测试活动,接入第三方应用或接口需要过多人工干预的。
下面是需要评估的主要决定因素,以方便你正确地标识要测试自动化的应用:
- 对业务至关重要的,使用频率高的,具有较长生命周期的应用;
- 对多个平台的应用进行本地化/全局化;
- 每次都需要完整的回归测试的多个发布;
- 最低限度需要手动干预的外部接口;
- 其发布不会对整个回归测试工作产生不良影响的应用;
- 涉及位图的基于图形用户界面的应用;
- 在所有应用中,其对象和函数被多次使用的应用;
- 前端图形用户界面和后端图形用户界面无需进行太多修改的稳定的应用。
老鸟:所以,哪些做自动化需要进行评估,如果确实复杂,引入自动化得不偿失,比手工测试投入的时间都要多得多,那就不做了,此时不如采用手工测试。
小白:那我们这个电商APP还真没多少可以自动化的。主要是登陆、注册等。其它随便买个东西,都要调用支付第三方。
老鸟:那就不做。把基础功能,如登录,页面加载,列表展现这些自动化就行了,购买能够进入第三方接口即可。支付第三方,如果要做回调处理流程的自动化,就需要开发协助,做个模拟器处理支付请求,不然很难实现自动化。
小白:感觉还不如游戏测试,可以做的自动化程度高。
老鸟:前面已经说了,本来自动化就要分应用的,项目情况的。
小白:只是游戏测试,不对自动化做要求罢了。反正就那么点钱。
老鸟:看情况吧,自动化在国内炒得那么火,但能真正做好的公司也没有多少个,更多还是为了自动化而自动化,可能并没有在时间、价值上去衡量自动化的可行性和执行策略。
小白:对头,很水。都是叫嚷的厉害,真的去做的寥寥无几。
老鸟:真的去好的寥寥无几?实际做的大有人在,不过并没有衡量是否更有价值,如比手工测试是否有减少时间和成本上的开销。现状是,现在几乎稍微有点规模的公司都在叫嚷着自动化测试,也都在做,只是自动化后相比手工测试能带来多大的价值需要打个大大的问号。
老鸟:现在你的自动化能否开展,比如领导是如何看待的?
小白:领导压根不知道,不重视。
老鸟:你没有提议,或者告知(领导)?
小白:说了,做了。关键就是我说,我现在就做了,登陆的,商铺注册的,都是非核心的东西。核心的,比如付费业务,根本就只能是手工测试。
老鸟:这也能节省一些时间撒,起码机器跑注册,还是很可靠的,也不需要再花费测试人员额外的时间了。人的时间就成本啊。机器是已经投入的成本。可以把人解放出来做其它更有价值的事情,比如核心业务的测试,异常流程和探索性测试,这就是自动化带来的好处。