< 테스트 프레임워크 (Test Framework / Testing Framework / Testing Library ) >
- 테스트 프레임워크란?
a set of tools and conventions that provides a structured way to write, organize, and run tests for your code. These tests are typically written to ensure that your code functions correctly, adheres to its requirements, and remains free of bugs as you make changes and updates.
코드의 테스트를 작성하고 조직하며 실행하는 구조화된 방법을 제공하는 일련의 도구 및 규칙이다. 이러한 테스트는 일반적으로 코드가 올바르게 기능하고 요구 사항을 준수하며 버그가 없는지 확인하기 위해 작성된다.
- 테스트 프레임워크와 관련된 주요 구성 요소 및 개념
1. 테스트 러너 ( Test Runner ) : 테스트를 자동으로 실행하는 도구
이것은 테스트 파일을 찾고 테스트를 실행하며 결과를 보고한다.
2. 테스트 스위트 ( Test Suites ) : 관련된 테스트를 구성하기 위한 컨테이너
이것은 특정 기능을 다루는 개별 테스트 케이스를 그룹화한다.
3. 테스트 케이스 / 스펙 ( Test Cases / Specs ) : 단일 구체적인 테스트 시나리오
일반적으로 코드의 동작에 대한 하나 이상의 단언문 또는 기대치를 포함한다.
4. 단언문 / 기대치 ( Assertions / Expectations ) : 테스트 케이스에서 코드의 기대 동작을 정의하는 문
테스트를 실행할 때 이러한 단언문은 참이 되는지 확인되며 그렇지 않으면 테스트가 실패한다.
5. 모의체 및 스텁 ( Mocks and Stubs )
테스트 프레임워크는 종종 모의 객체를 생성하고 함수 또는 메서드를 스텁화하여 테스트 중인 코드를 외부 종속성으로부터 격리하는 유틸리티를 제공한다.
6. 설정 및 해제 설정 ( Setup and Teardown )
일부 테스트 프레임워크는 테스트를 실행하기 전에 특정 상태를 설정하고 테스트가 실행된 후 정리(해제 설정)를 하는 기능을 제공한다. 이는 테스트가 서로 독립적이고 서로 간섭하지 않도록 하는 데 유용하다.
7. 테스트 보고 ( Testing Reporting )
테스트 프레임워크는 통과한 테스트와 실패한 테스트를 알려주는 자세한 보고서를 생성한다. 종종 코드 커버리지를 추적하기 위한 기능도 포함한다.
- 테스트 프레임워크 종류 JavaScript Test Frameworks
1. Mocha
-
- highly flexible test framework
- provides a test runner
- supports various assertion libraries
- often used in combination with other libraries like Chai for assertions
2. Jasmine
-
- behavior-driven development(BDD) framework
- comes with its own assertion libraries and a syntax that is designed to be more human-readable
3. Jest
-
- developed by Facebook
- designed for simplicity
- includes everything you need out of the box, including a test runner, assertions, and mocking utilities
- 자바스크립트 테스트 API 의 접근 방식
확고한 범주가 아니라 서로 겹치는 부분이 상당히 많은 쌍봉( bimodal ) 분포이다
1. Spec 계열
-
- 테스트 함수의 통과 또는 실패를 선언하는 수단에 대해 불가지론적인 경향이 있다. ( 아무것이나 throw 해도 되고, 아무 것도 하지 않아도 통과)
- 스위트를 정의하는 블록이 있고, 그 안에 테스트 블록 함수를 만든다
- 종종 문학적 프로그래밍(literate programming) API를 제공하는 어설션 라이브러리와 함께 사용된다.
2. Tap 계열
-
- 러너와 테스트 스위트 프로세스 사이의 경계에 대해 불가지론적인 경향이 있다(stdout에서 TAP을 방출하고 0또는 0이 아닌 상태로 종료되는 것은 무엇이든 가능)
- 전통적으로 테스트 실행 결과를 설명하는 텍스트 기반 프로토콜(Test Anything Protocol)을 중심으로 구축되었다
- TAP 은 사람이 읽을 수 있고 기계가 구문 분석할 수 있으므로 결과를 직접 검사하고, ㅗ고서로 변환하고, 저장하고, 집계하는 등의 작업을 수행할 수 있다
- 오늘날 대부분의 프레임워크는 프로토콜을 최우선으로 고려하지 않더라도 TAP를 출력할 수 있는 기능을 갖추고 있다
- TAP 스트림은 tab 이나 tape 가 출력하는 스트림보다 표현력이 훨씬 떨어지는 경향이 있다.
- TAP 계열 프레임워크에서는 러너, 리포터, 프레임워크 간의 통합 수준이 훨씬 낮기 때문에 제공할 수 있는 기능이 제한될 수 있다
'What I Read' 카테고리의 다른 글
[ Korean FE Articles ] 웹 푸시는 이제 iOS17에서 사용할만합니다 (0) | 2023.10.24 |
---|---|
HTMX vs React (0) | 2023.10.24 |
[ Korean FE Article ] Tailwind CSS에서 혼란을 방지하기 위한 5가지 모범 사례 (0) | 2023.10.24 |
[ 요즘IT ] 새로 등장한 '리액트 서버 컴포넌트' 이해하기 (0) | 2023.10.21 |
What I Read (0) | 2023.10.21 |