얼마전 후배로부터 이런 문의를 받았습니다.
회사에서 QA 채용을 위한 프로세스에 사전 과제와 필기 전형을 진행하고자 하는데 어떻게 진행하면 좋을지? 어떤 과제나 필기 문제를 내면 좋을지? 어떤 내용들이 들어가야 되는지? 하는 문의였죠.
그에대한 답변을 하고보니..브런치를 찾는 분들께도 도움이 될 수 있을 것 같아 글을 옮겨와 봅니다.
Q. 과제나 필기 전형을 진행하는 시기
A. 과제의 경우, 일반적으로 온라인으로 진행하게되고 경우에 따라 아래와 같이 진행됩니다.
1) 지원서류 제출시 과제 결과물을 함께 제출하도록 해서 서류전형에 포함하여 심사를 진행하거나,
2) 1차 서류통과 한 인원에 대해 면접전 과제를 내어주고 그에대한 결과물을 받아 1.5차~2차 전형으로
진행하게됩니다. 여기서 Pass하면 면접전형으로 진행되는 거죠.
필기 전형의 경우, 대게 오프라인으로 진행되고
1) 1차 서류심사 후 통과된 인원에 대해 면접 당일에 인터뷰 직전 필기 전형을 병행 진행하거나,
2) 면접을 n차로 나뉘어 1차 또는 2차 면접에서 필기 전형을 진행합니다.
(1차 필기 → 2차 면접 OR 1차 면접 → 2차 필기)
추가로,
과제와 필기 전형을 둘다 진행하는 경우도 있는데요. 이런 경우 대게, 위 케이스에서 과제 1)번과 필기 전
형 1)번 순으로 진행하는 것이 일반적입니다.
Q. 과제나 필기 문제에 포함되는 내용과 예시
A. QA 채용에서 과제는 대부분 'TC 작성 + α' 로 진행됩니다. α에는 테스트 계획, Test Scope 등이 포함될 수 있습니다. (참고로, 여기서 말하는 QA채용은 성능이나 자동화 등 기술부서를 제외한 기능QA 또는 SQA에 한정합니다.)
제출용 과제의 범위는 너무 광범위 한 것보다 특정 케이스나 한가지 상황에 집중해서 결과물을 산출 할 수 있도록 범위를 지정해주는 것이 좋습니다. 범위를 한정하는 것이 채용하는 입장에서도 해당 인력의 역량을 쉽게 파악하는데 좋은 방법이 될 수 있습니다. 예를들어, 모바일앱 플랫폼에 한정한 과제를 선정했다면 앱이 가지고 있는 공통적인 특성을 잘 알고 있는 인력이라면 과제로 낸 문제 이외에 애플리케이션 버전별로 업다운 그레이드 테스트까지 포함해서 test scope을 선정할 수 있는 역량을 보유했는지 확인해볼 수 있습니다.
[과제 예시]
회사에서 서비스하는 플랫폼의 주요 기능 중 하나(ex)로그인, 결제 등)를 선택하여 유저 시나리오로 TC 작성
상태전이가 있는 기능 또는 경계값에서 발생되는 오류가 많은 기능을 선정하여 테스트 설계기법을 활용한 전략적인 테스트가 가능할 수 있는 test case를 설계하는 능력을 보유한 역량 확인
사내에서 발생된 특정 케이스나 프로젝트 진행 중 확인된 실제 사례가 있다면 해당 케이스를 예시로 과제를 제시하여 테스트 수행 계획을 세우고 test scope을 지정하고 test case를 작성하게하여 실무 대응 능력을 확인
필기 전형은 QA가 공통으로 가져야 할 '소프트웨어 테스팅 전문 지식과 실무에서 발생할 수 있는 상황에 대한 대응 능력, 트러블슈팅에 대한 대처, 지원자의 QA 직무에 대한 업무가치관과 철학' 등 전문 지식과 채용하는 부서에 해당하는 실무 경험(ex) 모바일앱을 테스트 하는 부서의 경우 모바일에 집중된 경험치와 지식을 확인할 수 있는 용도로 문제를 준비)을 두루 확인할 수 있는 내용으로 문제를 선정하는 것이 좋습니다.
특히 문제를 선정할 때, 관리자 입장에서 먼저 어떤 인력으로 채용이 되었으면 하는지..지원자의 주 역량을 희망 목표로 두고 해당 역량을 보유한 지원자를 캐치하기위한 문제로 선정하는 것이 좋습니다. 추가로, 역량별로 파악하기 위해서 각 문제마다 "검증 항목"을 미리 지정해두면 누락되거나 불필요하거나 또는 역량을 체크하기 위한 목적을 파악하는데 도움을 받을 수 있습니다. (ex) 검증 항목: 소프트웨어 테스팅 도구 선택 능력 확인을 위한 문제)
[필기 전형 문제 예시]
*QA 공통 전문 지식 문제 예시
1. 프로젝트에 제약을 가하는 3가지 요소로 묶인것은? (검증 항목 : 소프트웨어 공학 기본 이론)
1) 과정, 비용, 제도
2) 행정, 법규, 일정
3) 품질, 비용, 일정
4) 일정, 시간, 비용
5) 인력, 환경, 관리
[정답: 3
설명: 프로젝트에 가장 제약을 가한다는 의미는 프로젝트에서 가장 중요하게 생각 해야하는 부분을 말합니다. 즉 프로젝트의 성공 여부를 결정하는 중요 요소라고 할 수 있죠. '일정, 비용, 품질'은 프로젝트의 성공 요소라고 바꿔서 말할 수도 있습니다. 일정 내에 완성하고 계획된 비용 내에 완성하며 품질이 예상대로 만족된 프로젝트는 성공했다고 할 수 있습니다.]
2. 보기에 제시된 소프트웨어 개발 단계를 순서에 맞게 나열하시오.(검증 항목 : 소프트웨어 공학 기본 이론)
보기 : 구현, 설계, 요구 분석, 계획, 유지 보수, 테스트
[정답: 계획→요구 분석→설계→구현→테스트→유지 보수]
3. 살충제 패러독스(Pesticide paradox)를 설명하고 이를 해결 할 수 있는 방안을 제시하시오. (검증항목 : 소프트웨어 테스팅의 일반적인 원리)
[정답]
개념 : 동일한 테스트 케이스로 동일한 테스트를 반복적으로 수행하면, 나중에는 더 이상 새로운 결함을 찾아내지 못한다는 원리
해결 방안 : 1) 테스트 케이스의 주기적인 개선-시스템에 잠재된 보다 많은 결함을 발견하지 위해 테스트 기법을 다른 모듈이나 다른 시각에서 재적용하고 지속적으로 리뷰하여 개선
2) 경험 기반 접근 : 탐색적 테스팅, Ad-hoc 등의 경험 기반 접근법을 통해 새로운 테스트 케이스를 지속적으로 추가
* 모바일앱 테스트 또는 실무 능력 확인용 문제 예시
1. 모바일 어플리케이션에서 제공하는 장보기 기능은 사용자가 장보기 목록을 작성해서 스마트폰에 저장할 수 있게 해주며, 동시에 최대 3개의 목록을 저장할 수 있게 해준다. 각 목록에는 최대 50개의 품목을 저장할 수 있다. 다음 중 경계값 분석 기법을 활용할 경우 100% 커버리지 달성을 위한 최소한의 테스트 세트는 무엇인가? (검증 항목: 소프트웨어 테스트 설계 기법의 적용)
1) 47개의 품목으로 구성된 목록
2) 0개, 1개, 50개, 51개의 품목으로 구성된 목록 & 0개, 1개, 3개, 4개의 저장된 목록
3) 0개, 25개, 51개의 품목으로 구성된 목록 & 3개의 저장된 목록
4) 0개, 12개, 58개의 품목으로 구성된 목록 & 0개, 3개, 7개의 저장된 목록
[정답:2
설명: 1은 저장된 목록 조건을 고려하지 않고, 품목 조건의 비 유효값을 고려하지 않기 때문에 틀리다. 3은 저장된 목록 조건에 대한 커버리지를 달성하지 못하기 때문에 틀리다. 4는 동등 분할 커버리지를 달성하지만, 경계값을 충족하고 있지는 않다.]
2. 마케팅 부서로부터 앱 최초 다운로드 이후 이탈률이 높다는 정보가 들어왔다. 뿐만 아니라 많은 사람들이 어플리케이션을 다운로드한 후 실제 사용하지도 않은 것으로 보인다. 가장 핵심적인 이유는 낮은 성능이라고 판단되며 이 때문에 사람들이 어플리케이션을 포기하는 것으로 보인다. 문제의 진의를 판단하기 위해서 어플리케이션의 어느 부분에 초점을 맞춰 테스트하는 것이 필요한가? (검증 항목: 소프트웨어 테스팅 전략 수립)
1) 사용자 인터페이스 지연
2) 불규칙적인 성능
3) 자원 활용
4) 어플리케이션이 시작하는데 걸리는 시간
[정답: 4
설명: 사람들이 다운로드 후 사용하지 않는 것으로 보아, 다운로드하고 최초 실행하는 데까지 너무 많은 시간이 걸리는 것이 원인일 수 있다. 진짜 문제가 그것이 아니라고 할지라도 테스트 중 가장 먼저 확인해야 하는 부분임에는 틀림없어 보인다. 1과 2는 사용자가 소프트웨어를 사용하지 않고 있으므로 이런 문제를 겪어보지 못했을 것으로 생각되기 때문에 정답이 아니다. 3은 4의 원인일 수 있다.]
3. 결정/조건 커버리지의 개념을 설명하고, 다음과 같은 코드가 있을 경우 결정/조건커버리지를 100% 달성하려면 어떻게 해야하는가? 또한 테스트케이스는 어떻게 작성하는가? (검증 항목: 테스트 커버리지) 1: IF ((X > 1) AND (Y==1))
2: Z = Z / X
3: END
4: IF ((X==2) OR (Z>1))
5: Z = Z+1
6: END
[정답: 결정/조건 커버리지란, 각 개별조건들의 참(true)과 거짓(false)을 모두 커버하고, 전체조건식의 참(true)과 거짓(false)을 모두 커버될수 있도록 테스트케이스 만드는 방법이다.
[테스트케이스 작성]
TC1 : (X=2,Y=1,Z=4), TT
TC2 : (X=1,Y=2,Z=0), FF]
추가로 개인적인 의견이나,
과제나 필기전형을 진행할 경우 채용하는 인력의 보유 경력 연차를 고려하여 문제를 달리 제시하는 것이 좋습니다. 10년차 이상되는 시니어 엔지니어에게 (신입채용에 사용되는 과제와 동일한) 로그인 프로세스에 대한 TC를 작성하게 하는 것보다 해당 년차가 보유한 역량 중 회사 입사시 활용할 수 있는 역량에 중점을 두고 해당 업무를 수행할 수 있는 능력을 보유하고 있는지+해당 연차가 보유해야할 능력을 실제 보유하고 있는지 검증할 수 있도록 과제(ex)프로세스 수립이나 개선 방안을 확인하는 문제 등)를 제시하는 것이 바람직합니다.
Q. 과제 제출시 번외로 포함되어야 할 내용
A. 과제 제출시 결과물의 양을 정해주어야 하는지?와 같은 질문도 있었는데요. 이건 관리자의 선택에 따른 부분이라 "반드시 이렇게 해야한다"라는 기준은 없습니다. 저의 경우, 특별히 과제양에 대한 제한은 두지 않고 자유롭게 결과물을 작성하도록 하는 편입니다. 제한을 둠으로 인해서 오히려 틀에 갇혀서 지원자의 역량을 제한하는 것이 지원자에게는 아쉬움이 될 수 있고, 채용하는 입장에서는 지원자의 충분한 역량을 확인 할 수 있는 기회를 빼앗을 수 있다고 생각하기 때문입니다.
(but, 지원자 입장에서 유도리를 발휘해서 3~4장 수준으로 스스로 한계를 둘 수 있다면 좋겠지요?)
이 외 번외로 했던 질문에 외부 노출에 대한 경고나 안내도 있어야 할까?에 대해서도 문의를 주었는데, 이건 당연히 포함하는 것이 좋습니다. 외부로 유출될 경우 채용 담당자는 채용시마다 과제나 필기문제를 바꿔야 하는 불편이 생길 수 있고, 지원자 입장에서는 외부 유출로 인해 채용이 취소되거나 응시자격이 박탈되는 등 불이익이 생길 수 있습니다. 또 해당 기업에 채용을 희망하는 인원들 중 외부 유출로 인해 지망생 간에 불평등이 발생될 수 있어서 외부 노출에 대한 경고나 안내는 반드시 표기해주는 것이 좋고 노출될 경우 대응방안에 대해 사내 법무팀이나 상위 관리자를 통해 사전에 규정을 마련해두는 것이 좋습니다.