Skip to content

Latest commit

 

History

History
 
 

Quest15

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Quest 15. 자동화된 테스트

Introduction

  • 이번 퀘스트에서는 자동화된 테스트에 어떤 장점이 있는지, 어떤 식으로 구축할 수 있는지에 대해 알아보겠습니다.

Topics

  • Automated Test
    • TDD
    • Unit Test
    • Integration Test
    • E2E Test
    • Stub & Mock
  • Jest
  • Puppeteer

Resources

Checklist

  • 자동화된 테스트를 만드는 것에는 어떤 장점과 단점이 있을까요?
 > 장점: 1.테스트당 비용 절감
         2. HR 비용 절감
         3. 더 빠른 테스트 주기
         4. 더욱 넓은 커버리지
         5. 원격 제어와 일관성의 유지
   단점: 1. 초기 투자비용
         2. 유지 보수 비용
         3. 테스트 커버리지 제한
         4. 오류 처리의 한계
         5. 사람의 감각 부재
         6. 자동화된 테스트의 가치
         7. 환경 제약

  • TDD(Test-Driven Development)란 무엇인가요? TDD의 장점과 단점은 무엇일까요?
> TDD는 소프트웨어 개발 방법론 중 하나로, 테스트 케이스를
먼저 작성하고 해당 테스트 케이스를 통과하는 코드를
작성하는 방식이다.
> 장점: 1. 더 나은 코드 품질
        2. 빠른 피드백
        3. 버그 예방
        4. 자기 문서화 코드
  단점: 1. 초기투자 비용 높음
        2. 추가적인 작성 시간 필요
  • 테스트들 간의 계층에 따라 어떤 단계들이 있을까요?
 > 소프트웨어 테스트의 계층구조는 4단계로 나뉘어짐.
  1. 단위 테스트
   - 개발자가 작성한 코드의 최소 단위인 모듈이나 함수등을
    테스트하는 단계
   - 소스 코드 라인 단위로 테스트를 수행하며, 모든 분기 경로
   와 예외 상황을 포함하는 테스트 케이스를 작성하여 실행
  2. 통합 테스트
   - 각 모듈이나 컴포넌트들이 결합하여 시스템 전체의 기능
   수행하는지 확인 단계
   - 각 모듈들이 연결되고, 상효작용하는 부분을 중심으로
   테스트 수행
  3. 시스템 테스트
   - 전체 시스템의 기능적 요구사항을 만족하는지 검증하는 단계
    - 사용자 시나리오에 기반하여 시스템의 전반적인 기능 테스트
  4. 인수 테스트
   - 사용자가 요구한 기능과 비즈니스 요구사항을 충족하는지를
   검증하는 단계
   - 사용자의 입장에서 시스템을 검증하며, 시스템의
    최종인수를 결정하는 단계
  • 유닛 테스트, 통합 테스트, E2E 테스트는 각각 어떤 것을 뜻하나요?
> 유닛테스트는 소프트웨어 개발에서 가장 작은 단위인 모듈
이나 함수를 개발자가 작성한 후에 해당 모듈이나 함수의
동작을 검증하는 테스트이다.
> 통합테스트는 각각 모듈이나 컴포넌트들이 결합되어 작동할
 때의 동작을 검증하는 테스트이다.
> E2E 테스트는 전체 시스템의 기능을 검증하는 테스트이다.

  • 테스트에 있어서 Stub과 Mock은 어떤 개념을 가리키는 것일까요?
> Stub과 Mock은 소프트웨어 테스트에서 사용되는 개념으로,
다른 코드와의 상효작용을 대신하여 테스트를 수행하는 방법
> Stub은 실제로 동작하는 대신, 특정한 동작을 수행하는
가짜 객체이다.
> Mock은 Stub과 비슷하지만, 실제 동작하는 대신 호출된 함수
나 메서드의 호출 여부나 파라미터, 반환값 등을 검증하는 객체
  • Jest는 어떤 일을 하며 어떻게 사용하는 테스트 프레임워크일까요?
 > Jest는 JavaScript 언어를 사용하는 프로젝트의 테스트를 작성
 하고 실행할 수 있는 테스트 프레임워크이다.
 > Jest는 기본적으로 React 프로젝트에 대한 테스트를 지원
 하도록 설계되었다.
 > 하지만 React에 국한되지 않고 일반적인 JavaScript 프로젝트
 에서도 사용 가능.
  • Jest 이외의 테스트 프레임워크는 어떤 것이 있고 어떤 장단점이 있을까요?
> Mocha는 Node.js와 브라우저를 지원하는 테스트 프레임워크.
 장점: 다양한 Assertion 라이브러리와 플러그인 지원.
      Node.js와 브라우저 모두 지원.
     다양한 유형의 테스트를 지원가능.
 단점: Assertion 라이브러리를 따로 사용해야함.
 > Jasmine은 BDD 스타일의 테스트 프레임워크이다.
   Mocha와 유사한 방식으로 describ와 it 함수 사용하여 테스트 작성.
   장점: 자체적으로 Assertiob 라이브러리 제공하기 때문에,
   별도의 라이브러리 설치가 필요 x
    BDD 스타일의 테스트를 지원하며, 다양한 유형의 테스트 지원
    단점: 다른 Assertion 라이브러리를 사용 할 수 없음.
  • Puppeteer는 어떤 일을 하며 어떻게 사용하는 테스트 프레임워크일까요?
> Puppeteer는 구글에서 개발한 Node.js 기반의 headless
 브라우저이다.
 > 브라우저를 자동화하여 웹 에플리케이션을 테스트하거나
 스크래핑하는데 사용.
 > Puppeteer는 Chrome 브라우저를 자동으로 실행하므로,
  Chrome의 모든 기능을 사용할 수 있다. 또한,
  Puppeteer는 headless 모드와 non-headless 모드를
   지원한다. headless 모드에서는 브라우저가 화면에
    표시되지 않고 백그라운드에서 동작하므로, 테스트를
     자동으로 실행하는 데 적합하다.

Quest

  • 직전 퀘스트의 메모장의 서버와 클라이언트 각 부분에 유닛 테스트, 통합 테스트, E2E 테스트 등을 추가해 보세요.
    • npm test 명령을 통해 모든 테스트가 돌고 그 결과를 출력할 수 있어야 합니다.

Advanced

  • 테스트의 커버리지는 어떤 개념일까요? 프로젝트에서 테스트의 커버리지는 어떻게 접근하는 것이 좋을까요?