Grammarinator 语法生成器使用介绍

本来不想写这篇文章的,但是目前网络上唯一能搜到的使用教程还被设置成了 vip 可看,那我非写不可了。

今天就写到这,我大概会详细研究一下这个工具,后续继续补充。

基本介绍

Grammarinator 是一个随机测试生成器/模糊测试器,它根据输入的 ANTLR v4 语法生成测试用例。

使用

下面以 py 为例,介绍 Grammarinator 的使用。

项目官方 reademe 文件中有的就不写了,这里主要是补充官方 readme 中没有的内容。
https://github.com/renatahodovan/grammarinator

创建测试生成器的命令行语法

测试生成器是 Grammarinator 使用 ANTLR v4 语法用 python 生成的测试生成器脚本。

bash 复制代码
grammarinator-process examples/grammars/HTMLLexer.g4 examples/grammars/HTMLParser.g4 \
  -o examples/fuzzer/

即命令为:

bash 复制代码
grammarinator-process Lexer.g4文件地址 Parser.g4文件地址 \
  -o 测试生成器脚本输出地址

克隆 grammarinator 项目后,在项目根目录执行 pip install grammarinator 安装 grammarinator 后,删除 examples/fuzzer/ 文件下的原始文件,运行下面脚本重新生成:

bash 复制代码
grammarinator-process examples/grammars/HTMLLexer.g4 examples/grammars/HTMLParser.g4 \
  -o examples/fuzzer/

成功运行后,可以看到 example 文件夹下生成了生成器 py 文件。

通过 grammarinator-generate 脚本执行测试器

生成模糊测试器并可选择性地进行自定义后,即可通过 grammarinator-generate 脚本执行该测试器。

bash 复制代码
grammarinator-generate HTMLGenerator.HTMLGenerator \
  -r htmlDocument -d 10 \
  -o examples/tests/test_%d.html -n 100 \
  -s HTMLGenerator.html_space_serializer \
  --sys-path examples/fuzzer/

注意,这里的 HTMLGenerator 是生成的 HTMLGenerator ,而实际工作中,应该使用自定义的 Generator ,因为,HTMLGenerator 是通过 .g4 文件全自动生成的。它只知道"结构",不知道"逻辑"。

运行完上述代码后即可在 tests 文件夹下看到生成的测试用例。

相关推荐
NPE~1 天前
[App逆向]环境搭建下篇 — — 逆向源码+hook实战
android·javascript·python·教程·逆向·hook·逆向分析
Trouvaille ~1 天前
【MySQL篇】从零开始:安装与基础概念
linux·数据库·mysql·ubuntu·c·教程·基础入门
不正经绣才1 天前
【扣子Coze教程】发票智能归档工作流,批量识别+同步飞书(附源码)
飞书·教程·工作流·coze·扣子·发票归档
Evand J2 天前
MATLAB批量保存现有绘图窗口的方法,简易方法,直接保存到当前目录,不手动设置
开发语言·matlab·教程
记录无知岁月5 天前
【LaTeX】入门和使用拾遗
数学建模·教程·latex·论文写作·texlive·texsudio
xianzi20206 天前
从入门到精通:SClick完整使用指南
教程·入门到精通·防休眠工具
xcLeigh14 天前
Python入门:Python3基础练习题详解,从入门到熟练的 25 个实例(六)
开发语言·python·教程·python3·练习题
梓贤Vigo14 天前
【Axure视频教程】拖动和滚动效果
交互·产品经理·axure·原型·教程
Evand J15 天前
【MATLAB教程】在matlab中,gscatter和scatter两个命令的区别
开发语言·matlab·教程·绘图·命令·教学
我爱C编程15 天前
【3.1】基于FPGA的FFT/IFFT模块开发——前言/目录
fpga开发·教程·通信·fft·傅里叶变换