Day7-go语言进阶2-测试 | 青训营笔记

70 阅读1分钟

“这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天”

3、测试

  • 1 )回归测试:

  • 手动通过终端回归一些固定的主流程场景;

  • 2 )集成测试:

  • 对系统功能维度做测试验证;

  • 3 )单元测试:

  • 开发者对单独的函数、模块做功能验证;

  • 单元测试的覆盖率一定程度上决定着代码的质量;

image.png

3.1 单元测试

image.png

3.1.1 单元测试-规则

  • Test开头,连接第一个字母大写

image.png

3.1.2 单元测试-覆盖率

image.png

image.png

3.1.3 单元测试-依赖

  • 测试依赖本地文件;

image.png

3.2 Mock测试

  • 通过Monkey,脱离本地测试文件依赖

image.png

  • 下面是一个mock的使用样例,通过patch对Readfineline进行打桩mock,默认返回line110,

  • 这里通过defer卸载mock,这样整个测试函数就摆脱了本地文件的依赖。

image.png

3.3 基准测试

  • Go语言还提供了基准测试框架,基准测试是指测试─段程序的运行性能及耗费CPU的程度。

  • 而我们在实际项目开发中,经常会遇到代码性能瓶颈,为了定位问题经常要对代码做性能分析,这就用到了基准测试。

  • 使用方法类似于单元测试,

  • 1、一个例子,10台服务器负载均衡,随机选择服务器;

image.png

  • 基准测试--运行

  • runparallel是多协程并发测试,其中基准测试有差别,

  • 因为rand为了保证全局的随机性和并发安全,持有一把全局锁,影响效率;

image.png

  • 基准测试---优化

  • 高性能随机数方法fastrand;

  • 主要思想是牺牲了一定的数列一致性;大多数场景是适用的;

image.png

image.png