惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
G
Google Developers Blog
B
Blog RSS Feed
A
About on SuperTechFans
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
Stack Overflow Blog
Stack Overflow Blog
C
Check Point Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
博客园 - 司徒正美
D
Docker
F
Fortinet All Blogs
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
H
Help Net Security
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
博客园 - Franky
人人都是产品经理
人人都是产品经理
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Blog — PlanetScale
Blog — PlanetScale
L
LangChain Blog

犀利豆的博客

《SRE google 运维解密》读书笔记 (六) 《SRE google 运维解密》读书笔记 (四) 《SRE google 运维解密》读书笔记 (三) 《SRE google 运维解密》读书笔记 (二) 《SRE google 运维解密》读书笔记 (一) 2021 总结 终于有一个 Java 可以用的微信机器人了 Vertx入门到实战—实现钉钉机器人内网穿透代理 钉钉机器人回调内网穿透代理--使用篇 周末补习(一)trie 树 那些有趣的代码(三)--勤俭持家的 ArrayList 那些有趣的代码(二)--偏不听父母话的 Tomcat 类加载器 那些有趣的代码(一)--有点萌的 Tomcat 的线程池 从需求第三定律说起--为什么知乎的回答质量下降了 如何利用 Spring Hibernate 高级特性设计实现一个权限系统 居然有人能忘记吃饭?写个微信机器人提醒他 我的2018年总结 从 LongAdder 中窥见并发组件的设计思路 徒手撸框架--实现 RPC 远程调用 我的写作工具链 Java 渲染 docx 文件,并生成 pdf 加水印 撸码的福音--变量名生成器的实现 Raft 协议学习笔记 dubbo 源码学习(一)开篇 Redis 命令的执行过程 Redis 中的事件驱动模型 Redis 数据库、键过期的实现 Redis 的基础数据结构(三)对象 Redis 的基础数据结构(二) 整数集合、跳跃表、压缩列表 Redis 的基础数据结构(一) 可变字符串、链表、字典
《SRE google 运维解密》读书笔记 (五)
Zhengxin Diao · 2022-05-04 · via 犀利豆的博客

测试可靠性

预测信息准确的前提:

  1. 系统完全没有改变
  2. 充分描述整个系统的改变

测试是一个用来证明变更前系统的某些领域相等的手段。

软件测试的类型

  • 传统测试
  • 生产测试

传统测试

  • 单元测试
  • 集成测试
  • 系统测试
    • 冒烟测试
    • 性能测试
    • 回归测试

每个测试都有成本,通常来说单元测试时间成本低 如果要将完整的功能架设起来测试,通常需要几个小时。关注测试成本,是软件提升效率的重要因素。

生产测试

生产测试和一个已经部署在生产环境的业务系统直接交互,而不是运行在封闭的测试环境。有时候称为黑盒测试

  • 配置测试
  • 压力测试
  • 金丝雀测试
    • 一小部分机器先升级,保持一定的孵化期。
    • 将代码置于比较难以预测的用户流量下
    • 需要能够快速的回滚

创造一个构建和测试环境

  • 测试的重点集中在用最小力气得到最大收益的地方
    • 划分优先级
    • 寻找关键函数关键类
    • 寻找提供给其他团队的 API
  • 发布前,通过冒烟测试
  • 寻找到的 bug 变成测试用例
  • 建立良好的测试基础设施
    • 追踪代码变更
    • 每次代码改变就进行构建
  • 精确的构建,只构建修改的地方,并执行修改代码的单侧
  • 使用工具可视化或者量化测试覆盖度
  • 和钱相关的系统需要更多测试

大规模测试

单元测试需要有针对性的覆盖组件中相互依赖的部分

测试大规模使用的工具

针对灾难的测试

灾难恢复工具被精心设计为离线运行

  • 计算出一个可记录状态,等同于服务完全停止的状态
  • 将可记录的状态推送给非灾难验证工具
  • 支持常见的发布安全边界检查

对速度的渴求

有的时候测试的结果会在重复运行下发生改变。所以需要针对某些场景,重复运行一定数量的测试。

发布到生产环境

通常,生产环境的配置文件容易被测试忽略。

集成

使用解释性语言编写配置文件是有风险的。程序的执行时间没有上限,需要加入截止时间检查。

使用成熟的语法(YAML)和大量测试的解析器。

生产环境探针

测试机制是对确定的数据检验系统行为是否可以接受。
监控机制择时在未知数据输入下系统行为是否可以接受。

已知的正确请求应该成功,已知的错误请求应该失败。重放已知请求观察系统是否正常。

(感觉应该是书翻译的问题所谓的探针应该是 mock 服务。mock 服务部署在生产环境 。在确定的入参下,有确定的返回值。调用方可以使用这个探针进行测试)

小结

测试是工程师提高可靠性投入回报比较高的手段。