对于专门做自动化测试同学来讲,测试分为手工测试和自动化测试。那么什么是自动化测试,我们为什么需要自动化测试,自动化测试目前主要应用在哪些领域呢?
1.什么是自动化测试
如果您是手工测试的同学,那么对于自动化测试那至少是听说过的。跟手工测试相对的,即是自动化测试。这里举个例子说明,或许大家都明白,在工厂里面的食品加工、磨具冲压,都需要用到机器,通过机器代替人工完成这些高难度的工作,在软件行业也是同理,通过程序、工具、或者框架等代替手工去发现软件的问题、验证软件的功能的手段,我们可以称之为自动化测试。
2.为什么需要自动化测试
手工测试的同学可能比较清楚,在工作中,总会有这样的情况:1.重复的功能、重复的动作,每天都在反复进行;2.软件的部分功能,通过手工测试的手段无法达到,比如,压力测试,难道需要一个人在哪儿持续点击UI几个小时?3.性能测试。比如同时在线1000个用户,在开发期间,去找一千个测试人员去做吗,很明显不太符合实际…为了解决这些痛点,自动化测试诞生了。因此自动化测试是为了解决当前测试无法解决的一些问题,提高测试效率,提高产品质量,而不是狭隘的为了解放手工测试人员的双手。因为就当下而言,手工测试在很多领域仍然是无法替代。
3.自动化测试目前常用的场景
小编在此为大家归纳了几类常见的自动化测试的应用场景。
1.项目周期长
如果项目周期太短,比如一两个月,那么这种不太适合做自动化测试,因为当环境框架等搭建好,开发好时,可能项目已经结束了,投入收益低。不过对于短期的项目,可以借助一些工具辅助测试提高效率即可。项目周期长的,往往需要经常进行回归验证,覆盖测试等,自动化测试可以节约比较大的工作量。
2.需求稳定,不会频繁变更
虽然开发不喜欢需求经常变更,自动化测试也是一样的。如果软件的架构设计的比较好,需求也比较明确,那么作为管理者,可以根据这些实际情况,考虑是否需要投入自动化测试以提高测试效率和产品质量了。
3.测试用例执行频繁
测试用例数量庞大,执行时间漫长,执行频率高,都可以考虑引入自动化测试。这些问题,可能在软件的开发初期,不是很明显,所以需要决策者要有远见,预测将来随着时间的推移,测试用例的数量、执行时间、执行重复度等是否会增大,自动化测试投入产出比是否值得。
4.手工测试无法实现
比如常见的高并发操作,收集设备资源(CPU、内存、磁盘IO、网络带宽等),长时间稳定性测试(7x24小时),多用户操作,或者存在大量的回归测试,该尽量考虑实现自动化测试。
4.自动化测试类型
1.单元测试
一般都有开发人员实现和维护,主要是针对各功能模块的函数调用进行测试,粒度较小,实现简单,甚至可以通过工具自动生成单元测试用例
2.回归测试
需要对大量用例进行回归验证,需要增加对应的自动化测试用例跟踪缺陷是否解决等场景,也可以使用自动化测试。
3.性能测试
压力测试、稳定性测试、吞吐量测试等,这些都是手工测试无法胜任的任务,必须引入自动化测试
4.接口测试
API接口一般比较固定,甚至能够用工具生成接口和用力,非常适合自动化测试。
5.协议测试
由于协议(如HTTP,FTP,RTSP,HLS等)定义规范,接口说明比较严谨且很少改变,对协议兼容性进行测试时,也非常适合引入自动化测试。
可能有些同学会问,为什么没有归纳UI自动化测试呢,其实UI自动化测试只是测试的一种方式,回归测试、性能测试等都可以插入UI自动化测试,而UI自动化测试通常来说也不适合常规的测试,而比较适合功能变化较少,大量用力需要回归验证等场景。
当下各行各业,各个公司一般都已经实现或者正在实现自动化测试,比如我们常见的行业有,金融行业、汽车行业、游戏行业等,应用程序也包含app、windows应用、web应用等,因此自动化测试既比较成熟,也算比较主流吧。