테스트란 애플리케이션이 요구 사항에 맞게 동작하는지를 검증하는 행위라고 한다. 테스트에는 3가지 방법이 있다. 단위, 통합, e2e. 단위는 코드 레벨에서 코드의 메서드 함수 등이 하나하나 작동이 되는지 임의의 값을 넣어서 원하는 값이 나오는지 확인하는 거다. 통합은 단위 보다 조금 더 큰 스케일로 다른 모듈들과의 인터렉션을 하면서 원하는 결과를 얻는지 확인하는 거다. 예를 들어서 리퀘스트를 줘서 그걸 받아서 어떤 함수를 돌리고 그 함수의 결과를 반환하고 그 반환 값을 확인하는 테스트까지. e2e는 코드 레벨에서 보는 테스트가 아니라 유저 입장에서 보는 테스트이다. 이 테스트는 무엇을 하면 반응이 잘 나오는지 눈으로 확인하는 테스트 같은 것이다. 예를 들어서 브라우저에서 구글 로그인에 들어 갈때 아이디랑 비번을 입력하면 로그인이 돼서 다시 로그인 상태가 되어 있는 구글 홈페이지로 오는지 보는 것이다.
이것을 하기 위해서 테스트 도구들이 있다. 도구들의 종류는 테스트 러너, 테스트 프레임워크, 단언, 테스트 더블 라이브러리가 있다. 테스트 러너는 테스트 파일을 읽어들여 작성한 코드를 실행하고, 그 결과를 특정한 형식으로 출력해 준다. 테스트 프레임워크는 테스트 코드를 작성해 주는 기반을 제공해 주는 자바스크립트 도구이다. 단언은 개별 테스트가 통과하기 위한 조건을 명확하게 기술하기 위해 사용된다. 테스트 더블이란 실제 객체 대신 테스트를 위해 동작하는 객체를 말한다.