自动化测试详解
01
什么是自动化测试?
我们知道,自动化测试的含义有广义和狭义之分:广义来讲,所有借助工具来辅助进行软件测试的方式都可以称为自动化测试;狭义上讲,主要指UI层的功能自动化测试。
Martin Fowler大师在测试金字塔模型的基础上提出分层自动化测试的概念。分层自动化测试与“传统的”自动化测试的区别在于以下几点:“传统的”自动化测试一般指基于产品UI层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行的一种自动化测试;而分层自动化测试则不同,它倡导的是从黑盒(UI)单层到黑白盒多层的自动化测试体系,从全面黑盒自动化测试到对系统的不同层次进行自动化测试,如图1所示。
1、单元自动化测试
单元自动化测试是指对软件中的最小可测试单元进行检查和验证。一般来说,单元就是人为规定的最小的被测功能模块。规范的进行单元测试需要借助单元测试框架,如Java的Junit、TestNG,C#语言的NUnit,以及Python语言的unittest、pytest等。目前几乎所有的主流语言都有其相应的单元单元测试框架。
2、接口自动化测试
Web应用的接口自动化测试大致分为两类,分别是:模块接口测试和Web接口测试。
1)模块接口测试,主要测试模块之间的调用与返回。主要强调对一个类方法或函数的调用,并对返回结果的验证,所用到的测试工具与单元自动化测试相同。
2)Web接口测试有可分为两类:服务器接口测试和外部接口测试。
服务器接口测试:指测试浏览器与服务器的接口。用户的操作是在前端页面上,需要后端提供服务器接口,前端通过调用这些接口来获取需要的数据,通过HTTP协议实现前后端的数据传递。
外部接口测试:指调用的接口由第三方系统提供。典型的例子就是第三方登录,例如新上线的产品为了免于新用户注册账号的麻烦会提供第三方登录,那么用户在登录的时候调用的就是第三方登陆的接口。
3、UI自动化测试
UI层是用户使用该产品的入口,所有功能都通过这一层提供并展示给用户。为了减轻这一层的负担,早期的自动化测试工具主要针对该层进行设计。目前主流的测试工具有UFT、Watir、RobotFamework、selenium等。目前在Web应用程序使用较多的是selenium。
02
什么样的项目适合自动化测试?
了解什么是自动化测试之后,那么自动化测试可以应用到哪里呢?
在普遍的自动化测试经验中,一般满足以下三个条件就可以对项目进行自动化测试。
1、软件需求变动不频繁
自动化测试最大的挑战就是需求的变化,而自动化脚本本身就需要修改、扩展、debug,去适应新的功能,假如投入产出比太低,那么自动化测试也就失去了其价值和意义。
我们可以想一个折中的做法:选择相对稳定的模块和功能进行自动化测试,变动较大、需求变更较频繁的部分用手工测试。
2、项目周期较长
自动化测试的需求稳定性要求、自动化框架的设计、脚本开发与调试均需要时间,这其实也是一个软件开发过程,如果项目周期较短,没有足够的时间去支持这一过程,那自动化测试也就不需要了。
3、自动化脚本可重复使用
测试数据、测试用例、自动化脚本的重用性和移植性较强,降低成本,提高效率和价值。
在未来的测试行业中,自动化测试的作用将会越来越重要,自动化测试技术将是每个测试人员都必须掌握的核心技能,核心竞争力。