由于移动app的市场竞争很激烈,所以app的迭代通常会很频繁,而且app的发布周期也不会很长。这就给测试人员在短时间内全面地测试app带来了很大的挑战。
面对这种情况,很显然,不断地增加手动测试人员和加班不是一个有效的解决办法,而自动化测试是一个不错的选择。
对于自动化测试,很多项目经理甚至测试人员都有误解,认为自动化测试越多越好。从某种程度上说这种理解是对的,但是我们不能只是一味地添加基于界面的自动化测试,而是需要对app的自动化测试进行设计。
- 测试设计和测试金字塔
在测试设计时最主要依据的就是测试金字塔的测试结构。
大家都明白,如果在项目临近发布才开始测试并发现缺陷,这样修复缺陷的成本就会很高,项目的进度也会很不确定。所以,就开发阶段来说,如果测试分层,在不同的开发阶段都进行测试,能很大程度上缓解这些问题。
测试金字塔
测试分层的优势:
- 测试的成本
从经验不能看出,单元测试的开发成本要远低于用户界面的测试;如果在用户界面的测试中发现缺陷,修复缺陷的成本也是远远高于通过单元测试和的成本。这里说所的成本并不单纯只是开发人员修复缺陷所需的资源和时间,还包括了修复缺陷后测试人员进行回归测试所需要的资源和时间,以及项目延期等其他的项目成本。
- 测试的效率
用户界面测试需要准备数据和相关的系统,还需要在客户端/app中进行渲染,很可能还需要预先执行一些诸如登陆账户之类的操作,才能对测试用例进行验证,所以话费的时间比较长,得到的执行结果也比较慢,反馈周期长。
而单元测试能很快地验证很小的功能或者方法是否运行正确。而且单元测试运行时间段,反馈也及时。
- 缺陷定位的难易
显然,单元测试如果失败了,测试人员很容易知道被测试的特定功能或者方法不正确;而如果是用户界面的缺陷,测试人员就需要花费更多的时间来进行排查,确定出现问题的功能模块,最后再进一步地发现需要修复的功能和方法。
基于以上三条,或许会认为底层的测试,例如单元测试比用户界面测试要好,其实不然,单元测试固然有自己的优势,但是不代表只要有单元测试就可以了,因为其他层级的测试也有不同的用途。
- 反映真实的业务需求
通过单元测试如法从全局观的角度了解系统模块之间的交互,也无法通过方法的组合帮助用户完成业务目的;而由于用户界面的测试描述的是从用户角度出发的用户使用场景,因此可以更容易地阐述用户的行为和业务需求。
- 更加接近业务
由于用户界面测试描述测试的阶层更高,所以也就更接近业务;而单元测试描述测试你的层级更具体,也就更接近与实现。从测试金字塔的5层分布来看,不同层级的测试都很有必要,而我们也需要根据不同的测试所处的层级及其特点进行测试设计。
网友评论