Fuzz testing

퍼즈 테스트

Feed many varied or malformed inputs to find crashes and unexpected behavior.

···
html
<div class="stage"><div class="title">FUZZ TEST</div><div class="canvas"><div class="stream" id="stream"><span>abc</span><span>a%0</span><span>[ ]</span><span>0x00</span></div><div class="parser">PARSER <i>→</i> <b id="result">OK</b></div><div class="case" id="case">saved crash input: none</div></div></div>
css
.stage{width:min(94vw,820px);height:min(88vh,330px);box-sizing:border-box;padding:clamp(9px,2.4vmin,18px);border:1px solid var(--line);border-radius:13px;background:var(--surface);display:flex;flex-direction:column;gap:clamp(7px,2vmin,14px);font:600 clamp(12px,2.5vmin,16px)/1.28 "Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo",sans-serif;color:var(--fg);overflow:hidden}.title{color:var(--accent);letter-spacing:.035em;flex:none}.canvas{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center}.muted{color:var(--muted)}.mono{font-family:ui-monospace,SFMono-Regular,monospace}.box{border:1px solid var(--line);border-radius:8px;background:var(--bg);padding:clamp(5px,1.4vmin,12px);text-align:center}.active{border-color:var(--accent)!important;color:var(--accent)!important;background:color-mix(in srgb,var(--accent) 12%,var(--surface))!important}.canvas{flex-direction:column;gap:clamp(8px,3vmin,20px)}.stream{display:flex;gap:5px;justify-content:center;flex-wrap:wrap}.stream span{border:1px solid var(--line);border-radius:4px;padding:5px 8px;font-family:ui-monospace,monospace;color:var(--muted)}.stream span.on{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,var(--surface));transform:translateY(5px)}.parser{border:2px solid var(--accent);border-radius:8px;padding:clamp(8px,2.4vmin,18px);color:var(--accent)}.parser i{font-style:normal;color:var(--muted)}.case{color:var(--muted);text-align:center}
js
let n=0;const samples=[...document.querySelectorAll('.stream span')];function feed(){const i=n++%samples.length;samples.forEach((el,j)=>el.classList.toggle('on',i===j));document.getElementById('result').textContent=i===3?'CRASH':'OK';document.getElementById('case').textContent=i===3?'saved crash input: null byte':'saved crash input: none'}feed();setInterval(feed,700)

Fuzz testing generates inputs or mutates known samples and feeds them to a program. It is useful at parser and protocol boundaries where unexpected combinations are common.

The demo sends mutated payloads into a parser and retains the one that crashes. Save discovered inputs as reproducible regression cases.

When to use

Use it for file parsers, decoders, and protocol boundaries with complex input spaces.

Open as page ↗