一文告诉你如何帮助测试Go语言Beta公测版与RC候选发布版

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

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

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

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

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

这是一篇关于如何测试(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版时应该做的事情,我们按简单快速到相当复杂进行排序。即使您只做了第一项或第二项,也是很有帮助的!

  • 在本地运行你的测试。调查并报告任何新的故障[7]

  • 阅读版本发布说明[8]。如果你看到任何有关该版本的异常情况,请提交一个issue[9]来讨论。

  • 在本地运行你的基准测试。调查并报告性能退步情况。

  • 如果你有一个暂存服务器,CI,或者任何你可以运行更多测试的地方,请在那里使用预发布版本,并提交你遇到的任何问题。

  • 查看API的差异[10]。如果你看到任何有关的问题,请提交一个issue来讨论。

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

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

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

4. 我没有那么多时间

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

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

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

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

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

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

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

6. 奖励

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


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

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

  • Go与eBPF系列

欢迎大家加入!

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


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


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

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

参考资料

[1] 

RC2版本: https://golang.google.cn/dl/go1.17rc2.linux-amd64.tar.gz

[2] 

Go语言项目官方issue列表: https://github.com/golang/go/issues

[3] 

Josh Bleecher Snyder: https://github.com/josharian

[4] 

《How to test a Go beta or RC》: https://commaok.xyz/post/test-beta/

[5] 

Go发布周期: https://github.com/golang/go/wiki/Go-Release-Cycle

[6] 

Go团队希望全世界的Go开发者们帮助测试Go的Beta公测版和RC发布候选版: https://groups.google.com/forum/#!forum/golang-announce

[7] 

报告任何新的故障: https://golang.org/issue/new

[8] 

版本发布说明: https://tip.golang.org/doc/go1.17

[9] 

提交一个issue: https://golang.org/issue/new

[10] 

API的差异: https://github.com/golang/go/blob/master/api/go1.17.txt

[11] 

版本发布说明: https://tip.golang.org/doc/go1.17

[12] 

Go 1的兼容性承诺: https://tip.golang.org/doc/go1compat

[13] 

Go官方构建仪表板: https://build.golang.org/

[14] 

改善Go语⾔编程质量的50个有效实践: https://www.imooc.com/read/87

[15] 

Kubernetes实战:高可用集群搭建、配置、运维与应用: https://coding.imooc.com/class/284.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值