수동테스트는 사람의 눈으로 확인하는것을 말한다 예를들어 system.out.prinlnt
과 같이 직접 콘솔에 입력하고 결과값이 내가 예상한 대로 나오는것과 같이 검증하는 방법을 말한다. 자동화 테스트는 코드로 실행시켜 Xunit과 같은 테스트 프레임워크로 검증을 코드로서 자동화 시키는것이다.
암묵적이거나 아직 드러나지 않은 요구사항이 있는가 핵심이다 예를들어 음수값이 들어오는 경우
경계값 테스트 : 범위 이상이하 초과 미만 특정 구간 날짜 경계라던지 경계값이 있는 조건이 있는경우 ex) 3이상일때 A조건을 만족해야한다면 이 요구사항에 대한 해피케이스는 4나5보다 경계값 3이상이니까 3에대한 케이스를 짜는게 좋다. 반대로 예외케이스는 2에 대해 검증하는게 좋다
테스트 값은 매번 실행될때마다 달라지면 안된다. 이런경우는 파라미터로 받는것이 좋다
테스트 가능한 영역에 테스트가 어려운 코드가 들어온다면? 전체가 불가능한 상태가 된다.
따라서 테스트가 실행할때마다 성공했다 실패했다 이렇게 변경이 된다.
따라서 테스트 어려운 영역을 외부로 분리했다.
검증하고자하는게 무엇인가 시간의 범위를 테스트하는것이다 LocalDateTime.now()가 중요한게 아니다
외부세계에 들어오는 값에 의존하는것과 반대로 우리의 함수가 외부세계에 영향을 주고 그것에 의존하는 경우가 어렵다...
반대로 하기쉬운것은 순수함수 영향을 안받는 함수
테스트 시야를 키워야한다 고민이 중요하다
많은 도움이 되었습니다, 감사합니다.