테스트

  • 내가 예상했던 방식으로 코드가 정확히 동작하는지 확인하는 것.

왜 테스트를 해야할까?

  • 테스트 코드를 작성해놓으면 프로젝트에 (누군가가) 새로운 개발 혹은 수정을 했을 때 사이드 이펙트가 있는지 확인할 수 있다.
  • 소프트웨어 개발의 대부분을 차지하는 유지보수. 이러한 유지보수를 편하게 만들어주는 요소가 된다.
  • 생각지못한 부분(오류)들을 찾기 위해서

테스트의 종류

  • Unit Test(단위 테스트) : 테스트가 가능한 최소의 기능(모듈)이 의도한 로직을 따라 수행되는지 테스트
  • Integration Test(통합 테스트) : 모듈을 통합하는 과정에서 각각의 기능이 제대로 작동하여 올바른 결과를 내는지 테스트
  • System Test(시스템 테스트) : 전체 시스템 동작에 대한 검증
  • Acceptance Test(인수 테스트) : 사용자 요구사항 처리에 대한 검증

테스트 프로세스

테스트는 SW개발 활동과 독립적으로 존재하지 않고 밀접하게 연계되어있다.

(이미지출처 : https://www.oss.kr/info_test/show/75437834-08e1-4023-8197-6f673075ad43?page=5 )

테스트 프로세스 단계

(이미지출처 : http://letzdotesting.com/fundamental-test-process/ )

단계 내용
테스트 계획 및 조정 - 테스트 전략
- 테스트 범위 지정
- 테스트 환경
- 테스팅 관련 위험 식별
- 테스트 도구 결정
- 각 프로세스 단계에 시간 할당
테스트 분석 및 설계 - 테스트 기초 리뷰(요구사항,아키텍처,high-level design,상품 분석)
- 선택한 기술에 근거하여 테스트 케이스 작성
- 테스트 스크립트 및 테스트 데이터 작성
- 테스트 도구 분석
- 테스트 조건 식별
테스트 구현 및 실행 - 테스트 케이스와 시나리오 실행
- 다른 테스트 환경에서 테스트 실행
- 버그 수정을 확인하기 위해 처음에 실패한 테스트 재실행
- 테스트 결과 기록
- 불일치하는 결과 보고
종료 기준 평가 및 보고 - 종료 기준에 대한 테스트 로그 확인
- 실행된 테스트 결과를 문서화
테스트 마감 활동 - 산출물이 요구 사항과 일치하는지 확인
- 향후 재상용을 위해 테스트 케이스, 스크립트, 데이터를 마무리
- 기록된 모든 사건이 해결되고 종결되었는지 확인