전체 시스템이 제대로 작동하는지 확인하기 위한 테스트.

시나리오 테스트, 기능 테스트, 통합 테스트, GUI 테스트를 하는데 사용한다.

API 연동도 테스트 항목에 포함되므로 일반적인 목(Mock) 스텁(Stub) 등의 테스트 더블을 사용하지 않는다.

테스트 속도가 규모에 따라 느리므로 단위, 기능 테스트를 위한 일반적인 테스트 자동화와 시스템 테스트를 위함 e2e 테스트 자동화가 함께 구성되는 경우가 많다.

E2E 테스트 프레임 워크.

E2E 테스트 프레임워크는 크게 2가지 분류로 나뉜다.

헤드리스 브라우저 의존

커맨드라인 명령어로 조작할 수 있는 화면이 없는 브라우저 테스트 도구.

JSDOM 기반의 좀비(zombie.js), 웹킷 기반의 (pantom.js) 겟코 기반의 슬리머 등이 있다.

캐스퍼는 팬텀과 슬리머를 조금 더 사용하기 쉽도록 만들어 놓은 유틸리티 도구이다.

헤드리스 브라우저는 기본적으로 크로스 브라우징 테스트가 되지 않으며 어썰트(assert)도 내장되어 있지 않다.

셀레니움 웹 드라이버 의존

셀레니움 : 웹 브라우저를 이용해 웹 어플리케이션을 테스트하는 오픈소스 도구.
사람의 손으로 직접 조작하는 것이 아닌, 작성된 스크립트에 따라 자동으로 조작된다. 이러한 방법을 브라우저 자동화 라고 한다.

웹 드라이버는 셀레니움의 단점을 보완하려고 나온 것인데, 셀레니움은 자체 엔진인 RC를 이용해 브라우저와 여태까지 통신을 했음.

셀레니움 RC는 스크립트 작성 후 자바스크립트로 트랜스 컴파일 하게 되는데, 이렇게 되면 브라우저의 제약 사항과 자바스크립트의 한계성 때문에 문제가 되었다.

웹 드라이버는 브라우저 확장 기능 및 OS 기본 기능을 이용하여 브라우저를 조작 할 수 있는 구조로 작성되어 있는데, 이는 셀레니움 RC의 단점을 충족해주는 방식이다.

그래서 셀레니움은 2.0을 발표할 때 웹 드라이버와 함께 내서 셀레니움 웹 드라이버 라는 이름이 되었다.

셀레니움 웹 드라이버는 여러 언어를 지원하는데 Javascript 궁합이 별로 좋지 못해서 Javascript로 사용하기 위해서는 셀레니움 웹 드라이버와 Node를 바인딩 하여 나온 nightwatch를 써야 한다.