fix typo and optimize.

Change-Id: I7b6938936231fd722814984678ffa30402539fd9
This commit is contained in:
fuyc
2016-08-11 17:08:38 +08:00
parent ed57986ea7
commit 8fda418f3a
33 changed files with 128 additions and 126 deletions

View File

@@ -1,10 +1,10 @@
## 11.3. 测试覆盖率
就其性质而言测试不可能是完整的。计算机科学家Edsger Dijkstra曾说过“测试可以显示存在缺陷但是并不是说没有BUG。”再多的测试也不能证明一个程序没有BUG。在最好的情况下测试可以增强我们的信心代码在我们测试的环境是可以正常工作的。
就其性质而言测试不可能是完整的。计算机科学家Edsger Dijkstra曾说过“测试能证明缺陷存在,而无法证明没有缺陷。”再多的测试也不能证明一个程序没有BUG。在最好的情况下测试可以增强我们的信心代码在很多重要场景下是可以正常工作的。
由测试驱动触发运行到的被测试函数的代码数目称为测试的覆盖率。测试覆盖率并不能量化——甚至连最简单的动态程序也难以精确测量——但是可以启发并帮助我们编写的有效的测试代码。
对待测程序执行的测试的程度称为测试的覆盖率。测试覆盖率并不能量化——即使最简单的程序的动态也是难以精确测量——但是有启发式方法来帮助我们编写的有效的测试代码。
这些帮助信息中语句的覆盖率是最简单和最广泛使用的。语句的覆盖率是指在测试中至少被运行一次的代码占总代码数的比例。在本节中,我们使用`go test`命令中集成的测试覆盖率工具,来度量下面代码的测试覆盖率,帮助我们识别测试和我们期望间的差距。
这些启发式方法中,语句的覆盖率是最简单和最广泛使用的。语句的覆盖率是指在测试中至少被运行一次的代码占总代码数的比例。在本节中,我们使用`go test`命令中集成的测试覆盖率工具,来度量下面代码的测试覆盖率,帮助我们识别测试和我们期望间的差距。
下面的代码是一个表格驱动的测试,用于测试第七章的表达式求值程序:
@@ -77,7 +77,7 @@ $ go test -run=Coverage -coverprofile=c.out gopl.io/ch7/eval
ok gopl.io/ch7/eval 0.032s coverage: 68.5% of statements
```
这个标志参数通过在测试代码中插入生成钩子来统计覆盖率数据。也就是说,在运行每个测试前,它会修改要测试代码的副本在每个词法块都会设置一个布尔标志变量。当被修改后的被测试代码运行退出时将统计日志数据写入c.out文件并打印一部分执行的语句的一个总结。如果你需要的是摘要使用`go test -cover`。)
这个标志参数通过在测试代码中插入生成钩子来统计覆盖率数据。也就是说,在运行每个测试前,它将待测代码拷贝一份并做修改在每个词法块都会设置一个布尔标志变量。当被修改后的被测试代码运行退出时将统计日志数据写入c.out文件并打印一部分执行的语句的一个总结。如果你需要的是摘要使用`go test -cover`。)
如果使用了`-covermode=count`标志参数,那么将在每个代码块插入一个计数器而不是布尔标志量。在统计结果中记录了每个块的执行次数,这可以用于衡量哪些是被频繁执行的热点代码。