Go语言测试(回归测试、集成测试、单元测试简述)与项目开发的流程简述

1. 测试的类别

回归测试:使用APP,如刷抖音看评论
集成测试:对功能维度进行自动化测试
单元测试:对单独的函数、模块做验证
以上三个:测试成本下降,覆盖率上升

2. 单元测试的规则(函数以Test开头)

命名:所有的测试文件以_test.go结尾
函数名:func TestXxx(*testing.T)
初始化逻辑:

func TestMain(m *testing.M){
	//测试前:数据装载、 配置初始化等
	code:=m.Run()
	//测试后:释放资源等
	os.Exit(code7777776)
}

2.1 示例1

package main

import "testing"

func HelloTom() string {
	return "Jerry"
}
func TestHelloTom(t *testing.T) {
	output := HelloTom()
	expectOutput := "Tom"
	if output != expectOutput {
		t.Errorf("Expected %s do not match actual %s", expectOutput, output)
	}
}
func main() {
	testing.Main(func(pat, str string) (bool, error) { return true, nil }, []testing.InternalTest{{"TestHelloTom", TestHelloTom}}, []testing.InternalBenchmark{}, []testing.InternalExample{})
}

在这里插入图片描述

2.2 示例2

package main

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func HelloTom() string {
	return "Tom"
}
func TestHelloTom(t *testing.T) {
	output := HelloTom()
	expectOutput := "Tom"
	assert.Equal(t, expectOutput, output)
}
func main() {
	testing.Main(func(pat, str string) (bool, error) { return true, nil }, []testing.InternalTest{{"TestHelloTom", TestHelloTom}}, []testing.InternalBenchmark{}, []testing.InternalExample{})
}

在这里插入图片描述

单元测试覆盖率:50%~60%,较高80%

3. Mock测试(打桩)

处理文件(如改变数据库)后,可能原本依赖的输入不正确了,程序也就不能运行了。为了避免这个问题,进行Mock打桩。Go语言中有很多第三方库提供了 mock 功能,例如Monkey这个库,可以简单地利用Patch将函数的运行地址替换成原来的,最后Unpatch替换回来。保证单元测试的稳定性。例如:

package main

import (
	"fmt"
	"github.com/bouk/monkey"
)

func main() {
	// 要替换的函数
	originalFunction := func() string {
		return "Hello, World!"
	}

	// 替换函数
	patch := monkey.Patch(originalFunction, func() string {
		return "Goodbye, World!"
	})
	defer patch.Unpatch()

	fmt.Println(originalFunction())
	// 输出: Goodbye, World!
}

在这个例子中,我们使用了 monkey 库中的 Patch 函数来替换 originalFunction 函数,并在最后使用 Unpatch 函数来撤销替换。在这个例子中,替换后的函数将总是返回 “Goodbye, World!”。

4. 基准测试(类似于单元测试,函数以Benchmark开头)

性能分析(如服务器负载均衡中使用到了rand函数,测试时使用串行测试和并行测试效率不同。若用fastrand函数代替rand函数,发现性能有巨大提升。)本地跑一跑。

5. 项目开发的流程

项目拆解

首先明确需求;
然后作ER图(明确各主体的各个属性);
然后进行分层结构的设计,如数据层、逻辑层、视图层

代码设计

根据各个层进行代码的实现。

测试运行

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值