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

 一个优秀的测试工程师,必须具备宽广的知识面,才能设计出有的放矢的测试用例,保证整个软件产品的质量。除了测试专业知识外,你还要掌握哪些知识,才能一路披荆斩棘,成长为一名优秀的测试工程师,或者是测试架构师。

与开发工程师相比,你需要了解的技术种类要多得多,视野也要宽广很多,只是在每类技术的深度方面不如开发工程师。

你可以参照下面这个比喻,来理解开发工程师和测试工程师的对知识的要求:开发工程师通常是“深度遍历”,关注的是“点”;而测试工程师通常是“广度遍历”,关注的是“面”。

那么,测试工程师需要掌握的非测试知识主要有哪些呢?

如果你花时间静下心来仔细想一下,很可能会把自己吓一大跳,需要了解掌握的非测试知识实在是太多了,这简直就是一个mini版的系统架构师啊!

  • 小到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文件的形式,可以实现测试工具开箱即用。

可见,容器技术已经慢慢渗透到软件研发与运维的各个层面,作为新时代的测试开发工程师,你必须像熟练使用VMware一样,掌握Docker和Kubernetes的原理和使用方法。

那对于一个测试工程师来说,怎么才能快速具备容器相关知识,并上手涉及容器技术的互联网产品测试呢?

云计算技术

一方面,很多企业,尤其是互联网企业都在尝试“上云”, 也就是逐渐把生产环境从原本的集中式数据中心模式转向私有云或者混合云模式。

前段时间,eBay的一些产品线就对外宣布了和Pivotal Cloud Foundry的合作,会将部分产品线迁移到云端。显然,作为测试工程师,你必须理解服务在云端部署的技术细节才能更好的完成测试任务。

另一方面,测试基础服务作为提供测试服务的基础设施,比如测试执行环境服务(Test Execution Service)和测试数据准备服务(Test Data Service)等,也在逐渐走向云端。 比如,国外非常流行的Sauce Labs,就是一个著名的测试执行环境公有云服务。

一些大型互联网企业,通常还会考虑建立自己的测试执行私有云。最典型的就是,基于Appium + Selenium Grid,搭建移动终端设备的测试执行私有云。

所以,除了专门进行云计算平台测试的工程师,必须要掌握云计算的知识外,其他互联网产品的测试工程师,也要能够理解并掌握基本的云计算知识和技术。

对于云计算的学习,你的侧重点应该是如何使用云提供的基础设施以及服务。我建议的高效学习方法是,参考你所采用的云方案的官方文档,再结合实际案例进行试用,学习效果会更好。

你可以尝试用云服务去部署自己的应用,同时还可以结合云平台提供的各类服务(配置服务,数据库服务等)和你的应用做集成。另外,我还建议你尝试用云平台建立自己的小应用集群,体验集群规模的动态收缩与扩展。你还可以尝试在云平台上直接使用Docker部署发布你的服务。

更进一步,你可以尝试在云端建立自己的Selenium Gird集群,现在Selenium Gird已经发布了对应的Docker版本镜像,你可以非常方便地在云平台上搭建自己的Selenium Grid。

不要以为这会有多复杂,理解了Docker的基本概念以及对应云平台的使用方法,你就可以在短时间内快速搭建起这样的Selenium集群。

相信以上这些基本的应用场景,都将更好地帮助你理解云平台的核心功能以及使用场景,从而帮你完成对应产品的测试。

DevOps思维

DevOps 强调的是,开发、测试和运维等组织团队之间,通过高效自动化工具的协作和沟通,来完成软件的全生命周期管理,从而实现更频繁地持续交付高质量的软件,其根本目的是要提升业务的交付能力。

DevOps的具体表现形式可以是工具、方法和流水线,但其更深层次的内涵还是在思想方法,以敏捷和精益为核心,通过发现问题,以系统性的方法或者工具来解决问题,从而实现持续改进。

因此,测试工程师也必须深入理解DevOps思想的核心和精髓,才能在自动化测试和测试工具平台的实现上做出最契合的设计。无论是测试工程师,还是测试开发工程师,都会成为DevOps实践成功落地的重要推动力。

要想真正学习和掌握DevOps,并不是简单地学习几款工具的使用,更重要的是需要有DevOps思维,能够将各个工具有机结合,提供高效的CI/CD流水线。

对于DevOps,我建议的学习路径是,你可以从深入掌握Jenkins之类的工具开始,到熟练应用和组合各种plugin来完成灵活高效的流水线搭建,之后再将更多的工具逐渐集成到流水线中以完成更多的任务。

相信通过这样的学习,当你再面对相关的测试工作时,必然可以轻松应对。

前端开发技术

前端开发技术的发展突飞猛进,新的框架与技术层出不穷,Vue.js,Angular和React等让人应接不暇。并且,还有很多在此类框架基础上开发的组件库可以直接使用,比如AntD,大大降低了前端开发的难度和时间成本。

但是,前端开发技术的发展和测试又有什么关系呢?

从测试工程师的角度来讲,如果你能够掌握前端开发技术,也就意味着你可以更高效地做前端的测试,更容易发现潜在缺陷。同时,你还可以自己构建测试页面,来完成各类前端组件的精细化测试,大大提高测试覆盖率和效率。

从测试开发工程师的角度来讲,很多测试平台和工具都需要UI界面,比如很多公司内部构建的测试数据服务和测试执行服务,如果你能熟练掌握基本的前端开发技术,那你就可以很方便、高效地构建测试平台和工具的UI。

关于前端技术的学习路径,通常你首先需要掌握最基本的JavaScript、CSS、JQuery和HTML5等知识,然后再去学习一些主流的前端开发框架,比如Angular.js、Backbone.js等。当然现在的Node.js的生态圈非常发达,你如果能够掌握Node.js,那么很多东西实现起来都可以得心应手。

个人推荐从网上下载一些样例代码进行学习,同时学习使用脚手架从无到有去建立自己的前端应用。

总结

为了应对技术发展趋势,做好软件产品的测试工作,软件测试工程师需要掌握非常多的非测试专业知识,包括:网站架构、容器技术、云计算技术、DevOps思维,以及前端开发技术的核心知识以及实践。

对于这类新技术的学习,我强烈推荐你直接阅读官方网站的文档以及代码示例。这种方式,可以让你少走弯路,同时保证所学内容是最新的。

分享的这些非测试专业知识,只是众多技术的冰山一角,你在实际的测试工作中也会遇到更多的技术,希望可以举一反三,不断扩充自己的知识面,向着一个优秀测试工程师、架构师努力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/605638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何清除快速访问

如何清除快速访问 手动清除快速访问项打开注册表编辑器:按 Windows 键 R 打开运行对话框,输入 regedit,然后按 Enter。使用命令提示符 手动清除快速访问项 打开文件资源管理器:按 Windows 键 E。 访问快速访问:点击…

sqlite插入语句id自增列问题

sqlite给主键id设置AUTOINCREMENT自增在插入数据的时候报错table has x columns but x-1 values were supplied 为什么自增列要显示不提供,sqlite需要提供自增列table ResTools has 7 columns but 6 values were supplied SQL Statement:insert into ResTools values(管理系统w…

6.综合案例

1. 需求描述 1.1 显示所有员工信息 URI:emps 请求方式:GET 显示效果 1.2 添加操作- 去往添加页面 显示添加页面: URI:emp 请求方式:GET 显示效果 1.3 添加操作- 添加员工 添加员工信息: URI:emp 请求方式:POST 显示效果:完成添加, 重定向到 list 页面。 1.4…

【深度学习:Domain Adversarial Neural Networks (DANN) 】领域对抗神经网络简介

【深度学习:Domain Adversarial Neural Networks】领域对抗神经网络简介 前言领域对抗神经网络DANN 模型架构DANN 训练流程DANN示例 GPT示例 前言 领域适应(DA)指的是当不同数据集的输入分布发生变化(这种变化通常被称为共变量变…

RT-Thread 内核基础(三)

程序内存分布 一般MCU包含的存储空间有:片内Flash与片内RAM,RAM相当于内存,Flash相当于硬盘。 编译器会将一个程序分类为好几个部分,分别存储在MCU不同的存储区。 Keil工程在编译完之后,会有相应的程序所占用的空间提…

Hive实战处理(二十三)hive整合phoenix

背景: 业务表使用hbase存储,使用hive整合phoenix,使用sql语句进行数据查询 (如果可以的话使用网关API对外提供服务)统一接口调用,查询上线比较高效。 1、hive整合phoenix的原理 Hive支持使用HDFS之外的存储系统作为底…

图灵日记之java奇妙历险记--抽象类和接口

目录 抽象类概念抽象类语法 接口概念规则使用特性实现多个接口接口的继承接口使用实例Clonable接口和深拷贝抽象类和接口的区别 Object类 抽象类 概念 在面向对象的概念中,所有对象都是通过类来描述的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够…

SD-WAN:提升连锁零售企业异地组网稳定性

连锁零售企业往往拥有众多分布在不同地区的分支机构和零售店,为保证企业高效运转,各地区之间的网络连接必须稳定可靠。但基于各地网络基础设施的不同和网络延迟、带宽等限制,异地组网往往并不稳定。在这背景下,SD-WAN成为连锁零售…

第6章-用户标签体系与用户画像

目录 标签体系 标签分类 业务指标 OSM模型 北极星指标 北极星指标拆解</

拼多多详情API开启运营比价新纪元

随着互联网的快速发展&#xff0c;电商行业正在迅速崛起&#xff0c;拼多多作为一家新兴的电商平台&#xff0c;凭借其独特的营销策略和创新的商业模式&#xff0c;成为了电商行业的一匹黑马。在拼多多的成功背后&#xff0c;其详情API接口营销起到了至关重要的作用。本文将详细…

UV贴图和展开初学者指南

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 介绍 这正是本文的主题——UV贴图——登上舞台的时候。大多数 3D 建…

在win10和Linux上配置SSH 无密码登录

文章目录 一、用途二、在本地机器上使用ssh-keygen产生公钥私钥对1&#xff09;在Linux (或macOS) 上产生SSH公私钥的方法2&#xff09;在win10上产生SSH公私钥的方法a&#xff09;检查windows 本地是否安装有sshb&#xff09;在本地生成SSH密钥对&#xff08;公钥和私钥&#…

基于Java SSM框架实现时间管理系统项目【项目源码+论文说明】

基于java的SSM框架实现时间管理系统演示 摘要 随着科学技术的飞速发展&#xff0c;各行各业都在努力与现代先进技术接轨&#xff0c;通过科技手段提高自身的优势&#xff1b;对于时间管理系统当然也不能排除在外&#xff0c;随着网络技术的不断成熟&#xff0c;带动了时间管理…

SQL Server从0到1——提权

xp_cmdshell提权 xp_cmdshell在前面写webshell已经讲解过了&#xff0c;在这里不在重复 sp_oacreate提权 启用&#xff1a; EXEC sp_configure show advanced options, 1; RECONFIGURE WITH OVERRIDE; EXEC sp_configure Ole Automation Procedures, 1; RECONFIGURE WITH OV…

【设计模式之美】SOLID 原则之一:怎么才算是单一原则、如何取舍单一原则

文章目录 一. 如何判断类的职责是否足够单一&#xff1f;二. 类的职责是否设计得越单一越好&#xff1f; 开始学习一些经典的设计原则&#xff0c;其中包括&#xff0c;SOLID、KISS、YAGNI、DRY、LOD 等。 本文主要学习单一职责原则的相关内容。 单一职责原则的定义&#xff1a…

MySQL运维实战(3.1) MySQL官方客户端使用介绍

作者&#xff1a;俊达 引言 MySQL是MySQL安装包默认的客户端&#xff0c;该客户端程序通常位于二进制安装包的bin目录中&#xff0c;或者通过rpm安装包安装mysql-community-client&#xff0c;是数据库管理系统的重要组成部分。MySQL客户端不仅仅是一个简单的软件工具&#x…

程序员必知!中介者模式的实战应用与案例分析

中介者模式通过引入中介类降低对象间耦合度&#xff0c;在电商平台中&#xff0c;卖家、买家、物流公司和支付平台原本需复杂交互&#xff0c;在引入“交易中介”类后&#xff0c;各角色只需与中介交互&#xff0c;由中介协调各方操作&#xff0c;从而简化了交互流程&#xff0…

APP加固技术及其应用

文章目录 引言 APP加固的概念 APP加固的方案 APP加固在实际开发中的应用 总结 引言 在移动应用开发过程中&#xff0c;APP加固技术起到了非常重要的作用。APP加固是将apk文件进行混淆加密&#xff0c;以防止别人反编译获取我们的源码和资源文件。目前市场上主流的APP加固…

手写一个加盐加密算法(java实现)

目录 前言 什么是MD5&#xff1f;&#xff1f; 加盐算法 那别的人会不会跟你得到相同的UUID&#xff1f; 如何使用盐加密&#xff1f; 代码实现 前言 对于我们常见的登录的时候需要用到的组件&#xff0c;加密是一个必不可少的东西&#xff0c;如果我们往数据库存放用户…

零售EDI:Petco EDI对接指南

Petco 始于1965年&#xff0c;是一家美国宠物零售商&#xff0c;提供各种宠物产品和服务以及某些类型的活体小动物。起初Petco只是一家邮购兽医用品公司&#xff0c;后发展为一家成熟的宠物食品和供应链的公司。Petco与其供应商之间是如何传输业务数据的呢&#xff1f; 通过EDI…