标签(空格分隔): 非测试知识
测试需要了解哪些非测试知识
- 小到 Linux/Unix/Windows 操作系统的基础知识,Oracle/MySQL 等传统关系型数据库技术,NoSQL 非关系型数据库技术,中间件技术,Shell/Python 脚本开发,版本管理工具与策略,CI/CD 流水线设计,F5 负载均衡技术,Fiddler/Wireshark/Tcpdump 等抓包工具,浏览器 Developer Tool 等;
- 大到网站架构设计,容器技术,微服务架构,服务网格(Service Mesh),DevOps,云计算,大数据,人工智能和区块链技术等。
可以说,测试工程师需要掌握的这些技术,几乎涵盖了当今主流软件技术的方方面面。当然,你也不可能一口气吃成胖子,所以我就挑选了几个我认为比较重要,又符合当前技术趋势的关键知识点,和你分享。
网站架构的核心知识
- 如果你想要做好互联网产品功能测试以外的其他测试,比如性能测试、稳定性测试、全链路压测、故障切换(Failover)测试、动态集群容量伸缩测试、服务降级测试和安全渗透测试等,就要掌握网站的架构知识。否则,面对这类测试时,你将束手无策。
- 比如,如果你不清楚 Memcached 这类分布式缓存集群的应用场景和基本原理,如果你不清楚缓存击穿、缓存雪崩、缓存预热、缓存集群扩容局限性等问题,你就设计不出针对缓存系统特有问题的测试用例;
- 再比如,如果你对网站的可伸缩性架构设计不了解,不清楚应用服务器的各种负载均衡实现的基本原理,不了解数据库的读写分离技术,你就无法完成诸如故障切换、动态集群容量伸缩、服务降级等相关的测试,同时对于性能测试和全链路压测过程中可能遇到的各种瓶颈,也会很难定位和调整。
- 所以,我强烈建议你要掌握网站架构的核心知识,你不需要像系统架构师那样能够熟练驾驭各种架构,并根据业务选型,但你至少需要理解架构相关的基本知识以及核心原理。
容器技术
- 容器”已不再是一个陌生词汇了,大多数人都在实际工作中或多或少地用到了容器技术。与传统的虚拟机相比,容器技术在轻量化程度、资源占用、运行效率等方面具有压倒性的优势。
除了那些专门做容器测试的测试工程师外,一般的测试工程师接触容器技术的机会也越来越多。
很多中大型互联网企业都在推行容器化开发与运维,开发人员递交给测试工程师的软件版本通常就是一个 Docker Image,直接在容器上进行测试。有些公司还会把测试用例和执行框架也打包成 Docker Image,配合版本管理机制,实现用容器测试容器。
- 对测试开发工程师来说,需要应用容器的场景就更多了。比如,目前主流的 Selenium Grid 就已经提供了官方 Docker 版本,可以直接以容器的方式建立测试执行环境,也可以很方便地在 Pivotal Cloud Foundry 和 Google Cloud Platform 等云计算平台上快速建立测试执行环境。
- 基于 Docker 的 Selenium Grid 大大减轻了批量虚拟机节点上 Web Driver、浏览器版本和守护者进程版本等升级维护的工作量。
测试开发工程师还可以通过 Docker Image 的形式,提供某些测试工具,而不是以传统的安装包或者 JAR 文件的形式,可以实现测试工具开箱即用
- 那对于一个测试工程师来说,怎么才能快速具备容器相关知识,并上手涉及容器技术的互联网产品测试呢?
https://docs.docker.com/get-started/
在这里你完全可以理清 Docker 概念以及具体使用方法,那再结合具体的实战,相信你必定收获颇丰。
云计算技术
一方面,很多企业,尤其是互联网企业都在尝试“上云”, 也就是逐渐把生产环境从原本的集中式数据中心模式转向私有云或者混合云模式。
一些大型互联网企业,通常还会考虑建立自己的测试执行私有云。最典型的就是,基于 Appium + Selenium Grid,搭建移动终端设备的测试执行私有云。所以,除了专门进行云计算平台测试的工程师,必须要掌握云计算的知识外,其他互联网产品的测试工程师,也要能够理解并掌握基本的云计算知识和技术。在我看来,对于云计算的学习,你的侧重点应该是如何使用云提供的基础设施以及服务。我建议的高效学习方法是,参考你所采用的云方案的官方文档,再结合实际案例进行试用,学习效果会更好。你可以尝试用云服务去部署自己的应用,同时还可以结合云平台提供的各类服务(配置服务,数据库服务等)和你的应用做集成。另外,我还建议你尝试用云平台建立自己的小应用集群,体验集群规模的动态收缩与扩展。你还可以尝试在云平台上直接使用 Docker 部署发布你的服务。更进一步,你可以尝试在云端建立自己的 Selenium Gird 集群,现在 Selenium Gird 已经发布了对应的 Docker 版本镜像,你可以非常方便地在云平台上搭建自己的 Selenium Grid。
不要以为这会有多复杂,理解了 Docker 的基本概念以及对应云平台的使用方法,你就可以在短时间内快速搭建起这样的 Selenium 集群。相信以上这些基本的应用场景,都将更好地帮助你理解云平台的核心功能以及使用场景,从而帮你完成对应产品的测试。
DevOps 思维
DevOps 强调的是,开发、测试和运维等组织团队之间,通过高效自动化工具的协作和沟通,来完成软件的全生命周期管理,从而实现更频繁地持续交付高质量的软件,其根本目的是要提升业务的交付能力。
DevOps 的具体表现形式可以是工具、方法和流水线,但其更深层次的内涵还是在思想方法,以敏捷和精益为核心,通过发现问题,以系统性的方法或者工具来解决问题,从而实现持续改进。
对于 DevOps,你可以从深入掌握 Jenkins 之类的工具开始,到熟练应用和组合各种 plugin 来完成灵活高效的流水线搭建,之后再将更多的工具逐渐集成到流水线中以完成更多的任务。
前端开发技术
前端开发技术的发展突飞猛进,新的框架与技术层出不穷,Vue.js,Angular 和 React 等让人应接不暇。并且,还有很多在此类框架基础上开发的组件库可以直接使用,比如 AntD,大大降低了前端开发的难度和时间成本
- 从测试工程师的角度来讲,如果你能够掌握前端开发技术,也就意味着你可以更高效地做前端的测试,更容易发现潜在缺陷。同时,你还可以自己构建测试页面,来完成各类前端组件的精细化测试,大大提高测试覆盖率和效率。
从测试开发工程师的角度来讲,很多测试平台和工具都需要 UI 界面,比如很多公司内部构建的测试数据服务和测试执行服务,如果你能熟练掌握基本的前端开发技术,那你就可以很方便、高效地构建测试平台和工具的 UI- 关于前端技术的学习路径,通常你首先需要掌握最基本的 JavaScript、CSS、JQuery 和 HTML5 等知识,然后再去学习一些主流的前端开发框架,比如 Angular.js、Backbone.js 等。当然现在的 Node.js 的生态圈非常发达,你如果能够掌握 Node.js,那么很多东西实现起来都可以得心应手。
总结
为了应对技术发展趋势,做好软件产品的测试工作,软件测试工程师需要掌握非常多的非测试专业知识,包括:网站架构、容器技术、云计算技术、DevOps 思维,以及前端开发技术的核心知识以及实践。对于这类新技术的学习,我强烈推荐你直接阅读官方网站的文档以及代码示例。这种方式,可以让你少走弯路,同时保证所学内容是最新的。当然,我跟你分享的这些非测试专业知识,只是众多技术的冰山一角,你在实际的测试工作中也会遇到更多的技术,希望你可以举一反三,不断扩充自己的知识面,向着一个优秀测试工程师、架构师努力!
来源:https://www.cnblogs.com/surewing/p/12592468.html