目 录CONTENT

文章目录

Go 单元测试,基准测试,模糊测试

Sakura
2023-09-02 / 0 评论 / 0 点赞 / 18 阅读 / 2441 字 / 正在检测是否收录...

Go 单元测试,基准测试,模糊测试

1. 单元测试

  • 函数名规则

// 函数名以Test开头
func TestFileRead(t *testing.T) {
	FileRead()
}

// -v 表示执行Printf
go test xxx_test.go -v

// -run 指定运行的测试
go test xxx_test.go -v -run=TestJson

指定 -run 是因为默认会运行所有测试函数

2. 基准测试

// 函数名以为Benchmark开头
func BenchmarkJson(b *testing.B) {
	// b.N会根据实际的运行耗时动态的选择执行次数
	for i := 0; i < b.N; i++ {
		JsonMarshal()
	}
}
// -bench 性能测试
go test -bench=Json -v

// -benchmem 每次消耗的内存
go test -bench=BenchmarkSonic -v -benchmem
func BenchmarkJson(b *testing.B) {
	// b.N会根据实际的运行耗时动态的选择执行次数
	for i := 0; i < b.N; i++ {
		JsonMarshal()
	}
}

func BenchmarkSonic(b *testing.B) {
	for i := 0; i < b.N; i++ {
		SonicMarshal()
	}
}

可以看到标准库的 JSON 序列化速度比 Sonic 要慢 3 倍

  • 1478822 表示测试执行的次数

  • 794.2 ns/op 表示每次操作耗时

  • -benchmem 统计消耗的内存

  • 501 B/op 表示每次操作消耗的内存

  • 10 allocs/op 每次操作申请的内存次数

3. 模糊测试

0

评论区