확고한 테스트 전략 수립: 6가지 주요 접근 방식

by | Apr 18, 2024

효과적인 테스트 수행은 단지 운으로 이루어지는 일이 아니다; 세심한 계획이 필요하다. 문제를 조기에 발견하고 해결하는 것이 가장 중요하다. 이를 위해서는 전체 테스트 수행 절차를 확실히 설명하는 잘 구성된 테스트 전략이 필요하다.

다음은 훌륭한 테스트 전략을 세우기 위한 6 가지 주요 접근 방식이다:

  1. 애자일 테스트 사분면(Agile Test Quadrant) 분류
  2. 시프트 레프트 패러다임: 검증 및 테스트 조기 수행
  3. 시프트 라이트 패러다임: 프로덕션 결함과 사용 패턴 분석
  4. 비-기능적 요구 사항(들)
  5. 데이터 세트 및 리소스 결정
  6. 테스트 관리 도구로 테스트 전략 강화 하기

애자일 테스트 사분면 분류

애자일 테스트 사분면은 애자일 개발 내에서 테스트 활동의 다양한 유형을 분류하는 체계적인 방법을 제공한다. 또한 애자일 환경에서 소프트웨어의 개발 수명주기 전반에 걸친 포괄적인 테스트 수행 커버리지를 보장하기 위해 가이드 한다.

그림:애자일 테스트 사분면은 Brian Marick’의 “Marick 테스트 매트릭스“를 기반으로 Janet Gregory와 Lisa Crispin이 개발했다

사분면 활용 방법:

이 사분면은 다양한 테스트의 목적과 범위를 이해하는 데 도움이 된다. 사분면을 활용하기 위해 다음과 같이 세 단계를 따라한다:

  1. 진행 중인 작업이 비즈니스 중심인지 기술 중심인지 결정한다.
  2. 그 테스트 수행은 개발을 가이드 하기 위한 것인지, 아니면 제품을 평가하기 위한 것인지 결정한다. 이는 개발 주기나 스프린트 안에서 어느 단계인지, 그에 따라 결정된다.
  3. 여러분이 속한 사분면에 따라 해당 스프린트에서 수행해야 하는 테스트 유형에 대한 지침이 달라진다.

애자일 테스트 수행 사분면 모범 사례

다음은 애자일 테스트 수행 사분면을 활용하여 테스트 전략에 대해 안내하는 모범 사례다.

  • 목표 이해하기: 프로젝트의 목표에 따라 테스트의 요구 사항을 파악하고 적절한 사분면에 맵핑한다.
  • 테스트 계획하기: 테스트 노력을 조정하고, 테스트의 우선순위를 정하고, 각 사분면에 대한 전략을 계획한다.
  • 테스트 생성 및 실행: 사분면 별 목표에 따라 테스트를 개발하고 실행한다.
  • 지속적인 개선: 각 사분면의 피드백을 토대로 테스트 전략을 조정한다.
  • 협업 및 커뮤니케이션: 팀의 협업을 장려하고 사분면 별 테스트를 기반으로 명료하게 리포트 하도록 한다.
  • 유연성 및 적응력: 프로젝트 요구 사항의 변경을 바탕으로 테스트 수행 전략을 유연하게 조정한다.
  • 지속적인 학습: 모든 사분면에서 지식을 공유하고 기술 발전을 촉진하는 문화를 조성한다.

이 예시들은 애자일 테스트 수행의 각 사분면이 다양한 시나리오에 적용되는 방법을 보여준다. 또 소프트웨어 테스트 수행 절차상 실제로 활용되는 모습을 보여준다.

사분면사분면 활용 예시실제 사용 예시사용 방법
1 사분면:
기술 중심 테스트
유닛 테스트 수행,
컴포넌트 테스트 수행
코드베이스 내의 함수 또는 매서드에 대한 유닛 테스트 수행개별 컴포넌트를 테스트하여 예상처럼 독립적으로 작동하는지 확인한다.
2 사분면:
비즈니스 중심 테스트
승인 테스트 수행,
사용성 테스트 수행
웹사이트나 앱의 사용성 테스트를 수행하여 사용자 경험을 확인소프트웨어가 비즈니스 요구 사항과 사용자의 기대에 부합하는지 검증한다.
3 사분면:
비즈니스 중심 테스트
알파/베타 테스트,
고객 수용 테스트
수행 외부 사용자 그룹을 대상으로 모바일 앱 베타 테스트 수행사용자 피드백을 검증하고, 소프트웨어가 사용자 기대에 부합하는지 확인한다.
4 사분면:
기술 중심 테스트
자동화된 GUI 테스트, 성능 프로파일링웹 애플리케이션에 대한 성능 테스트를 수행하여 확장성을 평가다양한 조건에서 시스템의 성능과 동작을 평가한다.

시프트 레프트 패러다임: 검증 및 테스트 조기 수행

소프트웨어 개발에서는 테스트의 설계 및 요구 사항의 평가가 매우 중요하다. 시프트 레프트 테스트 수행에서 조기 검증의 중요성을 인식하는 것은 중요하다. 소프트웨어를 최적화 하고 원활한 개발 관행을 유도하는 데 주는 그 영향을 두드러지게 하기 때문이다.

설계 및 요구 사항 개선

코딩을 시작하기 전에, 설계와 요구 사항을 개선하는 것이 중요한다. 이 단계에서는 경로를 명확하게 하여, 개발에서 혼란과 편차가 일어날 가능성을 줄인다.

이해관계자 협업

이해관계자들 간의 협업이 조기에 이루어지면, 향후 서로 엇갈리는 일을 방지 할 수 있다. 개발자들, 테스터들, 그리고 비즈니스 분석가들을 참여 시켜 비전을 공유한다.

조기 검토를 통한 리스크 완화

설계상의 결함을 조기에 감지하고 수정하면, 개발 주기 후반에 오류가 발생할 가능성이 크게 감소한다. 초기 단계에서 불일치하거나 상충되는 요구 사항을 식별하는 것은 리스크를 최소화한다. 그로 인해 대규모 사후 개발 작업의 필요성을 줄어들고, 리소스 활용을 최적화 할 수 있다.

품질 보증 프레임워크 구축

조기 유효성 검사 절차는 테스트 계획의 토대를 마련한다. 광범위한 테스트 케이스와 시나리오를 작성하는 것이 가능해진다. 그리고 품질 보증 조치가 기능적, 비기능적, 엣지 케이스를 포함한 다양한 테스트 시나리오를 포괄하도록 함으로써 제품의 품질을 향상시킬 수 있다.

개발 과정 간소화

조기 검증 관행을 도입하면, 개발 수명 주기가 전반적으로 간소화 된다. 애매모호한 점을 조기에 제거하면, 팀은 보다 효율적인 테스트 수행 방식을 채택할 수 있다. 그 결과. 사용자 기대치, 비즈니스 목표, 테스트 목표에 더 밀접하게 부합하는 최적화된 테스트 결과물을 얻을 수 있다.

시프트 레프트 조기 테스트 수행 예시 시나리오

다음은 가상의 업무 관리 애플리케이션에 대한 시프트 레프트 테스트 수행의 초기 검증 단계를 간략히 설명하는 표다:

단계시나리오조치결과
설계 및 요구 사항 구체화코딩 시작 전이해관계자들을 모아 설계와 요구 사항을 구체화한다.기능, 사용자 스토리, 와이어프레임을 상세히 정의한 명확한 범위
이해관계자 협업다양한 팀 구성원이 조기에 참여이해관계자들의 의견을 수렴하기 위해 워크샵이나 회의를 개최한다.목표, 기능, 사용자 경험에 대한 팀 구성원들 간의 합의 공유
사전 오류 감지초기 와이어프레임 및 사용자 스토리 검토설계 결함과 모순점에 대한 철저한 검토를 실시잠재적 오류의 조기 식별 및 수정
테스트 계획 정밀성애플리케이션 측면을 다루는 테스트 계획하기기능 테스트, UI 테스트, 성능 테스트를 포함하는 테스트 전략 개발애플리케이션 측면 전반의 품질을 보장하는 포괄적인 테스트 수행 프레임워크
개발 간소화명확성을 기반으로 개발 진행코딩 및 반복개발 주기 시작통합된 테스트와 불확실성 감소로 인해 개발 절차 간소화

시프트 레프트 테스트 수행의 프레임워크 내에서, 설계 및 요구 사항 검토와 같은 조기 검증 절차는 소프트웨어 개발 관행을 최적화하고 고품질 소프트웨어 제품을 생산하는데 중요한 역할을 한다.

시프트 라이트 패러다임: 프로덕션 결함과 사용 패턴 분석

소프트웨어 개발의 동적인 환경에서는, 사용자가 라이브 시스템과 상호 작용하는 방식을 이해해야 한다. 이는 출시 전 테스트 만큼이나 중요하다. 시프트 라이트 테스트 수행에서, 프로덕션 결함 및 사용자 행동을 탐색하는 것은 배포 후 소프트웨어 품질을 향상시키기 위해 매우 중요하다.

배포 후 프로덕션 결함 및 사용자 행동 분석에는 다음이 포함된다.

결함 분석

로그, 에러 리포트, 사용자 피드백을 검토하여 라이브 환경에서 사용자가 직면한 문제를 식별하고 분류한다.

예시: 한 전자 상거래 플랫폼에서는 고객들이 상품을 장바구니에 담아둔 채 결제하지 않은 상태로 두는 경우가 갑자기 증가하는 것을 발견했다. 에러 로그와 사용자 세션을 검토하여, 특정 브라우저 버전에서 결제 실패를 유발하는 버그가 발견되었다.

조치: 개발팀은 에러 로그를 검토하여, 브라우저별 문제를 확인한다. 그 다음 신속하게 수정 사항을 릴리스 한다.

그림: TestRail의 요약 (결함) 리포트에는 TestRail에서 발견하고 연결한 모든 결함에 대한 개요가 표시된다. 보고서에는 요약 데이터의 그래픽 묘사를 포함된다. 그리고 보고서 옵션에서 지정된 검색 기준을 사용하여 발견한 테스트 실행과 결함의 상세 목록도 포함되어있다.

사용 패턴

소프트웨어 사용자의 상호 작용, 탐색 경로, 기능 사용, 성능 지표를 연구하여 사용자가 소프트웨어를 사용하는 방식을 파악한다.

예시: SNS 앱에서 업데이트 후 사용자들의 접속 시간이 감소하는 것이 관찰되었다. 사용 분석 결과, 특정 기능이 도입된 후 사용자들의 앱 사용 시간이 줄어든 것이 나타났다.

조치: 사용자 행동 데이터를 연구하여, 제품 팀은 새로운 기능의 복잡성으로 인해 사용자의 이용이 감소하고 있다는 것을 알게 되었다. 제품 팀은 기능을 단순화 했고, 이는 사용자의 앱 사용 시간 증가로 이어졌다.

피드백 수집

설문 조사, 사용자 인터뷰 또는 전용 피드백 채널을 통해 사용자의 피드백을 수집하여 사용자의 감정과 선호도를 포착한다.

예시: 한 소프트웨어 회사가 프로젝트 관리 도구를 출시한다. 앱 내에 사용자 피드백 양식을 만들어 사용자 의견과 제안을 수집한다.

조치: 피드백을 분석을 통해, 특정 통합에 대한 요청이 일관되게 있다는 것을 확인했다. 이 데이터는 그 회사에 통합의 우선 순위를 정하고 구현하여 사용자 만족도를 높인다.

데이터 기반 통찰력(Insight)

분석 도구와 사용자 행동 추적 내용을 활용하여 소프트웨어 개선을 위한 의미 있는 인사이트를 얻는다.

예시: 한 모바일 게임 회사가 기존 게임의 새로운 버전을 출시한다. 사용자 상호 작용을 추적한 결과, 특정 레벨 이후에 사용자 이탈이 상당히 높아 졌음을 발견 했다.

조치: 데이터 분석을 통해, 해당 레벨의 난이도가 지나치게 높다는 사실을 발견한다. 그 회사는 레벨의 해당 레벨의 난이도를 조정했고, 사용자 접속율이 개선 되었다.

그림: TestRail을 사용하여 종합적인 프로젝트 리포트를 생성할 수 있다. 이는 테스트 분석 및 리포트를 통해 품질 운영에 대한 전체 그림을 제공하여 데이터 기반 의사 결정을 신속히 내릴 수 있게 한다.

배포 후, 프로덕션 결함과 사용자 행동을 분석하면, 문제를 발견하고, 인사이트를 제공하며, 개선을 이끌어내어, 보다 정제된 사용자 중심의 소프트웨어 경험을 제공할 수 있다.

비-기능적 요구사항(들) 평가

성능 및 보안과 같은 비-기능적 요구사항(들)을 평가하는 것은, 시스템의 주요 기능 이외의 측면을 평가하는 것이다. 여러분의 팀이 고려해야 할 중요한 비-기능적 요구사항(들)에 대한 분석은 다음과 같다:

  • 성능: 이는 소프트웨어가 속도, 응답성, 확장성, 리소스 사용과 관련해 성능이 어떠한가를 분석하는 것을 포함한다. 이 평가는 소프트웨어의 성능이 기대를 충족하는지 확인하기 위한 것이다. 과부화나 동시 접속자가 많은 상황 같은 다양한 조건에서 테스트 한다.
  • 보안: 보안 테스트 수행은 잠재적 취약성을 파악하기 위한 것이다. 또 소프트웨어가 무단 접근, 데이터 유출 또는 악의적인 공격으로부터 보호되는지 확인하기 위한 것이다. 이 테스트에서는 위협에 대한 시스템의 복원력과 보안 표준을 준수 여부를 평가한다.
  • 신뢰성: 이는 소프트웨어가 다양한 조건에서 일관되고 안정적으로 작동하는 능력을 나타낸다. 예기치 않은 장애나 다운타임을 피할 수 있는 능력을 뜻하기도 한다.
  • 확장성: 부하 증가 또는 사용자 상호 작용을, 성능 저하나 대규모 변경 없이 처리할 수 있는 능력을 측정하는 것이다.
  • 사용성: 사용자와 소프트웨어의 상호작용이 얼마나 쉽고 효율적인지를 평가하는 것이다. 사용자 인터페이스, 직관성, 그리고 전반적인 사용자 경험에 중점을 둔다.

기능적인 측면들과 함께, 이 비-기능적 요구사항(들)을 평가하고 해결하는 것은 종합적인 소프트웨어 솔루션을 제공하는데 매우 중요하다. 소프트웨어가 계획한대로 작동하는지 여부 뿐만아니라 신뢰성, 사용성, 확장성 등의 광범위한 기대치를 충족하는지 확인해야 한다.

데이터 세트 및 리소스 결정

필요한 데이터 세트와 리소스를 결정하는 것은 철저하고 효과적인 테스트 수행을 위해 매우 중요하다. 테스트 수행 절차는 포괄적이고, 현실적이며, 다양한 시나리오를 포함해야 한다. 포괄적인 테스트 수행이 포함해야 하는 중요한 데이터 세트와 리소스는 다음과 같다.

  • 테스트 케이스 관리: 이는 다양한 테스트 시나리오를 수행하는 데 필요한 데이터 세트를 식별, 생성, 관리 하는 작업을 포함한다. 테스트 수행에 사용되는 데이터는 실제 시나리오를 대표하고 다양한 입력의 범위를 포함해야 한다.

그림: TestRail의 각 프로젝트는 해당 프로젝트의 테스트 데이터를 보고 관리할 수 있는 대시보드가 포함되어 있다.

  • 테스트 환경: 이는 테스트에 필요한 하드웨어, 소프트웨어, 그리고 네트워크 구성을 인식하고 설정하는 작업을 포함한다. 다양한 환경(예:개발, 스테이징, 프로덕션)을 식별하고 실제 조건을 정확하게 모방하는지 확인하는 작업이 여기에 속한다.
  • 테스트 케이스와 시나리오: 소프트웨어의 다양한 기능적 측면과 비 기능적 측면을 다루는 테스트 케이스를 정의한다. 이로써 다양한 시나리오의 철저한 커버리지를 보장한다.
  • 테스트 도구와 프레임워크: 적절한 도구와 프레임워크(예: 테스트 자동화 도구와 성능 테스트 수행 프레임워크 등)를 활용하여 효율적이고 포괄적인 테스트 수행을 용이하게 한다.
  • 문서: 요구 사항, 설계 사양, 사용자 스토리등의 관련 테스트 전략 문서에 액세스하여 예상되는 소프트웨어 동작과 일치하는지 확인한다.
  • 테스트 실행 보고서: 시스템은 테스트 실행 보고서를 생성, 저장, 분석한다. 그리하여 테스트 결과에 대한 인사이트를 제공하고 개선이 필요한 영역을 식별한다.
  • 버전 컨트롤 및 구성 관리: 적절한 버전 컨트롤 시스템과 구성 관리 도구로 다양한 테스트 환경 전반에 걸쳐 변경 사항을 추적하고, 일관성을 유지한다.
  • 교육 및 스킬 세트: 테스트 수행 팀에 적절한 교육 및 스킬 세트를 제공하여, 다양한 테스트 수행 활동을 효과적, 효율적으로 수행할 수 있게 한다.

테스트 관리 도구로 테스트 전략 강화 하기

TestRail과 같은 테스트 관리 도구는 QA 팀을 지원하여, 몇 가지 중요한 기능을 통해 견고하고 효과적인 테스트 전략을 수립할 수 있게 한다.

중앙 집중식 테스트 계획:

중앙 집중식 테스트 계획은 테스트 케이스 구성을 간소화한다. 이는 시나리오 전반에 걸쳐 포괄적인 커버리지를 보장하도록 한다. 그리고 프로젝트의 목표와 일관성 및 연계성을 유지할 수 있게 한다. 이는 QA 팀들 간의 효율적인 관리, 업데이트, 협업을 촉진한다. 이로써 조직 내 투명하고 목표지향적인 테스트 노력을 장려한다.

그림: TestRail에서, 모든 자동화, 탬색, 수작업 테스트 수행 활동을 중앙 집중화 하여 테스트 자산에 더 쉽게 액세스하고 관리하며, 중복을 줄이고, 테스트 수행 절차 전반의 일관성을 유지할 수 있다.

추적성 및 커버리지 분석

추적성과 커버리지 분석을 통해, 프로젝트 목표애 대한 테스트 전략의 포괄적인 유효성을 확인할 수 있다. 그리고 테스트 커버리지의 누락을 식별하여 다양한 시나리오와 요구 사항에 대한 철저한 테스트를 보장한다. TestRail을 사용하면, 테스트 아티팩트를 요구 사항과 결함에 연결함으로써 정의부터 전달까지 작업을 추적할 수 있다. 또한 TestRail을 통해 포괄적인 프로젝트 보고서를 작성하고, 테스트 커버리지를 추적하며, 요구사항 및 테스트, 그리고 결함 간의 추적성을 구축할 수 있다.

그림: 수작업 탐색적 테스트부터 자동 회귀 테스트에 이르기까지 모든 테스트 수행 활동의 진행 상황을 한곳에서 모니터링 하여 리스크를 더 신속하게 분류하라.

사용자 정의와 유연성

사용자 정의와 유연성은 QA 팀이 테스트 케이스, 스위트, 리포트를 프로젝트의 특정 요구 사항에 맞게 조정할 수 있게한다. 이 적응성을 통해 테스트 전략은 변화하는 프로젝트 요구 사항에 대응할 수 있다. 덕분에 프로젝트가 발전함에 따라 발생하는 수정 사항을 원활하게 할 수 있다.

그림: TestRail에서 동작 및 테스트 엔티티를 사용자 정의하라. 테스트 케이스 및 결과 필드부터 테스트 케이스 템플릿 및 테스트 자동화 트리거까지 모두 가능하다.

테스트 실행 및 보고

테스트 실행과 보고 기능은 테스트의 실행을 원활하게 하며, 동시에 상세한 보고서들과 분석을 제공한다. 이 기능은 진행 상황을 추적하고, 개선이 필요한 영역을 식별하고, 데이터 주도 결정을 할수 있게 한다. 이는 테스트 전략을 개선하는데 도움이 된다.

그림: TestRail과 같은 테스트 케이스 전용 관리 플랫폼으로 테스트 요약 보고서를 생성하는 절차를 간소화 하도록 한다. TestRail을 통해 테스트 케이스를 정의하고, 실행을 배치하며, 실시간으로 결과를 캡쳐하고, 자동 보고서 일정을 잡을 수 있다.

협업 및 커뮤니케이션

협업 및 커뮤니케이션 기능은 QA 전문가와 프로젝트 이해관계자 사이의 워크플로를 간소화시킨다. 이로써 모든 이해관계자들이 목표, 전략, 테스트 결과에 대해 의견을 일치할 수 있도록 한다.

그림: 개별 테스트 실행부터 테스트 케이스 승인 절차 수립까지 모든 것을 손쉽게 관리할 수 있다. 그래서 여러분의 팀이 언제 어떤 작업을 해야 하는지 알 수 있다.

이런 기능들을 활용하면 QA 팀이 문제를 일찍 해결할 수 있다. 그로 인해 사용자의 요구와 비즈니스 목표에 부합하는 고품질 소프트웨어를 제공할 수 있게 된다. TestRail을 이용해 테스트 전략을 수립하고 최적화하는 방법에 대해서 더 알고 싶다면, TestRail 아카데미의 TestRail을 사용한 테스트의 기초 과정을 참조하자!

잘 짜여진 테스트 전략은 그냥 중요한 것이 아니다. 소프트웨어 성공의 기반이며, 팀을 지속적인 개선과 원활한 사용자 조율로 안내한다.

더 자세히 알고 싶다면, 자세히 TestRail의 기능들을 살펴보자. 또는 지금 바로 TestRail 14일 무료 평가판을 사용해 보자.

(원문: Hannah Son | January 2nd, 2024 | Crafting a Robust Test Strategy: 6 Key Approaches)

다른 기고들

소프트웨어 개발사 ELEKS는 어떻게 가시성과 생산성을 높였을까: Jira와 TestRail을 통합한 사례 연구

게스트의 글입니다. (작성자: Ostap Elyashevskyy) QA 절차를 처음부터 구축하거나 기존 QA 절차를 개선하는 경우, 올바른 테스트 관리 도구 선택은 매우 중요하다. 그것은 여러분이 버그를 찾고, 테스트 케이스를 관리하는 것을 도와준다. 또한 궁극적으로는, 소프트웨어 개발 절차를 잘 다듬을 수 있도록 돕는다. 이 글에서 나는 ELEKS의 우리 팀에게 효과적인 테스트 관리 솔루션을 찾은 경험을 공유하고자 한다. 그리고 그 과정에서 평가한 다른 몇 가지 대안들...

애자일 테스트 수행에서의 수락 기준들 (Acceptance Criteria in Agile Testing)

애자일이라는 직조물(tapestry)에서, 수락 기준은 황금색 실과 같다. 이것은 사용자 스토리를 최종 형태로 연결한다. 이 기준은 테스터가 테스트 수행 전략을 수립하는데 도움이 된다. 그리고 기능 및 품질 보증을 검증하는 데에도 중요한 임계 값 역할을 한다. 수락 기준은 제공된 제품이 고객의 기대에 부합할 것이라고 약속한다. 고객에게 필요한 사항을 정확히 정의하여, 발생 가능한 오해를 줄이고, 더욱 명료하게 한다. 이렇게 고객의 기대치에 맞춰 조율하는 것은 고객 만족으로...

테스트 관리를 위한 Jira: 선택, 과제, 그리고 솔루션

여러분의 팀이 소프트웨어 개발 관리를 위해 Jira를 사용하고 있다면, 테스트 수행 및 QA 절차를 Jira와 통합하는 것은 필수적이다. 일반적으로 두 가지 기본 선택권이 있다: Jira를 직접 활용하여 테스트 수행 작업을 모니터링한다. (주로 개발 이슈와 관련된 하위 작업 또는 사용자 정의 이슈 유형을 통해) Jira 기반 테스트 관리 애드-온을 사용한다. (무료일 수도, 유료일 수 있다.) 테스트 관리를 위해 Jira 사용하기 Jira는 애초에 소프트웨어 테스트 수행을...