【问题标题】:Are there test vectors available for GZIP?是否有可用于 GZIP 的测试向量?
【发布时间】:2015-05-10 11:43:23
【问题描述】:

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

是否有任何官方或广泛使用的 GZIP 测试向量?

【问题讨论】:

  • 通用测试向量真的只对解压有意义。允许不同的实现产生不同的压缩字节表示。
  • @AndrewMedico 是只有标头(时间、操作系统...)允许不同还是数据也可以不同(给定一个固定的压缩级别)
  • 我相信实际的压缩数据可能会有所不同。

标签: c++ boost gzip


【解决方案1】:

如 cmets 中所述,您无法以任何固定期望测试压缩机的输出。允许压缩器使用相同的输入数据生成范围广泛的可能结果。最简单的例子是选择不同的压缩级别以权衡速度与大小。压缩器唯一需要保证的是,当它的结果被解压缩时,你会得到压缩器的输入。

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

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

【讨论】:

    【解决方案2】:

    通用无损数据压缩领域的研究人员使用了三个著名的数据集。第一个是卡尔加里语料库,由 Bell 等人于 1989 年引入。语料库中的文件被选择用来掩盖计算机处理中使用的典型数据类型。这个语料库比较老,它包含了一些已经过时的数据类型,但是这个语料库仍然是许多作者使用的一个很好的基准。后来提出的语料库 Canterbury 语料库和大型 Canterbury 语料库包含大小相似的文件,小于 5 MB。

    历史语料库包括

    我发现的最有希望的页面是:

    致谢最后一个链接提供了我用作介绍的文字。您可以阅读有关“旧”语料库各自缺点的更多信息

    【讨论】:

      猜你喜欢
      • 2014-08-29
      • 2011-09-04
      • 2011-03-01
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      相关资源
      最近更新 更多