Go知识点之随便记记(十)— 测试+性能调试

学习资料来自

GitHub - unknwon/the-way-to-go_ZH_CN: 《The Way to Go》中文译本,中文正式名《Go 入门指南》

启动外部命令和程序

1、os 包 :StartProcess 函数(可调用或启动外部系统命令+二进制可执行文件)

1)参数

(1)参数1:要运行的进程

(2)参数2:传递选项或参数

(3)参数3:含有系统环境基本信息的结构体

2)返回值:

(1)启动成功:被启动进程的 id

(2)启动失败:返回错误

2、exec 包 :exec.Command(name string, arg ...string) 函数和 Run() 函数

(1)exec.Command(name string, arg ...string) :系统命令/可执行文件名字创建 Command 对象

(2)Command.Run() :执行Command中的命令或可执行文件

测试

1、测试程序必须属于被测试的包,文件名满足*_test.go形式,测试代码和包中的业务代码是分开的。

2、_test 程序不会被普通的 Go 编译器编译,只有 gotest 会编译所有的普通程序和测试程序。

3、测试文件中必须导入 "testing" 包同时包含一些以 Test 打头的全局函数,例如:

func TestAbcde(t *testing.T)

1)T:传给测试函数的结构类型,用来管理测试状态,如 t.Log,t.Error,t.ErrorF 等。

2)在函数的结尾把输出跟想要的结果对比,如果不等就打印一个错误,成功的测试则直接返回。

4、数据表驱动测试 

var tests = []struct{ 	// Test table
	in  string
	out string

}{
	{"in1", "exp1"},
	{"in2", "exp2"},
	{"in3", "exp3"},
...
}

func verify(t *testing.T, testnum int, testcase, input, output, expected string) {
	if expected != output {
		t.Errorf("%d. %s with input = %s: output %s != %s", testnum, testcase, input, output, expected)
	}
}

func TestFunction(t *testing.T) {
	for i, tt := range tests {
		s := FuncToBeTested(tt.in)
		verify(t, i, "FuncToBeTested: ", tt.in, s, tt.out)
	}
}

性能调试:分析+优化

1、时间和内存消耗:脚本测量便捷脚本( /usr/bin/time -f '%Uu %Ss %er %MkB %C' "$@" )

2、go test 调试

1)-cpuprofile 选项 :向指定文件写入 CPU 使用情况

2)-memprofile 选项 :向指定文件写入内存使用情况

3、pprof 调试 :以 pprof 可视化工具需要的格式写入运行时报告数据(这部分看得晕乎,不看了,之后实践出真知吧,哈哈就是要偷个理直气壮的懒)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值