How to find issues when software testing?
버그(Bug)를 찾는 것과 이슈 관리는 소프트웨어 테스트에서 매우 중요한 부분이다. 테스터나 QA 엔지니어라면 업무를 진행하는 매 순간마다 소프트웨어에서 이슈를 어떻게 찾을지 생각해야 하고 반드시 찾아야만 한다. 테스터들은 시스템 충돌 같은 심각한 이슈를 발견한 것에 대해 보람을 느끼기도 한다. 그 부분도 중요하지만 우리는 가장 찾아 내기 어렵고 복잡한 이슈를 찾아 내려는 노력을 해야 한다. 일반적으로 시장에서 사용자에게 어려움을 주는 것은 그런 이슈들이다.
이 경험을 이야기하는 요점은 어떤 특정한 조건이나 상황에서 발생하거나 시스템에 심각한 영향을 일으키는 숨겨진 버그를 찾기 위해 노력해야 한다는 것이다. 그리고 이렇게 발견된 버그들은 체계적인 이슈 관리 시스템에 의해 처리되어야 하고 지속적으로 모니터링해야 한다. 프로젝트의 승패가 좌우된다고 해도 과언이 아닐 정도로 중요한 부분임을 인지해야 한다.
아래는 위에서 언급한 이슈 관리 경험들을 통해 배운 노하우이다.
1) 소프트웨어 테스트를 진행하기 전에 전체적인 애플리케이션 또는 모듈에 대한 상세히 이해해야 한다.
요구 사항, 사양 설명서 등 테스트 활동에 필요한 문서를 분석하고 개발자나 관련 이해관계자들과의 소통을 통해 정확하게 이해해야 한다.2) 테스트 진행에 앞서 좋은 테스트 케이스를 준비한다.
프로젝트의 속성과 상황에 따라 다르지만 일반적으로 테스트케이스를 미리 작성한 후에 테스트를 진행하는데, 정확한 이해가 있어야 올바른 테스트 케이스가 생성될 수 있다. 이 의미는 요구에 맞는 기능에 대한 테스트와 리스크가 높은 부분에 집중할 수 있어야 한다.3) 사전에 충분한 테스트 데이터를 만들어야 한다.
테스트 데이터를 테스트 케이스 조건에 적용하고 찾기 쉽게 그룹화하여 관리한다. 관련 DB(Data Base)도 진행할 예정이라면 DB의 정보와 기록 내역을 포함 시킨다.4) 다양한 환경에서 반복 테스트를 수행한다.
테스트 환경 대상을 정할 때는 잠재적 사용자를 분석하고 파악하여 선별해야 한다. 테스트 중 발견된 이슈에 대해서는 다른 상황 또는 애플리케이션 조건에서 추가적으로 확인해야 한다. 동일한 이슈가 다른 환경 조건에서 재발생할 확률이 상당히 높기 때문이다.5) 예외적인 테스트를 진행한다.
대부분의 조건에 대한 테스트 진행이 완료되었다면 정상적이지 않은 데이터나 환경을 적용한 예외 테스트(Native Testing)를 진행한다.6) 이슈가 집중되어 있는 영역을 찾아 테스트한다.
코드의 복잡성, 기능의 복잡성, 명확하지 않은 요구 사항, 개발자 이해 부족 등의 원인으로 이슈는 특정 기능에 집중이 되는 경우가 많기 때문에 이슈가 발견된 기능이 있다면 관련 영역에 대해서는 더욱 집요하게 테스트를 진행한다.7) 이전 테스트 결과를 활용하여 데이터를 분석한다.
기능이 수정되거나 발생되었던 이슈를 분석하는 이유는 이슈를 해결할 때 수정된 코드가 관련된 기능에 영향을 미쳐 추가 이슈가 발생하는 경우가 상당히 많기 때문이다. 이슈가 수정되었다면 관련 기능에 대해서 여러 가지 경로로 추가 테스트 진행이 필요하다. 예를 들어 텍스트 박스에 글자 입력이 안되는 이슈가 해결되었다면 추가적으로 특수문자 입력을 확인하는 등을 추가적인 검증을 한다.8) 실제 테스트 결과와 유사 프로젝트를 비교하여 분석한다.
이전에 유사한 프로젝트의 테스트 결과나 이슈를 실제 테스트 결과와 비교하여 활용하면 더 좋은 효과를 기대할 수 있는데, 프로젝트 진척사항 및 재발생된 이슈 등 유용한 정보를 활용할 수 있다. 유사 프로젝트에서 이슈를 발견했던 테스트 케이스들을 시도해 본다.마지막 그리고 가장 좋은 방법은 버그를 찾기 위해 계속 끊임없이 생각하고 노력하는 것이다. 마치 "소프트웨어를 어떻게 하면 고장 나게 할까?"라고 연구하는 것처럼 소프트웨어 테스트를 진행해야 한다.
댓글
댓글 쓰기