绝大多数测试同学都是从功能测试做起的,工作忙忙碌碌,每天在各种业务需求学习和点点中度过,过了好多年发现自己还只是一个功能测试工程师。
随着移动互联网的发展,从业人员能力的整体进步,软件测试需要具备的能力要求越来越高,打开招聘网站,90%的招聘都会有如下这一条。
至少熟悉一门编程语音,自动化测试XX年经验。
所以,越来越多的测试工程师开始迷茫,不管是被动的还是主动的,这个时代需要我们不断学习去保持自己的竞争力,因为互联网红利越来越少,你的水平高低,决定了你在公司的价值,也决定了你未来职业选择的优势,而学习自动化是你不得不选择的一条路。
在学习自动化之前,我们需要明确自动化测试是什么?
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。
自动化测试的主要目标是提高测试效率,降低项目成本,而不是完全取消手工测试。
自动化测试的意义?
- 提升效率,减少重复工作:勿容置疑,最大的意义就是提高测试效率,手工测试的最大问题在于,面对快速迭代,无法快速完整的执行冒烟用例。
- 节省人力成本**:执行测试脚本可以实现无人值守,不限时间的测试。从而让测试人员可以做更多有意义事情,比如探索性测试等。
- 保证每次测试的完整性和一致性。
- 发现更多隐藏问题:手工测试无法验证系统的稳定性、可靠性等,需要通过工具等自动化手段,对系统进行压力测试、稳定性测试等。
如何选择自动化测试的方向?
测试金字塔
测试金字塔自上而下依次是UI测试、接口测试、单元测试。越到高层影响的范围越大,需要的成本越高。
在《google 测试之道》一书,对于google产品,70%的投入为单元测试,20%为集成、接口测试,10% 为UI层的自动化测试。
越底层的自动化测试效率越高,价值越高。
测试金字塔中我们可以了解到,从下到上每个阶段对应的测试内容:
- 单元测试,就是代码测试阶段。
- 接口测试:可以进行的测试工作有接口测试、接口性能测试等。
- UI阶段:业务功能测试、界面显示等测试。
对应上面的测试内容,自动化测试的学习方向或者切入点一般有以下几类:
- UI自动化测试
- 接口自动化测试
- 代码测试(单元测试)
- 性能测试
- 其它专项测试
- 综合以上能力进阶为测试开发工程师。
前期的技能准备?
- 掌握一门门编程语言,不需要多深入,常用语法及概念,理解编程思想,推荐python,其次java。
- 已经有一定的软件测试基础理论,如测试用例编写、HTTP协议等。
- 了解Javascript, CSS、xml、html的知识。
- 环境搭建能力及编程工具使用。
选择好自己的自动化切入点之后,如何学习自动化测试?
- 首先google、百度上看一些博客或者教程,测试自动化测试工具如何使用,常用的测试框架有哪些。
- 先模仿再创新,从网上或者公司已有的自动化代码中学习,找一个简单的项目开始实践。
- 可以从github上学习优秀的自动化测试案例代码。
- 多敲代码,多思考,搞清楚每行代码的意义。
- 构建持续集成。
- 学习测试平台开发能力,能够独立开发测试平台。
自动化测试不是万能的,手工测试的必要性
首先,自动化测试的投入并不低,所以对于项目是否需要做自动化测试,以及做什么类型的自动化测试都需要进行评估。
其次,自动化测试涉及的测试范围有限,一般是项目的核心业务、主功能或者执行重复度较高的用例,并不能百分之百的覆盖所有测试用例,并且很多测试项必须人工检查,比如页面的布局、特殊的业务逻辑判断等。
最后,自动化测试只是一种手段,测试实施的本质是人,自动化只是一种补充,多种手段用,才能更好更全面的提升产品质量。