摘要:
49.1 关于调试,你首先应该知道的几件事 1.调试前,首先做好心理准备 2.预防bug的发生,降低bug的发生概率 (1) 充分的代码检查 (2) 为调试版添加断言 (3) 充分的单元测试 (4) 代码同级评审 3.bug的原因定位和修正 (1) 收集“现场数据” (2) 定位问题所在 (3) 修 阅读全文
摘要:
48.1 expvar包的工作原理 Go标准库中的expvar包提供了一种输出应用内部状态信息的标准化方案,这个方案标准化了以下三方面内容: 数据输出接口形式 输出数据的编码格式 用户自定义性能指标的方法 import ( _ "expvar" "fmt" "net/http" ) func mai 阅读全文
摘要:
47.1 pprof的工作原理 1.采样数据类型 (1) CPU数据 (2) 堆内存分配数据 (3) 锁竞争数据 (4) 阻塞时间数据 2.性能数据采集的方式 (1) 通过性能基准测试进行数据采集 go test -bench . xxx_test.go -cpuprofile=cpu.prof g 阅读全文
摘要:
46.1 性能基准测试在Go语言中是“一等公民” 性能基准测试在Go语言中和普通的单元测试一样被原生支持的,得到的是“一等公民”的待遇。 我们可以像对普通单元测试那样在*_test.go文件中创建被测对象的性能基准测试,每个以Benchmark前缀开头的函数都会被当作一个独立的性能基准测试。 46. 阅读全文
摘要:
模糊测试就是指半自动地为程序提供非法的、非预期、随机的数据,并监控程序在这些输入数据下是否会出现崩溃、内置断言失败、内存泄漏、安全漏洞等情况。 45.1 模糊测试在挖掘Go代码的潜在bug中的作用 Dmitry Vyukov 2015年使用go-fuzz在Go标准库中发现了137个bug。 45.2 阅读全文
摘要:
44.1 fake:真实组件或服务的简化实现版替身 fake测试就是指采用真实组件或服务的简化版实现作为替身,以满足被测代码的外部依赖需求。 使用fake替身进行测试的最常见理由是在测试环境无法构造被测代码所依赖的外部组件或服务,或者这些组件/服务有副作用。 type fakeOkMailer st 阅读全文