The Art of Software Testing

82008774_117702023082154_317269272810225664_o

테스팅은 에러를 찾기 위해 프로그램을 실행하는 프로세스다.

프로그램 테스트도 환잔 검진처럼 생각해야 한다.

프로그램 테스팅이 프로그램 안의 드러나지 않은 에러를 찾는 과정이라고 한다면, 프로그램 테스팅은 가능한 작업이다.

테스팅은 프로그램이 의도한 작업을 하는지 그 여부를 시연하는 과정이라는 정의는 프로그램 내부에 에러는 있지만, 프로그램이 해야 하는 작업을 실행함을 의미한다.

블랙박스 테스팅 : 프로그램 명세대로 그 프로그램이 작동하지 않는 상황을 발견하는데 집중한다.

하이트박스 테스팅 : 프로그램의 내부 구조를 조사하는 화이트박스 또는 논리 주도 테스팅이 있다. 이 전략에는 두가지 문제, 프로그램내 로직 경로의 수가 천문학적이라는 것과 철저한 경로 테스팅은 완전한 테스트를 의미한다는 말에 의거에 모든 경로를 테스트 할 수 있다손 치더라도 그 프로그램은 에러가 발생할 수 있다는 것이다. 1. 철저한 경로 테스트가 프로그램의 사양과 일치함을 보장하지 않는다. 2. 누락된 경로 때문에 프로그램이 잘못될 수 있다. 3. 철저한 경로 테스팅으로 데이터 민감성 에러를 발견할 수 없다.

소프트웨어 테스팅 원칙

  1. 테스트 케이스의 필요한 부분은 예상 출력이나 결과에 대한 정의다.
    1. 프로그램의 입력 데이터에 대한 기술
    2. 입력 데이터에 대한 프로그램의 정확한 출력에 대한 기술
  2. 프로그래머는 자시의 프로그램 테스트를 피해야 한다.
    1. 다른 사람이 테스팅하면 더 효과적이고 성공적이다.
  3. 프로그래밍 조직은 자신들의 프로그램을 테스트하지 말아야 한다.
    1. 제3자가 목표에 따라 테스팅하는 것이 보다 경제적이라는 말이다.
  4. 테스트 결과를 철저하게 조사해야 한다.
  5. 유효하고예상 가능한 입력 조건에 대한 테스트 케이스 작성은 물론, 예상치 못한 무효한 입력조건에 대해서도 테스트 케이스를 작성해야 한다.
  6. 프로그램이 해야 할 것을 하지 않는 지에 대한 조사도 중요하지만, 프로그램이 하지 말아야 할 것까지 하는지도 찾아내야 한다.
  7. 한번 사용하고 버리는 프로그램이 아니라면, 사용하고 버리는 테스트 케이스를 만들어서는 안 된다.
  8. 에러를 발견하지 못할 것이라는 암묵적인 합의 하에 테스트 수행 계획을 작성하면 안 된다.
  9. 프로그램의 한 섹션에 많은 에러가 있을 가능성은 그 섹션에서 발견된 에러 수에 비례한다.
  10. 테스팅은 극도로 창의적이고 지적인 도전이다.

요약 :

  • 테스팅은 에러를 찾기 위해 프로그램을 실행하는 프로세스다
  • 발견 못한 에러를 찾을 확률이 높아야 좋은 테스트 케이스다
  • 성공적인 테스트 케이스는 발견하지 못한 에러를 찾는 테스트 케이스다

댓글 남기기