当前位置:网站首页>Go1.18升级功能 - 模糊测试Fuzz 从零开始Go语言
Go1.18升级功能 - 模糊测试Fuzz 从零开始Go语言
2022-07-30 22:10:00 【web18334137065】
学习笔记,写到哪是哪。
模糊测试也是Go1.18更新的功能点之一。
自己测试了一下,初步感觉挺好用的。
可以通过模糊测试来进行全自动的测试,不依赖提供的数据集。
写法入参使用*testing.F,使用Fuzz方法对入参方法进行模糊测试。
样例代码如下:
package main
import (
"fmt"
"strconv"
"testing"
)
func Fuzz1(f *testing.F) {
f.Fuzz(func(t *testing.T, a string) {
b, _ := strconv.ParseInt(a, 10, 64)
fmt.Printf("%d
", b)
})
}
使用go test来执行,执行命令如下:
go test -fuzztime 10s -fuzz .
后面的时间可以自己设置。
看一下执行结果。

可以看到测试通过了,中间还有一些测试细节。
我们换一个有问题的代码,来试试看。
package main
import (
"fmt"
"testing"
)
//func Fuzz1(f *testing.F) {
// f.Fuzz(func(t *testing.T, a string) {
// b, _ := strconv.ParseInt(a, 10, 64)
// fmt.Printf("%d
", b)
// })
//}
func Fuzz2(f *testing.F) {
f.Fuzz(func(t *testing.T, a, b int) {
fmt.Println(a / b)
})
}
和刚才一样,执行一下看看结果。

可以看到很快就发现问题了,在文件同级目录下有个测试数据文件。


可以看到在测试方法,分母为0的时候异常了。
整体上看还是很方便的,不需要自己准备测试用例。
小结
2022年,南京的夏天真的太热了。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦
边栏推荐
- When Navicat connects to MySQL, it pops up: 1045: Access denied for user 'root'@'localhost'
- Rust编译报错:error: linker `cc` not found
- VS2017 compile Tars test project
- 登堂入室之soc开发makefile
- mysql remove duplicate data
- Detailed explanation of the delete problem of ClickHouse delete data
- IDEA 连接 数据库
- ELF: Loading process
- 系统结构考点之PM2I单级网络
- 【Summary】机器人方法汇总
猜你喜欢

MySQL 8.0.29 解压版安装教程(亲测有效)

Navicat连接MySQL时弹出:1045:Access denied for user ‘root’@’localhost’

通过社交媒体建立个人IP的 5 种行之有效的策略

Solve npm warn config global `--global`, `--local` are deprecated. use `--location=global` instead

MySQL 游标

网安学习-内网渗透3

解决centos8 MySQL密码问题ERROR 1820 (HY000) You must reset your password using ALTER USER

482-静态库、动态库的制作、使用及区别

Py之pdpbox:pdpbox的简介、安装、案例应用之详细攻略

The reason for not using bs4 is that the name is too long?Crawl lottery lottery information
随机推荐
ClickHouse 创建数据库建表视图字典 SQL
Jetson AGX Orin 平台关于c240000 I2C总线和GMSL ses地址冲突问题
MySQL 有这一篇就够(呕心狂敲37k字,只为博君一点赞!!!)
MySql 5.7.38 download and installation tutorial, and realize the operation of MySql in Navicat
The most complete Redis basic + advanced project combat summary notes in history
ML之shap:基于FIFA 2018 Statistics(2018年俄罗斯世界杯足球赛)球队比赛之星分类预测数据集利用RF随机森林+计算SHAP值单样本力图/依赖关系贡献图可视化实现可解释性之攻略
cnpm installation steps
mysql 时间字段默认设置为当前时间
CISP-PTE Zhenti Demonstration
【无标题】
史上超强最常用SQL语句大全
Gxlcms有声小说系统/小说听书系统源码
使用LVS和Keepalived搭建高可用负载均衡服务器集群
ELF: Loading process
MySQL 灵魂 16 问,你能撑到第几问?
Difference between cookie and session
Py之pdpbox:pdpbox的简介、安装、案例应用之详细攻略
2sk2225代换3A/1500V中文资料【PDF数据手册】
proxy反向代理
QT 在父类中添加子类的流程,object tree,