服务计算作业二


1.理解概念

TDD:TDD全称Test-Driven Development,中文是测试驱动开发,是一种在开发功能代码之前,先编写单元测试用例代码,测试代码确定需要编写什么产品代码的技术。

重构:重构就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。(百度百科)我自己的理解就是通过代码的优化,让一个程序能够在实现相同功能的前提下效率更高、更简洁、或者可重用性更好。

基准测试:基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。(百度百科)

在go语言里也可以编写基准测试,规则如下:

   1.基准测试的代码文件必须以 _test.go 结尾

   2.基准测试的函数必须以 Benchmark 开头,必须是可以导出的

   3.基准测试的函数必须接受一个指向 Benchmark 类型的指针作为唯一参数

   4.基准测试函数不能有返回值

   5.b.ResetTimer 是重置计时器,这样可以避免 for 循环之前的初始化代码干扰

   6.最后的 for 循环很重要,被测试的代码要放到 for 循环里

   7. b.N 是基准测试框架提供的,表示循环的次数,因为需要反复调用测试的代码,才可以评估性能

来源:https://www.cnblogs.com/leeyongbard/p/10388549.html

2.TDD例子

(1)先写测试
在这里插入图片描述
(2)尝试运行
在这里插入图片描述
(3)用最少的代码来让失败的测试先跑起来
在这里插入图片描述
(4)把代码补充完整,使得它能够通过测试
在这里插入图片描述
在这里插入图片描述
(5)重构
重构+=运算符并使用。
在这里插入图片描述
在这里插入图片描述
(6)基准测试
增加BenchmarkRepeat
在这里插入图片描述
结果:
在这里插入图片描述

3.TDD快排实践报告

(1)先写测试

package quicksort

import "testing"

func TestQuickSort(t *testing.T) {
	arr := []int{23, 45, 11, 57, 39, 51, 97, 66, 8, 89}

	result := quicksort(arr, 0, 9)
	expect := []int{8, 11, 23, 39, 45, 51, 57, 66, 89, 97}

	for i := 0; i < 10; i++ {
		if result[i] != expect[i] {
			t.Errorf("example [23, 45, 11, 57, 39, 51, 97, 66]; expected %v; but got %v\n", expect, result)
			break
		}
	}
}

(2)尝试运行
在这里插入图片描述
(3)用最少的代码来让失败的测试先跑起来

package quicksort

func quicksort(arr []int, low, high int) []int {
	return arr
}

在这里插入图片描述
(4)把代码补充完整,使得它能够通过测试

package quicksort

func quicksort(arr []int, low, high int) []int {
	var ret []int = []int{8, 11, 23, 39, 45, 51, 57, 66, 89, 97}
	return ret
}

在这里插入图片描述
(5)重构
快速排序是通过找到一个“中点”,将数组排成所有大于“中点”的在一边,小于“中点”的在另一边,然后分别对两边再次进行快速排序的递归算法,实现如下:

package quicksort

func partition(array []int, i int, j int) int {
	pivot := array[i]
	for i < j {
		for j > i && array[j] > pivot {
			j--
		}
		if j > i {
			array[i] = array[j]
			i++
		}
		for i < j && array[i] < pivot {
			i++
		}
		if i < j {
			array[j] = array[i]
			j--
		}
	}
	array[i] = pivot
	return i
}

func quicksort(arr []int, low, high int) []int {
	var mid int
	if low < high {
		mid = partition(arr, low, high)
		quicksort(arr, low, mid-1)
		quicksort(arr, mid+1, high)
	}
	return arr
}

结果:
在这里插入图片描述
(6)基准测试

func BenchmarkRepeat(b *testing.B) {
	arr := []int{23, 45, 11, 57, 39, 51, 97, 66, 8, 89}

	for i := 0; i < b.N; i++ {
		quicksort(arr, 0, 9)
	}
}

结果如下:
在这里插入图片描述

4.实验总结

通过这次实验,初步理解了TDD的思想,完成了简单的基准测试。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值