模糊测试软件测试_模糊测试

多年来,我震惊于可能导致Microsoft Word崩溃的损坏文件数量。 几个字节不合时宜,整个应用程序就大火了。 在较旧的,不受内存保护的操作系统上,整个计算机通常会随之崩溃。 为什么Word无法识别何时收到错误数据,而只是发出错误消息? 为什么仅仅因为一些东西被扭曲而破坏了自己的堆栈和堆? 当然,Word并不是面对畸形文件时唯一表现恶劣的程序。

本文向您介绍了一种尝试避免此类灾难的技术。 在模糊测试中,您使用随机的不良数据(也称为fuzz )攻击程序,然后等待一下,看看有什么坏处。 模糊测试的诀窍在于,这是不合逻辑的:自动模糊测试不会试图猜测可能会导致崩溃的数据(就像人工测试人员可能会做的那样),而是会在程序上尽可能多地抛出乱码。 通过这种测试确定的故障模式通常会使程序员感到震惊,因为没有逻辑的人会想到它们。

模糊测试是一种简单的技术,但是它仍然可以揭示程序中的重要错误。 它可以识别实际的故障模式,并指示在软件出厂前应插入的潜在攻击途径。

模糊测试的工作原理

模糊测试是一个非常简单的实现过程:

  1. 准备正确的文件以输入到您的程序。
  2. 用随机数据替换文件的某些部分。
  3. 使用程序打开文件。
  4. 看看有什么休息。

您可以通过多种方式改变随机数据。 例如,您可以随机分配整个文件,而不是替换其中的一部分。 您可以将文件限制为ASCII文本或非零字节。 用任何方式对其进行切片,关键是在应用程序上抛出大量随机数据并查看失败的原因。

虽然您可以手动进行初始测试,但实际上应该自动执行模糊测试以达到最佳效果。 在这种情况下,面对输入损坏时,首先需要为应用程序定义正确的错误行为。 (如果您发现程序没有费心去定义当输入数据损坏时会发生什么,那么,这是您的第一个错误。)然后,您只需将随机数据传递到程序中,直到找到一个不会触发适当数据的文件即可。错误对话框,消息,异常等。存储并记录该文件,以便以后可以重现该问题。 重复。

尽管模糊测试通常需要一些手动编码,但是有些工具可以提供帮助。 例如,清单1显示了一个简单的Java™类,该类随机修改文件的特定长度。 我通常喜欢在前几个字节之后开始模糊测试,因为程序似乎比以后的错误更容易注意到早期的错误。 (您想查找程序不会检查的错误,而不是程序会检查的错误。)

清单1.用随机数据替换文件的一部分的类
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值