重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本教程介绍了 Go 中模糊测试的基础知识。通过模糊测试,随机数据会针对您的测试运行,以尝试找出漏洞或导致崩溃的输入。可以通过模糊测试发现的一些漏洞示例包括 SQL 注入、缓冲区溢出、拒绝服务和跨站点脚本攻击。
站在用户的角度思考问题,与客户深入沟通,找到巩义网站设计与巩义网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站设计制作、成都网站制作、企业官网、英文网站、手机端网站、网站推广、域名注册、雅安服务器托管、企业邮箱。业务覆盖巩义地区。
在本教程中,您将为一个简单的函数编写一个模糊测试,运行 go 命令,并调试和修复代码中的问题。
首先,为您要编写的代码创建一个文件夹。
1、打开命令提示符并切换到您的主目录。
在 Linux 或 Mac 上:
在 Windows 上:
2、在命令提示符下,为您的代码创建一个名为 fuzz 的目录。
3、创建一个模块来保存您的代码。
运行go mod init命令,为其提供新代码的模块路径。
接下来,您将添加一些简单的代码来反转字符串,稍后我们将对其进行模糊测试。
在此步骤中,您将添加一个函数来反转字符串。
a.使用您的文本编辑器,在 fuzz 目录中创建一个名为 main.go 的文件。
独立程序(与库相反)始终位于 package 中main。
此函数将接受string,使用byte进行循环 ,并在最后返回反转的字符串。
此函数将运行一些Reverse操作,然后将输出打印到命令行。这有助于查看运行中的代码,并可能有助于调试。
e.该main函数使用 fmt 包,因此您需要导入它。
第一行代码应如下所示:
从包含 main.go 的目录中的命令行,运行代码。
可以看到原来的字符串,反转它的结果,然后再反转它的结果,就相当于原来的了。
现在代码正在运行,是时候测试它了。
在这一步中,您将为Reverse函数编写一个基本的单元测试。
a.使用您的文本编辑器,在 fuzz 目录中创建一个名为 reverse_test.go 的文件。
b.将以下代码粘贴到 reverse_test.go 中。
这个简单的测试将断言列出的输入字符串将被正确反转。
使用运行单元测试go test
接下来,您将单元测试更改为模糊测试。
单元测试有局限性,即每个输入都必须由开发人员添加到测试中。模糊测试的一个好处是它可以为您的代码提供输入,并且可以识别您提出的测试用例没有达到的边缘用例。
在本节中,您将单元测试转换为模糊测试,这样您就可以用更少的工作生成更多的输入!
请注意,您可以将单元测试、基准测试和模糊测试保存在同一个 *_test.go 文件中,但对于本示例,您将单元测试转换为模糊测试。
在您的文本编辑器中,将 reverse_test.go 中的单元测试替换为以下模糊测试。
Fuzzing 也有一些限制。在您的单元测试中,您可以预测Reverse函数的预期输出,并验证实际输出是否满足这些预期。
例如,在测试用例Reverse("Hello, world")中,单元测试将返回指定为"dlrow ,olleH".
模糊测试时,您无法预测预期输出,因为您无法控制输入。
但是,Reverse您可以在模糊测试中验证函数的一些属性。在这个模糊测试中检查的两个属性是:
(1)将字符串反转两次保留原始值
(2)反转的字符串将其状态保留为有效的 UTF-8。
注意单元测试和模糊测试之间的语法差异:
(3)确保新包unicode/utf8已导入。
随着单元测试转换为模糊测试,是时候再次运行测试了。
a.在不进行模糊测试的情况下运行模糊测试,以确保种子输入通过。
如果您在该文件中有其他测试,您也可以运行go test -run=FuzzReverse,并且您只想运行模糊测试。
b.运行FuzzReverse模糊测试,查看是否有任何随机生成的字符串输入会导致失败。这是使用go test新标志-fuzz执行的。
模糊测试时发生故障,导致问题的输入被写入将在下次运行的种子语料库文件中go test,即使没有-fuzz标志也是如此。要查看导致失败的输入,请在文本编辑器中打开写入 testdata/fuzz/FuzzReverse 目录的语料库文件。您的种子语料库文件可能包含不同的字符串,但格式相同。
语料库文件的第一行表示编码版本。以下每一行代表构成语料库条目的每种类型的值。由于 fuzz target 只需要 1 个输入,因此版本之后只有 1 个值。
c.运行没有-fuzz标志的go test; 新的失败种子语料库条目将被使用:
由于我们的测试失败,是时候调试了。
使用Go语言编程时,生成任意内容的二维码是非常方便的,因为我们有go-qrcode这个库。
二维码(又称二维条码)是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图案表示二进制数据,被设备扫描后可获取其中所包含的信息。
它比传统的BarCode条形码能存更多的信息,也能表示更多的数据类型。
您好,使用口袋妖怪GO的二维码微信登录非常简单,只需要您按照以下步骤操作即可:
1. 打开口袋妖怪GO游戏,点击右上角的“我”图标,进入个人中心。
2. 点击“设置”,然后点击“微信登录”,出现一个二维码,将您的微信扫描二维码即可完成登录。
3. 如果您的微信账号已经登录过口袋妖怪GO,则可以直接点击“微信登录”,您的微信账号就会自动登录到口袋妖怪GO游戏。
4. 如果您的微信账号没有登录过口袋妖怪GO,则需要您扫描二维码,完成登录。
祝您游戏愉快!
微信上找到“荐者金喜”小程序,生成二维码,就可以通过二维码助力。
具体步骤:
1、下载好中银跨境goAPP,并绑定中行卡。
2、微信上找到“荐者金喜”小程序,生成二维码,让客户A报名参与第二个活动。
3、打开跨境GOapp,首页上方“呼朋唤友获好礼”点击进入。点击“呼朋唤友”微信发送给朋友A,请A通过该链接注册APP,注册完成后登入app完成银行卡绑定!一定要绑定客户中行银行卡。
4、客户绑定银行卡后,客户经理即可获得20元微信立减金。领取途径为:跨境GOapp首页上方“呼朋唤友赢好礼”广告栏点开,点击下发方“查看我的奖励”,领取20元微信立减金。
5、如客户需要获得15元立减金,则需要打开中国银行手机银行,购汇或结汇10美元等额的外币。完成后,客户经理通过“荐者金喜”小程序下发奖励。
中银跨境GO定位于跨境全旅程场景平台,专注服务跨境客群,致力于为客户提供跨境“金融+非金融”一站式服务体验。您可通过跨境GO办理结售汇、外币兑换预约等金融业务,也可以在线体验留学、旅游相关非金融服务。通关留学秘籍,玩转旅游攻略,专业金融服务,尽在中银跨境GO。