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