테스트의 종류

적합 테스트

이러한 유형의 테스트는 기능이나 시스템이
고객의 기대와 요구사항을 충족하는지 판단하기 위해 수행됩니다.
이러한 유형의 테스트는 일반적으로 고객의 협조나 피드백을 포함하며,
이는 다음 질문에 대한 답을 제공하는 검증활동입니다.

우리가 올바른 제품을 만들고 있나요?.

웹 애플리케이션의 경우, 이 테스트의 자동화는 사용자의 예상 행동을
시뮬레이션하여 Selenium과 간접적으로 연계할 수 있습니다.
이 시뮬레이션은 기록/재생 또는 이 문서에 설명된 지원하는 다른 프로그래밍 언어를 통해 수행될 수 있습니다.
참고: 적합 테스트는 **기능 테스트**의 하위 유형이며, 일부 사람들이 이를 언급하기도 합니다.

기능 테스트

이러한 유형의 테스트는 기능이나 시스템이
문제 없이 제기능을 하는지 판단하기 위해 수행됩니다.
모든 시나리오가 적용되고 시스템이 해야 할 일을 하는지를
확인하기 위해 다른 레벨에서 시스템을 점검합니다. 이는 다음과 같은 질문에 대한 답을 제공하는 검증 활동입니다.

우리가 제품을 올바르게 만들고 있나요?.

여기에는 일반적으로 오류(404, exceptions 등…) 없이, 사용하능한 방법으로,
접근 가능하고 규격에 부합하는 테스트(위의 적합 테스트 참고)가 포함됩니다.

웹 애플리케이션의 경우, 이 테스트의 자동하는 예상 리턴값을
시뮬레이션 하여 Selenium과 직접 수행될 수 있습니다.
이 시뮬레이션은 기록/재생 또는 이 문서에 설명된 지원하는 다른 프로그래밍 언어를 통해 수행될 수 있습니다.

성능 테스트

이름에서 알 수 있듯이, 성능 테스트가 수행됩니다. 응용 프로그램이 얼마나 제기능을 잘 수행하는지 측정합니다.

성능 테스트를 위한 두 가지 주요 하위 유형이 있습니다:

로드 테스트

로드 테스트는 애플리케이션이 서로 다르게 정의된 부하(보통 한 번에 연결된 특정 사용자 수) 에서 얼마나 잘 작동하는지 검증하기 위해 수행됩니다.

스트레스 테스트

스트레스 테스트는 애플리케이션이 스트레스(또는 최대 부하 이상)
에서 얼마나 잘 작동하는지 확인하기 위해 수행됩니다.

이 작업은 일반적으로 메트릭스를 검색하는 다른 도구에 의해 수행됩니다.
예를들어, JMeter 가 그러한 도구 중 하나가 될 수 있습니다..

웹 애플리케이션의 경우, 측정해야 할 세부 정보에는 처리량, 지연 시간, 데이터 손설, 개별 구성 요소 로딩 시간 등이 있습니다.

참고 1: 모든 브라우저의 개발자 도구 섹션에 성능 탭이 있습니다. (F12를 눌러 접근합니다.)

참고 2: 기능/비기능 시스템별로 일반적으로 측정되므로, 이는 비기능성 시험의 하위 유형입니다.

회귀 테스트

이 테스트는 일반적으로 변경, 수정 또는 기능 추가 후에 수행됩니다.

변경으로 인해 기존 기능이 손상되지 않았는지 확인하기 위해 이미 실행된 일부 테스트를 다시 실행합니다.

재실행 테스트 집합은 전체 또는 부분적일 수 있으며,
애플리케이션 및 개발 팀에 따라 몇 가지 다른 유형을 포함할 수 있습니다.

테스트 주도 개발 (TDD;Test-driven Development)

TDD는 테스트 유형 자체가 아니라, 테스트가 기능의 디자인을 주도하는 반복적인 개발 방법론입니다.

각 사이클은 기능이 최종적으로 통과해야 하는 장치 테스트 집합을 생성하는 것으로 시작합니다.
(첫 번째 실행 시 실패해야 합니다.)

그 후, 테스트를 통과하기 위한 개발이 이루어집니다.
테스트는 다시 실행되어 다른 사이클을 시작하고, 이 프로세스는 모든 테스트가 통과될 때까지 계속됩니다.

이는 결함이 조기에 발견될수록 비용이 덜 든다는 사실에 근거하여 애플리케이션의 개발을 가속화하기 위한 것입니다.

행위 주도 개발 (BDD;Behavior-driven development)

BDD는 위의 TDD에 기초한 반복적인 개발 방법론으로서,
애플리케이션 개발에 모든 당사자를 참여시키는 것을 목표로 합니다.

각 사이클은 실패해야 하는 몇 가지 사양을 작성하여 시작합니다.
그런 다음 실패한 단위 테스트(이 또한 실패해야 합니다.)를 작성하고 개발을 수행하십시오.

이 사이클은 모든 유형의 시험이 통과할 때까지 반복됩니다.

이를 위해 명세언어(Specification language)가 사용됩니다.
모든 당사자가 이해할 수 있어야하며 단순하고 표준이며 명시적이어야 합니다.
대부분의 도구는 명세언어로 Gherkin 을 사용합니다.

사양을 작성하고 코드 기능을 일치시키기 위해 CucumberSpecFlow 와 같은 도구를 사용할 수 있습니다.

BDD 사양을 실행 가능한 코드로 직접 변환하여 이 프로세스를 더욱 빠르게 수행할 수 있도록 Selenium에 JBehave, CapybaraRobot Framework 와 같은 도구 세트가 구축되어 있습니다.