Go 功能测试与性能测试

发表于:2018-9-12 15:11

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Vincen_shen    来源:博客园

分享:
  1、功能测试
  calcTriangle.go
  // 需要被测试的函数
  func calcTriangle(a, b int) int {
  return int(math.Sqrt(float64(a*a + b*b)))
  }
  calcTriangle_test.go   // 注意测试文件必须以_test结尾
  package main
  import "testing"
  // 注意测试函数必须以 Test开头
  func TestTriangle(t *testing.T) {
  // 表格驱动测试
  tests := []struct {a, b, c int} {
  {3,4,5},
  {5,12,13},
  {8,15,17},
  {12,35,37},
  {30000,40000,50000},
  }
  for _, tt := range tests {
  if actual := calcTriangle(tt.a, tt.b); actual != tt.c {
  t.Errorf("calcTriangle(%d, %d); got %d; expected %d", tt.a, tt.b, actual, tt.c)
  }
  }
  }
  测试执行方法
  1、IDE中直接执行
  2、命令行 go test .
  代码覆盖率测试
  命令行执行:
  1、go test -coverprofile=c.out  生成覆盖率数据
  2、go tool cover -html c.out  生成html页面展示
  2、性能测试
  nonrepeating.go
  package main
  import "fmt"
  func lengthOfNonRepeatingSubStr(s string) int {
  lastOccurred := make(map[rune]int)
  start := 0
  maxLength := 0
  for i, ch := range []rune(s) {
  if lastI, ok := lastOccurred[ch]; ok && lastI >= start {
  start = lastI + 1
  }
  if i - start + 1 > maxLength {
  maxLength = i - start + 1
  }
  lastOccurred[ch] = i
  }
  return maxLength
  }
  func main() {
  fmt.Println(
  lengthOfNonRepeatingSubStr("abcabcbb"))
  fmt.Println(
  lengthOfNonRepeatingSubStr("bbbbb"))
  fmt.Println(
  lengthOfNonRepeatingSubStr("pwwkew"))
  fmt.Println(
  lengthOfNonRepeatingSubStr(""))
  fmt.Println(
  lengthOfNonRepeatingSubStr("b"))
  fmt.Println(
  lengthOfNonRepeatingSubStr("abcdef"))
  fmt.Println(
  lengthOfNonRepeatingSubStr("这里是慕课网"))
  fmt.Println(
  lengthOfNonRepeatingSubStr("一二三二一"))
  fmt.Println(
  lengthOfNonRepeatingSubStr(
  "黑化肥挥发发灰会花飞灰化肥挥发发黑会飞花"))
  }
  nonrepeating_test.go
  package main
  import "testing"
  // 功能测试
  func TestSubstr(t *testing.T) {
  tests := []struct{s string; ans int} {
  {"abcabcbb", 3},
  {"bbbbb", 1},
  {"pwwkew", 3},
  {"", 0},
  {"b", 1},
  {"abcdef", 6},
  {"这里是慕课网", 6},
  {"一二三二一", 3},
  {"黑化肥挥发发灰会花飞灰化肥挥发发黑会飞花", 8},
  }
  for _, tt := range tests {
  if actual := lengthOfNonRepeatingSubStr(tt.s); actual != tt.ans {
  t.Errorf("got %d for input %s; expected %d", actual, tt.s, tt.ans)
  }
  }
  }
  // 性能测试
  func BenchmarkSubstr(b *testing.B) {
  s := "黑化肥挥发发灰会花飞灰化肥挥发发黑会飞花"
  ans := 8
  // b.N 自动判断测试的次数
  for i := 0; i < b.N ; i++ {
  actual := lengthOfNonRepeatingSubStr(s)
  if actual != ans {
  b.Errorf("got %d for input %s; expected %d", actual, s, ans)
  }
  }
  }
  测试执行方法
  1、IDE中直接执行
  2、命令行 go test -bench .
  3、go test -bench . -cpuprofile=cpu.out   ,  go tool pprof  生成SVG图形

    上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号