Grey box : 어떤 코드가 cover됐는지 정도의 정보만 써서 테스팅하겠다.
Fuzzing
- 천둥번개가 치는데 유닉스가 다운이 되네
- 노이즈가 패킷에 영향을 미친거아닌가 → 유닉스 유틸리티 함수를 random input을 넣어서 테스트해봐라 → crash가 엄청 많이 나옴
- 이 random input을 fuzzer라고함
Ancient fuzzer : 유닉스 command input처럼 생긴 random값
'!7#%"*#0=)$;%6*;>638:*>80"=</>(/*:-(2<4 !:5*6856&?""11<7+%<%7,4
- unix 유틸리티의 1/3의 unknown error을 발견함
- 한계 : V모델은 전체 과정을 다 수집해서 체계적으로 했는데 이걸 다 한다고 해도 코딩하는 사람의 실수는?

- coverage based testing vs fuzzing
- coverage based testing : 커버리지만 신경쓰면 됨
- fuzzing : value 조항만 신경쓰면 됨
- 근데 random값이니까 골고루 테스팅 안될 수있음
Security issue로 눈을 돌리기 시작함
dynamic analyzer : silent violation(crash가 발생하지 않은 치명적 오류)을 방지
randomly generated inputs는 낭비되는게 너무 많다. reasonable하게 random돌리자.
Mutation-based Fuzzing
- valid input을 가진 seed에서 시작하자
- seed에서 small change (mutation)을 가해서 새로운 behaviors를 유도