본문 바로가기

clone toy projects/node_express_sns

테스트 커버리지

유닛 테스트를 작성하다 보면, 전체 코드 중에서 어떤 부분이 테스트되고 어떤 부분이 테스트되지 않는지 궁금해집니다.

 어떤 부분이 테스트되지 않는지를 알아내어 해당 부분의 테스트 코드를 작성할 수 있습니다. 

전체 코드 중에서 테스트되고 있는 코드의 비율과 테스트되고 있지 않은 코드의 위치를 알려주는 Jest의 기능이 있습니다. 

이 기능은 커버리지(coverage) 기능입니다.

 

테스트 결과가 출력되고, 추가적으로 표가 하나 더 출력됩니다. 

표의 열을 살펴보면, 각각 File (파일과 폴더 이름), % Stmts (구문 비율), % Branches (if문 등의 분기점 비율), 

% Funcs (함수 비율), % Lines (코드 줄 수 비율), Uncovered Line #s (커버되지 않은 줄 위치)입니다.

퍼센티지가 높을수록 많은 코드가 테스트되었다는 뜻입니다.

표를 보면, 전체 파일 (All files) 중에서는 83.33%의 구문과 83.33%의 분기점, 60%의 함수, 

83.33%의 코드 줄이 커버되었음을 알 수 있습니다. 

 

여기서는 명시적으로 테스트하고 require한 코드만 커버리지 분석이 된다는 점에 주의해야 합니다. 

All files라 하더라도 현재 controllers/user.js, models/user.js, routes/middlewares.js만 포함되어 있습니다. 

따라서 테스트 커버리지가 100%라 하더라도 실제로 모든 코드를 테스트한 것은 아닐 수 있습니다.

models/user.js에서는 33.33%의 구문과 100%의 분기점, 0%의 함수, 33.33%의 코드 줄이 커버되었습니다. 

또한 5-47번째 줄은 테스트되지 않았다는 것을 보여줍니다. 

model/user.test.js작성

 

initiatedhk accsociate 메서드가 제대로 호출 되는지 테스트를 해봤습니다.

db 객체는 모킹했습니다.

방금 models 폴더에 모델이 아닌 테스트 파일을 생성했으므로 models/index.js를 수정해야 합니다.

모델을 시퀄라이즈와 자동으로 연결할 떄 test 파일들도 걸러내도록 합시다.

 

 

 

테스트 커버리지가 대폭 올라간 것을 볼 수 있습니다. 

현재 테스트 커버리지가 100%이지만 모든 코드가 테스트되고 있는 상황은 아닙니다.

 따라서 테스트 커버리지를 높이는 데만 집착하기보다는 필요한 부분을 위주로 올바르게 테스트하는 것이 좋습니다.

 

'clone toy projects > node_express_sns' 카테고리의 다른 글

부하 테스트  (0) 2023.08.29
통합 테스트  (0) 2023.08.29
유닛 테스트  (0) 2023.08.25
테스트 준비하기  (0) 2023.08.25
CORS 이해하기  (0) 2023.08.25