brunch

You can make anything
by writing

C.S.Lewis

by Ruth Hyojin Nam Dec 06. 2023

소프트웨어 품질 관리자의 역할



소프트웨어 테스팅을 수행하는 포지션에는 각각의 활동과 임무에 따라 여러 단계의 역할로 나눌 수 있습니다. QA, 테스터, 소프트웨어 테스트 엔지니어 등 담당하는 직무에 따라 명칭을 달리 사용하고 있습니다. 그러나 각각의 역할을 수행하는 인원 모두 ‘품질을 검증하고 관리하는 전문가’ 입니다.


명칭을 어떻게 사용하느냐에 대해서는 전문가들마다 견해가 다릅니다. 누군가는 테스터나 QA나 같은 직무를 수행하는 사람이니 무엇으로 불리든 상관없다고하고, 누군가는 테스트 인프라스크럭처에 포커스를 두고 소프트웨어 테스트 엔지니어로 부르는 것이 맞다고하고, 또 다른이는 QA는 소프트웨어를 테스트하지 않고 프로세스의 품질을 검증하는 역할자로 테스터와 구분하여 불리어야 한다고 말하는 이도 있습니다. 이건 각자의 견해에 따라 정의와 주장이 달라질 수 있어서 판단은 글을 읽는 여러분께 맡기겠습니다. 




다만 여기에서 말하고 싶은 것은, 담당하는 활동과 임무에 따라 명칭을 분류하며 본인의 역할을 현재 하고 있는 활동에 제한하여 직무상의 한계를 스스로 정하고 그 바운더리를 넘어가지 않을려고 하지 말고, ‘품질을 검증하고 관리하는 직(職, Positions)’을 담당하는 전문가로서 모든 활동과 임무를 아우를 수 있는 지경에 이를때까지 도전과 성장을 도모하고 자기 개발하는 것을 멈추지 않는 것이 중요하다는 것을 말하고 싶습니다. 


실제로 현장에서 이런 경우를 접할 기회가 많습니다. 특히 직무에 따라 조직별로 계급이 구분되어있는 회사의 경우(ex_QA는 본사/테스터는 지사로 조직이 구분) 테스트 케이스를 작성하고 실행하며 결함을 보고하는 역할은 테스터가, 테스터를 관리하고 품질상태를 평가하고 프로세스 준수를 심사하는 역할은 QA로 임무가 나뉘어있습니다. QA는 테스터가 QA의 역할을 침범하는 것을 허용하지 않고 테스터는 스스로 본인의 활동을 테스트 케이스를 작성하고 수행하는 것에 제한하고 그 이상의 품질 관리는 고려하지 않으려고 하는 것을 볼 수 있습니다. 




직무의 바운더리가 명확히 구분되어있는 경우 품질을 확보하고 향상하기 위한 노력에도 어느정도 직무상 제동이 걸리는 것은 불가피합니다. 테스트를 직접 수행하는 테스터가 표면상 경험되는 프로세스의 문제점을 QA는 캐치하지 못할 때도 있습니다. 이런 상황에서 일부 테스터는 본인의 직무 바운더리를 넘어서는 역할에 대해서는 무시하거나 또는 개선하고자 하는 시도를 포기하거나 또 다른 경우 개선 방향에 대한 의견을 적극 제시해보지만 QA에서 의견이 묵살되버리는 경우가 발생되기도 합니다. 


이런 방식의 조직 운영은 개인의 성장, 조직의 성과, 프로젝트의 성공, 제품의 품질 향상 어디에도 도움이 되지 않습니다. 개인의 능력이 성장되면 조직의 성과에 밑거름이 되고, 조직의 성장은 관리되는 제품의 품질에도 영향을 미치기 때문입니다. 




직무의 바운더리를 구분하기보다 인원이 보유한 역량과 수준에 맞추어 단계적으로 임무를 밟아올라가는 방식으로 관리된다면 보다 긍정적인 효과를 기대할 수 있을 것입니다. 

그런 관점에서 각 역할별 활동과 임무에 대한 정의를 살펴보겠습니다. 자신이 현재 위치한 포지션과 다음 단계로 성장하기위해 필요한 것이 무엇인지 확인해서 빌드업 하는 노력이 필요합니다.




테스터 (TE or Tester)  테스터는 테스트 리더의 테스팅 수행 계획 지침에 따라 사용자의 입장과 개발자의 입장에서 기획/개발 명세서를 바탕으로 테스트 케이스를 설계하고 테스트를 실행하는 역할을 수행합니다. 일부 테스터는 반복된 테스트에 대해 자동화 스크립트를 구현하는 업무도 함께 수행하기도 하지만, 일반적으로 자동화 관련 업무는 별도의 소프트웨어 테스트 엔지니어 전문가 조직으로 구성되어 있습니다. 


테스터의 역할과 임무

        테스트 계획을 수립하고, 테스트 투입 리소스를 산정한다.      

        기획/고객 요구사항/개발 명세서를 분석하여 테스트 케이스를 작성한다. 테스트 케이스 작성시 많은 케이스를 작성하기보다, 테스트 목적을 고려하고 테스트할 제품에서 가장 중요한 요소가 무엇인지 식별하여 그 속성을 만족시킬 수 있는 시스템의 핵심 역량을 검증하는데 초점을 두고 작성한다.      

        테스트 계획과 목적에 맞는 테스트를 수행하며 이슈 및 테스트 결과를 기록하고 보고한다.      

        테스트 중 확인된 수정 및 개선 의견은 제품 관련자에게 전달한다.       

        다른 인원이 작성한 테스트 케이스에 대한 리뷰를 진행하고 검토한다.      

        시스템 아키텍처를 분석하고 검토하여 계획되어 있는 내용과 설계상 불일치하는 부분을 확인하고 수정 및 개선 의견을 전달한다.      

        테스트 실행을 위한 데이터를 준비한다.       

        테스트 지원 도구를 사용하여 비기능 테스트를 수행한다.(성능, 네트워크, API 등)      

        결함 발견 및 보고, 종료시까지 이슈를 추적 관리한다.  

테스트 결과 및 데이터를 기반으로 결함을 분석하고 문서화하여 보고한다. 테스터가 작성한 분석결과는 전체 제품에 영향을 미치는 수준이어야 한다.




QA(Quality Assurance)  일반적으로 QA에는 QC(Quality Control)과 QM(Quality Management)의 역할을 포함하고 있습니다. QA는 제품 또는 서비스가 필요한 수준 이상의 품질을 달성했는지 평가하고(QC), 제품이 품질 요구사항을 충족한다는 확신을 제공하고 품질을 보장하기위해 품질 관련 프로세스 및 절차를 정의하고 개선하며(QA), 품질 목표를 달성하기 위한 품질 보증 활동을 계획하고 실행하여 최종적으로 품질을 판단하는 시스템을 보장하는 업무를 수행합니다(QM). 


QA 역할과 임무

        품질 보증 활동의 계획을 수립하고 프로젝트 관련자와 합의 및 조정한다.      

        품질 관련 프로세스, 기준, 절차를 정의하고 개선하며 평가한다.      

        테스트 활동을 모니터링하고 제어하는 역할을 수행하고, 진행 중 발생되는 문제 상황을 조정하고 보완한다.      

        테스팅 전략, 품질 특성(기능성, 효율성, 신뢰성 등), 리스크 요소, 테스트 범위, 품질 목표 수준을 수립한다.      

        품질 달성 평가, 테스트 진척상황 측정, 테스트 활동 품질 측정을 위한 지표를 도입한다.       

        품질에 대한 최종적인 판단 및 개선을 수행한다.      

        테스터의 역할과 임무가 기본으로 존재한다.      




소프트웨어 테스트 엔지니어(SET(Software Engineer in Test) 또는 SDET(Software Development Engineer in Test))  품질 관리 조직 내에서 테스트와 관련된 개발 활동을 수행하는 전문가 조직입니다. 조직이 세분화 되어있는 경우, 화이트박스 테스팅 / 자동화 / 시스템 성능 측정 / 테스트 조직에서 사용하는 운영툴 또는 품질 매니징 시스템(Quality Management System) 등의 프로그램을 개발하는 조직으로 운영됩니다. 소프트웨어 테스트 엔지니어는 ‘개발자'이지만, 소프트웨어 엔지니어와의 차이점은 시스템 또는 소프트웨어 아티팩트에 포커싱을 둔 품질 검증 및 향상과 테스트 효율화를 목표로 품질에 관한 서비스 개발을 수행하고 테스트 기능을 제공한다는 차이점을 가지고 있습니다. 


소프트웨어 테스트 엔지니어의 역할과 임무

        모듈 및 기능 레벨의 코드 테스팅을 수행한다.      

        소프트웨어의 테스트 가능성을 개선하기 위한 코드 품질을 검증한다.      

        코드의 구조를 조정하여 단위 테스트가 가능하게 프레임워크를 작성하고 자동화한다.      

        반복된 기능 테스트의 효율화를 위해 자동화를 설계 및 구현한다.      

        컴포넌트나 시스템 성능을 측정하고 개선 또는 시정 사항에 대한 의견을 전달한다.      

        품질 매니징 시스템 등 품질 관리를 위한 소프트웨어를 개발한다.       




직무 바운더리로 조직을 구분하여 운영하기에는 조직 관리 비용을 무시할 수 없습니다. 소규모 회사에서는 QA 1명에게 기대하는 역할이 테스터~소프트웨어 테스트 엔지니어까지 모든 임무를 수행할 수 있는 인력을 선호합니다. 사실 직무에 따라 분리해야한다면 역할별 독립성을 부여하는 것이 가능하지만, 테스터~소프트웨어 테스트 엔지니어까지 어느것 하나도 품질 보증 활동에 포함되지 않는 활동이 없습니다. 


각 역할 전문성의 기술/경험/역량을 하나씩 쌓아 올려 소프트웨어 테스트 엔지니어 단계까지 지속적으로 성장한다면, 품질 보증 전문가로서 비전은 충분히 낙관적일 수 있을 것입니다. 


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari