服务计算作业二

    科技2022-08-29  110

    目录

    1.理解概念2.TDD例子3.TDD快排实践报告4.实验总结


    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的思想,完成了简单的基准测试。

    Processed: 0.008, SQL: 10