假设在测试期间,您希望测试软件如何处理“损坏”文件。
我有两个问题:
1. 一般来说,你如何定义一个“损坏”的文件?换句话说,什么是损坏的文件?
举个例子:
假设您需要测试一个“损坏的”.pdf 文件。
一个建议是简单地获取一个 .zip 文件,更改扩展名,然后进行测试。但是,我认为您不是在测试程序如何处理“损坏的 .pdf 文件”,而是测试它如何处理 .zip 文件。
另一个建议是打开文件并插入/删除随机字节。这个建议没问题,但是有几个问题:
- 修改或删除的部分可能(尽管不太可能)无关紧要。例如,您可以简单地删除一段巨大的字符串,这会修改数据,但不一定会损坏文件。
- 可能会以程序拒绝读取文件的方式修改文件。例如,如果 .pdf 标头被删除,那么 API(或您正在使用的任何东西)可能不会超过该点,并且根本无法测试文件。
- 与第一个项目符号类似:如果文件被大幅修改,则存在一个论点,即生成的文件不再与原始文件格式相同。因此,再次,如果您要删除 .pdf 标头,那么该文件可能不再是 .pdf 文件。因此,尝试测试它不会测试损坏的 .pdf 文件,而是测试 .pdf 文件的一些奇怪变体。
2. 一旦定义了一个损坏的文件,你如何去创建一个?
到目前为止,这是我一直在想的:
“损坏的文件”是正确满足文件格式规范的文件,但其中包含固有缺陷的数据/字节。
我能想到的唯一例子是,如果您以某种方式更改了文件的编码。然后,您可以将此方法应用于任意格式的文件。
谢谢阅读。