初学TDD:关于测试驱动开发,我们知道些什么(上)

文章介绍了测试驱动开发(TDD)的概念和原则,强调先写测试代码再编写功能代码。接着讨论了代码重构的目的和基准测试在测量程序性能中的作用,特别是在数据库性能分析中的重要性。最后,通过一个简单的Go语言代码示例展示了TDD的步骤,包括编写测试、实现功能和重构,并引入了基准测试来衡量代码性能。

关于TDD

概念

测试驱动开发,英文全称Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。

TDD三原则

  • 除非为了通过一个单元测试,否则不允许编写任何产品代码。
  • 在一个单元测试中只允许编写刚好能够导致失败的内容。
  • 一次只能写通过一项单元测试的产品代码,不能多写。

图片

重构

代码重构(英语:code refactoring)指对软件代码做任何更动以增加可读性或者简化结构而不影响输出结果。

关于基准测试

什么是基准测试

基准测试是测量一个程序在固定工作负载下的性能。在Go语言中,基准测试函数和普通测试函数写法类似,但是以Benchmark为前缀名,并且带有一个*testing.B类型的参数;testing.B参数除了提供和testing.T类似的方法,还有额外一些和性能测量相关的方法。它还提供了一个整数N,用于指定操作执行的循环次数。

基准测试与压力测试

基准测试可以理解为针对系统的一种压力测试。基准测试不关心业务逻辑,更加简单、直接、易于测试,数据可以由工具生成,不要求真实;而压力测试一般考虑业务逻辑,要求真实的数据。

基准测试的作用

对于多数Web应用,整个系统的瓶颈在于数据库;原因很简单:Web应用中的其他因素,例如网络带宽、负载均衡节点、应用服务器(包括CPU、内存、硬盘灯、连接数等)、缓存,都很容易通过水平的扩展(俗称加机器)来实现性能的提高。而对于MySQL,由于数据一致性的要求,无法通过增加机器来分散向数据库写数据带来的压力;虽然可以通过前置缓存(Redis等)、读写分离、分库分表来减轻压力,但是与系统其它组件的水平扩展相比,受到了太多的限制。

而对数据库的基准测试的作用,就是分析在当前的配置下(包括硬件配置、OS、数据库设置等),数据库的性能表现,从而找出MySQL的性能阈值,并根据实际系统的要求调整配置。

完成“迭代”教程

先写测试

package iteration

import "testing"

func TestRepeat(t *testing.T) {
  repeated := Repeat("a")
  expected := "aaaaa"
    

  if repeated != expected {
    t.Errorf("expected '%q' but got '%q'", expected, repeated)
  }
}

尝试运行测试

图片

使用最少的代码让失败的测试能够运行

package iteration

func Repeat(character string) string {
  return ""
}

结果:

图片

编写可以通过测试的实现

package iteration

func Repeat(character string) string {
  var repeated string
  for i := 0; i < 5; i++ {
    repeated = repeated + character
  }
  return repeated
}

结果:

图片

重构

为了规范性、简洁性、可读性等因素修改代码:

const repeatCount = 5

func Repeat(character string) string {
    var repeated string
    for i := 0; i < repeatCount; i++ {
        repeated += character
    }
    return repeated
}

基准测试

func BenchmarkRepeat(b *testing.B) {
  for i := 0; i < b.N; i++ {
    Repeat("a")
  }
}

值得一提的是goland可以快捷生成测试代码:

图片

结果:

图片

最后: 下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】
在这里插入图片描述

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值