[TIL] Clean Code, 테스트

HYl·2022년 4월 19일
0

TDD

TDD는 테스트 코드를 먼저 작성하고 개발한다는 개발론중의 하나이다.


테스트 코드의 특징

  • 한 번 작성된 테스트 코드는 영원히 유지보수 해야 한다.
  • 내부 구현 사항을 테스트 하면 안 된다.
  • 반복적인 코드, 재사용성을 높이기 (테스트 유틸리티)
  • 배포용 코드와 철저히 분리
  • 테스트코드를 통한 문서화의 효과

더 나은 테스트의 구조

  • beforeEach, AfterEach 를 사용
  • 준비 - 실행 - 검증 단계로 나누어져 있다
    ( Given - When - Then , GWT )
    ( Arrange - Act - Assert )
it('test code', async () => {
  // Arrange, Given
  const product = new Product();
  
  // Act, When
  const items = await product.items();
  
  // Assert, Then
  expect(items.length).toBe(1);
});
  • Given : 준비 과정이 반복되는 경우, 재사용을 위하여 utility 함수로 정의해서 사용하는 것이 좋다.
  • When : 의도적으로 실패하기
    • 실패하는 코드를 먼저 작성 후, 버그 파악 후 성공하는 코드로 변환
  • Then : 가장 마지막에 위치해야 한다.

더 나은 테스트의 원칙, FIRST 속성

  • Fast : 빠른, 느린 것에 대한 의존성 낮추기
    • 테스트하는 파일에서 파일을 읽거나, 데이터베이스에 접근하거나, 네트워크를 사용할 시에는 테스트 코드를 느리게 만들 수 있고 시스템도 불안정해진다.
    • mock 함수, stub 활용하기.
  • Isolated : 고립된, 독립
    • 최소한의 유닛으로 검증
  • Repeatable : 반복 가능한
    • 테스트 코드를 실행할 때마다 동일한 결과를 유지
    • 다른 테스트 코드에 의존하는 경우와 네트워크를 사용하는 경우 등 다른 환경에 영향을 받지 않도록 작성해야한다.
  • Self-validating : 스스로 검증 가능한
    • 자동화를 통한 검증단계 (CI/CD) 프로세스 도입
  • Timely : 적시의
    • 시기적절하게 테스트 코드를 작성해야 한다.
    • 사용자에게 배포되기 이전에 작성
profile
꾸준히 새로운 것을 알아가는 것을 좋아합니다.

0개의 댓글