12

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

我有两个问题:

1. 一般来说,你如何定义一个“损坏”的文件?换句话说,什么是损坏的文件?

举个例子:

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

一个建议是简单地获取一个 .zip 文件,更改扩展名,然后进行测试。但是,我认为您不是在测试程序如何处理“损坏的 .pdf 文件”,而是测试它如何处理 .zip 文件。

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

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

2. 一旦定义了一个损坏的文件,你如何去创建一个?


到目前为止,这是我一直在想的:

“损坏的文件”是正确满足文件格式规范的文件,但其中包含固有缺陷的数据/字节。

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

谢谢阅读。

4

5 回答 5

4

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

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

实际上你需要做两件事。

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

但是,对于不同的测试场景,可能需要创建损坏文件的不同“版本”。

希望能帮助到你。

于 2012-05-02T13:00:20.983 回答
3

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

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

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

于 2012-05-02T12:55:43.377 回答
2

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

于 2012-05-02T12:56:59.587 回答
1

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

于 2012-05-02T12:59:05.053 回答
1

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

于 2012-05-02T12:59:41.310 回答