来自阿里测试工程师的分享,测试到底都要学些什么?

本文 从 阿里测试工程师亲身经历的角度,和大家聊聊测试一行学习成长的经历。


对自动化测试个人看法

自动化是一个老生常谈的话题,也是一个软件领域非常有技术广度和技术深度的活动,特别是在大型软件的生命 周期上。

个人觉得开展自动化测试的难度不亚于传统意义上的软件开发。

从产品角度来看: 质量领域本身要求从业人员要全面了解产品、有全局风险意识,例如:产品需求/设计阶段能否发现设计缺陷、产品测试阶段能否发现深层次的bug、产品运维阶段能否制定良好的灰度策略、快速发现、定位线上问题,甚至如何做好新/老系统线上过渡切换等等,这里面都有自动化测试可发挥的空间。

从技术的广度和深度来看:

从技术广度来说, 不同的技术领域的质量保障需要使用不同的技术(这些技术领域都有一些代表性的工具,但不一定能完全满足实际的项目自动化测试需求),例如有做JUnit接口测试的、有做Web/App/桌面客户端 UI测试的、有做性能测试的、有做用户体验测试的、有做AI算法测试的、有做IoT的、有做压测的、有做各种专项(如兼容性、安全、多媒体、网络)测试的等等,实在太多了…。


如果考虑到测试工具本身的可用性、系统性,除知道使用工具以外,可能还需要掌握一些基础开发技能,例如:Java/Node/Python后台、React/H5前端、或者Android/iOS客户端;

从技术深度来说, 想通过开发软件去测试另一个软件是否正常,本身就是一个很具挑战的事情,特别是在黑盒的状态下,举个例子,试想你能否开发一款自动化测试工具能够模拟人的意识形态,它能够对当前多如牛毛的App开展自动化测试,很多人此时想起了Monkey、Appium、AirTest或者Applitools,其实这远远不够,因为目前并不具备解决场景构建甚至自我发现缺陷的能力,简单来说,还不具备“认知”App的能力。这个想法不是天方夜谭,事实上很多人正在往这个方向努力ing。自动化测试远远不只是在一个已有的工具上开发自己的脚本,达到所谓的一个通过率或覆盖率,更核心是思考如何在软件生命周期各个阶段提升产品研发效能及稳定性甚至用户体验。

技术新人如何学习自动化测试


软件工程&测试理论基础

各个公司产品形态迥异,因此也制定了不同的软件研发流程。大多数大公司都设置有运营、产品、视觉/交互、开发、测试、运维、技术支持、客服等岗位,应当明白各个角色的职责,以及了解整个产品运转的逻辑。至少应该了解所在公司的研发流程以及当前主流的研发流程(如敏捷开发Scrum),并在项目过程中积极思考,形成自身的软件意识与理念。在校的同学可以多在网上找找资料,有个大概了解。个人理解,软件工程本身是一个浩大的工程,也在日新月异不断地向前发展,它需要长期积累、不断修炼内功,并在实际项目中实践驱动,从业2年、5年、10年、20年都会有不同层次/深度的理解,自动化测试亦是如此。

关于测试理论基础这里不赘述了,网上资料一大把,搜白盒/黑盒、等价类、边界值等关键字就可以找到。

通用计算机基础(其实就是计算机专业相关的大学课程)

建议至少掌握一门编程语言(C/C++/Java/Python,推荐Python,学习成本相对更简单一些)。相比于特定需求/领域的开发人员来说,测试人员对编码技术要求相对会弱化一些(当然并不意味着不需要极客精神、架构思想)。涉及到Web、桌面GUI、Android/iOS的可以到具体应用再学习相应的框架。

掌握基本的数据结构以及在具体程序语言中的应用,例如:list、map。

掌握面向对象程序设计的基本思想。

掌握一种代码管理工具,如git、svn。

掌握Linux的使用及基本命令使用,如: cp、grep、vi/vim等。

掌握关系数据库的基本理论和关系数据库(如MySQL)SQL基本使用、NoSQL(如Redis)的基本使用。

掌握基础的计算机网络理论,如TCP/UDP协议、IP划分。

接下来,我们就需要站在巨人的肩膀上了。这部分可以根据实际需要进行学习,涉及的内容实在太多了,我这里主要从App自动化测试的角度给出一些工具使用、方向学习建议,大家搜关键字应该都能找到一些资料。

服务端:

白盒单元测试:Junit(Java)、unittest(Python)、gtest(C++)

http接口测试: Postman

抓包工具: Charles、Wireshark

压测: Jmeter,在大厂里面都会有特定的一些写好的工具可以使用。

链路依赖分析: 梳理应用间的依赖关系,提供压测模型,大厂里面也有一些工具可以使用。

监控&日志分析: 应用稳定性监控,如qps、rt,服务器负载、cpu监控等。 日志分析这块可以做一些基于规则的错误日志监控、甚至基于AI的方式(如: 机器学习)对日志大数据进行聚类、问题分析/定位。

客户端(Android/iOS/H5):

UI:Appium、Macaca、Airtest

性能(CPU/内存/帧率): Android Studio、Instruments(iOS)

稳定性: Monkey

兼容性: 各种云真机平台

事实上,即使非常熟练掌握了以上工具,也无法达到完全释放人力的目的,甚至在自动化实践过程中会存在各种各样的问题(例如如何针对具体的场景设计自动化用例、提升覆盖率、如何维护/构造测试数据、如何进行精确校验、如何提高执行稳定性、如何缩短执行时长、如何监控线上问题等等)。

这就需要我们更加深度的去了解产品形态、在已有工具解决不了问题时,怎么去用创新的思维看待各个阶段面临的问题、甚至创造工具,这已经不仅仅只是技术本身的问题了,而是如何去挖掘、思考问题、如何去运用技术的问题了。实际上自动化测试可以归纳为如下几个阶段,这也是近2年智能化测试的研究方向:

资源分享

下面这些是我的收集和整理的资料,对于开始学习【软件测试】或是技能进阶升职加薪的朋友来说,绝对是最全面的教程仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你


对自动化测试存在的一些误区


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 9,076评论 28 54
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,507评论 4 8
  • 怎么对待生活,它也会怎么对你 人都是哭着来到这个美丽的人间。每个人从来到尘寰到升入天堂,整个生命的历程都是一本书,...
    静静在等你阅读 5,422评论 1 6

友情链接更多精彩内容