퍼즈 테스트는 입력을 무작위로 만들거나 기존 샘플을 변형해 프로그램에 넣습니다. 파서나 프로토콜 경계에서 미처 생각하지 못한 조합을 찾는 데 유용합니다.
데모는 변형된 입력들이 파서로 들어가고 충돌을 낸 입력이 따로 남는 모습을 보여줍니다. 발견한 입력은 재현 가능한 회귀 테스트로 보관해야 합니다.
언제 쓰나
파일 파서, 입력 디코더, 네트워크 프로토콜 같은 복잡한 입력 경계에 사용합니다.
형식이 다양하거나 깨진 입력을 대량으로 넣어 충돌과 비정상 동작을 찾습니다.
<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>.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}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)퍼즈 테스트는 입력을 무작위로 만들거나 기존 샘플을 변형해 프로그램에 넣습니다. 파서나 프로토콜 경계에서 미처 생각하지 못한 조합을 찾는 데 유용합니다.
데모는 변형된 입력들이 파서로 들어가고 충돌을 낸 입력이 따로 남는 모습을 보여줍니다. 발견한 입력은 재현 가능한 회귀 테스트로 보관해야 합니다.
파일 파서, 입력 디코더, 네트워크 프로토콜 같은 복잡한 입력 경계에 사용합니다.