1. 在github关于awesome fuzzing的学习资料已经fork,有书,论文,讨论等
Auauau22/awesome-fuzzing:用于软件安全的出色模糊测试(或模糊测试)的精选列表 (github.com)
2. zeller写的fuzzingbook:模糊测试书 (fuzzingbook.org)
需要运行书里代码,因为mybinder出错,所以采用Jupyter Notebook方式运行,首先下载:Jupyter Notebook介绍、安装及使用教程 - 知乎 (zhihu.com)
下载anaconda会自动下载jupyter notebook,anaconda在本机中下载位置
从fuzzingbook下载在jupyter book上运行的代码,fuzzingbook.notebooks.zip
---------------------------------------------------------------------------------------------------------------------------------
fuzzing book
书中之旅 - 模糊之书 (fuzzingbook.org) 可以先选择程序员、学生路径
第一节软件测试简介 软件测试简介 - 模糊测试书 (fuzzingbook.org)
将代码块复制到jupyter book中运行,下图是新建的“软件测试.ipynb”文件
需要理解:
运行时检查:“运行时检查的一个重要限制是,它们仅在有要检查的结果时才确保正确性 - 也就是说,它们不保证总是有一个结果。与符号验证技术和程序证明相比,这是一个重要的限制,符号验证技术和程序证明也可以保证有结果——不过,需要付出更高的(通常是手动的)努力。”
处理任何类型的输入:“在系统级别,程序必须能够优雅地处理任何类型的输入,而不会进入不受控制的状态。当然,这对程序员来说是一种负担,他们必须努力使他们的程序在所有情况下都健壮。然而,在生成软件测试时,这种负担变成了一种好处:如果一个程序可以处理任何类型的输入(可能带有明确定义的错误消息),我们也可以向它发送任何类型的输入。但是,当调用具有生成值的函数时,我们必须知道其精确的前提条件。”
结束:经验教训,后续步骤 模糊测试:使用随机输入打破事物 - 模糊测试书 (fuzzingbook.org)
---------------------------------------------------------------------------------------------------------------------------------
遇到问题:下图第一条红色横线执行会报错,加不加$符号都会保存,无法识别4做为传入参数;第二条横线代码执行成功。
---------------------------------------------------------------------------------------------------------------------------------
习题
习题代码都已给出,直接运行(在mybinder预览上复制代码)
手动输入数据测试->利用随机函数生成数据测试->对极端情况,如0、∞无穷、除以0等,非法输入等处理。
随机到某一极端情况的概率极低(584年)->完全随机不可行
---------------------------------------------------------------------------------------------------------------------------------
做完发现下载的zip中这个文件里点击第二行蓝字Introduction to Software Testing即是本节ipynb代码