提交 672a8492 编写于 作者: W wizardforcel

2021-05-07 09:59:01

上级 23c3e0c9
# 生成软件测试
来源: [https://www.fuzzingbook.org/html/00_Table_of_Contents.html](https://www.fuzzingbook.org/html/00_Table_of_Contents.html)
\ No newline at end of file
此差异已折叠。
此差异已折叠。
因为 它太大了无法显示 source diff 。你可以改为 查看blob
此差异已折叠。
# 第三部分:语法模糊
> 原文: [https://www.fuzzingbook.org/html/03_Syntactical_Fuzzing.html](https://www.fuzzingbook.org/html/03_Syntactical_Fuzzing.html)
本部分介绍了*语法*级别的测试生成,即,构成语言结构的输入。
* [语法](Grammars.html)为程序提供合法输入的*规范*。 通过语法指定输入可以非常系统和有效地生成测试,特别是对于复杂的输入格式。
* [高效的语法模糊处理](GrammarFuzzer.html)引入了基于树的语法模糊处理算法,该算法速度更快,并且可以更好地控制模糊输入的产生。
* [语法覆盖率](GrammarCoverageFuzzer.html)可以系统地覆盖语法元素,以便我们最大限度地提高多样性,而不会漏掉单个元素。
* [解析输入](Parser.html)显示了如何使用语法将给定的有效种子输入集解析和分解为相应的派生树。
* [概率语法模糊](ProbabilisticGrammarFuzzer.html)通过将*概率*分配给各个扩展来赋予语法更多的功能。
* [生成器模糊处理](GeneratorGrammarFuzzer.html)显示如何使用*函数*扩展语法-在语法扩展过程中执行的代码片段,可以生成,检查或更改生成的元素。
* [Greybox语法模糊](GreyboxGrammarFuzzer.html)利用结构表示法允许我们对它们的各个部分进行变异,交叉和重组,以生成新的有效的,稍有变化的输入。
* [减少故障导致的输入](Reducer.html)提出了以下技术:*自动将故障引起的输入减少并简化到最小*,以便于调试。
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
# 生成软件测试关于本书
> 原文: [https://www.fuzzingbook.org/html/index.html](https://www.fuzzingbook.org/html/index.html)
<section>
### 打破娱乐性和盈利性的软件
**by Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler**</section>
**欢迎使用“生成软件测试”!** 软件中有错误,而捕获错误可能会涉及很多工作。 本书通过*自动执行*软件测试,特别是通过*自动生成测试*解决了这个问题。 近年来,已经看到了新技术的发展,这些新技术导致了测试生成和软件测试的显着改善。 它们现在已经足够成熟,甚至可以用可执行代码组装成书。
```py
from [fuzzingbook_utils](https://github.com/uds-se/fuzzingbook/tree/master/notebooks/fuzzingbook_utils) import YouTubeVideo
YouTubeVideo("w4u5gCgPlmg")
```
## 用于纸张,屏幕和键盘的教科书
您可以通过四种方式使用本书:
* 您可以**阅读浏览器**中的章节。 请查看上方菜单中的章节列表,或立即从[入门测试](Intro_Testing.html)[模糊测试](Fuzzer.html)入门开始。 所有代码均可下载。
* 您可以将**与章节进行交互,就像Jupyter笔记本**(测试版)一样。 这使您可以编辑和扩展代码,并在浏览器中实时体验*。* 只需选择每章顶部的“资源$ \ rightarrow $编辑为笔记本”。 [尝试与模糊介绍进行交互。](https://mybinder.org/v2/gh/uds-se/fuzzingbook/master?filepath=docs/notebooks/Fuzzer.ipynb)
* 您可以**在您自己的项目**中使用该代码。 您可以将代码下载为Python程序。 只需为一章选择“资源$ \ rightarrow $下载代码”或为所有章选择“资源$ \ rightarrow $所有代码”。 可以执行这些代码文件,(希望)产生与笔记本相同的结果。 更简单:[安装fuzzingbook Python软件包](#Using-the-Code)
* 您可以**以幻灯片**的形式呈现各章。 这样可以在讲座中展示材料。 只需选择每章顶部的“资源$ \ rightarrow $查看幻灯片”。 [尝试查看幻灯片以了解模糊的介绍。](https://www.fuzzingbook.org/slides/Fuzzer.slides.html)
## 本书适用于
本书被设计为软件测试课程的*教科书*; 作为软件测试或软件工程课程中的*补充材料*; 并作为软件开发人员的*资源。 我们将介绍随机模糊测试,基于变异的模糊测试,基于语法的测试生成,符号测试等等,并通过示例代码说明所有技术,您可以自己尝试一下。*
## 新闻
本书正在进行*的工作,*每周都有新的章节出版。 在所有章节都写完之后,我们将切换到基于发行版的时间表,其中包含次要版本和主要版本。 要获取更新通知,[在Twitter](https://twitter.com/FuzzingBook?ref_src=twsrc%5Etfw) 上关注我们。
[来自@FuzzingBook的新闻](https://twitter.com/FuzzingBook?ref_src=twsrc%5Etfw)
## 关于作者
本书由 *Andreas Zeller,Rahul Gopinath,MarcelBöhme,Gordon Fraser和Christian Holler* 撰写。 我们所有人都是软件测试和测试生成方面的长期专家; 并且我们已经为这个星球上一些最重要的测试生成器和模糊器撰写或做出了贡献。 例如,如果您是在Firefox,Chrome或Edge Web浏览器中阅读此书,则可以安全地这样做(部分原因是因为我们),因为*本书中列出的技术已经在其JavaScript中发现了2,600多个错误 到目前为止的口译员。* 我们很高兴与大家分享我们的专业知识,并向公众公开。
## 常见问题
### 对[进行故障排除](#Troubleshooting)
#### 为什么启动交互式笔记本需要这么长时间?
交互式笔记本使用 [mybinder.org](https://mybinder.org) 服务,该服务在自己的服务器上运行笔记本。 通过mybinder.org启动Jupyter通常大约需要30秒,具体取决于您的Internet连接。 但是,如果您是在书籍更新后第一个调用活页夹的人,活页夹将重新创建其环境,这将需要几分钟。 偶尔重新加载页面。
#### 交互式笔记本无法正常工作!
mybinder.org对存储库施加100个并发用户的[限制。 另外,如](https://mybinder.readthedocs.io/en/latest/user-guidelines.html) [mybinder.org状态和可靠性页面](https://mybinder.readthedocs.io/en/latest/reliability.html)上所列,
> 由于mybinder.org是一个研究试点项目,因此该项目的主要目标是了解使用模式和工作量,以用于将来的项目发展。 在努力提高站点的可靠性和可用性的同时,我们希望我们的用户了解这项服务的目的是研究,我们不保证其在关键任务用途中的性能。
mybinder.org还有其他选择; 见下文。
#### 我是否有交互式笔记本的替代品?
如果mybinder.org无法正常工作或无法满足您的需求,那么您可以选择以下几种方法:
1. **下载Python代码**(使用顶部的菜单),然后在您喜欢的环境中对其进行编辑和运行。 这很容易做到,并且不需要很多资源。
2. **下载Jupyter笔记本**(使用顶部的菜单),然后在Jupyter中打开它们。 这是[如何在计算机](https://www.dataquest.io/blog/jupyter-notebook-tutorial/)上安装jupyter笔记本的方法。
3. **在Docker容器中本地运行笔记本**。 有关更多信息,请参见[如何将本书与Docker](https://github.com/uds-se/fuzzingbook/blob/master/deploy/README.md) 结合使用。
4. 如果您想在教室中使用本书,并且取决于您的用户可以使用交互式笔记本,请考虑使用或部署 [JupyterHub](http://jupyter.org/hub)[BinderHub](https://github.com/jupyterhub/binderhub) 实例。
#### 我可以在Windows计算机上运行代码吗?
我们尝试使代码尽可能通用,但是偶尔,当我们与操作系统交互时,我们会假设一个类似于Unix的环境(因为这正是Binder提供的环境)。 要在自己的Windows计算机上运行这些示例,可以安装Linux VM或 [Docker环境](https://github.com/uds-se/fuzzingbook/blob/master/deploy/README.md)
#### 您不能运行自己的专用云服务吗?
从技术上讲,是的; 但这会花费金钱和精力,这时我们宁愿花在这本书上。 如果您想公开托管 [JupyterHub](http://jupyter.org/hub)[BinderHub](https://github.com/jupyterhub/binderhub) 实例,请*这样做*,并告诉我们。
### 内容
#### 出现了哪些内容?
有关详细信息,请参见[发行说明](ReleaseNotes.html)
#### 我如何引用您的工作?
感谢您提及我们的工作! 本书完成后,您就可以用传统方式引用它。 同时,只需单击网页底部每个章节的“引用”按钮即可获得引用条目。
#### 你能引用我的论文吗? 并可能为此写一章?
我们总是很乐意得到建议! 如果我们错过了重要的参考文献,我们当然会添加它。 如果您希望涵盖特定的材料,最好的方法是自己编写*笔记本*; 有关编码和编写的说明,请参见我们的[作者指南](Guide_for_Authors.html)。 然后,我们可以引用它甚至托管它。
### 教学与课业
#### 我可以在课程中使用您的资料吗?
当然! 只要遵守[许可](https://github.com/uds-se/fuzzingbook/blob/master/LICENSE.md)(包括署名和共享)即可。 如果您要将材料用于商业目的,请与我们联系。
#### 我可以扩展或修改您的资料吗?
是! 同样,请参见[许可证](https://github.com/uds-se/fuzzingbook/blob/master/LICENSE.md)了解详细信息。
#### 我如何才能根据这本书开一门课程?
我们已在各种课程中成功使用了该材料。
* 最初,我们使用幻灯片和代码,并在讲座中进行了*实时编码*,以说明该技术的工作原理。
* 现在,这本书的目标是完全独立。 也就是说,它无需其他支持即可工作。 因此,我们现在在*翻转课堂*设置中为学生提供完整的章节,让学生们在闲暇时工作在笔记本上。 我们将在教室里开会,讨论过去笔记本的经验并讨论未来笔记本。
* 我们让学生从事本书中的练习,或者从事较大的(模糊的)项目。 我们也有一些学生将本书作为研究的基础; 实际上,在Python中为Python进行原型开发非常容易。
在运行课程时,[不依赖mybinder.org](#Troubleshooting) –它无法为更多的学生群体提供足够的资源。 相反,[安装并运行您自己的集线器。](#Do-I-have-alternatives-to-the-interactive-notebook?)
#### 有没有我可以关注的特定子集?
通过本书,我们为不同的读者编写了许多[导览。 我们的](Tours.html)[网站地图](00_Table_of_Contents.html)列出了各个章节之间的依存关系。
#### 如何扩展或修改幻灯片?
下载Jupyter笔记本(使用顶部的菜单),然后随意使用笔记本(请参见上文),包括“幻灯片类型”设置。 然后,
1. 从Jupyter Notebook下载幻灯片; 要么
2. 使用RISE扩展名([说明](http://www.blog.pythonlibrary.org/2018/09/25/creating-presentations-with-jupyter-notebook/))从Jupyter笔记本电脑中展示幻灯片。
#### 您是否提供材料的PDF?
目前,我们不提供对PDF版本的支持。 本书完成后,我们将提供PDF和印刷版本。
### 其他问题
#### 我有一个问题,评论或建议。 我该怎么办?
您可以在Twitter 上通过[鸣叫到@fuzzingbook,以允许读者加入。有关您想解决的错误,请在](https://twitter.com/fuzzingbook)[开发页面](https://github.com/uds-se/fuzzingbook/issues)上报告问题。
#### 我两周前报告了一个问题。 什么时候解决?
我们优先考虑以下问题:
1. 在fuzzingbook.org上发布的代码中的错误
2. 在fuzzingbook.org上发布的文字错误
3. 写缺失的章节
4. 尚未发布的代码或文本中的问题
5. 与开发或建设有关的问题
6. 标记为“测试版”的内容
7. 其他一切
#### 我如何自己解决问题?
我们很高兴您提出这样的要求。 [开发页面](https://github.com/uds-se/fuzzingbook/)包含所有来源和一些补充材料。 非常欢迎提出修复问题的请求。
#### 我该如何贡献?
再次,我们很高兴您在这里! 我们很高兴接受
* **代码修复和改进。** 请在MIT许可下放置任何代码,以便我们可以轻松包含它。
* **有关特定主题的其他文本,章节和笔记本**。 我们计划为第三方捐款建立一个特殊的文件夹。
有关编码和写入的说明,请参见我们的[作者指南](Guide_for_Authors.html)
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
# 第四部分:语义模糊
> 原文: [https://www.fuzzingbook.org/html/04_Semantical_Fuzzing.html](https://www.fuzzingbook.org/html/04_Semantical_Fuzzing.html)
本部分介绍了测试生成技术,这些技术考虑了输入的*语义*,尤其是处理输入的程序的行为。
* [语法挖掘](GrammarMiner.html)显示了如何通过分析如何处理输入的各个部分来从程序中提取输入语法。 生成的语法可以直接用于模糊测试。
* [跟踪信息流](InformationFlow.html)显示了如何跟踪整个程序的输入,以便发现信息泄漏并进一步改进分析技术。
* [Concolic Fuzzing](ConcolicFuzzer.html) 分析程序代码以解决程序中的*路径约束*,以覆盖难以实现的分支和行为。
* [符号模糊检测](SymbolicFuzzer.html)的工作方式类似于圆锥模糊检测,但根本不需要执行任何操作。
* [挖掘功能规范](DynamicInvariants.html)从程序执行中提取类型信息以及前提条件和后置条件–对程序分析,测试和验证有用的信息。
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
# 不好了! 我们还没有准备好!
> 原文: [https://www.fuzzingbook.org/html/05_Domain-Specific_Fuzzing.ipynb](https://www.fuzzingbook.org/html/05_Domain-Specific_Fuzzing.ipynb)
很抱歉-该页面尚不存在。
## 查找内容
您很可能一直在寻找尚未编写或尚未出版的材料。 转到[主页](https://www.fuzzingbook.org/)或从以下章节列表中选择:
0. [关于这本书](https://www.fuzzingbook.org/)
1. [站点地图](https://www.fuzzingbook.org/html/00_Table_of_Contents.html)
2. [I 增进食欲](/html/01_Intro.html)
* [浏览本书**•**](/html/Tours.html)
* [软件测试简介](/html/Intro_Testing.html)
3. [II 词汇模糊](/html/02_Lexical_Fuzzing.html)
* [模糊测试:使用随机输入破坏事物](/html/Fuzzer.html)
* [代码覆盖率](/html/Coverage.html)
* [基于变异的模糊测试](/html/MutationFuzzer.html)
* [Greybox Fuzzing](/html/GreyboxFuzzer.html)
* [基于搜索的模糊处理](/html/SearchBasedFuzzer.html)
* [突变分析](/html/MutationAnalysis.html)
4. [III 语法模糊](/html/03_Syntactical_Fuzzing.html)
* [语法模糊](/html/Grammars.html)
* [高效的语法模糊测试](/html/GrammarFuzzer.html)
* [语法覆盖率](/html/GrammarCoverageFuzzer.html)
* [解析输入](/html/Parser.html)
* [概率语法模糊](/html/ProbabilisticGrammarFuzzer.html)
* [发电机模糊](/html/GeneratorGrammarFuzzer.html)
* [带有语法语法的Greybox模糊测试](/html/GreyboxGrammarFuzzer.html)
* [减少引起故障的输入](/html/Reducer.html)
5. [IV 语义模糊](/html/04_Semantical_Fuzzing.html)
* [挖掘输入语法](/html/GrammarMiner.html)
* [跟踪信息流](/html/InformationFlow.html)
* [conconlic模糊测试](/html/ConcolicFuzzer.html)
* [符号模糊处理](/html/SymbolicFuzzer.html)
* [挖掘功能规范](/html/DynamicInvariants.html)
6. [V 特定域模糊测试](/html/05_Domain-Specific_Fuzzing.html)
* [测试配置](/html/ConfigurationFuzzer.html)
* [模糊测试API](/html/APIFuzzer.html)
* [雕刻单元测试](/html/Carver.html)
* [测试Web应用程序](/html/WebFuzzer.html)
* [测试图形用户界面](/html/GUIFuzzer.html)
7. [VI 管理模糊处理](/html/06_Managing_Fuzzing.html)
* [大型](/html/FuzzingInTheLarge.html)中的模糊
* [何时停止模糊处理](/html/WhenToStopFuzzing.html)
8. [附录](/html/99_Appendices.html)
* [错误处理](/html/ExpectError.html)
* [计时器](/html/Timer.html)
* [控制流程图](/html/ControlFlow.html)
* [铁路图](/html/RailroadDiagrams.html)
如果您认为这是一个错误,请[报告问题](https://github.com/uds-se/fuzzingbook//issues/)
## 了解新内容
每周都会出版新的章节。 要在新章节(或本章)问世时得到通知,请在上关注我们[](https://twitter.com/FuzzingBook?ref_src=twsrc%5Etfw)
[来自@FuzzingBook的新闻](https://twitter.com/FuzzingBook?ref_src=twsrc%5Etfw)
## 错误详细信息
```py
import [fuzzingbook_utils](https://github.com/uds-se/fuzzingbook/tree/master/notebooks/fuzzingbook_utils)
```
```py
class NotFoundError(Exception):
def __init__(self, value="404"):
self.value = value
def __str__(self):
return repr(self.value)
```
```py
from [ExpectError](ExpectError.html) import ExpectError
with ExpectError():
raise NotFoundError
```
```py
Traceback (most recent call last):
File "<ipython-input-3-f7cd072299fb>", line 4, in <module>
raise NotFoundError
NotFoundError: '404' (expected)
```
\ No newline at end of file
# 生成软件测试关于本书
> 原文: [https://www.fuzzingbook.org/html/](https://www.fuzzingbook.org/html/)
<section>
### 打破娱乐性和盈利性的软件
**by Andreas Zeller, Rahul Gopinath, Marcel Böhme, Gordon Fraser, and Christian Holler**</section>
**欢迎使用“生成软件测试”!** 软件中有错误,而捕获错误可能会涉及很多工作。 本书通过*自动执行*软件测试,特别是通过*自动生成测试*解决了这个问题。 近年来,已经看到了新技术的发展,这些新技术导致了测试生成和软件测试的显着改善。 它们现在已经足够成熟,甚至可以用可执行代码组装成书。
```py
from [fuzzingbook_utils](https://github.com/uds-se/fuzzingbook/tree/master/notebooks/fuzzingbook_utils) import YouTubeVideo
YouTubeVideo("w4u5gCgPlmg")
```
## 用于纸张,屏幕和键盘的教科书
您可以通过四种方式使用本书:
* 您可以**阅读浏览器**中的章节。 请查看上方菜单中的章节列表,或立即从[入门测试](Intro_Testing.html)[模糊测试](Fuzzer.html)入门开始。 所有代码均可下载。
* 您可以将**与章节进行交互,就像Jupyter笔记本**(测试版)一样。 这使您可以编辑和扩展代码,并在浏览器中实时体验*。* 只需选择每章顶部的“资源$ \ rightarrow $编辑为笔记本”。 [尝试与模糊介绍进行交互。](https://mybinder.org/v2/gh/uds-se/fuzzingbook/master?filepath=docs/notebooks/Fuzzer.ipynb)
* 您可以**在您自己的项目**中使用该代码。 您可以将代码下载为Python程序。 只需为一章选择“资源$ \ rightarrow $下载代码”或为所有章选择“资源$ \ rightarrow $所有代码”。 可以执行这些代码文件,(希望)产生与笔记本相同的结果。 更简单:[安装fuzzingbook Python软件包](#Using-the-Code)
* 您可以**以幻灯片**的形式呈现各章。 这样可以在讲座中展示材料。 只需选择每章顶部的“资源$ \ rightarrow $查看幻灯片”。 [尝试查看幻灯片以了解模糊的介绍。](https://www.fuzzingbook.org/slides/Fuzzer.slides.html)
## 本书适用于
本书被设计为软件测试课程的*教科书*; 作为软件测试或软件工程课程中的*补充材料*; 并作为软件开发人员的*资源。 我们将介绍随机模糊测试,基于变异的模糊测试,基于语法的测试生成,符号测试等等,并通过示例代码说明所有技术,您可以自己尝试一下。*
## 新闻
本书正在进行*的工作,*每周都有新的章节出版。 在所有章节都写完之后,我们将切换到基于发行版的时间表,其中包含次要版本和主要版本。 要获取更新通知,[在Twitter](https://twitter.com/FuzzingBook?ref_src=twsrc%5Etfw) 上关注我们。
[来自@FuzzingBook的新闻](https://twitter.com/FuzzingBook?ref_src=twsrc%5Etfw)
## 关于作者
本书由 *Andreas Zeller,Rahul Gopinath,MarcelBöhme,Gordon Fraser和Christian Holler* 撰写。 我们所有人都是软件测试和测试生成方面的长期专家; 并且我们已经为这个星球上一些最重要的测试生成器和模糊器撰写或做出了贡献。 例如,如果您是在Firefox,Chrome或Edge Web浏览器中阅读此书,则可以安全地这样做(部分原因是因为我们),因为*本书中列出的技术已经在其JavaScript中发现了2,600多个错误 到目前为止的口译员。* 我们很高兴与大家分享我们的专业知识,并向公众公开。
## 常见问题
### 对[进行故障排除](#Troubleshooting)
#### 为什么启动交互式笔记本需要这么长时间?
交互式笔记本使用 [mybinder.org](https://mybinder.org) 服务,该服务在自己的服务器上运行笔记本。 通过mybinder.org启动Jupyter通常大约需要30秒,具体取决于您的Internet连接。 但是,如果您是在书籍更新后第一个调用活页夹的人,活页夹将重新创建其环境,这将需要几分钟。 偶尔重新加载页面。
#### 交互式笔记本无法正常工作!
mybinder.org对存储库施加100个并发用户的[限制。 另外,如](https://mybinder.readthedocs.io/en/latest/user-guidelines.html) [mybinder.org状态和可靠性页面](https://mybinder.readthedocs.io/en/latest/reliability.html)上所列,
> 由于mybinder.org是一个研究试点项目,因此该项目的主要目标是了解使用模式和工作量,以用于将来的项目发展。 在努力提高站点的可靠性和可用性的同时,我们希望我们的用户了解这项服务的目的是研究,我们不保证其在关键任务用途中的性能。
mybinder.org还有其他选择; 见下文。
#### 我是否有交互式笔记本的替代品?
如果mybinder.org无法正常工作或无法满足您的需求,那么您可以选择以下几种方法:
1. **下载Python代码**(使用顶部的菜单),然后在您喜欢的环境中对其进行编辑和运行。 这很容易做到,并且不需要很多资源。
2. **下载Jupyter笔记本**(使用顶部的菜单),然后在Jupyter中打开它们。 这是[如何在计算机](https://www.dataquest.io/blog/jupyter-notebook-tutorial/)上安装jupyter笔记本的方法。
3. **在Docker容器中本地运行笔记本**。 有关更多信息,请参见[如何将本书与Docker](https://github.com/uds-se/fuzzingbook/blob/master/deploy/README.md) 结合使用。
4. 如果您想在教室中使用本书,并且取决于您的用户可以使用交互式笔记本,请考虑使用或部署 [JupyterHub](http://jupyter.org/hub)[BinderHub](https://github.com/jupyterhub/binderhub) 实例。
#### 我可以在Windows计算机上运行代码吗?
我们尝试使代码尽可能通用,但是偶尔,当我们与操作系统交互时,我们会假设一个类似于Unix的环境(因为这正是Binder提供的环境)。 要在自己的Windows计算机上运行这些示例,可以安装Linux VM或 [Docker环境](https://github.com/uds-se/fuzzingbook/blob/master/deploy/README.md)
#### 您不能运行自己的专用云服务吗?
从技术上讲,是的; 但这会花费金钱和精力,这时我们宁愿花在这本书上。 如果您想公开托管 [JupyterHub](http://jupyter.org/hub)[BinderHub](https://github.com/jupyterhub/binderhub) 实例,请*这样做*,并告诉我们。
### 内容
#### 出现了哪些内容?
有关详细信息,请参见[发行说明](ReleaseNotes.html)
#### 我如何引用您的工作?
感谢您提及我们的工作! 本书完成后,您就可以用传统方式引用它。 同时,只需单击网页底部每个章节的“引用”按钮即可获得引用条目。
#### 你能引用我的论文吗? 并可能为此写一章?
我们总是很乐意得到建议! 如果我们错过了重要的参考文献,我们当然会添加它。 如果您希望涵盖特定的材料,最好的方法是自己编写*笔记本*; 有关编码和编写的说明,请参见我们的[作者指南](Guide_for_Authors.html)。 然后,我们可以引用它甚至托管它。
### 教学与课业
#### 我可以在课程中使用您的资料吗?
当然! 只要遵守[许可](https://github.com/uds-se/fuzzingbook/blob/master/LICENSE.md)(包括署名和共享)即可。 如果您要将材料用于商业目的,请与我们联系。
#### 我可以扩展或修改您的资料吗?
是! 同样,请参见[许可证](https://github.com/uds-se/fuzzingbook/blob/master/LICENSE.md)了解详细信息。
#### 我如何才能根据这本书开一门课程?
我们已在各种课程中成功使用了该材料。
* 最初,我们使用幻灯片和代码,并在讲座中进行了*实时编码*,以说明该技术的工作原理。
* 现在,这本书的目标是完全独立。 也就是说,它无需其他支持即可工作。 因此,我们现在在*翻转课堂*设置中为学生提供完整的章节,让学生们在闲暇时工作在笔记本上。 我们将在教室里开会,讨论过去笔记本的经验并讨论未来笔记本。
* 我们让学生从事本书中的练习,或者从事较大的(模糊的)项目。 我们也有一些学生将本书作为研究的基础; 实际上,在Python中为Python进行原型开发非常容易。
在运行课程时,[不依赖mybinder.org](#Troubleshooting) –它无法为更多的学生群体提供足够的资源。 相反,[安装并运行您自己的集线器。](#Do-I-have-alternatives-to-the-interactive-notebook?)
#### 有没有我可以关注的特定子集?
通过本书,我们为不同的读者编写了许多[导览。 我们的](Tours.html)[网站地图](00_Table_of_Contents.html)列出了各个章节之间的依存关系。
#### 如何扩展或修改幻灯片?
下载Jupyter笔记本(使用顶部的菜单),然后随意使用笔记本(请参见上文),包括“幻灯片类型”设置。 然后,
1. 从Jupyter Notebook下载幻灯片; 要么
2. 使用RISE扩展名([说明](http://www.blog.pythonlibrary.org/2018/09/25/creating-presentations-with-jupyter-notebook/))从Jupyter笔记本电脑中展示幻灯片。
#### 您是否提供材料的PDF?
目前,我们不提供对PDF版本的支持。 本书完成后,我们将提供PDF和印刷版本。
### 其他问题
#### 我有一个问题,评论或建议。 我该怎么办?
您可以在Twitter 上通过[鸣叫到@fuzzingbook,以允许读者加入。有关您想解决的错误,请在](https://twitter.com/fuzzingbook)[开发页面](https://github.com/uds-se/fuzzingbook/issues)上报告问题。
#### 我两周前报告了一个问题。 什么时候解决?
我们优先考虑以下问题:
1. 在fuzzingbook.org上发布的代码中的错误
2. 在fuzzingbook.org上发布的文字错误
3. 写缺失的章节
4. 尚未发布的代码或文本中的问题
5. 与开发或建设有关的问题
6. 标记为“测试版”的内容
7. 其他一切
#### 我如何自己解决问题?
我们很高兴您提出这样的要求。 [开发页面](https://github.com/uds-se/fuzzingbook/)包含所有来源和一些补充材料。 非常欢迎提出修复问题的请求。
#### 我该如何贡献?
再次,我们很高兴您在这里! 我们很高兴接受
* **代码修复和改进。** 请在MIT许可下放置任何代码,以便我们可以轻松包含它。
* **有关特定主题的其他文本,章节和笔记本**。 我们计划为第三方捐款建立一个特殊的文件夹。
有关编码和写入的说明,请参见我们的[作者指南](Guide_for_Authors.html)
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
# 第六部分:管理模糊化
> 原文: [https://www.fuzzingbook.org/html/06_Managing_Fuzzing.html](https://www.fuzzingbook.org/html/06_Managing_Fuzzing.html)
本部分讨论如何在较大范围内管理模糊测试。
* [大型模糊测试](FuzzingInTheLarge.html)讨论了如何创建大型基础结构以进行模糊测试,运行数百万个测试并管理其结果。
* [何时停止模糊处理](WhenToStopFuzzing.html)详细介绍了如何估算何时足够的模糊处理–以及何时可以让计算机执行其他任务。
\ No newline at end of file
此差异已折叠。
此差异已折叠。
# Appendices
> 原文: [https://www.fuzzingbook.org/html/99_Appendices.html](https://www.fuzzingbook.org/html/99_Appendices.html)
此部分包含笔记本电脑和支持其他笔记本电脑的模块。
* [处理错误](ExpectError.html)提供了在笔记本中捕获和报告预期错误的方法。
* [定时器](Timer.html)是一个简单的实用程序,用于测量执行期间经过的时间。
* [控制流](ControlFlow.html)帮助确定Python程序中的控制流。
* [铁路图](RailroadDiagrams.html)将语法可视化为铁路图。
* [索引](00_Index.html)是书籍的索引。
\ No newline at end of file
此差异已折叠。
# 第一部分:提高食欲
> 原文: [https://www.fuzzingbook.org/html/01_Intro.html](https://www.fuzzingbook.org/html/01_Intro.html)
在这一部分中,我们介绍本书的主题。
* [遍历本书](Tours.html)遍历本书,介绍了所讨论的各种技术-从最简单的随机输入形式到高端符号推理。
* [软件测试简介](Intro_Testing.html)介绍了软件测试的基础知识,并使您熟悉Python和交互式笔记本。
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
# 第二部分:词法模糊
> 原文: [https://www.fuzzingbook.org/html/02_Lexical_Fuzzing.html](https://www.fuzzingbook.org/html/02_Lexical_Fuzzing.html)
本部分介绍了在*词法*级别上的测试生成,即,组成字符序列。
* [Fuzzing:使用随机输入破坏事物](Fuzzer.html)从最简单的测试生成技术之一开始:Fuzzing将*随机字符字符串*馈入程序,以期发现故障。
*[获得覆盖率](Coverage.html)中,我们通过评估它们的*代码覆盖率*来衡量这些测试的有效性-也就是说,测量程序的哪些部分在测试运行期间实际执行了。 对于尝试覆盖尽可能多的代码的测试生成器,衡量此类覆盖范围也至关重要。
* [基于变异的模糊检测](MutationFuzzer.html)显示了如何*变异*现有输入以行使新行为。 我们将展示如何创建此类突变,以及如何使用流行的AFL模糊器的中心概念来引导它们走向尚未发现的代码。
* [Greybox Fuzzing](GreyboxFuzzer.html) 进一步扩展了输入突变的概念,使用统计估计量来指导测试朝着可能的错误进行。
* [基于搜索的模糊处理](SearchBasedFuzzer.html)进一步采用了指导的概念,引入了基于搜索的算法来系统地生成程序的测试数据。
* [突变分析](MutationAnalysis.html)将合成缺陷(突变)植入程序代码中,以检查测试是否找到了它们。 如果测试没有发现变异,它们也可能不会发现真正的错误。
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册