QA란 무엇인가?
개발자에서 QA에 대한 교육을 받기 위해서 스터디를 참여하였습니다.
QA는 소프트웨어가 예상대로 작동하고, 오류나 결함이 없는지 검증하여 품질을 보장하는 역할을 하며, 이를 넘어 문제를 예방하고, 사용자가 만족하는 제품으로 제공하는 것을 목표로 합니다.
예시로 내가 만들었던 프로젝트에서 로그인이 정상적으로 동작을 하는지?, 잘못된 값을 입력을 했을 때 오류 메세지를 내보낼 수 있는지를 검사하게 하는 부분입니다.
SDLC(Software Development Life Cycle)에서의 QA역할
SDLC(Software Development Life Cycle)는 소프트웨어 개발 과정의 구조화된 절차를 말하며, 소프트웨어 개발의 단계별로 체계적이고 효율적인 방법을 제공하는 프로세스입니다.
주요 단계
- 요구사항 분석 (Requirement Analysis): 프로젝트의 목표와 요구사항을 정의하고, 이해관계자들과 소통하여 소프트웨어가 해결할 문제를 명확히 파악하는 단계입니다.
- 설계 (Design): 소프트웨어의 전체 아키텍처 및 세부 설계를 계획하는 단계입니다. 시스템 구조, 데이터베이스 설계, 인터페이스 설계 등이 포함됩니다.
- 구현 (Development): 설계 단계에서 정의된 내용을 바탕으로 실제 코드를 작성하고 소프트웨어를 개발하는 단계입니다.
- 테스트 (Testing): 개발된 소프트웨어가 요구사항을 충족하는지, 오류나 결함이 없는지 확인하는 단계입니다. 단위 테스트, 통합 테스트, 시스템 테스트 등이 포함됩니다.
- 배포 (Deployment): 개발된 소프트웨어를 실제 운영 환경에 배포하여 사용자들이 사용할 수 있도록 하는 단계입니다.
- 유지보수 (Maintenance): 소프트웨어가 배포된 후, 버그 수정이나 성능 향상, 새로운 요구사항 반영 등을 통해 지속적으로 개선하는 단계입니다.
SDLC는 여러 가지 모델이 있는데, 워터폴(Waterfall) 모델, 애자일(Agile) 모델, 스파이럴(Spiral) 모델, V 모델 등이 있습니다.
이걸 순서적으로 해보자면
- 해당기능을 만들자고 했을때 그부분에서 어떤 동작이 일어날 것인지 예측을 하고 해당부분에서 실패를 하면 어떤 안내를 할지 생각
- 기능 설계 단계에서 입력에 대한 위험 요소가 있는 지 분석 오입력시 어떻게 처리를 할지 분석 테스트를 할 항목을 준비
- 해당 기능을 제대로 표시를 하는지, 결과를 저장하고 처리 되는지 테스트를 세부적으로 준비
- 실제로 테스트를 해보는 단계로 기능, 성능, 보안을 중점으로 잘 처리가 되는지, 오류메세지를 잘 표시할 수 있는지를 검사합니다.
- 배포직전 모든 시나리오에 맞추어 제대로 작동을 하는 지 확인하고 정의되지 않은 오류가 없도록 합니다.
- 결함이 없는지 확인하고 새로운 기능이 시스템에 영향을 주지 않도록 합니다.
테스트 유형
테스트는 주로 기능, 성능, 보안을 위주로 검사를 진행하며
입력된 값에 맞추어 예상한 결과가 나오게 되는지 확인하는 기능단계
버튼이 잘 표시가 되어 있고 해당 기능을 잘 동작하는 지 확인하는 UI 테스트
많은 트레픽 상승에 대한 소프트웨어가 빠르게 반응하고 동작하는지에 대한 성능테스트
외부의 공격으로 부터 안전하게 보호가 가능한지 확인하는 보안 테스트를 합니다.
테스트 설계 기법
효율적인 테스트를 위해 필요한 하나의 방법론입니다.
1. 동등 분할
입력한 데이터를 여러 그룸으로 나누고, 각 그룸의 태표적인 값을 선택해 테스트를 하는 방법입니다.
여기서는 유사한 성격의 입력 값을 나타낸다는 가정하에 모든 테스트를 하지 않고 대표의 값만으로 테스트를 합니다.
예시) 나이 입력 필드 1~100에서 옳은 값 50 오입력 0과 101 같은 값을 테스트
2. 경계값 분석
입력 값의 최소값과 최대 값을 집중적으로 테스트 하는 기법
경계값에서 오류가 발생할 가능성이 크기에 경계에 있는 값을 중점으로 테스트
예시) 나이 필드 값 0~100 에서 0 과 100으로 테스트 하고 오류가 없는 지 확인
3. 결정 테이블 테스트
여러가지의 조건이 동시에 발생 할 때 그 조합에 따라 소프트웨어가 어떻게 반응 하는 지 확인하는 기법
각 조건에 따른 결과가 명확하게 정의가 되어 있어야함
모든 조건의 조합을 테이블 형태로 정리하여 소프트웨어가 예상한 대로 결과를 도출하는 지 검증
결정 테이플을 이용하면 다양한 규칙과 조건에 유용하며, 모든 상황을 체계적으로 정리하고 테스트 할 수 있습니다.
이렇게 각 조건에 맞추어 결과를 정의 할 수 있으며 모든 테스트를 확인 할 수 있다는 장점이 있습니다.
QA 프로세스의 기본 단계
이건 앞의 SDLC와는 조금 다른 소프트웨어의 품질을 보장하기 위해 필요한 QA의 단계를 설명하며,
각 단계는 소프트웨어가 요구사항을 충족하는지, 결함이 없는지를 체계적으로 확인하는 역할
1. 테스트 계획 수립 (Test Planning)
무엇을 테스트 할 것이며, 어떻게 할 것인지 추상적으로? 미리계획하는 단계
테스트 할 기능과 범위를 정하고 우선순위와 일정을 정리합니다.
즉 전체적인 방향을 정하는 부분입니다.
예시) 로그인 기능을 테스트 할 때에 ID와 비밀번호 검증, 오류 메시지, 로그인 성공 시 화면 전환 등을 중점적으로 테스트할 계획을 세웁니다.
2. 테스트 케이스 작성 (Test Case Creation)
여기서는 명확하게 무엇을 테스트 할 지를 설명하는 문서입니다.
테스트의 목표, 입력 값, 예상결과, 등을 포함하며, 테스트가 어떻게 진행이 될지 명확하게 정의되어야 합니다.
예시) 테스트 케이스는 "올바른 비밀번호를 입력했을 때 로그인 성공" 또는 "잘못된 비밀번호 입력 시 오류 메시지 표시"와 같은 내용을 포함합니다.
3. 테스트 환경 설정 (Test Environment Setup)
테스트의 환경을 실제와 유사한 환경을 설정하는 단계입니다.
사용자가 접속할 비슷한 환경을 구성하고, 실제와 값은 조건에서 검증을 할 수 있도록 준비합니다.
예시) 테스트 환경에서 다양한 브라우저(Chrome, Firefox 등)에서 로그인 기능이 제대로 동작하는지 확인합니다.
4. 테스트 실행 (Test Execution)
작성된 테스트 케이스에 따라 소프트웨어가 실제로 테스트 하는 단계
예상된 결과가 나오는지 확인하고 결함을 기록합니다.
예시) 사용자가 올바른 비밀번호를 입력했을 때 로그인에 성공하고, 잘못된 비밀번호를 입력했을 때 오류 메시지가 나타나는지 확인합니다.
5. 결함관리 (Defect Management)
테스트 중 발견된 결함(버그)을 기록하고 이를 해결하는 과정을 추적
발견된 결함은 우선순위와 심각도에 따라 개발팀에게 전달,
결함 수정 후 재테스트
예시) 결제 오류가 발생하면 이를 결함 관리 도구(JIRA 등)에 등록하고, 결제 과정에서 오류가 수정되었는지 재검토합니다.
6. 테스트 종료 및 회고 (Test Closure and Retrospective)
모든 테스트가 완료되면 테스트 결과를 정리하고, 테스트 과정에서의 문제점과 개선할 점을 논의하는 회고를 진행합니다.
테스트 결과는 최종 보고서로 정리 이를 바탕으로 배포준비가 되었는지 확인합니다.
예시) 로그인 기능 테스트가 완료되면, 성공한 테스트와 발견된 결함을 정리하고, 다음 프로젝트에 적용할 개선 사항을 논의합니다.
https://www.kstqb.org/sw/sw3.asp
KSTQB
ISTQB® SW 테스팅 자격시험 --> ISTQB ® Certified Tester Foundation Level (CTFL) --> ISTQB® Certified Tester Foundation Level (ISTQB CTFL) 자격명 (Name) ISTQB® Certified Tester Foundation Level (ISTQB CTFL) 인증기관 (Certification Body) Int
www.kstqb.org
테스터 분석 시험
본인이 일을 하고 있는 것을 어떻게 다른 방식으로 일을 할 수 있을지를 끊임없이 생각을 해야 합니다.
테스트 자동화 한다?
테스트를 효율적으로 할 수 있는 방법을 알아본다.
QA의 역할?
- 커뮤니케이션과 가이드. 프로젝트 진행 중 각 단계별 담당 멤버들과 다양한 커뮤니케이션 활동을 필요로 한다.
- 개발의 모든 과정을 보조하고 도와준다.
- 분석과 관리
- 테스팅 QA단계와 활동 수행
- 개선역할