QA와 QC의 필요성과 테스트케이스의 방향이란?
안녕하세요
웹 혹은 앱을 개발하며 테스트를 진행할 때 개발자가 테스트를 진행하면 안된다고 많이 들어왔습니다.
그 이유인 즉슨 개발자가 개발을 하게 되면 해당 기능을 회피 혹은 통과하는 법을 알고있어서 테스트가 정상적으로 이뤄지지 않는다고 들었습니다.
실제 실무 개발직군에서 QA와 QC직군의 필요성이 궁금합니다.
또한 스타트업이나 중소기업처럼 QA와 QC 부서가 없거나 체계가 잡혀지지 않은 상황에선 테스트 케이스를 어떤식으로 정하여 진행하는 것이 좋은지 궁금합니다.
읽어주셔서 감사합니다.
안녕하세요. 현직 개발자로 활동중인 검붉은거위203입니다.
Q1. 웹 혹은 앱을 개발하며 테스트를 진행할 때 개발자가 테스트를 진행하면 안된다고 많이 들어왔습니다.
그 이유인 즉슨 개발자가 개발을 하게 되면 해당 기능을 회피 혹은 통과하는 법을 알고있어서 테스트가 정상적으로 이뤄지지 않는다고 들었습니다.
질문주신 내용은 아니지만, 위 부분에 대해서 말씀드리겠습니다.
엔터프라이즈 환경에서 개발을 할 땐 개발과 동시에 테스트코드 작성이 일반적입니다. 테스트코드 역시 개발자가 작성하며, 테스트 코드 작성의 의의는 다음과 같습니다.
예측가능한 테스트 진행. (ex. 설졍 변경시 db update 호출이 1번 되는가?)
협업하는 다른 분들이 코드변경분에 대해 이해하기 쉬워짐.
이후 유지보수시에 의도치않게 변경되는 것 방지 (ex. 1년 정도 후에 부가적인 기능개선을 위해 다른 작업자가 일부 수정하였는데 기존에 작성해둔 테스트코드 실패시, 테스트코드의 의도 파악 후 잘못 변경함을 인지 가능)
(개인적으로는 위 3번이 현업에서 제일 중요한 의의인 것 같습니다. 본인이 작성한 코드도 한 달 뒤면 새롭기 때문에..)
그 외에도 테스트코드 작성을 우선적으로 하는 TDD(테스트 주도 개발) 에 대해서도 찾아보시면 도움이 되실 것 같습니다.
또, 개발자 역시 QA진행전에 일반적인 기능테스트는 진행하며, 필요시에 성능테스트도 진행합니다.
Q2. 실제 실무 개발직군에서 QA와 QC직군의 필요성이 궁금합니다.
실무 개발시에는 새로운 기능 추가나 큰 기능개선이 있을 때 QA직군에 요청 후 협업하며 기능확인을 진행합니다.
QA과정은 기능 추가/개선 전에 필수적으로 필요합니다. QA만을 전문적으로 진행하는 직군이 있다면 해당 기능 테스트시에 다른 직군들의 피로도가 감소될 수 있습니다. QA직군이 없는 경우 기획자가 주도적으로 QA를 준비하기도 하며 그 과정에서 다른 일감에 쓸 수 있는 기획자의 리소스가 사용되게 됩니다.
Q3. 또한 스타트업이나 중소기업처럼 QA와 QC 부서가 없거나 체계가 잡혀지지 않은 상황에선 테스트 케이스를 어떤식으로 정하여 진행하는 것이 좋은지 궁금합니다.
해당 부서가 없다면 기획자가 주도적으로 혹은 기획자와 개발자가 함께 QA 목록을 작성하여 진행합니다. 이는 전문QA직군이 있을 때 보다는 효율적이지 않을 수 있지만, 기획 및 개발 단계에서 우려되는 사항들을 고려하여 빈틈없이 테스트를 진행할 수 있도록 작성합니다.
감사합니다.
안녕하세요. A-HA 프로그램 전문가 입니다.
QA와 QC 전문 인력을 개발자 분들이 참 싫어하긴 하죠ㅎㅎ
너무 해당 부분에 리소스를 과하게 투자하는건 안되겠지만 적당한 범위 안에서는 필요하다고 생각 됩니다.
그래야 예상하지 못한 시나리오에서 벗어난 오류나 버그를 찾을 수 있거든요.
체계가 없는 회사의 경우 개발자 분들이 서로 시스템을 바꿔가며 하거나 안하는 경우도 있습니다^^
보통 프로젝트를 진행하다 보면 분석 -> 설계 -> 구현 및 테스트 단계를 거치게 됩니다.
질문자님이 말씀하시는 단계는 구현 및 테스트 단계 일텐데 일반적인 프로젝트들은 구현 및 테스트 단계에서 단위 테스트 및 통합 테스트를 진행하게 됩니다.
단위 테스트의 경우 1차, 2차 즉 여러번의 검증을 거치게 되는데, 1차는 개발자 본인이 진행 할 수 있지만 2차 테스트 부터는 제3자의 테스트로 진행하게 됩니다.
그러면 본인은 통과할 수 있는 기능의 테스트도 개발에 참여하지 않은 다른 사람이 테스트 할 수 있기 때문에 걱정 하는 것처럼 테스트가 정상적으로 이루어지지 않는 경우는 적습니다.
그 후에는 여러사람이 함께 통합테스트를 진행하니 더더욱 그렇습니다.
따라서 우선적으로 테스트 시나리오 작성 시, 테스트 되어야 하는 기능이 빠지지 않도록 작성하여 본인이 아닌 다른이가 모든 기능을 확인 해볼 수 있도록 하는 것이 중요하겠습니다.