테스트 코드 작성 시 장단점과 테스트 종류 별 특징

코딩하는 어린콩·2021년 11월 26일
0

I learned

목록 보기
8/14

테스트 코드 작성시 장단점

  1. 장점
    • 예상 동작과 실제 동작을 비교하여 빠르고 정확한 테스트가 가능하기 때문에 초기 개발의 디버깅이 쉬워집니다.
    • 어플리케이션이 변경(기능 확장 또는 리팩터링 등)되더라도 올바르게 작동하는 지 확인할 수 있습니다.
    • 단위 테스트 자체를 어플리케이션에 대한 문서로 사용할 수 있다. 특히 잘 만든 테스트 케이스는 API 기능을 쉽게 파악할 수 있도록 도와줍니다.
    • 여러 빌드 도구들(maven, gradle 등)은 테스트 자동화 기능을 포함하고 있습니다.
  2. 단점
    • 테스트 코드까지 작성해야하기 때문에 개발 시간이 오래 걸리게 됩니다.
    • 어플리케이션 변경 사항을 테스트 코드에도 적용해야 하기 때문에 테스트 코드를 유지보수하는 비용이 든다.

테스트 종류 별 (단위 테스트, 통합 테스트, E2E 테스트) 특징

  • 단위 테스트(Unit Test)

    단위 테스트는 하나의 모듈을 기준으로 독립적으로 진행되는 가장 작은 단위의 테스트 입니다.
  1. 어디에서 문제가 발생했는지를 빨리 확인할 수 있기 때문에 디버깅 시간을 단축시킵니다.
  2. 코드 변경 뒤에도 기능이 제대로 동작하는지 검증해주기 때문에 프로그래머가 더 의욕적으로 코드를 변경할 수 있게 도와줍니다.
  • 통합 테스트

    단위 테스트가 끝나고 그 하나 하나를 결합해 가며 테스트 하는 방법입니다.
  1. 단위 테스트와 달리 개발자가 변경할 수 없는 부분까지 묶어 검증할 대 사용합니다. (Ex. 외부 라이브러리)
  2. 단위 테스트에서 발견하기 어려운 버그를 찾을 수 있습니다.
  3. 단위 테스트보다 더 많은 코드를 테스트하기 대문에 신뢰성이 떨어질 수 있고 어디에서 문제가 발생했는지 확인하기 어렵습니다.
  • E2E(End To End) 테스트

    사용자의 입장에서 사용자가 사용하는 상황을 가정하고 테스트 하는 것 입니다.
  1. 일반적으로 웹이나 어플 등에서 GUI를 통해 시나리오, 기능 테스트 등을 수행합니다.
  2. 사용자에게 직접적으로 노출되는 부분을 점검합니다.
  3. 단위 테스트로 불가능한 사용자 관점의 테스트까지 가능합니다.
  • E2E Test 프레임 워크인 Cypress 예시
describe('sample', function () {
    it('run', () => {
        cy.visit('https://hbsmith.io')
        cy.get('#cotactName')
            .type('Test')
            .get('#contactEmail')
            .type('your-email')
            .get('#contactService')
            .type('hbsmith.io')
            .get('#bottom')
            .click()
    })
})

0개의 댓글