wanted-preonboarding-team-8 / pre-onboarding-9th-4-8 Goto Github PK
View Code? Open in Web Editor NEW원티드 프리온보딩 4차 과제
Home Page: https://pre-onboarding-9th-4-8.netlify.app
원티드 프리온보딩 4차 과제
Home Page: https://pre-onboarding-9th-4-8.netlify.app
주문번호
, 거래일 & 거래시간
버튼을 누르면 각각 내림차순 정렬이 되도록 해주세요2023-03-08
일을 의미합니다.)과제 이후 fork한 개인 레포의 리드미에 커버리지 뱃지를 만들어 보며 추가로 알아본 내용입니다.
이번 과제에서 테스트를 처음 경험하여 많이 어려움을 가졌던걸로 기억합니다. 저 또한 테스트가 처음이라 상당히 어려웠습니다. 그래서 과제 이후에 알게 된 내용을 공유하고자 합니다
테스트 커버리지(test coverage)는 코드 커버리지(code coverage)라고도 합니다. 쉽게 말해 코드가 얼만큼 테스트되고 있는지를 나타내는 소프트웨어의 품질 지표입니다. 테스트 커버리지가 높은 소프트웨어는 버그가 발생할 확률이 적기 때문에 사용자가 좀 더 신뢰하고 사용할 수 있습니다. 당연히 반대로 테스트 커버리지가 낮은 소프트웨어는 믿고 사용하기가 좀 어렵습니다.
커버리지 항목은 다음과 같습니다.
Statements | Branches | Functions | Lines |
---|---|---|---|
File | Statements | Branches | Functions | Lines | |||||
---|---|---|---|---|---|---|---|---|---|
src |
|
82.35% | 28/34 | 33.33% | 1/3 | 63.63% | 7/11 | 83.87% | 26/31 |
src/__test__ |
|
50% | 2/4 | 100% | 0/0 | 0% | 0/2 | 50% | 1/2 |
src/api |
|
80.64% | 25/31 | 31.57% | 6/19 | 87.5% | 7/8 | 78.57% | 22/28 |
src/components |
|
90.26% | 102/113 | 69.69% | 23/33 | 76.92% | 20/26 | 90.26% | 102/113 |
src/constants |
|
100% | 6/6 | 50% | 1/2 | 100% | 0/0 | 100% | 6/6 |
src/lib |
|
100% | 3/3 | 100% | 0/0 | 100% | 0/0 | 100% | 3/3 |
src/lib/hooks |
|
100% | 39/39 | 100% | 5/5 | 100% | 13/13 | 100% | 36/36 |
src/lib/styles |
|
100% | 2/2 | 100% | 0/0 | 100% | 0/0 | 100% | 2/2 |
src/lib/utils |
|
100% | 32/32 | 100% | 0/0 | 100% | 11/11 | 100% | 21/21 |
src/mocks |
|
100% | 3/3 | 100% | 0/0 | 100% | 0/0 | 100% | 3/3 |
src/mocks/handlers |
|
81.81% | 36/44 | 50% | 8/16 | 66.66% | 8/12 | 89.74% | 35/39 |
src/pages |
|
100% | 5/5 | 100% | 0/0 | 100% | 1/1 | 100% | 5/5 |
커버리지가 상당히 낮게 잡혀 있습니다. 세부 항목을 살펴보니 일부 폴더에서 낮게 잡혀 있습니다. 그런데 모든 종류의 커버리지를 100%로 맞추는게 유의미한 행동이 아닙니다. 모든 커버리지를 100% 맞추기보다 테스트가 무의미한 코드는 커버리지에서 제외하는 것이 좋습니다. 커버리지에서 제외처리는 간단합니다. 아래와 같이 불필요한 부분에 제외처리 해주면 됩니다. 제외의 기준은 각자의 판단에 맡기면 됩니다.
// jest.config.js
module.exports = {
...
"coveragePathIgnorePatterns": [
"/node_modules/",
"/src/__test__", // 테스트 코드를 위한 테스트는 필요 없어보입니다.
"/src/mocks", // Mock Backend API 코드 또한 마찬가지입니다.
"/src/constants", // 정적인 상수 콘텐츠도 필요없습니다.
"/src/api", // 백엔드 api에 요청을 보내는 함수는 테스트가 무의미해보입니다. 프론트엔드는 fetch후 컴포넌트에 적절히 보여주는지를 테스트해야합니다. 그렇기에 테스트에서 mock api를 사용하는 것 입니다.
]
};
Statements | Branches | Functions | Lines |
---|---|---|---|
File | Statements | Branches | Functions | Lines | |||||
---|---|---|---|---|---|---|---|---|---|
src |
|
82.35% | 28/34 | 33.33% | 1/3 | 63.63% | 7/11 | 83.87% | 26/31 |
src/components |
|
90.26% | 102/113 | 69.69% | 23/33 | 76.92% | 20/26 | 90.26% | 102/113 |
src/lib |
|
100% | 3/3 | 100% | 0/0 | 100% | 0/0 | 100% | 3/3 |
src/lib/hooks |
|
100% | 39/39 | 100% | 5/5 | 100% | 13/13 | 100% | 36/36 |
src/lib/styles |
|
100% | 2/2 | 100% | 0/0 | 100% | 0/0 | 100% | 2/2 |
src/lib/utils |
|
100% | 32/32 | 100% | 0/0 | 100% | 11/11 | 100% | 21/21 |
src/pages |
|
100% | 5/5 | 100% | 0/0 | 100% | 1/1 | 100% | 5/5 |
불필요한 커버리지를 제외한 이후 커버리지는 당연히 높아졌습니다. 불필요한 폴더를 제외하니 좀더 객관적으로 테스트의 품질을 높여야 하는 부분이 눈에 잘 보입니다. 컴포넌트 폴더의 경우 분기에 따른 커버리지가 조금 떨어집니다. 만약 테스트를 보완한다면 어디를 보완할지 파악하기 쉬워졌습니다. 이 부분은 각자에게 맡기겠습니다. ㅎㅎ
테스트 과정 중 생긴 문제상황
, 원인
, 해결방안
, 레퍼런스
를 Comment로 남겨주세요🙆♂️🙆♀️
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.