➕ 테스트는 개발자에게 심리적 안정감을 주게 되며 혼자서 피드백을 받을수 있게 해주는 효과가 있다.
흔히 테스트 주도 개발이라 하며 작은 단위의 테스트 케이스를 작성하고 이를 통과하는 코드를 구현하여 반복을해 개발자 스스로 검증을 할수있다.
테스트를 먼저 작성하고 테스트를 통과하는 구체적인 코드를 추가해나가는 방법이다.
실패 하는 테스트 작성
통과 하는 테스트 작성
리펙토링
을 반복하며 책임과 협력의 관점에서 객체를 바라볼수있게 도와준다.
→ 좀더 객체지향적인 코드 생성이 가능.
객체가 존재하는 이유는 행위를 수행하여 협력에 참여 하기위함인데 → 각 객체의 책임이 중요해진다.
객체는 그저 데이터를 저장하기 위한 존재가 아니다. → 객체를 설계시 객체의 책임, 행동, 결정 후 데이터를 설계한다.
테스트의 단위는 크게 각 목적과 방법에 따라 단위테스트, 통합테스트, 인수테스트로 나눌수 있다. 지금부터 이에 대해 알아보도록 해보자
응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 기대값과 일치하는 지 확인하는 테스트
ex>
좋은 단위 테스트의 특징
요구사항은 계속 변한다. 우리는 그에 맞춰 우리의 코드로 변화를 주어야 한다. 코드를 수정ㅈ하게 되면 side effect를 유발할수 있지만 좋은 테스트 코드가 있다면 이를 예방 할수 있다.
1개의 테스트 함수에 assert 최소화
1개의 테스트는 하나의 역할만 수행 ( 한가지 행동 )
FIRST
FAST
INDEPENDENT
REPEATABLE
SELF-VALIDATING
TIMELY
통합 테스트는 이름 에서도 나타나 있듯이 테스트를 통합해서 진행 한다는 뜻이다. 즉 의도대로 협력을 하는 지 확인하는 테스트이다.
ex>
사용자의 시나리오에 맞춰 수행하는 테스트
https://tecoble.techcourse.co.kr/post/2021-05-25-unit-test-vs-integration-test-vs-acceptance-test/