byte[]data=newbyte[(int)in.length()];
DataInputStreamdin=newDataInputStream(newFileInputStream(in));
din.readFully(data);
fuzz(data,start,length);
Stringname="fuzz_"+count+"_"+in.getName();
Filefout=newFile(name);
FileOutputStreamout=newFileOutputStream(fout);
out.write(data);
out.close();
din.close();
count++;
returnfout;
}
//Modifiesbytearrayinplace
publicvoidfuzz(byte[]in,intstart,intlength){
byte[]fuzz=newbyte[length];
random.nextBytes(fuzz);
System.arraycopy(fuzz,0,in,start,fuzz.length);
}
}
关于代码
我可以用很多种方式优化清单1中的代码。例如,有着java.nio的内存映射文件是一个相当不错的选择。我也能够改进这个错误处理及可配置性。因为不想让这些细节混淆这里所要说明的观点,所以我将代码保持了原样。
模糊测试文件很简单。将其传至应用程序通常不那么困难。如Applescrīpt或Perl脚本语言通常是编写模糊测试的最佳选择。对于GUI程序,最困难的部分是辨认出应用程序是否检测出正确的故障模式。有时,最简单的方法是让一个人坐在程序前将每一个测试通过或失败的结果都标记下来。一定要将所有生成的随机测试用例单独地命名并保存下来,这样就能够重现这个过程中检测到的任何故障。
//
文章来源于领测软件测试网 https://www.ltesting.net/