golang 单元测试&&性能测试

一:单元测试

1.为什么要做单元测试和性能测试

  • 减少bug
  • 快速定位bug
  • 减少调试时间
  • 提高代码质量

2.golang的单元测试

  • 单元测试代码的go文件必须以_test.go结尾
  • 单元测试的函数名必须以Test开头,是可导出公开的函数
  • 测试函数的签名必须接收一个指向testing.T类型的指针,并且不能返回任何值

3.golang单元测试组

  • 有好几个不同的输入以及输出组成的一组单元测试

4.测试覆盖率

  • go test -cover 直接输出覆盖率
  • go test -run TestAll 指定要运行的单元测试函数
  • go test -cover -coverprofile=c.out
  • go tool cover -html=c.out -o coverage.html 输出具体的代码覆盖情况

二:性能测试

  • 执行所有函数 go test -bench=".*"
  • 执行指定函数 go test -bench="BenchmarkWithPool"
  • 生成内存和cpu分析文件 go test -bench="BenchmarkWithPool" -cpuprofile cpu.out -memprofile mem.out
  • 分析cpu文件 go tool pprof cpu.out
  • 分析内存文件 go tool pprof mem.out
  • 输出png图 图中红色方块面积越大 证明申请的内存越大或者消耗cpu越多

源码链接

原文地址:https://www.cnblogs.com/alin-qu/p/11179337.html

时间: 2024-08-03 05:57:49

golang 单元测试&&性能测试的相关文章

ARTS-S golang单元测试

golang单元测试 在$GOPATH的src目录下建目录demo_unittest 在目录demo_unittest下建文件calc.go,内容如下: package demo_unittest func Add(a, b int) int { return a + b } func Sub(a, b int) int { return a - b } func Mul(a, b int) int { return a * b } func Div(a, b int) int { return

Golang 单元测试与性能测试

Go 自带了测试框架和工具,在 testing 包中,以便完成单元测试(T 类型)和性能测试(B 类型).一般测试代码放在*_test.go 文件中,与被测代码放于同一个包中. 单元测试 测试函数名称格式是:Test[^a-z],即以 Test 开头,跟上非小写字母开头的字符串.每个测试函数都接受一个testing.T 类型参数,用于输出信息或中断测试. 测试方法有: Fail: 标记失败,但继续执行当前测试函数 FailNow: 失败,立即终止当前测试函数执行 Log: 输出错误信息 Erro

【GoLang】GoLang 单元测试、性能测试使用方法

单元测试代码: ackage test import ( // "fmt" "testing" ) func Test_FlowControl(t *testing.T) { var x int64 = 10 if x == 10 { // fmt.Println("x is 10") t.Log("x is 10") } else { // fmt.Println("x is not 10") t.Log

golang 单元测试

单元测试是质量保证十分重要的一环,好的单元测试不仅能及时地发现问题,更能够方便地调试,提高生产效率,所以很多人认为写单元测试是需要额外的时间,会降低生产效率,是对单元测试最大的偏见和误解 go 语言原生支持了单元测试,使用上非常简单,测试代码只需要放到以 _test.go 结尾的文件中即可.golang的测试分为单元测试和性能测试,单元测试的测试用例以 Test 开头,性能测试以 Benchmark 开头 举个例子 实现排列组合函数对应的单元测试和性能测试 实现排列组合函数 // combina

golang单元测试

使用testing进行单元测试 golang的测试库testing 测试文件与被测试文件在同一个包中 测试文件名为被测试文件名(去后缀)_test.go 测试用例函数以Test开头,TestFunc1(t *testing.T) 一个测试用例文件中可以有多个测试用例函数 在测试用例函数中调用被测试函数,根据函数返回结果与预期的正确结果的比较, 判断函数是否正确.t.Log输出日志,t.Fatal输出错误信息. 执行测试文件的方式 执行全部测试文件中全部函数 go test 如果需要输出日志信息g

Fabric链码测试方法(go语言单元测试/性能测试)

Fabric chaincode测试 —— 开发者模式和单元测试 [参考链接]:https://blog.csdn.net/zhayujie5200/article/details/84561825 前言 在fabric开发中,chaincode的测试是一个令人比较头疼的问题,一是由于实际情况中chaincode中的存储和查询是依赖于peer节点上的状态数据库的,所以无法在本地直接测试:二是由于chaincode是运行于容器中的,这导致我们很难获取在代码中打印的日志.如果直接在实际开发环境中测试

golang map性能测试

golang map是golang的方便操作的key-value package main import ( "fmt" "math/rand" "time" _"strconv" ) var x = make(map[int]int, 100000001) //var x = make(map[string]string, 100000001) func main() { ttime := time.Now().UnixNa

golang SQLite3性能测试

SQLite是个小型的数据库,很简洁,即支持文件也支持内存,比较适合小型的独立项目,在没有网络的时候做一些复杂的关系数据存储和运算. 为了考察性能做10M(1000万)条记录的测试,测试机4CPU.8G内存,操作系统:Ubuntu 16 测试结果: 10M条写入时间:92秒 平均每条检索时间:0.0172毫秒 最大内存占用1.7G 使用的Driver github.com/mattn/go-sqlite3 下面是测试的代码 //SQLite in memory,小心,不能只写:memory:,这

Golang适合高并发场景的原因分析

典型的两个现实案例: 我们先看两个用Go做消息推送的案例实际处理能力. 360消息推送的数据: 16台机器,标配:24个硬件线程,64GB内存 Linux Kernel 2.6.32 x86_64 单机80万并发连接,load 0.2~0.4,CPU 总使用率 7%~10%,内存占用20GB (res) 目前接入的产品约1280万在线用户 2分钟一次GC,停顿2秒 (1.0.3 的 GC 不给力,直接升级到 tip,再次吃螃蟹) 15亿个心跳包/天,占大多数. 京东云消息推送系统 (团队人数:4