Golang中测试相关-单元测试、pprof、压力测试、火焰图

1. 初始化工作可以放在TestMain中,覆盖原方法
2. 可以对文件更改其位置,比如err := beego.LoadAppConfig("ini", "../conf/app.conf"),更改配置文件地址
3. 对方法进行测试,只需选中方法,右击generate->test for function,对文件进行测试,右击generate->test for file
4. 运行时,要运行测试方法可以右击测试方法,运行或者调试,运行文件时,右击文件,可以选择run
5. golang项目的测试覆盖率 go test -cover,首先定位到要运行的测试文件目录下
    5.1 更详细的数据可以先输出到固定文件:go test -coverprofile=size_coverage.out,之后再对这文件进行展开分析:go tool cover -func=size_coverage.out
         更加炫酷的查看可以是go tool cover -html=size_coverage.out,网页中打开
6.  查看某个包被引用的热力图go test -covermode=count -coverprofile=count.out github.com\astaxie\beego,运行之后查看细节go tool cover -html=count.out
     后面的包名就是要测试覆盖效果的包名,可以用‘.’,代表当前包

压力测试
1.go-stress-testing工具 运行:go run main.go -c 1 -n 100 -u https://www.baidu.com/,-c代表并发数,-n代表请求次数
2.可以使用golang自带的压测工具Benchmark,只需重写func BenchmarkXXX方法,添加b.ReportAllocs(),右击运行即可
go-stress-testing用来测试接口,Benchmark用来测试方法


3 pprof使用教程
    1. 在main方法里加入 go func() { log.Println(http.ListenAndServe("localhost:6060", nil)) //启动http服务器}()
     2. 启动完成后,使用
            go tool pprof http://localhost:6060/debug/pprof/heap    // 获取堆的相关数据
            go tool pprof http://localhost:6060/debug/pprof/profile // 获取30s内cpu的相关数据
            go tool pprof http://localhost:6060/debug/pprof/block   // 在你程序调用 runtime.SetBlockProfileRate ,查看goroutine阻塞的相关数据
            go tool pprof http://localhost:6060/debug/pprof/mutex   // 在你程序调用 runtime.SetMutexProfileFraction,查看谁占用mutex
    3. 在https中使用
            go tool pprof https+insecure://localhost:8001/debug/pprof/heap将原来的http替换成https+insecure即可
    4.web命令可以查看图形化的调用情况
    5.flat和flat%表示函数在 CPU 上运行的时间以及百分比,sum%当前所有函数累加使用 CPU 的比例,cum和cum%代表这个函数以及子函数运行所占用的时间和比例,        也被称为累加值 cumulative
    6.list +正则表达式,可以查看匹配函数的代码以及每行代码的耗时

4 火焰图安装
    4.1 首先安装uber开源的工具go get -v github.com/uber/go-torch
    4.2 进入go-torch目录,安装FlameGraph,git clone https://github.com/brendangregg/FlameGraph.git
    4.3 安装pl文件打开工具ActivePerl
    4.4 将perl和FlameGraph加入环境变量
    4.5 go-torch -u http://localhost:6060 -t 30

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值