单元测试 课程笔记| 青训营

55 阅读1分钟

测试的大致种类

  • 回归测试(在具体场景的手动测试)
  • 集成测试(对于系统功能维度的测试,通过服务暴露的接口做自动化的一些测试)
  • 单元测试(程序员写完在调试的时候干的事情?)

单元测试(提升修复效率)

对函数或接口的输入输出验证?

单元测试很有必要

单元测试

单元测试的规则

  • 所有文件以_test.go结尾
  • 函数命名用func Testxxx(*testing.T)
  • 初始化逻辑放到TestMain中(使用go test xxx_test.go xxx.go运行test函数进行单元测试)
func TestMain(m *testing.M){
//测试数据配置和加载

code:=m.Run()
//资源释放等收尾工作
os.Exit(code)
}

覆盖率

go test xxx_test.go xxx.go --cover 加上--cover参数为何就能计算覆盖率?
答:覆盖率公式=执行的代码行数/有效代码行数。

实际上,基本要求覆盖率在50%~60%,较高时可达80%+(较重要的项目)。

测试分支应当相互独立,全面覆盖 函数尽量写的小一点,更容易覆盖

依赖

Mock 打桩? monkey:github.com/bouk/monkey (替换执行函数,解决某些依赖问题)

基准测试

(性能测试)?和前面没关系啊

通对函数进行测试计算时间,判断执行效率

命名规则(类似单元测试)

  • func Benchmarkxxx(b *testing.b){}

fastrand()函数相较rand()损失了随机数列的一致性,但可以解决在高并发场景下的某些性能问题。位于("github.com/bytedance/g…")