| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- ISTQB 합격 후기
- QA 엔지니어
- git revert
- 홍달쌤
- flex item
- REACT
- flexbox
- JWT
- position
- 정보처리기사필기
- flex container
- froggy
- 카카오맵
- justify-content: center;
- 결함 기록
- prettier
- 테스트 코드
- 정보처리기사실기
- error
- 모듈 관리
- 리그레션 테스팅
- 재테스팅
- 프로그래머스
- flexbox/grid 적용 여부
- Flexbox Froggy
- 정보처리기사
- 기사퍼스트
- github
- 백준
- Redux
- Today
- Total
minyoung
버그를 찾는 것보다 어려운 일 : 이것은 정말 결함일까? 본문
QA 엔지니어로 업무를 하면서 가장 어려운 순간 중 하나는 오류를 발견했을 때가 아니라, 발견한 현상이 정말 ‘버그’인지 판단해야 할 때이다.
처음 QA 업무를 시작했을 때는 예상한 결과와 실제 결과가 다르면 비교적 쉽게 이슈라고 판단했다. 하지만 여러 서비스를 테스트하고 테스트 케이스를 직접 설계하면서 생각이 조금씩 달라졌다. 화면에서 예상과 다른 결과가 나오더라도 그것이 반드시 결함을 의미하는 것은 아니기 때문이다.
예를 들어 검색 기능을 테스트한다고 가정해보자. 사용자가 검색어를 입력했는데 내가 생각했던 결과와 다른 데이터가 노출된다면 처음에는 검색 기능에 문제가 있다고 생각할 수 있다. 하지만 실제로는 검색 조건에 따라 정상적으로 필터링된 결과일 수도 있고, 해당 계정의 권한에 따라 조회할 수 있는 데이터가 제한된 것일 수도 있다. 또는 기획 단계에서 정의된 정책과 내가 예상했던 동작이 서로 다른 경우도 있다.
이러한 경험을 하면서 QA에서는 ‘실제 결과가 무엇인가?’뿐만 아니라 ‘기대 결과는 무엇이며, 그 기대 결과의 근거는 무엇인가?’가 중요하다는 것을 알게 되었다.
특히 테스트 케이스를 작성할 때는 단순히 정상적인 사용 흐름만 작성하는 것이 아니라 다양한 조건을 고려해야 한다. 입력값에 따라 결과가 달라지는 경우에는 유효한 값과 유효하지 않은 값을 구분하고, 최소값이나 최대값과 같은 경계 조건도 확인해야 한다. 사용자가 실제 서비스에서 할 수 있는 행동을 생각하면서 테스트 범위를 결정하는 것도 중요하다.
또한 하나의 기능에서 발견한 문제를 해당 기능만의 문제로 판단해서는 안 된다. 데이터가 변경되는 기능이라면 다른 화면에서 해당 데이터를 조회했을 때 영향을 받는지 확인해야 하고, 권한과 관련된 기능이라면 다른 계정에서는 동일한 결과가 나타나는지도 확인할 필요가 있다. 즉, 하나의 오류를 발견하는 것에서 끝나는 것이 아니라 그 오류가 다른 기능에 어떤 영향을 미칠 수 있는지 생각해야 한다.
이 과정에서 QA의 역할은 단순히 ‘버그를 찾아내는 사람’이 아니라는 생각을 하게 되었다. QA는 요구사항과 실제 동작을 비교하고 사용자 입장에서 발생할 수 있는 문제를 예상하며 발견한 현상이 실제 결함인지 판단하는 역할까지 수행해야 한다.
물론 모든 애매한 상황을 QA가 혼자 판단할 수 있는 것은 아니다. 기획 의도나 정책이 명확하지 않은 경우에는 기획자나 개발자와 확인하는 과정이 필요하다. 오히려 이러한 커뮤니케이션을 통해 기대 결과를 명확하게 정의하는 것 역시 QA 업무의 중요한 부분이라고 생각한다.
이번에 부산에서 잠시 업무를 떠나 최근 QA 업무를 돌아보면서, 테스트의 핵심은 단순히 많은 오류를 발견하는 것이 아니라는 생각이 들었다. 얼마나 많은 버그를 찾았는지도 중요하지만, 왜 문제가 발생했는지 분석하고 이것이 사용자에게 실제 결함이 되는지를 판단할 수 있는 능력이 더 중요하다.
앞으로도 테스트를 진행할 때 ‘이게 왜 안 되지?’에서 멈추지 않고 ‘원래 어떤 결과가 나와야 하는가?’, ‘그 기준은 무엇인가?’, ‘다른 기능에는 어떤 영향을 줄 수 있는가?’를 먼저 생각하는 QA 엔지니어가 되고 싶다.
결국 좋은 QA는 버그를 많이 찾는 사람이 아니라, 서비스의 기대 결과와 실제 결과 사이의 차이를 정확하게 이해하고 그 의미를 판단할 수 있는 사람이다.