dev_or_alive

개발에서 반드시 필요한 테스트에 대해 알아보자. 본문

etc/IT

개발에서 반드시 필요한 테스트에 대해 알아보자.

개발로 먹고살자 2024. 11. 24. 00:04

 

개발을 하다보면 테스트의 중요성에 대해서 참 많이 듣게 됩니다. 

다른 선임 개발자들이나 개발 관련 서적, 블로그, 개발 관련 커뮤니티 등 여러곳에서요. 

 

하지만 막상 실무에서 사용하려 보면 여러가지 테스트 방식에 대해서나.. 

사용하려는 툴이나.. 뭐 복잡한게 많기 때문에 일단 일정에 맞춰야하니 무식하게 엉덩이 붙이고 노가다로 테스트를 진행하기 일쑤입니다. 

이런식으로 테스트를 하다보니 회귀 테스트가 필요할 때는 며칠전에 했던 수백개의 테스트 케이스를 또 돌려보고.. 며칠 뒤에 또 돌려보고..

 

사실 정말 불필요하게 테스트를 하는 것이라고 생각하지만 막상 일이 닥치면 가장 빠르고 무식한 방법을 택하게 되는... 😂

이러한 문제점을 해결하기 위해서 늦게나마 테스트에 대해서 공부를 해보려합니다.

 

오늘은 간단히 테스트란 무엇이고 테스트의 종류에 대해 알아보려 합니다. 

 

테스트란 무엇인가? 😀

테스트는 결과나 성능을 검증하거나 예상과 실제가 일치하는지 확인하기 위해 수행되는 평가 절차입니다.

테스트는 학업, 소프트웨어, 공학, 의료 등 다양한 분야에서 사용됩니다.

 

한마디로 "내가 생각한대로 실행이 되는 것인가?"를 검증하는 것입니다. 

제작자의 의도대로 움직이지 않는 물건이라면, 당연히 클라이언트(고객)도 원하지 않는 물건이지 않을까요? 


개발시 테스트의 필요성

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