软件测试52讲笔记--10 软件测试工程师需要掌握的非测试知识有哪些?

这是我购买的”极客时间”上的一套课程的笔记,总共52讲,定期对其中的内容做一笔记,巩固学习内容。

10 软件测试工程师需要掌握的非测试知识有哪些?

开发工程师通常是”深度遍历”,关注的是”点”;而测试工程师通常是”广度遍历”,关注的是”面”。

  • 小到 Linux/Unix/Windows 操作系统的基础知识,Oracle/MySQL 等传统关系型数据库技术,NoSQL 非关系型数据库技术,中间件技术,Shell/Python 脚本开发,版本管理工具与策略,CI/CD 流水线设计,F5 负载均衡技术,Fiddler/Wireshark/Tcpdump 等抓包工具,浏览器 Developer Tool 等;
  • 大到网站架构设计,容器技术,微服务架构,服务网格(Service Mesh),DevOps,云计算,大数据,人工智能和区块链技术等。

下面挑选几个比较重要,而又符合当前技术趋势的关键知识点。

网站架构的核心知识

想要做好互联网产品的如下测试,就要掌握网站的架构知识:

  • 性能测试
  • 稳定性测试
  • 全链路压测
  • 故障切换测试
  • 动态集群容量伸缩测试
  • 服务降级测试
  • 安全渗透测试
  1. 比如,如果你不清楚 Memcached 这类分布式缓存集群的应用场景和基本原理,如果你不清楚缓存击穿、缓存雪崩、缓存预热、缓存集群扩容局限性等问题,你就设计不出针对缓存系统特有问题的测试用例;
  2. 再比如,如果你对网站的可伸缩性架构设计不了解,不清楚应用服务器的各种负载均衡实现的基本原理,不了解数据库的读写分离技术,你就无法完成诸如故障切换、动态集群容量伸缩、服务降级等相关的测试,同时对于性能测试和全链路压测过程中可能遇到的各种瓶颈,也会很难定位和调整。

容器技术

与传统的虚拟机相比,容器技术在轻量化程度、资源占用、运行效率等方面具有压倒性的优势。
作为新时代的测试开发工程师,必须像熟练使用VMware一样,掌握Docker和Kubernetes的原理和使用方法。
学习路径
那么推荐的学习资料呢,是Docker官网的教程。

云计算技术

  • 很多企业,尤其是互联网企业都在尝试”上云”。

必须理解服务在云端部署的技术细节,才能更好地完成测试任务。

  • 测试基础服务作为提供测试服务的基础设施,比如测试执行环境服务 (Test Execution Service) 和测试数据准备服务 (Test Data Service) 等,也在逐渐走向云端。

学习路径
可以尝试用云服务去部署自己的应用,同时还可以结合云平台提供的各类服务和你的应用做集成。
更进一步,可以尝试在云端接力自己的Selenium Gird集群。
理解了Docker的基本概念以及对应云平台的使用方法,就可以再短时间内快速搭建起这样的Selenium集群。

DevOps思维

DevOps的具体表现形式可以是工具、方法和流水线,但其更深层次的内涵还是在思想方法,以敏捷和精益为核心,通过发现问题,以系统性的方法或者工具来解决问题,从而实现持续改进。
学习路径
对于DevOps的学习路径,可以从深入掌握Jenkins之类的工具开始,到熟练应用和组合各种plugin来完成灵活高效的流水线搭建,之后再将更多的工具逐渐集成到流水线中以完成更多的任务。

前端开发技术

如果能够掌握前端开发技术,也就意味着可以更高效地做前端的测试,更容易发现潜在缺陷。
同时,还可以自己构建测试页面,来完成各类前端组件的精细化测试,大大提高测试覆盖率和效率。
学习路径
首先需要掌握最基本的JavaScript、CSS、JQuery和HTML5等知识,然后再去学习一些逐流的前端开发框架,比如Angular.js, Backbone.js等。当然现在Node.js的生态圈非常发达,如果能够掌握,很多东西实现起来都可以得心应手。
推荐下载一些样例代码进行学习,同时学习使用脚手架从无到有去建立自己的前端应用。

【心得】这些知识零零散散的也了解一些,但是作者分类总结的非常赞!比自己零散的看起来,要更有感觉一些。