了解 Go 中的模糊测试

本文由外部贡献者撰写。 Hrittik Roy Hrittik 是一位作者和软件工程师,专门研究云原生生态系统。 他曾参与过许多大型项目,在云计算的技术和商业方面都有经验。 他经常在会议上发言,并写过许多关于软件开发和分布式系统的文章。 在他的空闲时间,他喜欢散步。 LinkedIn Twitter         试图为所有可能的用户与您软件的交互手动创建测试用例即使不是不可能的,也仍令人望而却步。 模糊测试,或称 "Fuzzing",是一种自动化的软件测试,可以帮助发现潜在的错误和安全漏洞。 该测试涉及将随机数据(或 “Fuzz”)注入被测软件中。 这种测试框架可以帮助发现可能导致崩溃或其他安全问题的未定义行为。 虽然不可能用模糊测试找到所有的错误,但它可以成为发现和修复许多常见类型问题的有效方法。 它经常被用来测试那些处理来自不受信任来源的输入或可能有意外输入的程序。 Go 测试综合指南 模糊测试通常是自动化的,可用于测试功能和安全缺陷。 功能性模糊测试包括向程序输入无效数据以检查意外行为。 安全性模糊测试包括向程序输入恶意数据以发现安全漏洞。 Go有一个很棒的软件包生态系统,比如开源的模糊测试软件包 gofuzz 和 go-fuzz。它们使用简单,可以集成到您的测试工作流程中。 然而,从 Go 1.18 开始,语言中出现了原生的模糊测试支持,这意味着您

Go 测试综合指南

本文由外部贡献者撰写。 Alexandre Couëdelo Alexandre 是一位复杂系统工程和管理专家。 他在职业生涯开始时就拥抱了 DevOps 文化,为加拿大一家领先金融机构的数字化转型做出贡献。 他热衷于 DevOps 革命和工业工程。 GitHub Twitter 测试是开发过程的重要部分,也是软件开发生命周期的关键部分。 它可以确保应用程序正常运行和满足客户需求。 本文将涵盖关于 Go 测试的所有须知事项。 我们将从一个简单的测试函数开始,通过更多工具和策略帮助您掌握 Go 中的测试。 您将详细了解许多测试模式,例如用于更好地组织测试用例的表驱动测试、用于验证性能的基准测试,以及用于探索边缘用例并发现错误的模糊测试。 您还将了解来自标准测试软件包及其辅助函数的工具,以及代码覆盖率如何显示正在测试的代码量。 您也将了解 Testify,这是一个可以提高测试可读性的断言和模拟库。 您可以在此 GitHub 仓库中找到所有代码示例。 编写简单的单元测试 单元测试是一种测试函数和方法等小段代码的方法。 它的用途在于让您及早发现错误。 单元测试会让您的测试策略更高效,因为它们小且独立,易于维护。 我们来创建一个示例,练习一下测试。 创建函数 Fooer,它将 int 作为输入并返回 string。 如果输入的整数能被三整除,则返回 "Foo",否则,将数

Go 语言现状调查报告

在当今流行的编程语言中,Go 语言名列前茅。Go 语言热情、有趣并以其快速高效的特点深受社区的青睐,但值得我们了解的还有更多。 我们对有关 Go 语言的可用信息做了更深入的研究,以期有更多发现。 我们的常驻 Go 专家、GoLand 的布道师 Florin Pățan 受邀根据调查结果提供他的见解,探明 Go 的现状。 在哪儿 约 110 万开发者 总体来说有 110 万专业的开发者 选择 Go 作为其主要开发语言。但如果我们将那些以其他编程语言作为主要开发语言,却同时使用 Go 的开发人员也算在内,这一数字就将高达 270 万。 就其全球分布而言, 居住在亚洲的开发者最多,大约有 57 万开发者使用 Go 作为其主要开发语言。 专家分析 这符合我对 Go 开发区域分布的预期。亚洲的 Go 用户数量排名第一,我想这是因为那里有大量来自腾讯、阿里巴巴和华为等大公司的开发者。 这些公司通常都有很多开发者。 具体在哪儿 下图显示了我们在 开发人者生态系统调查 2020 中调查的每个国家使用 Go 作为主要语言的开发者的分布情况(受访者最多可以选择 3 种主要语言)。 中国的开发者集中度最高,有 16% 的中国开发者使用 Go 语言。 专家分析 我对中国位居榜首并不感到意外。 我本以为俄罗斯会排第二,美国会更高一些,也许会排进前五。 中国之所以排在首位,可能是因为那里的开发者非常多。