测试分类
回归测试、集成测试、单元测试,覆盖率逐层变大,成本逐层降低。
1.单元测试
规则
·所有测试文件以_test.go结尾;
·func TestXxx(*testing.T)
·初始化逻辑放到TestMain中
func TestMain(m *testing.M){
//测试前:数据装载,配置初始化等前置工作;
code := m.Run()
//测试后:释放资源等收尾工作
os.Exit(code)
}
运行
go test [flags][backpages]
修复-assert
代码覆盖率
·衡量代码是否经过了足够的测试
·评价项目的测试水准
·评估项目是否达到了高水准测试等级
·tips:
一般覆盖率 : 50%~60%,较高覆盖率80%+;
测试分支相互独立、全面覆盖;
测试单元粒度足够小,函数单一职责。
2.基准测试
·优化代码,需要对当前代码分析;
·内置的测试框架提供了基准测试的能力。
实例-随机选择执行服务器:
import (
"math/rand"
)
var ServerIndex [10]int
func InitServerIndex() {
for i:= 0;i<10;i++ {
ServerIndex[i] = i+100
}
}
func Select()int {
return ServerIndex[rand.Intn(10)]
}
运行
func BenchmarkSelect(b *testing.B) {
InitServerIndex()
b.ResetTimer()
for i:= 0;i<b.N;i++ {
Select()
}
}
func BenchmarkSelectParallel(b *testing.B{
InitServerIndex()
b.ResetTimer()
b.RunParallel(func(pb *testing.PB) {
for pb.Next() {
Select()
}
})
}