ちょいとメモっとく。
full_rangeが指定されていないデフォルトで、integerの場合、
# try only "smart" values. self.add_integer_boundaries(0) self.add_integer_boundaries(self.max_num / 2) self.add_integer_boundaries(self.max_num / 3) self.add_integer_boundaries(self.max_num / 4) self.add_integer_boundaries(self.max_num / 8) self.add_integer_boundaries(self.max_num / 16) self.add_integer_boundaries(self.max_num / 32) self.add_integer_boundaries(self.max_num)
def add_integer_boundaries (self, integer): ''' Add the supplied integer and border cases to the integer fuzz heuristics library. @type integer: Int @param integer: Integer to append to fuzz heuristics ''' for i in xrange(-10, 10): case = integer + i # ensure the border case falls within the valid range for this field. if 0 <= case <= self.max_num: if case not in self.fuzz_library: self.fuzz_library.append(case)
こんな風に試す値を生成しています。
xrange(-10,10)ってのは、-10から始めて9までの20個なので、各要素ごとに試される数は20個、ということは8種類で最大160個ってことになりますね。
max_numが十分でかい場合には、/2プラスマイナス10とか/3プラスマイナス10は重複しないので、あり得る数の最大は160のままです。
ただし、appendの最後において
if 0 <= case <= self.max_num:
という条件が付けられていますので、
入力値がゼロの場合、-10に始まる10個は範囲外になります。
また、入力値がmax_numの場合、max_num+1に始まる9個は範囲外になります。
したがって160-19で141になります。