今天是第6篇笔记打卡学习,学习一下Go 语言工程实践之测试,以下是知识点总结:
单元测试、Mock测试、基准测试
①测试大概分为三种类型:回归测试、集成测试、单元测试
②所有的测试文件以_test.go结尾
测试函数的命名规范:func TestXxx(*testing.T)
初始化的逻辑要放到TestMain中
单元测试的例子:
常用的test包:github.com/stretchr/testify/assert
③覆盖率
代码覆盖率是单元测试运行的代码量(行、分支或方法)的度量值。
例如,如果你有一个简单的应用程序,其中只有两个条件分支(分支 a 和分支 b ),则验证条件分支 a 的单元测试将报告 50% 的分支代码覆盖率。
一般覆盖率:50%~60%,较高覆盖率80%+。
测试分支相互独立、全面覆盖。
测试单元粒度足够小,函数单一职责。
④依赖
为什么要用mock测试?
Mock测试是一种单元测试的方法,其中测试对象的某些依赖项被模拟或替代,从而使测试更加可靠和可控。Mock测试的主要目的是测试对象本身的逻辑,而不是测试其依赖项的功能。
1.依赖项难以控制:测试对象可能依赖于外部组件或服务,这些组件或服务可能难以在测试环境中控制和操作。使用Mock测试可以模拟这些依赖项,从而使测试更容易实现和控制。
2.测试成本高:测试依赖项可能需要大量的时间、资源和成本,这可能会限制测试的范围和频率。使用Mock测试可以降低测试成本,因为测试不需要真正的依赖项。
3.依赖项不稳定:测试依赖项可能会随着时间和环境的变化而变得不稳定。使用Mock测试可以避免测试因依赖项变化而失败。
4.并发测试:在并发测试中,依赖项可能会导致测试失败或结果不可预测。使用Mock测试可以模拟并发测试中的依赖项,从而使测试更加可控和可预测。
⑤基准测试
在基准测试中,通常会定义一些测试用例和输入数据,然后运行这些测试用例多次,并测量每次运行的耗时和资源使用情况。然后对这些数据进行分析和比较,以得出系统或组件的性能指标和性能瓶颈。