뷰티풀 테스팅 5장 정리 - 퍼징 테스트?

쥐도리·2023년 2월 8일
0
post-thumbnail

5장 퍼지 테스팅을 통한 사무용 SW의 신뢰성 확보

기초 기능 완성도의 중요성 & 퍼징 테스트



내용정리

1. 사용자 기대치

대중적 SW 일수록 신기능 개발보단 기초기능에 대한 완성도 추구

  • 업무 지원 프로그램은은 고급 기능 개발보단 기초 기능 강화를 추구해야한다.
    1. MS-Office 명령어 중 32%가 기본 명령어(복붙, 저장, 굵게, 취소) 차지.
    2. 웹 오피스는 기존보다 고급기능이 적지만, 기초 기능있으니 인기 ↑

아름다운 신기능 개발 보단 복잡한 기능은 숨기고, 기초 기능 강화를 추구

2. 왜 퍼징 테스트인가?

퍼징 테스트의 3가지 효과 + 정의되지 않은 영역 테스트

  • 퍼징? 입력 데이터를 임의로 변경하거나 손상시켜 프로그램 작동
  • 퍼징 테스트의 효과
    A. 상호 운용성 개선
    B. 사용자 만족도 개선
    C. 보안성 개선
    ++ 정의되지 않은 영역에 추가 테스트

A. 상호 운용성 개선

모든 버전별 or 유사한 SW들 작동 여부 테스트 대체

  • 상호 운용성 필요 이유
    • 기초 기능(Ctrl+C, Ctrl+V, Ctrl+S)는 버전별 혹은 타사 SW에서도 작동 가능토록 해야 함
  • 상호 운용성 범위
    • 해당 SW의 모든 버전(구버전 포함)
    • 해당 SW과 유사한 타사의 SW
    • 작동 중 예외상황으로 데이터 일부 오염시에도 정상 작동
      ∴ 모든 버전 & 모든 유사 프로그램과 테스트는 현실성 X → ∴ 퍼징 테스트로 대체

B. 사용자 만족도 개선

입력 조건 제한 해제 → 불필요한 사용자 버그 리포트 ↓

  • 제한된 입력 조건의 문제점
    • 익숙지 않은 사용자는 제한된 입력 조건을 버그로 인식하여 제보
      1. 동일한 입력 문제로 여러 사용자들이 동일한 버그를 지속적 보고
      2.일반사용자 버그 리포트 해결 시간 > 전문 테스터 버그 리포트 해결 시간
      ∵ 주요 정보 빠짐, 불완전한 재현 환경
      => 이에 따라, 사용자들이 보고 하기 전 테스터가 미리 탐색하여 해결

C. 보안성 개선

악의적 입력 조건 & 특수 입・출력에 따른 내부 코드 노출 공격 방지

  • 입력 조건에 따른 보안 취약 공격 방지
  • 알 수 없는 입력 파일 강제 실행 방지
    => 여러 취약성 예방

3. 퍼지 테스팅

A. 준비

대표 샘플(기존 버그 리포트) 준비

  • 퍼징 테스팅 준비사항 → 대표 샘플 몇 개
    • 유사 프로젝트에서 대표 샘플 탐색
    • 기존 버그 리포트 활용
      ⇒ 해당 샘플 몇 개 이용해서 수 만개 테스트 가능

B. 일반적인 퍼징

단순 입력 파일 변경 & 손상 퍼징 테스트

  • zzuf 이용한 퍼징 테스팅
    • zzuf? 다용량 입력 퍼저로 입력 조건 속 비트 변경 활용
    • 초기 테스트 시, 특정 구조는 유지하며 입력값 내 0.4% 임의 변경 테스트
  • zzuf 설정에 따른 테스팅 수행
    1. 헤더 바이트 범위 보존 → 경로 상 문서 정상 감지 확인 가능
    2. 특정 문자 변경 방지, 입력 파일에 다른 문자 삽입 방지 테스트 가능
    3. 코드상의 새너티 검사 가능
  • zzuf 테스팅 장점
    1. 해당 테스팅으로 설정에 따른 여러 결과들을 빠르게 도출 가능
    2. 소수의 샘플로도 많은 테스팅 가능
    3. 퍼징 테스팅의 모니터링을 통해 코드 안정도 파악 가능

C. 사용자 퍼징

해당 SW 포맷에 따른 퍼징 테스트

  • 사용자 퍼징?
    • SW와 File 포맷에 따른 지식을 바탕으로 zzuf 설정하여 퍼징 테스트 실행
  • 사용자 퍼징 장점
    • 수동으로 생성 불가능한 입력값 생성 가능
    • 일반 사용자 사용에 따른 발생 사고를 예방 가능
    • 코드 속 함수 통일성 테스트 가능

D. 랜덤 퍼징

일반적이지 않은 난수 퍼징 테스트

  • 랜던퍼징?
    • 일반 퍼징 & 사용자 퍼징과 대조적으로 비구조적 & 불규칙적 입력 파일 사용
  • 랜덤 퍼징 장점
    • 예상치 못한 파일 선택에 따른 사고 방지
    • 미지원 하는 파일 선택에 따른 사고 방지

4. 추후 고려사항

추가 고려사항

  • 코드 및 파일 관련 충분한 퍼징 테스팅 이후? UI & 스크립트 & 매크로도 퍼징 테스팅
  • 한 가지 툴(zzuf) 이외에 여러 퍼징 툴 사용 고려
  • 자주 사용하는 기능 중심으로 퍼징 테스팅 통한 완성도 높이는 것을 권장한다.


정리

기억에 남는 문장

  • 가장 기본적 기능에 대한 신뢰성 확보하는 것이 중요하며, 대부분의 사용자는 몇 가지 기능만으로 작업한다.
  • 사무용 SW가 직면하는 가장 어려운 문제는 버전별, 유사한 프로그램과의 상호운용성이다.
  • 입력을 제한할수록, 사용자의 중복되는 버그 리포트가 폭발한다.

배운 것

  • 업무용 SW일수록 신기능을 첨가하기보단 기초적인 기능에 대한 완성도를 높이는게 중요하다.
  • 상호운용은 단순 프로그램 내 정상 작동이 아니라, 버전별 & 유사 SW에서도 작동 가능토록 해야한다.
  • 퍼징 테스팅의 핵심은 정의되지 않던 영역을 테스트함에 있다.

참고도서

Adam Goucher, ⌜뷰티풀 테스팅⌟, 지앤선, 2011
profile
해보고, 정리하고, 돌아보자

0개의 댓글