TDD实践报告
本次配置在VMWare虚拟机+Ubuntu20.04环境下完成。
概念理解
TDD
TDD是测试驱动开发的简称,TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码,是一种“测试先行”的程序设计方法论,其基本流程围绕着测试->编码(重构)->测试的循环展开。
重构
重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
测试
Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码。go test 命令会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。
基准测试
基准测试可以测试一段程序的运行性能及耗费 CPU 的程度。Go语言中提供了基准测试框架,使用方法类似于单元测试,使用者无须准备高精度的计时器和各种分析工具,基准测试本身即可以打印出非常标准的测试报告。测试人员可以根据这些性能指标的反馈,来优化我们的代码,进而提高性能。
迭代章节练习
修改代码
要求:修改测试代码,以便调用者可以指定字符重复的次数,然后修复代码。
修改先写测试
尝试运行测试,得到结果如图
使用最少的代码来让失败的测试先跑起来
运行测试,得到结果如图
把代码补充完整,使得它能通过测试
运行测试,得到结果如图
重构
基准测试
运行测试,得到结果如图
编写ExampleRepeat来完善函数文档
在测试文件中添加函数如下:
如果删除注释 “//Output: aaaaa”,示例函数将会被编译,但是它不会执行。
运行go test -v 命令得到结果如下:
访问 http://localhost:6060/,查看go document中Example的具体效果,如下图
对部分strings包中函数编写测试
在strings包中选取了三个函数进行测试,分别是Contains,Count以及ToUpper函数。
func Contains(s, substr string) bool:判断字符串 s 中是否包含子串 substr,若包含返回true,否则返回false。
func Count(s, sep string) int:计算字符串 sep 在 s 中的非重叠个数,如果 sep 为空字符串,则返回 s 中的字符个数加1。
func ToUpper(s string) string:将s中所有字符修改为其大写形式。
编写的测试代码如下:
运行结果如下图
Go语言冒泡排序算法实现TDD实践报告
先写测试
运行结果如图
先使用最少的代码来让失败的测试先跑起来
运行结果如图
把代码补充完整,使得它能够通过测试
运行结果如图
重构
由于冒泡排序的代码比较简单,本次没有实现有效的重构。
基准测试
运行结果如图