go语言工程测试 | 青训营笔记

168 阅读2分钟

Go语言工程测试 | 青训营笔记

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

单元测试

  • 编写测试单元,测试单元当中包含如下的部分

    • 调用被测试的函数
    • 预期结果
    • 预期结果以及函数返回的结果
    • 错误处理
  • 单元测试的覆盖度

    • 一般覆盖率:50% ~ 60%,较高覆盖率80%+
    • 测试分支相互独立、全面覆盖
    • 测试单元粒度足够小,函数单一职责
    • 相关指令: image.png
  • 单元测试-依赖

    • 单元

      • File
      • DB
      • Cache
    • 幂等:重复运行一个测试结果与之前是一样的

    • 稳定:单元测试能够相互隔离,任何时间任何函数实现相互的运行

Mock

monkey: github.com/bouk/monkey

为什么需要时使用Mock?

对于一些场景,一些模块没有完成,或者用户数据不完整的情况,我们需要构建一些虚拟的接口,方便我们前端进行测试。

这里有参考:

2022全网最新b站最细的接口测试中常见的Mock测试场景实战_哔哩哔哩_bilibili

关于mock - 知乎 (zhihu.com)

快速Mock函数

  • 为一个函数打桩
  • 为一个方法打桩

其实可以认为,如果我们是读入文件的话,那么就是将一个虚拟的数值直接填入到程序当中当成文件,这样也就构造了虚拟的对象。

主要目的是让我们可以拜托对数据,或者是对后端接口的依赖,这样就是mock测试

image.png

go语言当中的基准测试

  • 优化代码,需要对当前代码分析
  • 内置的测试框架提供了基准测试的能力

image.png

image.png

利用基准测试发现并行的效率会降低,因为rand函数包含一个全局锁,会使并发度降低,这样运行时间就会变长,所以我们可以利用fastrand进行优化。

image.png