这是我参与「第五届青训营 」伴学笔记创作活动的第 32 天
本篇文章归档于 “第五届字节跳动青训营”,主要是为了完成和记录掘金的 “伴学笔记创作活动” 活动,如果你对我的其他文章感兴趣,可以去我的 专栏 中逛逛看有没有你想要的东西。
- 第 1 篇 - Kitex 口水话
- 第 2 篇 - Hertz 口水话
- 第 3 篇 - 微服务口水话
- 第 4 篇 - Kafka 口水话
- 第 5 篇 - BMQ 口水话
- 第 6 篇 - RecketMQ 口水话
- 第 7 篇 - 数据库口水话
- 第 8 篇 - RDBMS 口水话
- 第 9 篇 - TOS 口水话
- 第 10 篇 - tinyTikTok 环境配置
- 第 11 篇 - tinyTikTok 规范设计
- 第 12 篇 - tinyTikTok 项目管理
- 第 13 篇 - tinyTikTok 认证授权
- 第 14 篇 - tinyTikTok 服务功能
- 第 15 篇 - tinyTikTok 测试分析
- 第 16 篇 - tinyTikTok 项目总结
放在前面的话
想要最快熟悉一个项目的代码,最直接的办法就是看它的 CI 流程
想要直接衡量一个项目的好坏,最通常的做法就是看它的测试完成度。
感觉整篇的精华都在这里了,原本是打算分析 tinyTikTok 的单测、压测、集成测试的,但现在只能简单讲一下 go 的测试分类了。
测试的分类
除了基本的单元测试外,Go 测试框架还支持一些高级特性,包括:
- 表格测试:一种测试模式,用于对同一个函数执行多个不同的输入和期望输出组合进行测试。表格测试可以通过测试数据驱动来减少代码重复,提高测试效率和可读性。
- Mock 测试:一种测试模式,用于模拟系统中的依赖和外部接口,并对被测试代码的行为进行断言。Mock 测试可以帮助开发人员在真实环境中难以测试的情况下进行单元测试。
- 子测试:一种测试模式,用于在单个测试函数内执行多个独立的子测试,从而减少测试代码的重复和冗余。子测试可以使用
t.Run方法来创建和执行子测试,并使用t.Parallel方法来并行执行多个子测试。 - 基准测试:一种测试模式,用于测试代码在特定负载下的性能表现,可以使用
testing.B类型的句柄来测量函数的运行时间和内存占用等性能指标。 - 代码覆盖率:Go 的测试框架可以生成代码覆盖率报告,显示测试覆盖代码的行数和分支情况等信息。通过覆盖率报告,开发人员可以了解测试的覆盖率情况,从而更好地补充和优化测试代码。
放在最后的话
作为一个优秀的程序员,第一件事应该是会写好测试,而不是无脑开发,除非你是大佬,那当我没说。(大佬应该也不至于会看到这里hhhhh