Go 语言工程实践之测试 | 青训营

73 阅读2分钟

本文章主要是讲解 Go 在测试环节的相关内容,分别从单元测试、Mock 测试和基准测试三个方面展开。

下图是开发到测试到避免事故的示意图:

image.png

1 单元测试

单元测试包括输入,测试单元,输出,以及校对,测试单元的内容相对较广,包括测试接口、测试函数、测试模块等等,测试后通过最后的校对模块保证代码的功能与预期相符。

单元测试有两方面的优点,一方面是可以保证质量,在整体覆盖率足够的情况下,一定程度上保证了新功能本身的正确性并未破坏原有代码的正确性;另一方面则是提升了效率,对工程进行单元测试时,可以对有bug的代码在一个较短周期内进行定位和修复存在的问题。

单元测试有以下三个规则:

  1. 所有测试文件以_test.go结尾
  2. func TestXxx(*testing.T)
  3. 初始化逻辑放到TestMain中

2 Mock测试

快速Mock函数:既是为一个函数进行打桩,又是为一个方法打桩。在测试过程中,对于一些不容易构造/获取的对象,创建一个Mock对象来模拟对象的行为。

Mock 桩的注入方式与架构、被测服务的架构等因素相关,常见的 Mock 桩注入方式有以下五种:API 请求构造、本地配置、配置中心、反向代理、前向代理。

使用Mock测试后能够带来两大主要的功能,一是能够记录真实的调用信息,二是能够生成模拟的返回信息。

3 基准测试

基准测试是测试一段程序的运行性能以及耗费CPU的程度,对工程进行使用基准测试后能够达到在对当前代码进行分析后实现优化代码的作用。在进行基准测试时函数需要导入 testing 包,并定义以Benchmark 开头的函数,参数为 testing.B 指针类型,在测试函数中循环调用函数多次。