Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 是否有数据集可用于全面测试base64编码/解码器?_Unit Testing_Base64 - Fatal编程技术网

Unit testing 是否有数据集可用于全面测试base64编码/解码器?

Unit testing 是否有数据集可用于全面测试base64编码/解码器?,unit-testing,base64,Unit Testing,Base64,我发现在开源中有很多base64实现,我在我维护的产品中发现了多个内部实现 我试图排除重复项,但我不能100%确定所有这些实现都提供相同的输出。因此,我需要一个数据集来测试所有可能的输入组合 有空的地方吗?谷歌搜索并没有真正报告此事 我在stackoverflow上看到了一个类似的问题,但这个问题还没有完全回答,它实际上只是要求一个短语(ascii)来测试所有64个字符。例如,它不使用=处理填充。因此,一个测试字符串肯定不能满足100%测试的要求。也许类似的东西可以满足您的要求?。base64中

我发现在开源中有很多base64实现,我在我维护的产品中发现了多个内部实现

我试图排除重复项,但我不能100%确定所有这些实现都提供相同的输出。因此,我需要一个数据集来测试所有可能的输入组合

有空的地方吗?谷歌搜索并没有真正报告此事

我在stackoverflow上看到了一个类似的问题,但这个问题还没有完全回答,它实际上只是要求一个短语(ascii)来测试所有64个字符。例如,它不使用=处理填充。因此,一个测试字符串肯定不能满足100%测试的要求。

也许类似的东西可以满足您的要求?。base64中棘手的部分是正确处理填充。正如你所提到的,涵盖这一点当然很重要。因此,RFC 4648规定了这些测试向量:

   BASE64("") = ""
   BASE64("f") = "Zg=="
   BASE64("fo") = "Zm8="
   BASE64("foo") = "Zm9v"
   BASE64("foob") = "Zm9vYg=="
   BASE64("fooba") = "Zm9vYmE="
   BASE64("foobar") = "Zm9vYmFy"

某些实现可能会生成base64输出,其不同之处仅在于它们是否插入换行符,以及换行的实现在何处插入换行符和使用的换行符。您必须进行额外的测试,以确定是否可以安全地将使用一种样式的实现替换为另一种样式。特别是,解码器可能会对线路长度或终端进行假设。

在bouncy castle中进行测试在单元测试中有点不好。它是生成随机数据,然后检查编码-解码,以原始随机数据结束。我同意。我自己的单元测试使用RFC4648字符串和几个精心构造的包含控制字符的长字符串。我(无意中点击提交)我提到了Bouncy Castle测试,因为你想测试所有角色。虽然一大块随机数据不能保证包含所有字符,但与手工构建的静态数据相比,它更有可能破坏实现。诚然,往返有点异味,但实际上,编码器和解码器不太可能有互补错误。根据我的经验,实现了两个类似于base64的编码器(必须排除一些合法的可打印字符),一个坏的编码器会产生垃圾,而通过坏的解码器运行垃圾会产生胡言乱语。为了清楚起见,我会在所有解码器中运行相同的随机数据,并测试它们是否产生相同的输出,或在行尾有可接受的差异。