# 生成软件测试关于本书

> 原文： [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)。