目录
一、前言
我 接触了太多测试同行,由于多数同行之前一直做手工测试,现在很迫切希望做自动化测试,其中不乏工作 5年以上的同行。 我 从事软件自动化测试已经近十年,接触过底层服务端、 API 、Web、APP、H5 等等,对自动化算是比较了解。在此分享一下个人经验。
如果对自动化完全不了解,每天在那嚷嚷要做自动化,都是空喊。
所以 想做自动化, 首先 得了解一下自动化测试的一些常见问题。
二. 什么是自动化测试?
自动化测试,顾名思义,自动完成测试工作。
通过一些自动化测试工具或自己造轮子实现模拟之前人工点点 /写写的工作并验证其结果完成整个测试过程,这样的测试过程,便是自动化测试。
因为每一个自动化测试的 case都是从手工测试做起的, 所以自动化测试的基础是手工测试 。
三、为什么要进行自动化测试
1)自动化测试节约成本(根据项目)
2)有些测试项目手工很难实现(手工成本较高)
3)项目质量流程需要
四、自动化测试的优势 及劣势
优势: 回归测试更方便可靠 ;可运行更多,更繁琐的测试,且快速高效;可执行一些手工测试执行相当困难或者做不到的测试,如大量的用户并发;更好的利用资源,具有一致性和可重复性的特点,自动化测试脚本完全可复用;提升了软件的可信度;多环境下测试等。
劣势: 维护成本相对比较高
系统开发时间不一定能缩短
还是得依赖手工测试,很多问题无法发现
五、自动化测试分类
按测试目的分类大致可划分为:功能自动化测试,性能自动化测试
按测试对象可以划分为: Web应用测试,APP测试,接口测试,单元测试等
功能自动化
测试目的是发现软件中实现功能是否符合用户需求规格,实践证明,往往我们实施 UI自动化测试的目的不是去发现软件系统中的缺陷,更多的是为了验证系统是否可以正常运行。
除了可以基于 UI进行自动化测试,我们还可以基于网络服务接口提供者进行测试,基于接口进行功能测试较为常见,也是非常有效的手段。
另外还可以基于系统基础代码进行测试,比如单元测试,集成测试阶段,这一阶段的测试也称白盒测试,我们可以直接对 DAO,Service服务进行测试,这里常用的测试技术包括Junit, TestNG, Mock, Stub等 。
性能自动化
性能自动化测试是通过测试工具模拟高并发负载进行压力测试,以发现软件系统在高负载情况下运行瓶颈, 包括 应用程序本身的性能瓶颈,网络瓶颈,服务器硬件资源瓶颈,数据存储服务器等,通常唯有借助自动化测试工具来完成,常见的性能测试工具包括, Loadrunner, Jmeter, Ngrinder, Gatling等,不管哪一款测试工具,基本有三大部分组成:测试脚本管理,测试场景配置,监控结果。
与功能自动化类似的是,性能测试工作对象也可以面向用户 UI层,或者服务接口提供方,甚至可以直接面向底层基础业务逻辑层,绝大多数通过用户层进行性能测试模拟的是最接近真实用户场景的测试,也是性能测试必然实施的阶段 。
六、自动化测试的流程
七、自动化测试常用工具
下面 我 简要的罗列常见的测试,以及适合其最佳的测试工具。
性能测试工具 :Loadrunner,Jmeter,Ngrinder,Gatling,每款测试工具存在一定的差异及其局限性,可以参考相关文档详细了解。
功能测试工具 : Selenium, QTP
APP自动化测试工具 : Appium, UI Automator, MonkeyRunner, Android UI测试推荐使用UI Automator, 是Android提供的自动化测试框架,基本上支持所有的Android事件操作。IOS应用程序可以选择使用Appium。
接口自动化测试工具 : Junit,TestNG, OKhttp, HttpClient,Spring Restful等,需要有一定的编码经验,当然也有现 成的工具,比如Postman,HttpRequester,SoapUI等。
单元测试工具 : Junit, TestNG, EasyMock, Mockito, JMockit等
八、 什么条件的人适合做自动化测试
1)拥有代码能力
掌握一门开发语言, java、Python、ruby、c#
2)熟悉被测系统
比如你是 web测试,你就得懂js、css、html、xpath
你是移动端测试,你就得具备 Android 开发基础和iOS开发基础,会debug app
你是 C/S测试你就要很熟悉TCP、IP协议
3)掌握一套自动化测试框架(工具)
比如 selenium/appium ; nunit/testng ; robot framework/cucumber
4)善于学习,达到知其然知其所以然
IT行业变化太快, 新兴的东西出现的频率快,只有不断地学习,才能与时俱进,不被淘汰。