今天是 2022年02月25日,欢迎来到第 60 期!这里记录过去一周我们看到的软件测试及周边的行业动态,周五发布。
本期看点:如何使用 Jest + React Testing Library 做单元测试工程:如何做性能规划是如何做全链路压测的才是真正的持续交付视剧《开端》理解可观测性;你应该知道的5种软件架构模式;Redis 突然变慢了如何排查并解决工程师思维如何做好2022年度规划p>
·
阅读愉快!
?? 软件测试
1. 如何使用 Jest + React Testing Library 做单元测试h2>
yushan( 腾讯IMWeb前端团队)
前端的测试框架和工具,比较主流的 JavaScript 测试框架有 Jest、Jasmine、Mocha 等等,并且还有一些 UI 组件测试工具,比如 testing-libraray,enzyme 等等。
测试框架和 UI 组件测试工具之间并不是相互依赖、非此即彼的,而是可以根据不同工具的性质做不同的搭配。
目前腾讯课堂基于 Tdesign 开发的素材库组件的单测,就是使用 Jest + React Testing Library 来完成。
在开始进行组件单测的时候,需要考虑几个因素:
- 组件是否按照既定的条件 / 逻辑进行渲染
- 组件的事件回调是否正确
- 异步接口如何校验
- 异步执行完毕后的操作如何校验
- ……
如何使用 Jest + React Testing Library 做单元测试呢strong>
原文地址: Jest + React Testing Library 单测总结 |
2. 性能工程:如何做性能规划h2>
刘冉(Thoughtworks洞见)
性能工程是发现和解决软件系统性能问题最主要的方法体系和技术手段,它一般包含以下几个部分:
- 性能测试:通过不同类型的测试,获取系统在不同情况下的性能情况,包括各种外部性能指标,是否满足实际的性能需求等。
- 性能轮廓:通过特定的工具获取被测系统的各种内部性能指标,从而辅助性能分析工作。
- 性能分析:通过分析性能测试和性能轮廓获得的各种数据等,发现性能瓶颈以及其原因,从而辅助性能优化的工作。
- 性能优化:通过各种技术和业务手段,尽可能消除性能瓶颈,从而提升系统的性能。
- 性能规划:通过在不同配置下,进行不同规模的性能测试,获取系统的性能变化规律。并针对不同的性能需求,利用这个规律对服务器资源和容量进行规划,从而满足不同的性能需求。
在性能工程中,技术层面上最难的部分是性能分析和性能优化,而整体上最为繁琐和复杂的则是性能规划。
性能规划应该怎么做呢strong>
原文地址: 性能工程之性能规划实践 |
3. 中通是如何做全链路压测的h2>
一迅(科技中通)
传统的线下压测方案使用等比缩放策略导致结果容易失真,而线上压测方案为避免造成业务数据污染需做代码改造,适用范围小,为了解决以上问题,中通引入了全链路压测技术方案。
线上全链路压测产品是使用压测 JavaAgent 探针以字节码方式植入应用,这样业务应用则无须硬编码,就可以自动识别和兼容压测流量并进行分流,将缓存和存储数据存储到影子区域,实现物理隔离压测数据,避免造成生产数据污染。
中通的全链路压测具体是如何落地的如何strong>
原文地址: 性能测试|中通全链路压测探索与实践 |
?? 质量效能
1. 什么才是真正的持续交付h2>
张燎原、张裕(云效)
只有满足了持续、快速、高质量、低风险这 4 点才是实现了持续交付。
这 4 点是缺一不可的。粒度小、频率高,是快速的前提。相应地,只有质量高了,风险才能够低一些。
问题是:如何做到呢strong>
原文地址: 做到这4点,才是真正的持续交付 |
2. 从电视剧《开端》理解可观测性
基调听云
为什么要说到这部剧呢strong>
因为这部剧可以更好的帮我们理解什么是系统的可观测性,让你从一大堆技术概念中解脱出来。
原文地址: 一部电视剧帮我们理解可观测性 |
?? 技术同频
1. 你应该知道的5种软件架构模式
Orkhan Huseynli(InfoQ)
作为软件工程师,软件架构模式是必备的基础知识。了解架构模式,将更容易遵循架构师的要求。
以下为常见 5 中架构模式:
1. 分层架构:单体应用最常见的架构。将应用程序的逻辑划分为若干层,每层都封装了特定的角色。
2. 事件驱动架构:将应用逻辑解耦为单一用途的事件处理组件,以异步方式接收和处理事件。
3. 微内核架构:也被称为插件架构。核心系统和插件模块(或扩展)。例如谷歌浏览器和外部扩展插件。
4. 微服务架构:微服务架构由单独部署的服务组成,每个服务最好都有一个单一的责任。服务之间相互独立且不会相互影响。
5. 基于空间的架构:主要思想是分布式共享内存,以缓解经常发生在数据库层面的问题。
原文地址: 解读 5 种软件架构模式 |
2. Redis 突然变慢了如何排查并解决h2>
码哥字节
Redis 通常是业务系统中一个重要的组件,比如:缓存、账 登录信息、排行榜等。一旦 Redis 请求延迟增加,可能就会导致业务系统“雪崩”。
如何确定 Redis 有性能问题解决呢p>
检查清单:
- 获取当前 Redis 的基线性能;
- 开启慢指令监控,定位慢指令导致的问题;
- 找到慢指令,使用 scan 的方式;
- 将实例的数据大小控制在 2-4 GB,避免主从复制加载过大 RDB 文件而阻塞;
- 禁用内存大页,采用了内存大页,生成 RDB 期间,即使客户端修改的数据只有 50B 的数据,Redis 需要复制 2MB 的大页。当写的指令比较多的时候就会导致大量的拷贝,导致性能变慢。
- Redis 使用的内存是否过大导致 swap;
- AOF 配置是否合理,可以将配置项 no-appendfsync-on-rewrite 设置为 yes,避免 AOF 重写和 fsync 竞争磁盘 IO 资源,导致 Redis 延迟增加。
- bigkey 会带来一系列问题,我们需要进行拆分防止出现 bigkey,并通过 UNLINK 异步删除。
原文地址: Redis 突然变慢了如何排查并解决p> |
?? 持续成长
1. 何为工程师思维h2>
王智远
- 李彦宏在新工科技论坛上曾说:每个人都要具备工程思维,这也是许多毕业生的短板。
- 工程学指满足客户需求为目的的一门学科,而非单纯的开发软件。它需要将客户的需求捕捉、分析、进行定义,并给出整体的系统需求,并分解各子系统;直到每个细节的需求可以由一个现有的组件直接满足,或通过修改满足。
- 工程思维最大的特点是“要把事情做成”,也就是可交付、可使用、并做到开源节流”。
- 工程思维运用的高手善于预判并在没有结构的情况下「预见结构」,并进行通盘顶层设计,然后从第一性出发来改善根本要素。
- 工程思维有三大特点:1)找到结构,2)约束性设计,3)懂得取舍
- 世界依赖于结构;有经验的工程师能在看似一团乱麻的事物中找到合理性的结构,在产品诞生前预判到成熟的全貌。
- 「取舍什么」是工程师具体的能力体现,建立该关键不仅表现在如何设计重点,还要研究资源分配的问题,甚至将弱目标从强目标中抽丝剥茧出来。
- 如何把工程师思维应用到日常工作或学习上呢strong>
-
- 预见未来的结构:在过程中首先要尊重科学规律,考虑多因素实际所存在的结构,再精益求精的持续改进。
- 约束内找到组块:尽可能在具体的时间,约束内交付出明确“规模”的结果;
-
- 平衡当中做取舍:不局限在表面的细枝末节,挖掘背后隐藏的路径和机制才是根本,真正的工程思维是要「解构旧系统」,组合创新「新系统」。
原文地址: 何为工程师思维p> |
2. 企业如何做好2022年度规划h2>
王钺(笔记侠)
原文地址: 如何做好2022年度规划p> |
?? 拥抱开源
1. PDFPatcher:开源的 PDF 处理工具
PDF 补丁丁是一个适用于 Windows 的 PDF 处理工具。它具有以下功能:
- 修改 PDF 文档:修改文档属性、页码编 、页面链接;统一页面尺寸;
- 制作 PDF 文件:合并已有 PDF 文件或图片,生成新的 PDF 文件;
- 拆分或合并 PDF 文件,并保留原文件的书签或挂上新的书签;
- 高速无损导出 PDF 文档的图片。
- 将 PDF 页面转换为图片。
- 提取或删除 PDF 文档中指定的页面,调整 PDF 文档的页面顺序。
- 替换字体:替换文档中使用的字体;
- …
开源地址: |
2. 程序员做饭指南:用更精准的描述整理家长菜的做法
所以,他计划自己搜寻菜谱和并结合实际做菜的经验,准备用更清晰精准的描述来整理常见菜的做法,以方便程序员在家做饭。
家常菜
- 西红柿炒鸡蛋
- 地三鲜
- 水煮肉片
- 回锅肉
- 糖醋里脊
- 葱煎豆腐
- 鱼香肉丝
- 茄子炖土豆
- 麻辣香锅
- 糖醋鲤鱼
- 辣椒炒肉
….
开源地址: GitHub – Anduin2017/HowToCook: 程序员在家做饭方法指南。Programmer’s guide about how to cook at home (Chinese). |
言论
1、
2、一半的学者阅读量不足以写出他们以为自己能写的东西,另一半应该停止阅读,赶紧把东西写出来——问题在于,所有人都以为自己属于另一半。 — Jeff Guhin |
3、有事可做,是一个人保持最佳状态的唯一途径。 — 查斯特菲尔德《一生的忠告》 |
图片
1、
测试 vs 生产环境
2、
想加快项目进度,如果再加一个 PM 结果会咋样p>
订阅
如果文章对你有帮助,记得留言、点赞、加关注哦!
(完)
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!