/**
第十一章 测试
Go语言的测试技术是相对低级的
它依赖一个go test测试命令和一组按照约定方式编写的测试函数,测试命令可以运行这些测试函数
编写相对轻量级的纯测试代码是有效的,而且它很容易延伸到基准测试和示例文档
*/
11.1 go test
知识点
- 1.go test命令是一个按照一定的约定和组织来测试代码的程序
- 2.有三种类型的函数:测试函数、基准测试(benchmark)函数、示例函数
- 3.go test命令会遍历所有的*_test.go文件中符合上述命名规则的函数
11.2 测试函数
知识点
- 1.每个测试函数必须导入testing包
- 2.测试函数的名字必须以Test开头,可选的后缀名必须以大写字母开头, func TestSin(t testing.T) { / … */ }
- 3.go test命令如果没有参数指定包那么将默认采用当前目录对应的包
- 4.参数-run对应一个正则表达式,只有测试函数名被它正确匹配的测试函数才会被go test测试命令运行
- 5.参数-v可用于打印每个测试函数的名字和运行时间
- 6.调用log.Fatal或os.Exit这些函数的特权应该放在main函数中
- 7.用go list命令查看包对应目录中哪些Go源文件是产品代码,哪些是包内测试,还有哪些是外部测试包
11.3 测试覆盖率
知识点
- 1.go tool命令运行Go工具链的底层可执行程序
- 2.-coverprofile标志参数,将待测代码拷贝一份并做修改,在每个词法块都会设置一个布尔标志变量
- 3.-covermode=count标志参数,将在每个代码块插入一个计数器而不是布尔标志量
11.4 基准测试
知识点
- 1.基准测试是测量一个程序在固定工作负载下的性能
- 2.-bench命令行标志参数手工指定要运行的基准测试函数,该参数是一个正则表达式,用于匹配要执行的基准测试函数的名字,默认值是空的
- 3.快的程序往往是伴随着较少的内存分配
- 4.-benchmem命令行标志参数将在报告中包含内存的分配数据统计
- 5.比较型的基准测试就是普通程序代码。它们通常是单参数的函数,由几个不同数量级的基准测试函数调用
11.5 剖析
知识点
- 1.剖析技术是基于程序执行期间一些自动抽样,然后在收尾时进行推断;最后产生的统计结果就称为剖析数据
- 2.Go语言支持多种类型的剖析性能分析,每一种关注不同的方面
- 3.CPU剖析数据标识了最耗CPU时间的函数
- 4.堆剖析则标识了最耗内存的语句
- 5.阻塞剖析则记录阻塞goroutine最久的操作
- 6.参数-text用于指定输出格式,在这里每行是一个函数,根据使用CPU的时间长短来排序
- 7.参数-web用于生成函数的有向图,标注有CPU的使用和最热点的函数等信息
11.6 示例函数
知识点
- 1.第三种被go test特别对待的函数是示例函数,以Example为函数名开头
- 2.示例函数有三个用处:1.作为文档,2.在go test执行测试的时候也会运行示例函数测试,3.提供一个真实的演练场
------不足之处,欢迎补充------
备注
- 学习记录所使用的GO版本是1.8
- 学习记录所使用的编译器工具为GoLand
- 学习记录所使用的系统环境为Mac os
- 学习者有一定的C语言基础