테스트는 소프트웨어의 관점에서 정의하면 프로그램을 실행하는 경우에 요구 사항에 맞춰 동작하는지 검증하는 행위이다. 테스트를 통해 제품 또는 서비스의 품질을 확인 할 수 있으며, 소프트웨어의 버그를 찾을 수 있다. 즉, 제품(→ 함수, 특정한 기능, UI, 성능, API 스펙)이 예상하는대로(원하는대로) 동작하는지 확인하고 검증하는 단계이다.
→ Unit Test는 비용(비용은 개발적인 효율성도 될 수 있음)이 저렴하고 E2E Test로 올라갈수록 비용이 비싸진다. 테스트를 수행하는 속도는 Unit Test가 빠르고, E2E Test로 올라갈수록 속도가 느리다. 그래서 Unit Test를 많이 작성하고 그다음에 Integration Test를 작성하고, 그다음 E2E Test를 적게 작성한다.
위의 대표적인 테스트들 뿐만 아니라 상황과 필요에 따라서 사용할 수 있는 다양한 테스트들(Contract Test, A/B Test, Stress Test 등)이 있기 때문에 상황에 맞는 테스트방법을 사용하면 된다.
출처 : 드림코딩엘리 test 강의
사진출처 : https://velog.io/@xeropise1/%ED%85%8C%EC%8A%A4%ED%8A%B8%EB%9E%80-%EB%8B%A8%EC%9C%84%ED%85%8C%EC%8A%A4%ED%8A%B8-%ED%86%B5%ED%95%A9%ED%85%8C%EC%8A%A4%ED%8A%B8-E2E%ED%85%8C%EC%8A%A4%ED%8A%B8