TDD实践报告

    科技2022-09-01  107

    TDD实践报告

    概念理解TDD重构测试基准测试 迭代章节练习修改代码编写ExampleRepeat来完善函数文档对部分strings包中函数编写测试 Go语言冒泡排序算法实现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实践报告

    先写测试

    运行结果如图

    先使用最少的代码来让失败的测试先跑起来

    运行结果如图

    把代码补充完整,使得它能够通过测试

    运行结果如图

    重构

    由于冒泡排序的代码比较简单,本次没有实现有效的重构。

    基准测试

    运行结果如图

    Processed: 0.008, SQL: 9