모듈과 테스트코드

이정기·2023년 4월 21일
0

TIL

목록 보기
60/71
post-thumbnail

모듈

나는 Node.js 를 써보며 3계층 아키텍처와 라우터 모듈을 코드로 구성해보았다.

Node.js 에서 모듈은 필요한 함수들의 집합을 의미한다.

3계층을 어떻게 나눠야 될지 모를 때, 라우터에 모든 API 를 구현했었는데, 만약 큰 프로젝트였다면 파일을 여러 개로 분리해야 하는 시점이 왔을 것이다. 3계층은 각각의 책임에 맞기 분리된 단위로, 유지보수하기 쉽도록 만들어 줬다.

이때 분리된 파일 각각을 모듈(module) 이라 부른다.

모듈은 이렇듯 3계층과 라우터가 될 수 있고, 사용자가 만든 라이브러리가 될 수 있고, Node.js 에서 만들어 놓은 내장 모듈이 있을 수 있다.

그래서 Node.js 에서 모듈을 나눴을 때 크게 내장 모듈과 사용자 정의 모듈로 나눈다.

노드 공식 문서에서는 표준 모듈을 CommonJS 로 불린다.

내장 모듈(built-in module)

노드에서 제공되는 모듈로 설치 없이 바로 이용 가능하다. 내장 모듈은 파일 시스템, 네트워크, 암호화 등 다양한 기능을 제공한다. 일부 내장 모듈은 다음과 같다.

  • fs: 파일 시스템 모듈
  • http: HTTP 서버 및 클라이언트 모듈
  • https: HTTPS 서버 및 클라이언트 모듈
  • os: 운영 체제 정보 모듈
  • path: 파일 경로 처리 모듈
  • crypto: 암호화 모듈
  • zlib: 데이터 압축 및 해제 모듈
  • util: 각종 유틸리티 모듈

사용자 정의 모듈(user-defined module)

개발자가 직접 작성한 모듈이다. 파일에 정의된 함수, 객체, 클래스 등을 불러와 사용할 수 있다.

출처
코어 자바스크립트 - 모듈

테스트코드

Node.js 테스트 코드는 개발자가 작성한 코드가 예상대로 동작하는지 확인하는 코드이다.

테스트 코드 종류

  • 단위 테스트 또는 유닛 테스트(Unit Test)
    애플리케이션의 최소 기능 단위인 모듈, 함수, 클래스 등을 테스트한다. 일반적으로 개발자들은 자신이 작성한 코드를 모듈 단위로 테스트하며, 이를 통해 코드가 의도한 대로 작동하는지 검증할 수 있다.

  • 통합 테스트 (Integration Test)
    각각의 모듈이 모여 동작하는 시스템 전체를 테스트한다. 단위 테스트가 개별 모듈의 기능을 검증하는 것과 달리, 통합 테스트는 시스템 전체의 기능을 검증 한다.

  • 시스템 테스트(System test)
    애플리케이션의 비즈니스 로직이나 사용자 인터페이스 등을 검증한다. 시스템 테스트는 사용자 관점에서 검증하며, 대개 QA(Quality Assurance)팀에서 수행한다.

  • 성능 테스트(Performance test): 성능 테스트는 애플리케이션의 성능, 부하, 안정성 등을 검증한다. 대규모의 동시 접속자가 있는 상황에서도 안정적으로 작동하는지 검증한다.

최근에 노드 내장형 테스트러너가 출시됐다 한다. 안정성 문제를 해결해 한번 사용해보면 좋을거 같다.

출처
Node Test Runner

이 밖에도 외부 라이브러리 Mocha, Jest, Ava, Tape 등이 있다.

profile
Node.js 로 꿈을 꾸었다..

0개의 댓글