前言
随着软件测试技术的发展,人们已经从最初的纯粹的手工测试转变为手工与自动化测试技术相结合的测试方法。近年来自动化测试越来越受到人们的重视,对于自动化测试的研究也越来越多。
我在做自动化测试期间经历了不少的坑,有被动的坑,也有自己主动挖的坑,所以在这里做了一些总结。其实主要是总结下自动化测试的一些基础的内容,例如何时进行自动化、如何自动化、为何要自动化等等。
>>1. 什么是自动化测试
首先是把人为驱动的测试行为改成机器执行,通过设计的测试用例,由机器按照测试用例的执行步骤对其进行自动操作,输出结果,由测试人员进行比较。
其次自动化测试往往通过一些测试工具或框架,编写自动化测试用例,来模拟手工测试。
最后自动化测试能极大的节省人力、时间和硬件资源,提高测试效率。
>>2. 为什么要进行自动化测试?
大致总结为6点
1)减少手工测试中的重复性工作,提高测试人员的工作成就感和幸福感
2)提高测试用例的执行效率,实现快速的自动化回归测试,快速的给予开发团队质量反馈
3)减少测试人员的数量,提高开发和测试的比例,节省企业的人力成本
4)在线产品的运行状态监控
5)插入大量的测试数据
6)发现更多的BUG
>>3. 什么样的项目需要做自动化?(dev手一抖,auto忙一宿)
1) 需求变更慢
2)周期长
3)脚本可重复利用
4)产品型项目:每个项目只改进少量的功能,但每个项目必须反反复复的测试那些没有改动过的功能
最主要的是要结合公司的状况,如果迭代周期太短,时间又不够,那么就不适合。
举例来说:如果说你花一个月开发自动化系统,但脚本只针对这个系统,如果下一个系统做自动化,脚本又要重新写,成本就会较高,重复利用率较低。
>>4. 工作过程中对于自动化测试的一些误解
1)有了自动化测试不再需要手工测试。
2)自动化测试对有些测试比如:本地化测试、用户体验测试、探索性测试,测试环境搭建方面并不能完全代替手工测试。
3)自动化测试是对产品的运行,对测试点要有一定的手工测试基础,自动化测试和手动测试相辅相成。
4)自动化测试并不仅指自动化运行测试产品,数据处理也是非常重要的一个环节。
>>5. 日常的测试工作中,经常会引入新的需求或是修复bug,那么如何确定新的需求的加入或bug的修复没有在原有功能中引入新的bug呢?
我想为了保证原有功能的正常,对原功能进行测试,这也是测试过程中非常重要的一个环节。
那么在每次修复bug或新增需求时,我们都需要手动的测试所有功能吗?在没有更多的成本、资源、时间时,你依旧需要手动的进行测试,但其成效是否能达到要求呢?
所以这个时候自动化测试的需求就来了,在我们的日常测试工作中,有大量的回归测试需要我们把它们给自动化了。
>>6. 是否需要系统足够稳定才可以自动化我们的测试工作?
一般情况下是在手工测试完毕,等系统相对比较稳定的时候才开始自动化测试的。但是有些企业也有同时进行的情况。
>>7. 是否要考虑100%的自动化?
我认为100%的自动化测试太过保守。对于一个项目来说,应该是有一个合理的自动化测试覆盖区间,具体多少最好,见仁见智。
少的我见过仅仅用自动化测试覆盖冒烟测试的,多的见过自动化测试超过90%的,因人而异,因项目而异。
>>8. 你的自动化套件寿命足够长吗?
如果你选中的自动化场景生命周期不够长,那么请不要自动化它,构建自动化的一个基本准则是让自动化了的测试工作比手工执行成本要明显降低。
当然如果能将实现自动化测试工作做到日常化、版本化,那么其成本降低将是明显的、效率改进也是显著的、是可以获得良好的投资回报率的。
>>9. 常见的自动化测试的工具
自动化测试工具开发语言:Java、Python等
基础测试工具
(1)单元测试:junit(java)、unittest(python)
(2)接口测试:httpclient(java)、 restassure(java)、request(python)
(3)UI测试:selenium webdriver( web )、appium(app)
常见自动化测试工具
(1)接口测试:Jmeter、soapui、postman
(2)UI测试:katalon、Robotframework、Android
>>10. 自动化测试脚本技术
1)线性脚本:录制、回放
2)结构化脚本:含有控制脚本执行的指令,支持顺序、选择和循环3、共享脚本:可以被多个测试用例使用,脚本之间可以互相调用
3)数据驱动脚本:数据驱动脚本是将测试输入存储在独立的文件中,脚本中只存放控制信息。
4)关键字驱动脚本:关键字驱动脚本实际上是较重复的数据驱动技术的逻辑扩展 ,即测试用例的执行步骤(操作,操作对象,操作值)存放在文件中,直接执行。
写在最后
自动化测试技术在现代测试技术中是有一定优势的,但是自动化测试不是在任何情况下都必须的,适当的、或者是有效成本投入,需要我们在合适的时机引入自动化测试,使手工测试和自动化测试实现完美结合。
关注公众号,回复【资料】可获得自动化,python,jmeter等视频教程