반드시 셀레니움을 사용하지 않더라도 알아두면 유용한 테스트의 종류에 대해서 알아보도록 하자. 생각보다 많은 테스트 종류가 있고 어떤 곳에서는 혼용하여 사용하여 헷갈리지만 정석의 정의를 알아두면 나중에 커뮤니케이션할 때 도움이 될 것이다.
테스트의 종류
Acceptance testing (인수인계 테스트)
이 테스트는 시스템과 기능이 고객의 기대와 요구사항을 충족하는지 판단하기 위해 수행된다. 이러한 유형의 테스트는 일반적으로 고객의 협조나 피드백을 포함하며 아래 질문에 대한 답을 하는 검증 테스트이다.
우리가 올바른 제품을 만들고 있는가?
웹 애플리케이션의 경우에는 테스트 자동화를 하여 셀레니움으로 직접 예상되는 사용자의 행동을 시뮬레이션할 수 있다. 이 시뮬레이션은 저장해서 재생이 가능하며 여러 프로그래밍 언어로 구현이 가능하다. 참고로 인수인계 테스트는 기능 테스트의 하위 유형이다. 일부 사람들은 두 가지를 혼용해서 사용하기도 한다. (User acceptance testing, UAT라고 부르기도 한다)
Functional testing (기능 테스트)
이 테스트는 시스템의 기능이 문제없이 제대로 작동하는지 판단하기 위해 수행된다. 모든 시나리오에 맞추어 시스템이 해야 할 일을 하는지를 확인하기 위해 다른 시스템에서 점검을 한다. 일반적으로 아래와 같은 질문에 답을 하는 테스트이다.
우리가 제품을 제대로 만들고 있는 게 맞지?
여기에서는 일반적으로 다음과 같은 테스트를 포함한다. 페이지 검사 (404 에러 발생 여부), 리다이렉트 정상 작동 여부 등 웹 애플리케이션의 경우에는 셀레니움을 직접 사용하여 예상과 시뮬레이션이 동일한지 확인하는 테스트 자동화를 만들 수 있다. 이 시뮬레이션은 저장해서 재생이 가능하며 여러 프로그래밍 언어로 구현이 가능하다.
Performance testing (성능 테스트)
이름에서 알 수 있듯, 애플리케이션 성능을 측정하기 위한 테스트이다. 일반적으로 2가지로 분류가 가능하다.
Load testing - 부하 테스트
부하 테스트는 애플리케이션이 각각 다르게 설정한 부하에서 얼마나 잘 작동하는지 검증하기 위해 수행된다. (보통 한 번에 연결된 특정 사용자 수를 다르게 설정한다)
Stress testing - 스트레스 테스트
스트레스 테스트는 애플리케이션이 지원 가능한 최대 부하에서 얼마나 잘 작동하는지를 확인하기 위해 수행된다.
일반적으로 성능 테스트는 셀레니움으로 작성된 테스트를 여러 사용자가 사용하는 것처럼 동시에 같은 기능을 수행 하록 만들어서 의미 있는 측정을 추출하는 방식으로 이루어진다. 측정값을 받기 위해서는 보통 Jmeter로 알려진 툴을 사용한다.
웹 애플리케이션의 경우 측정해야 할 세부 정보에는 처리량(throughput), 지연 시간 (latency), 데이터 손실 (data loss), 개별 컴포넌트의 로딩 시간 등이 포함된다.
참고 1: 모든 브라우저에는 개발자 도구(F12 누르면 볼 수 있는 그것)에 성능 탭이 존재한다.
Regression Testing (회귀 테스트)
이 테스트는 일반적으로 코드의 변경, 수정 또는 기능 추가 후에 수행한다.
변경되거나 새로 추가된 코드가 기존 기능에 나쁜 영향을 미치지 않았다는 점을 확인하는 테스트 유형이다. 확인하기 위해서는 이미 실행된 일부 테스트를 다시 재실행한다.
재실행 테스트 세트는 전체 또는 부분적일 수 있고 애플리케이션 및 개발 팀에 따라 몇 가지 다른 유형을 포함할 수 있다.
Test Driven Developmnent (TDD) (테스트 주도형 개발)
TDD는 테스트 유형별이 아니라 테스트를 통한 반복적인 개발 방법론이다.
각 사이클마다 기능에 관한 유닛 테스트 집합을 만드는 것으로 시작한다. (첫 번째 실행 시 실패해야 한다)
그 후에는 테스트를 통과하기 위한 개발 작업이 이루어진다. 테스트는 다시 실행되어 다른 사이클을 시작하고 이 프로세스는 모든 테스트가 통과될 때까지 계속된다.
이는 결함이 조기에 발견될수록 비용이 덜 든다는 사실에 근거하여 애플리케이션의 개발을 속도감 있게 만들기 위한 것이다.
BBehavior-driven development (BDD) (행동 주도형 개발)
Gherkin은 어떠한 시나리 오안에서 when과 then으로 표현하는 테스트 케이스를 말한다.
Feature : 테스트에 대상의 기능/책임을 명시한다.
Scenario : 테스트 목적에 대한 상황을 설명한다.
Given : 시나리오 진행에 필요한 값을 설정한다.
When : 시나리오를 진행하는데 필요한 조건을 명시한다.
Then : 시나리오를 완료했을 때 보장해야 하는 결과를 명시한다.
And, But: Given, When 아니면 Then을 이어받을 때 사용한다
'무료정보' 카테고리의 다른 글
[셀레니움] DOM 여러 원소 찾기 (Locating multiple elements) (0) | 2022.01.30 |
---|---|
[셀레니움] HTML 원소 위치 찾기 (locating elements) (0) | 2022.01.29 |
셀레니움 - 테스트 자동화 3편 (0) | 2022.01.27 |
셀레니움 - 테스트 자동화 2편 (0) | 2022.01.26 |
셀레니움 - 테스트 자동화 1편 (0) | 2022.01.26 |