本文永久链接 – https://tonybai.com/2021/08/11/how-to-test-go-beta-or-rc

Go 1.17已经发布到RC2版本!正式版最早将在8月中旬发布,最迟也不会晚于月底。对于喜欢尝鲜的Gopher而言,在体验Go 1.17的新特性的同时,也不要忘了为Go语言项目做做贡献!贡献什么呢?其实很简单,就是在尝鲜的同时,对Go语言的Beta公测版以及RC发布候选版进行测试,并把遇到的问题提交到Go语言项目官方issue列表中去。

那么如何对Go语言的Beta公测版或RC发布候选版进行测试呢?别急,这就是本文要告诉你的内容。

本文翻译自Go语言项目“编外”核心开发者、现Tailscale工程师Josh Bleecher Snyder的文章《How to test a Go beta or RC》

Go发布周期的这个时间阶段,Go团队希望全世界的Go开发者们帮助测试Go的Beta公测版和RC发布候选版

请帮忙吧! 这很简单,很快速,也很重要。

这是一篇关于如何测试(Beta和RC),测试什么,以及为什么测试的文章。

1. 安装

预发布版(pre-releases)可以用go get下载。例如:

$ go install golang.org/dl/go1.17beta1@latest
$ go1.17beta1 download
$ go1.17beta1 test your/favorite/package

完整的预发布版本列表可在https://pkg.go.dev/golang.org/dl页面查看。

2. Beta公测版

Beta公测版是对新版本的早期观察。它们有时会有已知的错误。严重的错误是不常见的,但也不是没有。新的API可能仍然会因反馈而改变。你不应该在生产中使用Beta版。

以下是你在处理Go Beta版时应该做的事情,我们按简单快速到相当复杂进行排序。即使您只做了第一项或第二项,也是很有帮助的!

  • 在本地运行你的测试。调查并报告任何新的故障
  • 阅读版本发布说明。如果你看到任何有关该版本的异常情况,请提交一个issue来讨论。
  • 在本地运行你的基准测试。调查并报告性能退步情况。
  • 如果你有一个暂存服务器,CI,或者任何你可以运行更多测试的地方,请在那里使用预发布版本,并提交你遇到的任何问题。
  • 查看API的差异。如果你看到任何有关的问题,请提交一个issue来讨论。

3. 发布候选版本(Release candidiates, RC)

候选版本通常没有已知的严重bug。(Google在他们的真实服务器上测试候选版本。) API应该是稳定的。

处理Go RC版本的事情和处理beta版本的事情是一样的。只是如果你有足够的带宽和手段,你可能想尝试在生产中运行它,在一个小的服务器子集上。

4. 我没有那么多时间

有一到两个Beta版和一到两个RC版的情况并不罕见。那将需要大量的测试。如果你只有少量的时间来帮助Go实现无错误的发布,那该怎么办?

如果你只能做一件事,用第一个beta版在本地运行你的测试。这只需要几分钟的时间。错误越早被发现,它们就越有可能被修复,而且修复得很好。

如果你能多做一点,请尽早阅读版本发布说明。无论如何,你都可能会在发布时阅读它们。通过提早阅读,你仍然有机会修复你看到的任何问题。

5. 为什么要测试Beta版和RC版?

编程语言,以及它们的工具和社区,是一种复杂的存在。人们以奇妙的、不寻常的方式使用它们。而编程语言也是软件,你知道这意味着什么。尽管Go的贡献者们尽了最大的努力,Go问题追踪器中还是有不少沮丧的程序员,他们发现新版本对他们不适用时已经太晚了:一个微妙的行为变化,一个罕见的性能退步,一个不太合适的API设计。

一旦版本发布,修复这些问题就变得更加困难,有时甚至不可能。安全问题会得到及时的修复,但其他问题,即使是关键性的bug,也会在一个月后的下一个版本中才会得到修复。非关键性的bug要到下一个Go大版本才会被修复,最早也要6个月后。而且在很多情况下,由于Go 1的兼容性承诺,我们可能会被永远困在这个问题上。

Beta版和RC是我们Go社区发现问题的唯一的机会,我们还有时间去真正解决它们。

6. 奖励

考虑将Go的”tip”版本添加到你的CI中吧。这对尽早发现问题特别有帮助,但它确实增加了相当多的工作。在提交问题之前,你需要检查Go官方构建仪表板并进行一些调查,以确定发现的问题是否值得报告。


“Gopher部落”知识星球正式转正(从试运营星球变成了正式星球)!“gopher部落”旨在打造一个精品Go学习和进阶社群!高品质首发Go技术文章,“三天”首发阅读权,每年两期Go语言发展现状分析,每天提前1小时阅读到新鲜的Gopher日报,网课、技术专栏、图书内容前瞻,六小时内必答保证等满足你关于Go语言生态的所有需求!部落目前虽小,但持续力很强。在2021年上半年,部落将策划两个专题系列分享,并且是部落独享哦:

  • Go技术书籍的书摘和读书体会系列
  • Go与eBPF系列

欢迎大家加入!

Go技术专栏“改善Go语⾔编程质量的50个有效实践”正在慕课网火热热销中!本专栏主要满足广大gopher关于Go语言进阶的需求,围绕如何写出地道且高质量Go代码给出50条有效实践建议,上线后收到一致好评!欢迎大家订
阅!

img{512x368}

我的网课“Kubernetes实战:高可用集群搭建、配置、运维与应用”在慕课网热卖中,欢迎小伙伴们订阅学习!

img{512x368}

Gopher Daily(Gopher每日新闻)归档仓库 – https://github.com/bigwhite/gopherdaily

我的联系方式:

  • 微博:https://weibo.com/bigwhite20xx
  • 微信公众号:iamtonybai
  • 博客:tonybai.com
  • github: https://github.com/bigwhite
  • “Gopher部落”知识星球:https://public.zsxq.com/groups/51284458844544

微信赞赏:
img{512x368}

商务合作方式:撰稿、出书、培训、在线课程、合伙创业、咨询、广告合作。

© 2021, bigwhite. 版权所有.

Related posts:

  1. vendor目录是否需要提交到代码库中?答案全在这一篇
  2. Go语言之禅
  3. Go标准库http与fasthttp服务端性能比较
  4. Kuberize Ceph RBD API服务
  5. 初窥Go module