1. Software Testing
1) 정의
- 정의: 제대로된 소프트웨어를 개발 했는지 테스트 하는 것
- 세부정의: 소프트웨어에서의 모든 플로우에서 에러가 발생하지 않고 정상 작동하는지 테스트 하는 것
2) 테스트의 이유
- 선 결함 확인
- 문제의 사전 방지
- 시간 절약: 테스트를 함으로써 재설계, 디버깅에 대한 시간을 단축할 수 있다.
- 구조 개선
- 품질 개선
- 확장성: 테스트를 다 통과한 소프트웨어는 다른 기능을 확장하기 용이하다.
2. Manual Testing
1) 정의
- 정의: 사람이 손으로 일일이 하는 테스트
- 단점
- 불안정성: 사람의 실수로 인한 불안정성
- 인력소모: 노가다성 테스트
- 비용발생
- 테스트속도 느림
2-1. Automation Testing
1) 정의
- 정의: 사람이 손으로 일일이 하는 테스트
- 장점
- 안정성 증가: 휴먼 에러 차단에 의한 안정성 증가
- 비용 감소: 인력 소모 감소에 의한 비용 감소
- 테스트속도 감소
- 확장성 증가
- 프로그램화:
- 재사용가능: 노가다성 테스트
- 품질증가
3. 시스템 테스트 전략 3가지
1) End-to-End(E2E) Tests
2) Integration Tests(통합테스트)
3) Unit Tests(단위 테스트)
1) Unit Tests
- 정의: 테스트 할 수 있는 가장 작은 단위를 테스트 하는 코드를 작성해서 테스트 하는 것
2) Unit Tests의 중요성
- 빠른 문제 파악 가능
- 시간과 비용 절감
- 리팩토링 시 안정성 확보
- 코드에 대한 문서로 활용