软件测试需要学什么?

【软件测试需要学什么?】自动化是一个老生常谈的话题,也是一个软件领域非常有技术广度和技术深度的活动,特别是在大型软件的生命周期上 。
 
个人觉得开展自动化测试的难度不亚于传统意义上的软件开发 。
 
从产品角度来看:质量领域本身要求从业人员要全面了解产品、有全局风险意识,例如:产品需求/设计阶段能否发现设计缺陷、产品测试阶段能否发现深层次的bug、产品运维阶段能否制定良好的灰度策略、快速发现、定位线上问题,甚至如何做好新/老系统线上过渡切换等等,这里面都有自动化测试可发挥的空间 。
 
从技术的广度和深度来看:
 

  • 从技术广度来说,不同的技术领域的质量保障需要使用不同的技术(这些技术领域都有一些代表性的工具,但不一定能完全满足实际的项目自动化测试需求),例如有做JUnit接口测试的、有做Web/App/桌面客户端 UI测试的、有做性能测试的、有做用户体验测试的、有做AI算法测试的、有做IoT的、有做压测的、有做各种专项(如兼容性、安全、多媒体、网络)测试的等等,实在太多了...... 。如果考虑到测试工具本身的可用性、系统性,除知道使用工具以外,可能还需要掌握一些基础开发技能,例如:JAVA/Node/Python后台、React/H5前端、或者Android/IOS客户端;
  • 从技术深度来说,想通过开发软件去测试另一个软件是否正常,本身就是一个很具挑战的事情,特别是在黑盒的状态下,举个例子,试想你能否开发一款自动化测试工具能够模拟人的意识形态,它能够对当前多如牛毛的App开展自动化测试,很多人此时想起了Monkey、Appium、AirTest或者Applitools,其实这远远不够,因为目前并不具备解决场景构建甚至自我发现缺陷的能力,简单来说,还不具备“认知”App的能力 。这个想法不是天方夜谭,事实上很多人正在往这个方向努力ing 。自动化测试远远不只是在一个已有的工具上开发自己的脚本,达到所谓的一个通过率或覆盖率,更核心是思考如何在软件生命周期各个阶段提升产品研发效能及稳定性甚至用户体验 。
  技术新人如何学习自动化测试


    推荐阅读