你解码了参数、输入域或数据文件中的一些数据,而且你希望为它创建合适的测试用例。你必须确定它是哪种类型的数据,以便设计出好的测试用例来以有趣的方式处理它。
(资料图)
我们将考虑以下数据类型:
十六进制(Base-16)
八进制(Base-8)
Base-36
十六进制字符或Base-16数字,由数字0-9和字母A-F组成。你可能会看到他们采用全部大写或全部小写,但你很少能见到字母的大小写混杂形式,如果字母表中有F之后的任何字母,那么你所处理的就不是Base-16.
尽管这是基本的计算机科学知识,但值得就测试方面进行重复。数据的每个字节都由输出中的两个字符表示。要注意的一些重要的事情:00是0,也就是NULL,等等。这是我们最常用的边界测试值之一。同样,FF是255,或者-1,这取决于它是无符号值还是有符号值。它是另一个我们最常用的边界值。其他有趣的值包括20(它是空格字符的ASCII码)和41(它是大写字母A的ASCII码)。不存在超过7F的常见的可打印的ASCII字符,在大多数编程语言中,十六进制可以通过前置的0x字母来区分。如果你看到0×24,你的第一直觉应该是将它作为十六进制数来对待。另一种常见的表示十六进制值的方法是使用冒号来分割每个字节。网络MAC地址,SNMP MIB值、认证以及其他使用编码的协议和数据结构经常这样做。例如,MAC地址可以表示为:00:16:00:89:0a:cf。注意,有些编程人员会忽略不必要的前导0。所以上面的MAC地址可以表示成:0:16:0:89:a:cf。不要因为有些数据是单个数字就认为它不是一些列十六进制字节。
八进制数据
八进制编码—Base-8—有点不太正常,但有时仍然会出现。不同于其他一些基数(16,64,36),它所使用的数字不到10个,因此根本不会用到字母。需要用到的只是数字0~7。在编程中。八进制数字经常使用前导0来表示,比如017等于十进制数15或十六进制数0F。但是,看到前导0时,并不能假定它是八进制数。八进制太少见了以至于不能仅仅因为这个证据就假定它是八进制数。前导0通常表示固定的字段长度和少许其他情况。八进制数据关键的突出特点在于,它的每一位都是数字而且都不超过7。当然,00000001符合这一描述但它很可能不是八进制数。实际上,它可以解码成任何东西,这无关紧要。在所有这些编码中。1都等于1!
Base-36
Base-36更像是Base-16和Base-64之间的一种不常见的混合体。同Base-16一样,它从0开始,用到9之后将继续使用字母。不过,它并没用停在F,而是包括一直到Z的全部26个字母。不过,于Base-64不同,它不区分大小写相同(全部大写或全部小写),而且其中有字幕表中位于F之后的字幕,那么你所看到的很可能是Base-36数字。
讨论
很容易找到Base-16和Base-8的编码器和解码器,甚至Windows上的简单计算器都能够胜任这项任务。但是,Base-36的编码器/解释器就有些不好找了。