如何制造一个"腐败"文件

时间:2012-05-02 12:52:07

标签: unit-testing testing functional-testing

假设在测试期间,您希望测试软件如何处理“损坏”文件。

我有两个问题:

1。一般来说,如何定义“损坏”文件?换句话说,什么构成了腐败文件?

举个例子:

假设您需要测试“损坏的”.pdf文件。

一个建议是简单地获取.zip文件,更改扩展名,并使用它进行测试。但是,我认为你没有测试程序如何处理“损坏的.pdf文件”,而是测试它如何处理.zip文件。

另一个建议是打开文件并插入/删除随机字节。这个建议没问题,但有一些问题:

  • 有可能(尽管不太可能)修改或删除的部分是无关紧要的。例如,您可能只是删除一个巨大字符串的一部分,它会修改数据,但不一定会破坏文件。
  • 可能会以程序拒绝读取文件的方式修改文件。例如,如果删除了.pdf标头,那么API(或您正在使用的任何标头)可能无法超过该点,并且根本无法测试该文件。
  • 与第一个项目符号类似:如果对文件进行了足够大的修改,则会产生一个参数,即生成的文件不再与原始文件格式相同。所以,再次,如果您要删除.pdf标头,那么该文件可能不再是.pdf文件。因此,尝试测试它不会测试损坏的.pdf文件,而是测试.pdf文件的一些奇怪变体。

2。一旦定义了损坏的文件,您将如何创建一个?


这是我到目前为止所想的:

“损坏的文件”是一个正确符合文件格式规范的文件,但其中包含本身存在缺陷的数据/字节。

我能想到的唯一例子是你是否以某种方式更改了文件的编码。 然后,您可以将此方法应用于任意格式的文件。

感谢阅读。

5 个答案:

答案 0 :(得分:4)

文件格式由两件事来定义。 1.文件的扩展名 - 应告诉操作系统文件的格式。 2.文档的 MimeType 。许多文档都有错误的扩展名(.avi .jpg),但实际上mime类型告诉了它们是什么。

如何破坏文件?你不能只是添加随机字节或smthing(例如.txt文件不会被破坏)

实际上你需要做两件事。

首先 - 您更改文件的mime类型,然后您可以添加一些随机字节。如果myme类型与扩展名不同(不相似) - 例如.avi文件的“text / html”,则该程序无法识别此类mime类型的文件。

然而,对于不同的测试情况,可能有必要创建损坏文件的不同“版本”。

希望它有所帮助。

答案 1 :(得分:2)

  

另一个建议是打开文件并插入/删除随机字节。

这就是我一般的做法。虽然我理解您上面提到的问题,但如果文件本机应用程序无法读取,我认为该文件已损坏。

例如,xls不会在Excel中打开,docx也不会在Word中打开等。

答案 2 :(得分:2)

轻松,取消下载文件(可能是rar文件)。我以这种方式得到了大部分腐败。

答案 3 :(得分:1)

我使用linux head和tail命令拆分文件,然后将它们与缺少的或额外的字节一起捕回。

答案 4 :(得分:1)

我建议使用不完整的文件进行测试 - 这是通过中断下载创建最多损坏文件的方式。