테스트란 뭘까?

Daehyeon Yun·2024년 8월 20일

💻 개요

테스트(Test) 는 소프트웨어 개발 과정에서 작성된 코드가 예상대로 작동하는지 확인하는 과정을 말한다.
이는 코드의 기능적 요구사항이 충족되고, 버그가 없는지 확인하기 위해 수행된다.


🤔 테스트를 왜 하는걸까?

소프트웨어 테스팅 분야는 매우 넓다. 대표적으로 아래와 같은 이유로 테스팅을 진행한다.

  1. 버그 예방 및 발견
    • 코드를 작성하면서 발생할 수 있는 다양한 버그를 예방한다.
    • 기존 코드 수정 시 발생할 수 있는 새로운 버그를 발견하여 대처한다.
  2. 코드 품질 향상
    • 테스트는 코드의 품질을 높이며, 유지보수성을 개선한다.
  3. 안정성 제공
    • 테스트를 통해 코드의 변경이 예상치 못한 문제를 일으키지 않도록 한다.
  4. 자동화
    • 반복적인 테스트 과정자동화하여 개발자의 시간을 절약한다.

🤔 장단점은 없을까?

  • 👍 소프트웨어 테스팅의 장점

    1) 안정성 : 코드 변경 시 문제를 빠르게 발견할 수 있어 사용자들에게 안정적인 소프트웨어 제공이 가능하다.

    2) 디버깅 용이 : 버그 발생 시 문제의 원인을 빠르게 파악할 수 있다.

    3) 문서화 : 테스트는 코드의 사용 방법과 동작 방식문서화 시켜주는 역할을 한다.

    4) 자동화 : CI/CD 파이프라인에 통합하여 배포 전 자동으로 테스트를 수행할 수 있다.

  • 👎 소프트웨어 테스팅의 단점

    1) 시간 소요 : 초기 테스트 작성엔 많은 시간이 소요될 수 있다.

    2) 유지보수의 증가 : 코드가 변경되면 테스트 코드도 함께 수정해야 할 경우가 많다.

    3) 복잡성 증가 : 복잡한 테스트 환경 설정 이 필요할 수 있다.


🤔 소프트웨어 테스팅에 대한 개인적인 궁금증

😲 1. 소프트웨어 테스트는 풀스택일까? 명확한 기술적 선이 있을까?

소프트웨어 즉, 프로그래밍 에서 테스트 는 특정한 분야(프론트엔드, 백엔드)에 국한되지 않고 풀스택 개발의 중요한 부분이다. 따라서 소프트웨어 테스트는 개발 분야 모든 곳에서 활용된다. 또한 명확한 선을 긋기가 어렵다.
각각의 분야에서 다루는 테스트의 종류와 방법이 다를 수 있지만, 전반적인 원칙과 목적은 유사하다.

그렇다면 대표적인 프론트엔드 , 백엔드 , 풀스택 에 따른 테스트 방법이 뭘까?


💡1-1. 프론트엔드 테스트 방법

  • 유닛 테스트 : 컴포넌트함수 단위의 테스트를 말한다. 예를 들어 React 컴포넌트 가 예상대로 렌더링되는 지 확인하는 것을 말한다.
  • 통합 테스트 : 여러 컴포넌트나 모듈이 함께 작동하는지 테스트하는 것을 말한다.
  • 엔드 투 엔드(E2E) 테스트 : 전체 애플리케이션의 흐름실제 사용자 관점 에서 테스트하는 것을 말한다. 이는 브라우저에서 실제로 동작되는 것을 확인한다.

💡1-2. 백엔드 테스트 방법

  • 유닛 테스트 : 특정 함수나 메서드의 로직이 정상적으로 작동하는지 확인하는 방법을 말한다.
  • 통합 테스트 : 여러 모듈이나 서비스가 함께 정상적으로 동작하는지 테스트하는 방법을 말한다. 예를 들어 애플리케이션데이터베이스와의 상호작용이 정상적으로 동작하는지 확인하는 것을 말한다.
  • API 테스트 : RESTful API , GraphQL API 의 엔드포인트가 예상대로 동작하는지 확인하는 방법을 말한다. 이는 Insomnia , Postman 같은 도구를 사용하여 테스트할 수 있다.

💡1-3. 풀스택 테스트 방법

→ 풀스택 개발자는 프론트엔드백엔드 양쪽의 테스트를 모두 관리해야하므로 특정 테스트 기법이 존재하지 않는다.

→ 프론트엔드와 백엔드를 통합하여 전체 애플리케이션의 흐름을 테스트 하는 E2E 테스트를 주로 수행한다.


💡1-4. 결론

소프트웨어 개발 즉, 프로그래밍에서 테스트는 프론트엔드와 백엔드, 풀스택 개발 등 모든 분야에서 중요한 역할을 하며 명확히 구분되지 않는다. 각 분야의 특성이 맞는 테스트의 기법이 존재하지만 전반적인 테스트 원칙과 목적은 유사하다는 점이 있다. 궁극적으로는 사용자의 경험을 개선하고 버그를 줄이기 위해 테스트를 진행한다.


😲 2. 소프트웨어 테스트를 반드시 해야할까?

테스트를 반드시 수행해야하는 걸까? , 만일 작은 프로젝트를 진행하게 된다면 테스트를 꼭 해야하는 걸까?
위와 같은 의문이 떠올라 이에 관련된 정보를 찾아보았다.

💡 ChatGPT
테스트가 중요한 이유는 사용자 경험을 최적화하고, 버그를 사전에 방지하며, 코드의 품질을 높이는 데 있습니다. 하지만 모든 프로젝트에서 테스트를 반드시 해야 하는 것은 아닙니다. 특히 작은 프로젝트의 경우, 테스트의 필요성과 범위를 신중히 고려할 필요가 있습니다.

💡2-1. 테스트를 왜 해야할까?

  1. 안정성

    → 테스트는 코드의 안정성을 보장한다. 이를 통해 예상치 못한 버그나 오류를 사전에 발견할 수 있다.

  2. 유지보수성

    → 코드가 변경될 때마다 기존 기능이 제대로 작동하는지 확인할 수 있다. 특히 장기적으로 유지보수가 필요한 프로젝트에서 중요하게 작용한다.

  3. 사용자 경험

    → 테스트를 통해 사용자에게 일관된 경험을 제공할 수 있다. 이는 중요한 기능이 언제나 개발자의 의도대로 작동할 것을 보장한다.

💡 2-2. 그렇다면 작은 프로젝트 에서는?

상대적으로 작은 사이드 프로젝트 혹은 공부용 토이 프로젝트같은 경우는 비용과 시간 적인 이유로 테스트의 범위를 신중하게 고려할 필요가 있다.

  1. 비용과 시간의 문제

    → 테스트를 진행하기 위해 코드를 작성하고 유지하는 것은 많은 시간을 필요로 한다. 작은 프로젝트나 짧은 기간의 프로젝트에서는 모든 로직을 테스트하기보다는, 주요 기능이나 핵심 로직에 대한 테스트를 진행하는 것이 효율적일 수 있다.

  2. 우선 순위 선정과 피드백

    → 작은 프로젝트에서는 테스트 를 하는 것 보단 코드 변경 후 직접 확인하는 방식 이 더 빠르게 피드백을 받을 수 있어 효율적일 수 있다. 모든 기능을 테스트하는 것 보단 프로젝트의 목표와 사용자 기대치를 기반으로 우선순위를 정하여 중요한 부분에 집중하는 것이 시간과 자원을 효율적으로 사용할 수 있다.


😀 결론!

테스트는 프로젝트의 안정성과 유지보수성을 높여주지만, 작은 사이드 프로젝트에서는 모든 것을 테스트하는 것이 비효율적일 수 있다. 중요한 것은 프로젝트의 규모와 복잡성 에 맞춰 테스트의 범위를 정하고, 비용과 시간을 감안한 접근을 진행하는 것이 좋다고 생각한다. 반드시 프로젝트를 테스트할 필요는 없다고 생각하지만, 테스트의 결과로 사용자 경험에 매우 중대한 영향을 미칠 수 있는 부분은 진행하는 것이 좋다고 생각한다!

끝!

profile
열심히 살아야지

0개의 댓글