iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Go中新增的功能是什么
  • 546
分享到

Go中新增的功能是什么

2023-06-29 15:06:02 546人浏览 安东尼
摘要

这篇文章主要讲解了“Go中新增的功能是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go中新增的功能是什么”吧!什么是模糊测试?模糊测试fuzz testing(fuzzing)是指向你

这篇文章主要讲解了“Go中新增的功能是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go中新增的功能是什么”吧!

什么是模糊测试

模糊测试fuzz testing(fuzzing)是指向你的软件输入非预期的数据。理想情况下,这种测试会让你的应用程序崩溃或有非预期的表现。抛开最终的结果,从程序对非预期的输入数据的处理结果中你可以得到很多信息,这样你就可以增加一些合适的错误处理。

任何一个软件都有对不同来源的输入或数据的接收说明,软件会对这些数据进行处理并返回适当的结果。软件开发后,测试工程师团队对其进行测试,找出软件中的错误,给出测试报告,并(由开发者)修复。通常测试的目的是验证软件的行为是否符合预期。测试又可以细分为不同的类型,如功能测试、集成测试、性能测试等等。每种测试方法关注软件功能的某一个方面,以便发现错误或者提升可靠性或性能。

模糊测试在这一测试过程上更进一步,尝试向软件程序输入一些“无效”或“随机”的数据。这种输入是故意的,期望得到的结果就是程序崩溃或输出异常,这样就可以暴露程序中的错误以便由开发者来修复它们。与其他测试类似,很少需要手动进行模糊测试,业界有大量的模糊测试工具可以将这个过程自动化

Go 中的软件测试

举个例子,假如你想测试 add.go 中的 Add() 函数,你可以在 add_test.go 中导入 testing 包并把测试体写在以 TestXXX() 开头的函数内。

考虑如下代码:

func Add(num1, num2 int) int {}

在 add_test.go 文件中,你可能有如下测试代码:

import "testing"func TestAdd(t *testing.T) {}

运行测试:

$ go test

新增对模糊测试的支持

Go 团队已经接受了 新增对模糊测试的支持的提议,以进一步推动这项工作。这涉及到新增一个 testing.F 类型,在 _test.go 文件中新增 FuzzXXX() 函数,在 Go 工具中会新增一个 -fuzz 选项来执行这些测试。

在 add_test.go 文件中:

func FuzzAdd(f *testing.F) {}

执行以下代码:

$ go test -fuzz

在本文编写时,这个 功能还是试验性的,但是应该会在 1.18 发布版本中包含。(LCTT 译注:Go 1.18 刚刚发布,已经包含了对模糊测试的支持)目前很多功能如 -keepfuzzing-race 等也还没有支持。Go 团队最近发布了一篇 模糊测试教程,值得读一下。

安装 gotip 来获取最新的功能

如果你极度渴望在正式发布之前尝试这些功能,你可以使用 gotip 来测试即将正式发布的 Go 功能并反馈给他们。你可以使用下面的命令来安装 gotip。安装之后,你可以用 gotip 程序代替以前的 go 程序来编译和运行程序。

$ go install golang.org/dl/gotip@latest$ gotip download$ gotip versiongo version devel go1.18-f009910 Thu Jan 6 16:22:21 2022 +0000 linux/amd64

社区对于模糊测试的观点

软件社区中经常会讨论模糊测试,不同的人对模糊测试有不同的看法。有些人认为这是一种有用的技术,可以找到错误,尤其是在安全方面。然而考虑到模糊测试所需要的资源(CPU、内存),有人就认为这是一种浪费,而他们更愿意用其他的测试方法。即使在 Go 团队内部,意见也不统一。我们可以看到 Go 的联合创始人 Rob Pike 对模糊测试的使用和在 Go 中的实现是持轻微的怀疑态度的。

...虽然模糊测试有助于发现某类错误,但是它会占用大量的 CPU 和存储资源,并且效益成本比率也不明确。我担心为了写模糊测试浪费精力,或者 git 仓库中充斥大量无用的测试数据Rob Pike

然而,Go 安全团队的另一个成员,Filo Sottile,似乎对 Go 新增支持模糊测试很乐观,举了很多例子来支持,也希望模糊测试能成为开发过程中的一部分。

我想说模糊测试可以发现极端情况下的错误。这是我们作为安全团队对其感兴趣的原因:在极端情况下发现的错误可以避免在生产环境中成为弱点。

我们希望模糊测试能成为开发的一部分 —— 不只是构建或安全方面 —— 而是整个开发过程:它能提升相关代码的质量...

Filo Sottile

现实中的模糊测试

对我而言,模糊测试在发现错误以及让系统变得更安全和更有弹性方面似乎非常有效。举个例子,Linux 内核也会使用名为 syzkaller 的工具进行模糊测试,这个工具已经发现了 大量 错误。

AFL 也是比较流行的模糊测试工具,用来测试 C/C++ 写的程序。

之前也有对 Go 程序进行模糊测试的观点,其中之一就是 Filo 在 GitHub 评论中提到的 go-fuzz。

go-fuzz 的记录提供了相当惊人的证据,证明模糊处理能很好地找到人类没有发现的错误。根据我的经验,我们只需要消耗一点点 CPU 的时间就可以得到极端情况下非常高效的测试结果。

为什么在 Go 中新增对模糊测试的原生支持

如果我们的需求是对 Go 程序进行模糊测试,之前的工具像 go-fuzz 就可以完成,那么为什么要在这种语言中增加原生支持呢?Go 模糊测试设计草案 中说明了这样做的一些根本原因。设计的思路是让开发过程更简单,因为前面说的工具增加了开发者的工作量,还有功能缺失。如果你没有接触过模糊测试,那么我建议你读一下设计草案文档。

开发者可以使用诸如 go-fuzz 或 fzgo(基于 go-fuzz)来解决某些需求。然而,已有的每种解决方案都需要在典型的 Go 测试上做更多的事,而且还缺少关键的功能。相比于其他的 Go 测试(如基准测试和单元测试),模糊测试不应该比它们复杂,功能也不应该比它们少。已有的解决方案增加了额外的开销,比如自定义命令行工具。

模糊测试工具

在大家期望 Go 语言新增功能的列表中,模糊测试是其中很受欢迎的一项。虽然现在还是试验性的,但在将要到来的发布版本中会变得更强大。这给了我们足够的时间去尝试它以及探索它的使用场景。我们不应该把它视为一种开销,如果使用得当它会是一种发现错误非常高效的测试工具。使用 Go 的团队应该推动它的使用,开发者可以写简单的模糊测试,测试团队去慢慢扩展以此来使用它全部的能力。

感谢各位的阅读,以上就是“Go中新增的功能是什么”的内容了,经过本文的学习后,相信大家对Go中新增的功能是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Go中新增的功能是什么

本文链接: https://www.lsjlt.com/news/325426.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go中新增的功能是什么
    这篇文章主要讲解了“Go中新增的功能是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Go中新增的功能是什么”吧!什么是模糊测试?模糊测试fuzz testing(fuzzing)是指向你...
    99+
    2023-06-29
  • css3新增的功能是什么
    本篇内容介绍了“css3新增的功能是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2024-04-02
  • Kali Linux中WPScan2.9.3增加了什么新功能
    这篇文章给大家分享的是有关Kali Linux中WPScan2.9.3增加了什么新功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Kali Linux WPScan更新到2.9.3WPScan是Kali Lin...
    99+
    2023-06-04
  • Ubuntu One新更新增加了什么功能
    小编给大家分享一下Ubuntu One新更新增加了什么功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!据著名网站OMGUBUNTU消息,在Ubuntu11.04...
    99+
    2023-06-16
  • OpenAPI的新功能是什么
    本文小编为大家详细介绍“OpenAPI的新功能是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“OpenAPI的新功能是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Open API 即开放 API,也称...
    99+
    2023-06-28
  • ubuntu kylin 14.04中的新功能是什么
    本篇文章给大家分享的是有关ubuntu kylin 14.04中的新功能是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  UbuntuKylin除了拥有Ubuntu官方原...
    99+
    2023-06-13
  • ubuntu14.04新功能是什么
    Ubuntu 14.04(也称为Trusty Tahr)发布于2014年4月,它引入了许多新功能和改进,以下是其中一些:1. 进一步...
    99+
    2023-08-08
    ubuntu
  • win1019018新功能是什么
    这篇文章主要介绍了win1019018新功能是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win1019018新功能是什么文章都会有所收获,下面我们一起来看看吧。一、现在可以在“搜索主页”中快速搜索 为了...
    99+
    2023-07-01
  • Windows 10中wsl新功能是什么
    小编给大家分享一下Windows 10中wsl新功能是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!WSL是微软设计的一个兼容性层,它使Windows 10/...
    99+
    2023-06-15
  • Python3.11中的最佳新功能和功能修复是什么
    这篇文章主要介绍“Python3.11中的最佳新功能和功能修复是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python3.11中的最佳新功能和功能修复是什么”文章能帮助大家解决问题。速度提升...
    99+
    2023-06-30
  • html5中新增功能有哪些
    这篇文章主要介绍了html5中新增功能有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。<!DOCTYPE html><html la...
    99+
    2023-06-09
  • Windows10最新功能是什么
    本篇内容主要讲解“Windows10最新功能是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Windows10最新功能是什么”吧!Windows10最新功能改进一、新开始菜单 磁贴一直都是微...
    99+
    2023-07-01
  • SpringBoot怎么新增脱敏功能
    这篇“SpringBoot怎么新增脱敏功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“SpringBoot怎么新增脱敏功能...
    99+
    2023-07-04
  • Kubernetes1.4版本的新功能是什么
    这篇文章将为大家详细讲解有关Kubernetes1.4版本的新功能是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Kubernetes1.4主要新特性创建kubernetes集群只需要两...
    99+
    2023-06-05
  • NumPy新增的功能有哪些
    本篇内容主要讲解“NumPy新增的功能有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“NumPy新增的功能有哪些”吧!作为 Python 语言的一个扩展程序...
    99+
    2024-04-02
  • JDK15新增的功能有哪些
    本篇内容介绍了“JDK15新增的功能有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!发布版本说明根据发布的规划,这次发布的 JDK 15...
    99+
    2023-06-27
  • css3中新增的transition属性是什么
    这篇文章主要为大家展示了“css3中新增的transition属性是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css3中新增的transition属性是...
    99+
    2024-04-02
  • GNOME 2.30发布的新功能是什么
    GNOME 2.30发布的新功能是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。GNOME 开发团队已发布 GNOME 2.30 正式版本。GNOME 2....
    99+
    2023-06-16
  • ThinkORM新增加的虚拟模型功能有什么作用
    本篇内容介绍了“ThinkORM新增加的虚拟模型功能有什么作用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最新版本的ThinkORM增加了...
    99+
    2023-06-20
  • WSH 5.6有哪些新增的功能
    这篇文章主要介绍“WSH 5.6有哪些新增的功能”,在日常操作中,相信很多人在WSH 5.6有哪些新增的功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”WSH 5.6有哪些新增的功能”的疑惑有所帮助!接下来...
    99+
    2023-06-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作