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程序,最困難的部分是辨認出應用程序是否檢測出正確的故障模式。有時,最簡單的方法是讓一個人坐在程序前將每一個測試通過或失敗的結果都標記下來。一定要將所有生成的隨機測試用例單獨地命名并保存下來,這樣就能夠重現這個過程中檢測到的任何故障。
//
文章來源于領測軟件測試網 http://www.kjueaiud.com/