TDD实践报告

本文详细介绍了TDD的概念及其在Go语言中的应用,包括编写测试用例、重构代码、基准测试以及文档编写。通过冒泡排序算法的实现,展示了TDD的全过程,包括先写测试、最小化代码使测试运行、完成代码以通过测试和后续的代码优化。同时,还对strings包的部分函数进行了单元测试,并提供了性能基准测试的结果。
摘要由CSDN通过智能技术生成

本次配置在VMWare虚拟机+Ubuntu20.04环境下完成。

概念理解

TDD

TDD是测试驱动开发的简称,TDD的原理是在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码,是一种“测试先行”的程序设计方法论,其基本流程围绕着测试->编码(重构)->测试的循环展开。

重构

重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

测试

Go语言拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码。go test 命令会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。

基准测试

基准测试可以测试一段程序的运行性能及耗费 CPU 的程度。Go语言中提供了基准测试框架,使用方法类似于单元测试,使用者无须准备高精度的计时器和各种分析工具,基准测试本身即可以打印出非常标准的测试报告。测试人员可以根据这些性能指标的反馈,来优化我们的代码,进而提高性能。

迭代章节练习

修改代码

要求:修改测试代码,以便调用者可以指定字符重复的次数,然后修复代码。
修改先写测试
repeat1

尝试运行测试,得到结果如图
先写测试
使用最少的代码来让失败的测试先跑起来
repeat2

运行测试,得到结果如图
最少代码
把代码补充完整,使得它能通过测试
repeat3

运行测试,得到结果如图
完整代码
重构
repeat4

基准测试
repeat5

运行测试,得到结果如图
基准测试

编写ExampleRepeat来完善函数文档

在测试文件中添加函数如下:
repeat6
如果删除注释 “//Output: aaaaa”,示例函数将会被编译,但是它不会执行。

运行go test -v 命令得到结果如下:example

访问 http://localhost:6060/,查看go document中Example的具体效果,如下图
godoc

对部分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中所有字符修改为其大写形式。
编写的测试代码如下:
strings

运行结果如下图
testStrings

Go语言冒泡排序算法实现TDD实践报告

先写测试

bubble1

运行结果如图
1

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

bubble2

运行结果如图
2

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

bubble3

运行结果如图
3

重构

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

基准测试

bubble4

运行结果如图
4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值