일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- html link
- 연산자
- html
- js 연산자
- Linux
- javascript
- html 엔터 입력
- 느슨한 비교
- React
- vue3 fullpage
- CSS
- html 이미지 표출
- em rem 차이
- js
- node
- html 색상적용
- vue
- css 적용방법
- bold처리
- 엄격한 동등비교
- css 길이단위
- vue fullpage
- map함수
- fullpage
- html 화면 이동
- nvm
- form 주요 태그
- html 요소 속성
- css 색상변경
- 산술연산자
- Today
- Total
dev_or_alive
개발에서 반드시 필요한 테스트에 대해 알아보자. 본문
개발을 하다보면 테스트의 중요성에 대해서 참 많이 듣게 됩니다.
다른 선임 개발자들이나 개발 관련 서적, 블로그, 개발 관련 커뮤니티 등 여러곳에서요.
하지만 막상 실무에서 사용하려 보면 여러가지 테스트 방식에 대해서나..
사용하려는 툴이나.. 뭐 복잡한게 많기 때문에 일단 일정에 맞춰야하니 무식하게 엉덩이 붙이고 노가다로 테스트를 진행하기 일쑤입니다.
이런식으로 테스트를 하다보니 회귀 테스트가 필요할 때는 며칠전에 했던 수백개의 테스트 케이스를 또 돌려보고.. 며칠 뒤에 또 돌려보고..
사실 정말 불필요하게 테스트를 하는 것이라고 생각하지만 막상 일이 닥치면 가장 빠르고 무식한 방법을 택하게 되는... 😂
이러한 문제점을 해결하기 위해서 늦게나마 테스트에 대해서 공부를 해보려합니다.
오늘은 간단히 테스트란 무엇이고 테스트의 종류에 대해 알아보려 합니다.
테스트란 무엇인가? 😀
테스트는 결과나 성능을 검증하거나 예상과 실제가 일치하는지 확인하기 위해 수행되는 평가 절차입니다.
테스트는 학업, 소프트웨어, 공학, 의료 등 다양한 분야에서 사용됩니다.
한마디로 "내가 생각한대로 실행이 되는 것인가?"를 검증하는 것입니다.
제작자의 의도대로 움직이지 않는 물건이라면, 당연히 클라이언트(고객)도 원하지 않는 물건이지 않을까요?
개발시 테스트의 필요성
1. 오류 및 결함 발견
- 소프트웨어는 복잡하기 때문에 오류나 결함이 발생할 가능성이 높습니다.
- 테스트는 이러한 문제를 조기에 발견하여, 프로덕션 단계에서 발생할 수 있는 심각한 문제를 방지합니다.
2. 개발 비용 절감
- 오류를 초기에 발견하고 수정하는 것이, 나중에 발견했을 때보다 비용이 훨씬 적게 듭니다.
- 초기 발견 시: 수정에 필요한 코드 변경이 적고, 영향을 받는 영역이 작음.
- 후기 발견 시: 시스템 전체를 다시 점검하거나 설계를 변경해야 할 수도 있음.
3. 소프트웨어 품질 보장
- 테스트는 소프트웨어가 요구사항을 충족하고, 기대하는 대로 작동하는지 보장합니다.
- 기능적 품질: 특정 기능이 요구사항에 따라 올바르게 작동하는지 확인. (기능적 요구사항)
- 비기능적 품질: 성능, 보안, 사용자 경험 등도 테스트를 통해 개선. (비기능적 요구사항)
4. 시스템 안정성 확보
- 테스트는 소프트웨어가 다양한 상황(엣지 케이스)에서 안정적으로 작동하도록 보장합니다.
- 예시: 대량의 사용자가 동시에 접속하거나, 네트워크가 불안정한 환경에서도 작동하는지 확인.
5. 유지보수 용이성 증가
- 테스트는 코드 변경(예: 새로운 기능 추가, 기존 기능 수정) 후에도 시스템이 제대로 작동하는지 확인합니다.
- 잘 테스트된 시스템은 유지보수가 더 쉽고, 장기적으로 비용 측면에서 효율적입니다.
개발에서의 테스트 종류
1. 단위 테스트(Unit Testing)
개념
- 코드의 가장 작은 단위(함수, 컴포넌트 등)를 독립적으로 테스트합니다.
- 특정 입력에 대해 예상된 결과를 반환하는지 확인합니다.
사용 사례
- 특정 함수의 입력-출력 확인.
2. 통합 테스트(Integration Testing)
개념
- 여러 컴포넌트나 모듈이 함께 작동할 때 예상대로 작동하는지 테스트합니다.
- 데이터 흐름, 상태 관리, API 연동 등이 올바르게 작동하는지 확인합니다.
사용 사례
- 사용자 로그인 로직이 상태 관리(Store)와 올바르게 연동되는지 확인.
- 여러 UI 컴포넌트 간 이벤트 전달 테스트
3. End-to-End Testing, (E2E)
개념
- 사용자가 애플리케이션을 사용하는 방식 전체를 시뮬레이션하여 테스트합니다.
- 브라우저에서 실제로 애플리케이션을 실행하며 UI와의 상호작용을 확인합니다.
사용 사례
- 사용자가 로그인 후 대시보드로 이동하는 플로우 테스트.
- 결제 과정이 정상적으로 완료되는지 확인.
4. 성능 테스트(Performance Testing)
개념
- 페이지 로딩 속도, 애니메이션 성능, 렌더링 속도 등을 테스트.
- 최적화 여부를 확인하여 사용자 경험을 개선.
사용 사례
- 페이지 초기 로딩 시간 확인.
- API 응답 시간이 UI에 미치는 영향 분석.
마치며
평소에 딸깍 딸깍 뇌 빼고 했던 테스트들이 사실은 좀 더 세분화 되어 있고,
명확한 기준과 체계를 가지고 했어야 하는 것임을 많이 깨닫게 되었습니다.. 🥲
지금까지 했던 테스트들은 정확하지도 않고 시간 낭비 수준의 테스트라 생각되며..
나는 왜 효율적이고 확실한 테스트 방법을 찾지 못했었을까 후회가 됩니다😭
'etc > IT' 카테고리의 다른 글
[IT용어집] On-Premise란? (0) | 2022.10.24 |
---|---|
[WOL] DELL PC에서 WOL 기능 적용되지 않는 문제 해결 (2) | 2022.10.19 |