들어가며
최근 업계에 생성형 AI가 도입되면서 소프트웨어 개발 과정에서 개발 품질을 유지하면서 생산성을 향상시킬 수 있는 새로운 방법을 제공하고 있는데요. 그에 반해 QA의 품질 활동의 생산성을 높이는 방법은 자주 언급되지 않는 것 같습니다. 일반적으로 QA의 품질 활동을 테스트로만 한정해서 자동화 테스트나 보고서 작성에 생성형 AI를 도입하려는 시도들이 주류를 이루고 있고, 전반적인 QA 품질 활동의 생산성을 높이는 방향으로는 다뤄지지 못하고 있는데요. 이 글에서는 생성형 AI를 활용해서 QA 품질 활동의 생산성을 높일 수 있는 방법을 이야기해 보고자 합니다.
LY에서의 품질 활동
QA(quality assurance)의 정의는 프로젝트나 서비스의 성격에 따라 그 역할과 범위를 다르게 정의할 수 있다고 생각합니다. LY에서의 QA 엔지니어는 프로덕트의 품질을 개선하기 위해 프로덕트의 개발 프로세스뿐 아니라 프로젝트의 프로세스 전반에도 관여하며 프로덕트와 함께 프로젝트의 품질을 향상시키는 역할을 담당합니다. 이를 위해 프로젝트 기획 단계부터 참여해 프로젝트 구성원들과 긴밀히 연계하며 리스크를 조기에 식별, 프로젝트를 성공적으로 릴리스할 수 있도록 돕습니다.
아래 그림은 프로덕트를 관리하기 위한 각 단계를 정의한 것입니다. 각 단계별로 어떤 품질 활동을 해야 하는지 나타냅니다.
일반적으로 기획과 개발 단계를 거친 뒤에 본격적인 품질 활동을 진행하는 것과는 달리 LY에서의 QA 엔지니어는 모든 단계에 걸쳐 품질 활동을 진행합니다. 따라서 과거보다 더 많은 품질 활동을 수행해야 하며, 이를 위해서 업무를 효율적으로 처리할 필요가 있습니다.
저희는 이런 도전적인 상황에서 생성형 AI를 활용해 전반적인 품질 활동의 생산성을 향상시키고 있는데요. 그럼 어떻게 생성형 AI를 적용하고 있는지, 어떻게 품질 활동의 생산성을 향상시키고 있는지 살펴보겠습니다.
생성형 AI 활용 방안 검토
생성형 AI를 활용할 때에는 가장 먼저 사내 보안 규정을 확인해야 합니다. LY에서는 ChatGPT를 인하우스 형태로 사용하고 있는데요. 사용자는 사내에서 제공하는 데이터 등급에 따라 개인 정보나 기밀 정보를 입력 데이터로 사용하지 않도록 보안 사항을 준수해야 합니다. 인하우스 ChatGPT 운영 측에서 이러한 민감한 정보가 외부로 유출되지 않도록 필터링도 함께 진행하고 있습니다.
다음으로 검토해야 할 부분은 생성형 AI의 한계점을 파악하고 활용 가능한 업무 범위를 파악하는 것입니다. 생성형 AI는 분석과 요약에 뛰어나지만 아직 그 결과를 항상 신뢰하기는 어렵습니다. 따라서 사람이 전혀 개입하지 않고 모든 과정을 생성형 AI에게 맡겨서 진행하기보다는 보조 수단으로 활용하는 것이 더 생산성을 높일 수 있습니다.
이제 생성형 AI를 품질 활동에 적용하기 위한 절차를 살펴보겠습니다.
품질 활동에 생성형 AI 적용 절차
먼저 위 '그림 1. 프로덕트 관리에서의 각 단계별 활동' 그림의 내용을 참고해 품질 활동 중 분석과 요약이 필요한 활동을 선별합니다. 이 부분은 생성형 AI가 가장 잘할 수 있는 부분으로 쉽게 도입해 큰 효과를 거둘 수 있습니다. 아래 표는 각 단계에서 생성형 AI를 활용해 볼 수 있는 품질 활동을 정의한 것입니다.
기획 | 개발 | 테스트 | 출시 |
---|---|---|---|
|
|
|
|
다음으로 각 단계의 품질 활동에서 범용적으로 사용할 수 있도록 프롬프트를 생성합니다. 이미 널리 알려진 프롬프트 작성 기법들을 활용하며, 대표적으로 역할 지정 기법과 형식 지정 기법을 중심으로 생성하는데요. 이 글에서는 프롬프트에 대해 상세히 다루지는 않고, 어떤 품질 활동에서 활용하는지 위주로 설명하겠습니다. 저희는 각 품질 활동의 목적에 맞게 아래와 같이 프롬프트를 생성했습니다.
- Plan advisor: 기획 문서 내용을 분석 및 요약하며, 사용자의 질문에 따라 다양한 형태로 결과물 출력
- Thread summarizer: Slack 스레드의 내용을 요약해 결정된 사항과 예상되는 문제점 및 액션 아이템 도출
- Test designer: 입력된 정보를 토대로 테스트 설계 및 도식화를 진행하며, 기본적인 테스트 케이스 도출
- Test helper: 입력된 버그 정보를 분석해 레이블을 추출하고, 추가 테스트가 필요한 경로 제시
- App reviewer: 다양한 언어의 리뷰를 한 번에 입력받아 원하는 형태로 통계를 만들고, 주요 이슈를 국가별로 요약
아래는 각 단계별 주요 품질 활동과 활용할 프롬프트를 연결해서 정리한 표입니다.
기획 | 개발 | 테스트 | 출시 | |
---|---|---|---|---|
품질 활동 |
|
|
|
|
프롬프트 |
|
|
|
|
프롬프트 생성까지 마쳤으면 각 단계별로 생성한 프롬프트를 적용하면서 품질 활동을 수행합니다. 프롬프트를 한 번만 수행한 뒤 그 결과에 만족하기보다는 보다 다양한 질문을 시도하면 보다 나은 결과물을 얻을 수 있습니다. 또한 그 결과물을 토대로 프롬프트를 개선해서 더욱 빠르게 보다 더 만족스러운 답변을 내놓을 수 있도록 지속적으로 관리합니다.
생성형 AI 활용 사례 소개
그럼 어떻게 품질 활동의 생산성을 향상시켰는지 실제 적용 사례를 살펴보겠습니다.
기획 문서 정리
기획 문서가 정형화된 구조가 아니거나 내용이 너무 복잡하고 방대할 때, 또는 업데이트가 자주 발생하는 경우 변경 사항을 추적하는 데 어려움이 많았습니다. 이전에는 QA 엔지니어가 직접 핵심 기능을 파악하고 각 업데이트별 변경 사항을 비교하고 정리해야 했는데요. Plan advisor와 같은 프롬프트를 이용해서 요약 정리 및 변경 사항 추적 시간을 줄일 수 있었습니다. 미리 정의해 놓은 구조화된 형식에 맞춰 출력해 줄 뿐 아니라 추가 대화를 통해 특정 부분에 대해서 다양한 형태로 정리해 볼 수도 있습니다.
아래 예시는 LINE Album에 적용된 줌 인/아웃 기능 관련 기획 문서의 변경 사항을 Plan advisor를 이용해 추적한 것입니다.
긴 글로 설명된 복잡한 사양을 다음과 같이 표나 차트 등 원하는 형태로 정리할 수도 있습니다.
현재 버전의 기획 문서뿐 아니라 참고할 만한 이전의 다른 기획 문서가 있다면 각 문서 내용 중 서로 영향을 미칠 수 있는 부분을 파악해 조기에 리스크를 식별하는 것도 가능합니다. 다만 이 경우 정보가 불충분하거나 생성형 AI의 Temperature 값이 Creative에 가깝다면 부정확한 답변(hallucination)을 내놓을 가능성이 커지기 때문에 생성형 AI의 답변을 검증할 수 있는 방안을 미리 생각해 둬야 합니다.
Slack 스레드 요약 및 분석
QA 엔지니어가 기획 초기 단계부터 참여한다고 해도 일부 기술이나 사양 논의는 기획자와 개발자, 또는 개발자와 개발자 사이에서 이미 진행한 후 QA 엔지니어에게 의견을 묻거나 검수 활동을 요청하는 경우들이 있습니다.
LY에서 사용하는 대표적인 커뮤니케이션 도구는 Slack이고 보통 이런 논의는 Slack에서 스레드 형태로 진행되는데요. 기획과 개발의 논의가 다 끝난 후 뒤늦게 QA 엔지니어가 해당 스레드에서 내용을 파악하려고 한다면 내용 파악에 많은 시간이 걸릴 수 있습니다. 또한 내용에 따라서 추가 질문을 해야 할 수도 있는데요. 이를 방지하기 위해서 매번 모든 스레드에 참여하거나 모니터링할 수도 있겠지만, 이는 그만큼 QA 리소스를 많이 소비할 것이기 때문에 현실적이지 않습니다.
이때 Thread summarizer와 같은 프롬프트를 이용해서 많은 양의 대화를 요약하는 방법을 사용할 수 있습니다. 생성형 AI를 결합한 형태의 요약 기능은 이미 많은 기업들이 적용하고 있는 좋은 사례 중 하나입니다.
아래 예시는 LINE Album 에 적용된 줌 인/아웃 기능 관련 스레드의 내용을 Thread summarizer를 이용해서 회의록 형태로 만든 것입니다. 이슈의 발의자와 스레드 요약 제목, 주요 논의 사항, 결론, 문제점은 물론 액션 아이템까지 도출했습니다(보안을 위해 참석자의 실명과 참조 URL 등 일부 민감한 내용은 삭제했습니다).
앞서 사례와 마찬가지로 대화를 통해서 좀 더 다양한 방향에서 추가로 질문을 더 해 볼 수도 있습니다. 특히, 테스트 관점에서 고려해야 할 부분만을 도출하거나 기존의 기획 사양과 비교해서 업데이트가 필요한 곳을 추적해 볼 수도 있습니다.
테스트 설계 및 테스트 케이스 도출
앞서 소개한 기획 문서 내용이나 스레드 요약, 또는 다른 생성형 AI의 대화를 토대로 생성형 AI를 활용해 새로운 테스트 케이스를 도출해 볼 수 있습니다. 이렇게 도출된 테스트 케이스의 품질이 높지 않은 것은 사실인데요. 주요 테스트의 흐름을 파악하고 테스트 케이스를 빠르게 만들기 위한 초안 문서로서는 적합합니다.
Test designer는 절차대로 사용자로부터 입력을 받아 마인드 맵을 만들어 도식화하고 기본적인 테스트 케이스를 도출합니다. 아래 예시는 LINE Album의 Green dot이라는 기능의 사양을 Test deisgner를 통해서 각 절차대로 수행해 마인드 맵으로 결과를 나타낸 것입니다(보안을 위해 일부 사양은 제외했습니다).
이후 QA 엔지니어에게 추가해야 할 케이스가 있는지 확인하고 필요하면 특정 케이스를 추가하거나 다시 이전 상태에서 도식화 작업을 진행할 수 있습니다. 아래 예시는 기획 사양과 도식화된 정보를 토대로 만든 테스트 케이스 초안입니다(실제로 사용하는 테스트 케이스와는 차이가 있으며 보안을 위해서 일부 케이스는 제외했습니다).
위 과정까지 완료되면 테스트 케이스를 JSON 형태로 익스포트해서 다른 테스트 플랫폼의 테스트 케이스 생성에 활용하거나 테스트 케이스 리뷰 활동을 통해 테스트 케이스를 더 보강할 수 있습니다.
한 가지 주의할 점은, 생성형 AI와의 대화를 통해서 경곗값을 분석하고 더 많은 데이터를 제공해서 테스트 케이스를 보다 정교하게 만들 수는 있는데요. 완벽하고 정확성이 높은 테스트 케이스는 직접 만드는 것보다 오히려 시간이 더 오래 걸릴 수도 있습니다. 따라서 사전에 생성형 AI의 도움을 받아서 만드는 테스트 케이스의 적정 품질 수준을 고민해 볼 필요가 있습니다.
버그 이슈의 성질 파악 및 탐색적 테스팅으로의 확장
등록된 버그와 그 특징을 파악해 자동으로 레이블을 추출하고 이전에 유사한 이슈가 있었는지 파악하는 데 활용할 수 있습니다. 그동안 버그의 특징을 다양한 필터 조건을 통해서 검출해 왔다면, 이제는 Test helper와 같은 프롬프트를 이용해서 과거의 유사한 이슈를 보다 쉽고 편리하게 찾아낼 수 있습니다. 또한 해당 이슈를 토대로 탐색적 테스팅에서 추가로 테스트할 경로를 제공받아 좀 더 질 높은 테스트를 진행하는 것도 가능합니다.
아래 예시는 LINE Keep 서비스의 다운로드 기능에 대해서 기존에 등록된 버그의 레이블을 추출하고 이에 기반해 추천 테스트 경로를 만들어 내는 과정 중 하나입니다.
이렇게 추천된 추가 테스트 경로는 이후 탐색적 테스팅에 곧바로 이어서 적용해 볼 수 있습니다. 추천받은 테스트 경로 중 테스트에 추가해 볼 만하다고 판단되는 것들을 확인하고 테스트 차터 (Test charter)에 추가하면 됩니다.
아래 예시는 탐색적 테스팅을 진행하는 과정으로, 빨간색 노드가 생성형 AI가 제안한 추가 테스트 경로입니다.
탐색적 테스팅의 단점은 경험이 적은 테스터의 경우 버그를 찾아내는 게 쉽지 않고, 설정한 테스트 경로도 버그를 찾아내기 적합한 경로인지 확실하지 않다는 것입니다. 이를 보완하기 위해서 페어 테스트 기법(pair testing)을 활용해 볼 수는 있습니다만, 그 렇게 되면 비용과 시간이 추가되겠죠.
아직까지는 생성형 AI가 페어 테스터만큼 효율적이지는 못하지만, 페어 테스터가 발견하지 못한 새로운 테스트 경로를 제안해 기존 대비 비용과 시간을 줄일 수 있습니다.
앱 리뷰 요약 및 분석
LY에서는 앱 리뷰를 다양한 방법으로 분석하고 있습니다. App Store나 Google Play에 올라온 앱 리뷰와 앱에 대한 SNS에서의 반응을 직접 살펴보기도 하고, 이런 리뷰를 가져와 분석 후 결과를 제공하는 사내 도구를 운영하며 활용하기도 하는데요. 이때 문제는 다양한 언어로 작성되는 리뷰의 내용을 쉽게 알기 어려워서 매번 언어별로 별도로 번역해야 한다는 점입니다.
하지만 이제 App reviewer와 같은 프롬프트를 이용해 다양한 언어가 섞인 리뷰 내용도 원하는 언어로 빠르게 번역할 수 있습니다. 이에 더해 리뷰를 긍정적인 리뷰와 부정적인 리뷰로 나눠 국가별로 분석하거나, 국가별 주요 이슈 현황에 대해서 태그 클라우드 형태로 정리해서 보는 것도 가능해졌습니다. 또한 기능 개선인지 기능 오류인지 등 리뷰의 성격도 구별할 수 있으며, 테스트 관점에서 어느 부분을 추가로 더 테스트해야 할지에 대한 의견도 얻을 수 있습니다.
아래는 아시아 주요 국가를 대상으로 LINE Album 서비스와 관련된 리뷰 내용을 수집해 분석한 내용의 예시입니다.
회고 정리
릴리스가 끝난 후 QA 품질 활동에 대한 회고를 진행합니다. 잘 진행한 부분은 계속 발전시킬 수 있도록 격려하는 한편, 개선이 필요하다고 판단된 건들은 추가 액션 아이템을 만들어서 실행하도록 합니다. 회고에서 오간 긴 대화를 앞서 소개한 Thread summarizer와 같은 프롬프트를 이용해 회의록 형태로 정리합니다.
마치며
이 글에서 말씀드린 방법 외에도 다양한 형태로 QA의 품질 활동에 생성형 AI를 도입할 수 있습니다. 주기적으로 작업하는 경우라면 자동화된 방법을 통해서 업무의 효율성을 더 높일 수도 있겠죠.
이와 같이 생성형 AI는 분명히 매력적인 생산성 향상 도구이지만, 정확성이나 보안과 같이 유의해야 할 사항도 존재합니다. 또한 무리하게 생성형 AI를 업무에 도입하다가 오히려 생산성이 떨어지거나 만족스럽지 않은 결과를 받게 될 수도 있고요. 따라서 생성형 AI를 도입할 때에는 아래와 같은 질문에 대해 스스로 답을 해 볼 필요가 있습니다. 이를 통해 보다 효과적으로 생성형 AI를 도입할 수 있을 것이라고 생각합니다.
- 현재 조직, 프로젝트 또는 서비스에서 요구되는 품질 활동들은 무엇인가?
- 그 품질 활동에 분석 요약과 같이 생성형 AI를 활용해 볼 수 있는 요소들이 있는가?
- 만약에 생성형 AI를 도입한다면 어느 수준까지 생성형 AI를 활용할 것인가?
- 이를 통해서 생산성이 향상될 수 있는가?
QA의 품질 활동에 생성형 AI를 도입 및 활용해 품질 생산성을 향상시킨 더욱 많은 사례들이 공유 되길 바라며 이만 마치겠습니다.