测试金字塔
大测试(UI):占比10%;
中测试(Service):占比20%;
小测试(Unit):占比70%;
以接口为主UI为辅
UI 自动化因其运行环境的问题,会导致运行速度慢,对环境依赖过高。同时因程序界面的多变性,导致自动化脚本维护成本大大增加。
接口测试有很多优于 UI 自动化的地方。但是接口测试也自有其短板,对流程性质的测试并不适合用接口自动化来覆盖。接口自动化更适合覆盖单一接口功能的检查。
所以我们可以采用核心业务流程使用 UI 自动化,单一功能使用接口自动化,两种层面的自动化结合的方式来进行。
- UI层:界面自动化测试。可以看出它的价值最小,它最接近用户真实场景,也容易发现问题,但它的实现成本最高且太容易受外部依赖,容易影响脚本成功率。总体来说,适当的界面自动化测试是有必要的,但是没有必要在UI层投入太多;
- Service层:接口自动化测试。它的价值居中,覆盖大多数主要的接口是比较合适的。这一层要求测试人员对系统的结构和系统间的调度非常清楚,同时要了解接口逻辑关系,否则接口测试代码很容易遗漏一些异常场景;
- Unit层:单元测试。最有价值的测试,但是对测试人员要求比较高,一般由开发人员完成,否则只能采用结对编程。
- 通常来说,手工测试是最基本的,可以做到接近100%,而对于自动化测试来说,它更像是一件”防弹衣”,用来防护身体的主要部位。有人认为自动化率提高了,就可以节省人力,这实际是非常片面的,因为提高自动化率,意味着需要投入更大的人力在维护的成本上。因为系统的需求是在不断变化的,每一个变化都会导致自动化测试用例需要更新调整。
- 所以,自动化测试做到什么样才算好,也要结合上面的测试金字塔来分析。对于UI层面的自动化测试,保证少量必要的主流程即可,切勿在这一层面将自动化测试的”防弹衣”变成臃肿的”宇航服”;Service层面的接口自动化测试,可以考虑覆盖大部分的流程;Unit层面的单测,做到100%是最好的,即使有需求变化,一般也很少影响到已有的用例。一般来说,单元测试可以发现80%的缺陷。
回归测试
回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。
冒烟测试
冒烟测试就是完成一个新版本的开发后,对该版本最基本的功能进行测试,如果通过测试,才会进行下一步的测试(功能测试,集成测试,系统测试等等)。
自动化测试
自动化测试可分为两种:
- 自动化功能测试:自动化功能测试:包括单元测试、接口测试、UI测试。主要是编写代码、脚本,让软件自动运行,发现缺陷,代替部分的手工测试。但一般只有大的项目才需要进行自动化,中小型项目不推荐使用自动化测试。
- Web 自动化测试,Selenium 框架
- 自动化性能测试:性能测试主要是使用测试工具,Loadrunner、Jmeter等,对软件进行压力测试、负载测试、强度测试等等,因为这些无法用手工进行代替,所以必须自动化。
相关工具
UI: selenium/webdriver
API: Jmeter/QTP/METERSPHERE
MOBILE: Robotium/appium