QA(Quality Assurance)
제품이나 서비스가 일정한 품질 기준을 충족하는지 보장하는 역할을 담당합니다. 소프트웨어 개발에서는 주로 소프트웨어가 요구사항에 맞게 잘 작동하는지, 오류가 없는지, 사용자가 기대하는 품질을 제공하는지 확인하는 과정이 포함
프로세스
1. 요구 사항 분석
- 역할
QA는 소프트웨어의 요구 사항(기능적, 비기능적 요구 사항)을 분석하고 이해합니다. 이를 바탕으로 테스트 계획을 수립합니다.
- 목적
요구 사항이 명확하게 정의되지 않으면 제대로 된 테스트를 수행할 수 없기 때문에, 요구 사항을 깊이 이해하는 것이 중요합니다.
2. 테스트 계획 수립
- 테스트 전략
어떤 테스트를 할지, 어떻게 테스트할지 전략을 세웁니다. 예를 들어 기능 테스트, 성능 테스트, 보안 테스트 등이 있습니다.
- 테스트 환경 설정
실제 제품을 테스트할 환경을 설정합니다. 이는 다양한 운영체제, 브라우저, 모바일 디바이스 등의 테스트 환경을 포함할 수 있습니다.
3. 테스트 케이스 작성
- 테스트 시나리오
QA는 제품의 각 기능과 경로에 대한 테스트 케이스(시나리오)를 작성합니다. 테스트 케이스는 요구 사항을 기반으로 만들어지며, 예상 입력과 결과를 포함합니다.
- 테스트 자동화 스크립트 작성
자동화 도구(Selenium, JUnit 등)를 사용하여 반복적으로 테스트할 수 있는 스크립트를 작성할 수 있습니다.
4. 테스트 실행
- 수동 테스트
특정 기능을 수동으로 테스트합니다. 이 방법은 사용자의 실제 행동을 시뮬레이션하고, UI/UX 측면에서 문제가 없는지 확인하는 데 유용합니다.
- 자동화 테스트
자동화 도구를 사용해 테스트를 실행합니다. 반복적으로 동일한 테스트를 실행해야 할 때 자동화는 큰 도움이 됩니다. 특히, 회귀 테스트(기존 기능이 새 기능 추가 후에도 잘 작동하는지 확인)나 대규모 데이터 처리를 위한 성능 테스트에서 많이 사용됩니다.
5. 버그 발견 및 리포트
- 버그 탐지
테스트 중 문제가 발견되면, QA는 버그를 개발팀에 보고합니다. 이때 버그가 발생한 경로와 재현 방법을 명확히 설명하고, 심각성(Severity)에 따라 우선순위를 정해 해결을 요청합니다.
- 버그 관리 툴
Jira, Trello 같은 이슈 트래킹 도구를 사용하여 버그를 관리하고, 해결된 후 다시 검증합니다.
6. 회귀 테스트
- 변경 사항 확인:
발자들이 문제를 수정한 후, 수정된 부분이 제대로 동작하는지 확인하기 위한 회귀 테스트를 진행합니다. 또한, 수정된 코드가 기존 기능에 영향을 미치지 않는지 확인합니다.
7. 성능 및 보안 테스트
- 성능 테스트
소프트웨어가 많은 사용자에게 동시에 서비스될 때, 성능이 저하되거나 서버가 다운되지 않도록 성능 테스트를 진행합니다.
- 보안 테스트
소프트웨어가 해킹에 취약하지 않도록 보안 관련 문제도 점검합니다.
8. 테스트 결과 분석 및 보고
- 보고서 작성
테스트 결과를 분석하여 프로젝트 팀에 보고합니다. 여기에는 발견된 문제, 테스트 성공/실패율, 성능 결과 등이 포함됩니다.
- 품질 개선 제안
QA는 결과를 기반으로 소프트웨어 품질을 향상시킬 수 있는 방법을 제안합니다.
9. 출시 후 모니터링
- 실제 환경에서의 테스트
소프트웨어가 실제 운영 환경에 배포된 후에도 계속해서 모니터링하고, 사용자 피드백을 기반으로 추가 테스트를 진행하거나, 새로운 문제가 발생하면 이를 보고합니다.
QA가 일을 처리하는 프로세스
1. 개발 초기 단계 참여
- QA는 개발 초기부터 참여하여 요구사항 분석 및 품질 관리 계획을 수립합니다.
2. 개발 및 테스트 병행
- 개발이 진행되는 동안 QA는 테스트를 병행하며, 이를 통해 문제가 조기에 발견될 수 있도록 합니다.
3. 테스트 주기 반복
- 개발 과정에서 새로운 기능이 추가되거나 수정되면 QA는 테스트를 반복적으로 수행하고, 이를 회귀 테스트와 병행합니다.
4. 출시 준비
- 제품이 출시되기 전에 QA는 최종 검증을 수행하여 모든 기능이 요구 사항을 만족하는지 확인합니다.
이 과정에서 QA는 기능 테스트, 회귀 테스트, 성능 테스트, 보안 테스트 등 다양한 테스트를 통해 제품의 품질을 보장하고, 문제가 발견되면 이를 보고하고 해결하는 역할을 맡습니다.
QA 직무 vs 백엔드 개발자
