测试工程师如何学习系统架构

面对同一个“知识点”不同的工作角色需要考虑的问题不一样,比如在系统架构中会使用到消息队列功能,系统架构师,开发人员,测试人员,运维人员,需求人员等需要考虑的问题不一样。

图片

系统架构师在考虑消息队列功能时,你需要考虑业务需求匹配,明确消息队列用于解决的具体业务场景,如异步处理、解耦服务、数据同步等,考虑消息的类型(命令、事件、请求-响应等)和数据量,选择最适合的队列模型;性能与可扩展性:评估系统峰值时的消息吞吐量需求,选择能够支持高并发和低延迟的解决方案,设计可水平扩展的架构,确保随着业务增长能平滑增加消息队列的处理能力;可靠性与数据一致性,选择支持持久化、高可用部署的消息队列服务,保证数据不丢失,设计消息确认机制,确保消息被至少一次或恰好一次处理,维持数据一致性;消息顺序性,对于需要保证消息顺序的场景,考虑消息队列是否支持顺序消息特性,或设计相应的处理逻辑;兼容性和集成,评估消息队列与现有技术栈、中间件和服务的兼容性。设计接口和协议,确保消息队列能无缝集成到系统架构中;消息持久化策略,根据业务需求权衡消息的持久化成本与数据安全性,选择合适的持久化级别;未来扩展性,预估未来可能的业务和技术变化,选择灵活、可扩展性强的消息队列方案。

你就不仅要掌握各个不同消息队列实现的技术细节,还清楚不同方案的优势和劣势,最关键的是能够根据业务的应用场景和特点来选择最合适的消息队列方案。

开发人员在考虑消息队列功能时,你就需要掌握消息队列的使用方法、消息 push 和 pull 的模式,以及在应用中如何以异步方式来对消息进行妥善处理,并且还要考虑到异常场景的处理。

运维人员在考虑消息队列功能时,需要考虑系统的可靠性与数据一致性,消息是否能确保从生产者到消费者可靠传输,无丢失、重复或乱序?如何设计消息确认机制,如ACK/NACK机制,来确保消息被正确处理?数据持久化策略,如何在性能与数据安全性之间找到平衡?

还需要考虑系统的性能与可扩展性,消息队列在高并发场景下的吞吐量与延迟表现如何?如何根据业务增长动态扩展消息队列容量?选择合适的消息队列类型,如队列、主题、发布/订阅模型,以适应不同业务需求;系统的监控与告警:实施有效的监控体系,包括消息堆积、队列长度、消费速率等关键指标。设置合理的告警策略,确保及时发现并响应系统异常。

测试人员在考虑消息队列功能时,你需要验证消息的完整性和准确性,验证消息在生产和消费过程中是否保持完整,没有数据丢失或损坏;确认消息内容是否与预期一致,格式是否正确。消息的顺序性,如果业务逻辑要求消息有序处理,需验证消息是否按照发送顺序被消费;消息的延迟与吞吐量,测试消息从发送到接收的延迟时间,确保满足业务需求,测量消息队列在不同负载下的吞吐量,评估其性能表现。消息的持久化与非持久化,验证消息是否按设定的持久化策略正确存储或仅在内存中处理,在系统重启或故障恢复后,检查持久化消息是否可恢复;消息的重复处理,测试消息重复发送或消费的情况,确保系统能正确处理重复消息,避免副作用;消息队列的伸缩性,测试消息队列在水平扩展或收缩时,对消息处理的影响,确保平滑扩容缩容;消费者行为验证。确保消费者正确订阅了预期的队列或Topic,并能正确消费消息。测试消费者在异常情况下的行为,如短暂断开连接后的重连和消息重新消费;你需要知道消息队列的基本原理以及在被测系统中的部署情况,同时应该知道如何访问消息队列或者队列中消息的情况。在需要模拟消息进行解耦测试的场合,你还需要知道如何添加测试消息以满足测试的目的。

个人推崇大处着眼,小处着手,先知道有什么,再弄懂怎么做。在具体工作中,对接触到的每个新知识、新系统、新技术,都抱着一种完善个人知识体系的心态,研究一下,深挖一下,时间久了,效果就会逐渐显现出来“由广度到深度”的“深度”是指,对于架构中某一领域的特定知识在项目中要实际使用的时候,必须要刨根问底,通过实际的测试来加深对架构知识细节的理解。

“自上而下”是指,在实际测试项目中,当需要设计涉及架构的测试用例和场景的时候,千万不要直接基于“点”来设计测试,而是应该,首先通过全局阅读理解上层架构设计;然后,在理解了架构设计的初衷和希望达成目的的基础上,再向下设计测试场景和用例,这个过程,一方面可以帮你设计出有针对性的测试用例,另一方面可以帮助你理解架构在实际项目中是如何落地的。

图片

作为测试从业者,如何系统的学习系统架构,可以从以下几个方向进行去考虑学习?

  1. 理解系统架构设计原则:

    • 学习不同的架构模式,如微服务架构、SOA(面向服务的架构)、单体架构等,理解它们的优缺点及适用场景。

    • 掌握高可用性、可扩展性、安全性等关键设计原则,这有助于在测试设计中预见到潜在的问题点。

  2. 深入被测系统架构:

    • 分析项目所使用的具体技术栈,比如前端的React或Vue,后端的Spring Boot、Django等,理解它们的工作原理。

    • 熟悉系统间的交互方式,如RESTful API、消息队列、RPC等,以及数据库设计和数据流。

  3. Docker与容器化技术:

    • 学习Docker容器技术基础,包括Docker镜像、容器、网络、存储等概念。

    • 掌握使用Docker部署和配置测试环境,以模拟生产环境进行更贴近实际的测试。

  4. 持续集成/持续部署(CI/CD):

    • 理解CI/CD流程及其在软件开发中的作用,学习如何将测试集成到自动化构建和部署管道中。

    • 掌握Jenkins、GitLab CI/CD、Travis CI等工具的使用。

  5. 云平台与服务:

    • 了解主流云服务商(如AWS、Azure、阿里云)提供的服务,特别是与测试相关的服务,如性能测试、负载测试服务。

    • 学习如何在云环境中部署和测试应用程序。

  6. 数据库与数据管理:

    • 掌握至少一种主流数据库(如MySQL、PostgreSQL、MongoDB)的使用,理解SQL查询优化和数据库性能测试。

    • 学习NoSQL数据库和大数据处理技术,如果涉及到大数据测试的话。

  7. 安全性和性能测试:

    • 学习安全测试的基本方法,包括渗透测试、安全扫描等,理解OWASP Top 10等安全标准。

    • 深入学习性能测试工具(如LoadRunner、JMeter),掌握性能测试计划、执行与结果分析。

  8. DevOps文化与协作:

    • 理解DevOps理念,促进开发、测试和运维之间的高效协作。

    • 提升沟通与协调能力,有效参与跨部门的讨论和决策过程。

  9. 自动化测试框架与工具:

    • 掌握自动化测试框架(如Selenium、Appium、JUnit、TestNG)的搭建与维护,提升测试效率。

    • 学习API测试工具如Postman、Swagger,进行接口测试。

通过以上这些方向的学习,软件测试工程师不仅能够更好地理解系统的整体运作,还能设计出更加全面和有效的测试策略,从而提高测试覆盖率,减少缺陷漏测,保障软件质量,对于架构知识的学习没有任何捷径可走,你必须一步一个脚印,才能达到下一个高峰。

下面的链接是《大型网站技术架构核心原理与案例分析》PDF格式的文档,有兴趣的可以下载学习一下,提取码在我的公众号发送关键“提取码”,可以获取网盘提取码,仅用于学习研究。

https://pan.baidu.com/s/1fmQU6GDmGZMVDACxhpu6Ag

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

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

相关文章

数电大作业-四输入表决器

(PCB和multisim仿真画的有很大问题,没有VCC输入和GND,没学过直接裸画的,之后会好好看视频学习) 应用背景: 四个评委,三个及以上评委同时按下通过按钮时,选手才能通过。否则不通过。…

自动驾驶ADAS

1 ToF摄像头分类 1.1 ToF原理 类似雷达测距,生成3D点云,或者叫3D贴图。ToF相机的分辨率一般在3万像素左右。ToF距离计算公式如图所示。 Figure 1-1 ToF距离计算公式 D:距离 c:光速 PHI:相位差 fmod:调制频率…

创新指南|品牌电商新策略:五大转型思路与RGM举措

在流量红利过去的背景下,品牌电商面对多渠道运营的难题,如缺乏统盘经营、绩效管理分散、价格战失控、用户体验不足以及流量过度依赖,品牌电商如何有效应对这些挑战,本文从5个维度探讨全渠道电商RGM破局之路,实现品牌的…

pyppeteer模块经常使用的功能,相关操作案例

官方仓库地址:https://github.com/miyakogi/pyppeteer 官方文档地址:API Reference — Pyppeteer 0.0.25 documentation Selenium环境的相关配置比较繁琐,此外,有的网站会对selenium和webdriver进行识别和反爬,因此在…

【MySQL】数据库——事务

一.事务概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行事务是一个不可分割的工作逻辑单元,在数…

【因果推断python】54_效应异质性和非线性带来的挑战2

目录 Continues Treatment and Non Linearity Key Concepts Continues Treatment and Non Linearity 我们只是深入探讨了二元结果增加异质性治疗效果分析难度的一个例子。但这种现象并不局限于市场营销中的转换问题。例如,2021 年,全球成功向公众提供了…

深度学习 --- stanford cs231学习笔记五(训练神经网络的几个重要组成部分之三,权重矩阵的初始化)

权重矩阵的初始化 3,权重矩阵的初始化 深度学习所学习的重点就是要根据损失函数训练权重矩阵中的系数。即便如此,权重函数也不能为空,总是需要初始化为某个值。 3,1 全都初始化为同一个常数可以吗? 首先要简单回顾一下…

仿微信图片查看器`WPF`实现`ListBox` 鼠标滑动批量选中与反选效果

看到微信中,上传图片时的图片查看功能可以通过手指长按并滑动实现多选,于是为解析实现思路,也通过WPF 使用ListBox 实现了一版案例。 参考效果 微信效果如下,支持图片单选和鼠标长按滑动实现批量操作。 WPF模仿效果&#xff1a…

Mysql: SQL-DDL

一.SQL通用语法 1.SQL可以单行或者多行书写,以分号结尾。 2.SQL语句可以使用空格/缩进来增强语句的可读性。 3.MySQL数据库的SQL语句不区分大小写,关键字建议用大写。 4.注释: 单行注释:注释内容或#注释内容(Mysql特有) 多行注释:/*注释内容*/ 二.SQL分类 1.D…

信息学奥赛初赛天天练-34-CSP-J2021完善程序-按位异或、模拟算法、数组模拟环、约瑟夫问题应用

PDF文档公众号回复关键字:20240624 2021 CSP-J 完善程序3 1 完善程序 (单选题 ,每小题3分,共30分) (Josephus问题)有n个人围成一个圈,依次标号0至n-1。从0号开始,依次 0,1,0&#…

0801功率放大问题

3个学时讲一个电路(两个共集共集并联),4个问题,发展线索 丙类放大电路用在高频通讯行业,低频功放是甲类,乙类,甲乙类 PT三极管的损耗 Pv电源提供的功率 现代模电通常使用方法b 只有交流…

用Vue3打造一个交互式营养追踪仪表盘

本文由ScriptEcho平台提供技术支持 项目地址:传送门 使用 Vue.js 构建营养仪表盘卡片 应用场景介绍 营养仪表盘卡片是一个可视化工具,用于跟踪个人的营养摄入情况。它通常包含以下信息: 卡路里摄入目标和进度营养成分(如脂肪…

2024中国·淮安高端人才精英赛北京分站赛首战告捷

“诚意满淮,创赢未来”!6月20-21日,2024中国淮安高端人才精英赛首场分站赛在北京产业创新中心顺利举办。淮安市科技局党组书记、局长胡长青,淮安市委组织部人才处处长沈雪娇,淮安经开区党工委委员、管委会副主任、科技…

C++(part2、3-Linux系统编程+数据库项目):Linux网络云盘

文章目录 一、项目需求分析1.一期:命令行解析(1)cd(用栈管理)、ls、pwd(2)puts、gets(3)mkdir、touch、rmdir、rm 2.二期:密码验证、日志、断点续传、大文件传输(1)密码验证(2)日志(3)断点续传(4)大文件传输 3.三期:用户注册、用户登录、虚拟…

springboot+vue+mybatis穷游管理系统+PPT+论文+讲解+售后

随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多企业的之中,随之就产生了“基于vue的穷游管理系统”,这样就让基于vue的穷游管理系统更加方便简单。 对于本基于vue的穷游管理系统的设计来说…

企业文件传输系统只能传输?分享功能同样重要!(下)

上篇我们讲述了企业大文件传输的重要性以及镭速在传输方面的优势,同时企业文件的快速共享显得尤为重要。镭速软件在这方面的表现一样尤为突出,它不仅提供了强大的文件传输功能,而且在文件分享方面也有其独到之处。本文将探讨镭速软件在文件分…

协程: Flow 异步流 /

以异步方式返回多个返回值的方案: 在 Kotlin 协程 Coroutine 中 , 使用 suspend 挂起函数 以异步的方式 返回单个返回值肯定可以实现 , 如果要 以异步的方式 返回多个元素的返回值 , 可以使用如下方案 : 集合序列Suspend 挂起函数Flow 异步流 同步调用返回多个值的弊端&…

江协科技51单片机学习- p17 定时器

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

Unity面试题 UGUI调整UI与粒子特效的显示层级

首先,必须保证Canvas画布的渲染模式为了相机渲染 方法:一:将需要控制UI显示层级的Image换成Sprite 1.创建一个粒子系统,和两张Sprite. 2.设置Sprite1的Order in Layer为 -1,设置Sprite2的Order in Layer为 1,粒子的Ord…

LONGHEADS:无需训练的多头注意力长文本处理框架

大模型(LLMs)在处理海量文本数据时展现出了前所未有的能力。然而这些模型在面对超出其训练时所见序列长度的长文本时存在两个主要问题:一是模型对于超出预训练长度的文本难以有效泛化,二是注意力机制的二次方时间复杂度导致计算成…