GZIP有测试向量吗?

时间:2015-05-10 11:43:24

标签: c++ boost gzip

在我们的软件中,我们有一个GZIP(RFC 1952)压缩/解压缩接口,目前由boost :: iostreams提供支持。由于我们可能需要根据链接原因更改底层lib,因此我想为GZIP压缩和解压缩添加更多测试,即精确的每字节字节比较。

是否有官方或广泛使用的GZIP测试载体?

2 个答案:

答案 0 :(得分:2)

如评论中所述,您无法以任何固定的期望来测试压缩机的输出。允许压缩器使用相同的输入数据生成各种可能的结果。最简单的例子是选择不同的压缩级别,以速度与大小进行交易。压缩机唯一可以保证的是,当它的结果被解压缩时,你得到了压缩机的输入。

因此,有两种测试是有意义的。第一个是往返测试,在那里你测试压缩然后解压缩并验证你得到的是你输入的内容。@ sehe的答案为语料库提供了良好的资源,为压缩器提供了各种输入数据。您还应该生成自己的应用程序测试数据。

第二种是用各种无效输入测试解压缩器以确保它表现良好,即它返回错误而不是崩溃。对于后者,您可以查看infcover.c,其中包括具有各种错误的deflate测试序列。

答案 1 :(得分:1)

研究人员在通用无损数据压缩领域使用了三个众所周知的数据集。第一个是卡尔加里语料库,由贝尔等人于1989年引入。语料库中的文件被选择用于掩盖计算机处理中使用的典型数据类型。这个语料库相当陈旧,它包含一些不再使用的数据类型,但语料库仍然是许多作者使用的一个很好的基准。后来提出的语料库,坎特伯雷语料库和大型坎特伯雷语料库,包含类似大小的文件,小于5 MB。

历史语料库包括

我找到的最有前途的页面是:

  

信用最后一个链接提供了我用作介绍的文字。您可以阅读有关“旧”语料库

各自缺点的更多信息