풀스택 테스팅, 챕터 1 풀스택 테스팅이란?
도입
테스트 분야가 정리된지 수십년이 지났지만 오늘날에도 여전히 테스트에 대한 이해가 다양하다. 필자는 이러한 현상을 테스트 담당 인재가 부족하기 때문에 발생한 것이라 생각한다.
이 책의 목표는 테스트를 처음 접하는 사람이 오늘날의 웹 및 모바일 애플리케이션 테스트에 필요한 모든 기술을 초중급자 수준 이상으로 향상시킬 수 있는 종합적인 자료가 되는 것이다.
소프트웨어 개발 팀의 역할
- 좋은 품질의 소프트웨어를 제공해야 한다.
- 플립카트와 야후는 경쟁사 대비 낮은 소프트웨어 품질로 인해 시장에서 살아남지 못했다.
- 플립카트는 트래픽을 견디지 못했으며 야후는 검색품질이 떨어졌다.
- 아무리 좋은 비즈니스 아이디어를 가지고 있더라도 소프트웨어 품질을 신경쓰지 않는다면 생각보다 빠르게 침몰할 수 있다.
- 때로는 기업이 소프트웨어 품질보다 출시일정을 더 고려해야 할 수도 있으나 이 경우 기술부채가 쌓임을 유념해야 한다.
고품질 소프트웨어란?
오늘날의 소프트웨어 품질은 단순히 버그가 없는 소프트웨어가 아니다.
사용자 관점의 고품질 소프트웨어
- 쉬운 사용성
- 아름다운 디자인
- 높은 보안성
- 빠른 응답속도
- 무장애
기업 관점의 고품질 소프트웨어
- 높은 수익률 (부가가치)
- 실시간 분석이 가능한 환경
- 무중단 서비스
- 벤더 독립성
- 확장 가능한 인프라
- 데이터 보안
- 관련 법률 규정 준수
풀스택 테스트란?
- UI, 서비스, DB 등 애플리케이션에 포함된 각 계층과 애플리케이션 전체를 테스트하는 것을 의미한다.
풀스택 테스트의 주요한 관점
- 테스트가 개발을 완료한 후 별도로 진행하는 독립적인 작업이라는 고정관념을 버려야 한다.
- 풀스택 테스트는 개발과 병행되며 빠른 피드백을 얻기 위해 전달 주기 내에서 수행되어야 한다.
시프트 레프트 테스트
- 시프트 레프트 테스트는 광범위한 테스트를 수행한다.
- 자동화된 CI (Continuous Integration) 과 지속적 전달 (Continuous Delivery) 프로세스에 크게 의존한다.
- CI/CD 프로세스는 마이크로 및 매크로 수준에서 품질 검사를 자동으로 수행하며, CI 서버에서 지속적으로 실행된다.
- 이는 작업을 수동으로 테스트하는 것과 비교했을 때 노력과 비용이 훨씬 더 적게 든다.
3-아미고 프로세스
: 비즈니스 담당자, 개발자, 테스터가 모여 기능을 자세히 검토한다. 담당자는 각자의 고나점에서 통합, 앳지 케이스, 누락된 비즈니스 요구사항을 검토한다.- 동시에 비즈니스 담당자는 UX 디자이너와 협력하여 애플리케이션 설계를 검증하고 개선한다.
반복 계획 회의 (Iteration planning meeting)
: 사용자 스토리를 자세히 논의하고 요구사항을 팀 차원에서 다시 검증한다.스토리 킥오프
: 3-아미고 프로세스의 축소 버전으로 특정 사용자의 스토리 요구사항과 엣지 케이스를 깊이 있게 다룬다.
기타 품질검사
- 개발자: 유닛테스트, 정적코드 분석을 CI 에 통합
- 개발자 혹은 테스터: UI 기반 기능 테스트 작성
피드백 받기
- 첫번째 피드백은 개발자의 로컬 환경에서 실행되는 자동화 된 테스트로 받는다.
- 두번째 피드백은 커밋 후 CI 에서 실행되는 자동화된 테스트 (유닛, 서비스, UI 등) 에서 받는다.
- 세번째 피드백은 데브 박스 테스트, 비즈니스 담당자, 테스터, 개발자의 컴퓨터에서 수동 탐색적 테스트를 빠르게 수행하여 새로 개발한 기능을 빠르게 검증한다.
시프트 레프트 테스트의 특징
소프트웨어 개발의 모든 단계에서 다양한 역할의 구성원이 품질 검사에 참여하기 때문에 '품질은 팀 전체의 책임이다'를 강조한다.
10가지 풀스택 테스트
- 수동 탐색적 테스트
- 자동화된 기능 테스트
- 지속적 테스트 (CI/CD)
- 데이터 테스트
- CFR 테스트
- 시각적 테스트
- 보안 테스트
- 성능 테스트
- 접근성 테스트
- 모바일 테스트
수동 탐색적 테스트
- 주어진 요구사항만 수행하는 단순 수동 테스트와 다르다.
- 사용자 스토리에 기록된 것 외에도 다른 시나리오를 도출하고 시뮬레이션하고 애플리케이션의 작동을 관찰하는 기술이다.
- 논리적이고 분석적인 사고를 요구하며 버그 없는 애플리케이션을 만들기 위해 필요하다.
자동화된 기능 테스트
- 사람의 개입 없이 자동으로 요구사항을 테스트한다.
- 자동화된 테스트의 안티패턴을 찾고 이를 피할 수 있어야 한다.
- 애플리케이션의 크기가 커질수록 자동화 테스트의 의미가 커진다.
지속적 테스트 (CI/CD)
- 보통 CI/CD 라고 불려서 품질 검사를 파이프라인에 통합하고 테스트를 간편하게 자주 실행하는 것을 말한다.
- 기업은 이를 통해 조기에 수익을 창출하고 사용자의 피드백을 기반으로 제품 전략을 빠르게 평가하고 조정할 수 있다.
데이터 테스트
- 기능 흐름과는 별개로 데이터 흐름에 대한 새로운 테스트 케이스를 수행하는 것이다.
- 다양한 유형의 데이터 저장 및 처리 시스템 (데이터베이스, 캐시, 이벤트 스트림 등) 에 대한 지식과 적절한 테스트 케이스를 도출할 수 있는 능력을 필요로 한다.
시각적 테스트
- 사용자에게 시각적으로 조화로움과 쾌적함을 제공할 수 있는지 검증하는 단계이다.
- 웹 애플리케이션의 UI 구성 요소가 서로 상호 작용하는 방식을 이해해야 한다.
보안 테스트
- 민감정보 유출, 법적 처벌, 브랜드 평판에 손해를 끼칠 수 있는 보안 관련 기본적인 테스트를 수행한다.
성능 테스트
- 애플리케이션에서 주요 성능 지표를 측정하는 것이다.
- 자동화하고 CI 파이프라인에 통합하여 지속적인 피드백을 얻을 수 있다.
접근성 테스트
- 장애를 가진 사람이 애플리케이션을 쉽게 이용할 수 있게 해주는 테스트다.
- 법에서 요구하는 접근성 기준을 이해하고 자동화된 검사 도구를 이용한다.
교차 기능 요구사항 (CFR, Cross Functional Requirements) 테스트
- 가용성, 확장성, 유지보수성, 관찰 가능성 같은 요구사항을 테스트한다.
- 기능적 요구사항은 앞단에서 관심을 끌 수 있는 품질이지만 CFR은 뒷단에 있는 중요한 품질 요구사항이다.
- 기업, 소프트웨어 팀, 최종 사용자에게 만족스러운 결과를 안겨주기 위해 필수적이다.
- CFR 은 역설적으로 비기능 요구사항 (NFR, Non Functional Requirements) 이라고 불리기도 한다.
모바일 테스트
- 최근 폭발적으로 증가한 모바일 기기에 대한 테스트이다.
- 모바일 테스트 도구로 수행된다.
반응형
'소프트웨어 공학 > 테스팅' 카테고리의 다른 글
테스팅에서 사용되는 기본 용어 5가지: 기능, 사용자 흐름, 테스트 케이스, 엣지 케이스 (0) | 2023.07.01 |
---|---|
수동 탐색적 테스트란? (0) | 2023.07.01 |
풀스택 테스트 혹은 풀스택 테스팅 (Fullstack Testing) 이란? (0) | 2023.07.01 |
Shift Left Testing 이란? (0) | 2023.06.25 |
계층구조형 (BDD, Behave Driven Development) 테스트 작성법 (0) | 2022.07.26 |