Go语言工程实践进阶-测试 | 青训营笔记

38 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

测试关系着系统的质量,质量则决定线上系统的稳定性,一旦出现bug漏洞,就会造成事故。

测试

测试是避免事故的最后一道屏障。

测试可以分为:回归测试、集成测试、单元测试。

回归测试指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。

集成测试也叫组装测试、联合测试、子系统测试或部件测试。 集成测试是在单元测试的基础上,将所有模块按照概要设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。

单元测试是指在开发阶段,开发者对单独的函数、模块做验证,写一些测试用例。是针对程序模块来进行正确性检验的测试工作。是在与程序其他部分相隔离的情况下进行检查和验证的工作。

image.png

单元测试

单元测试的规则

  1. 所有测试文件以_test.go结尾 image.png
  2. func TestXxx(*testing.T)
func TestPublishPost(t *testing.T) {
}
  1. 初始化逻辑放到TestMain中
func TestMain(m *testing.M) {
        // 测试前: 数据装载、配置初始化等前置工作
        
        code := m.Run()
        
        // 测试后: 释放资源等收尾工作
        
        os.Exit(code)
}

基准测试

Go语言还提供了基准测试框架,基准测试是指测试一段程序的运行性能及耗费CPU的程度。而我们在实际项目开发中,经常会遇到代码性能瓶颈,为了定位问题经常要对代码做性能分析,这就用到了基准测试。使用方法类似于单元测试。

import (
    "math/rand"
)

var ServerIndex [10]int

func InitServerIndex() {
    for i := 0; i < 10; i++ {
        ServerIndex[i] = i+100
    }
}

func Select() int {
    return ServerIndex[rand.Intn(10)]
}