안녕하세요! 원티드랩 QA팀 김명관입니다. 안타깝게도 QA의 시간은 언제나 부족합니다. 그리고 기능 테스트는 아무리 해도 부족하다고 느껴지죠. 하지만 다행인것은 원티드랩은 참 좋은 테스트 문화가 정착되어 있습니다. 테스터, QA가 아닌 구성원 분들도 테스트에 관심을 가지고 있으며 언제든 필요하다면 테스트를 수행하기 위한 열린 마인드를 가지고 계세요. 원티드랩에서는 LaaS라는 생성형 AI 솔루션을 제공하고 있습니다. 이것을 이용해 시간이 부족한 QA와 테스트에 진심인 원티드랩 구성원 분들을 위해 '생성형 AI로 체크리스트를 만들어 낸다면 테스트에 필요한 시간이 많이 줄어들겠다!' 라는 생각을 하게되어 대략 2주 간 실험을 해보았습니다. 그 결과 나쁘지 않은 결과물을 받아볼 수 있었습니다. 물론 사람의 손으로 조금은 수정 작업이 필요했지만 그래도 이정도면 시간을 엄청 줄여주면서도 요구사항에 기반한 간단한 테스트 정도가 가능할 것 같았어요. 생성형 AI를 이용해 체크리스트를 만들어봤던 과정을 공유해볼게요! 실험 준비하기 원티드에서는 LaaS라는 생성형 AI 솔루션을 제공하고 있는데요, 저도 알고는 있었지만 한번도 사용해 본 적이 없었습니다. 막상 내부에서 사용되는 기획 문서를 기반으로 체크리스트를 만들려고 하다보니 걱정되는 것이 있었어요. 혹시 이 데이터가 학습되거나 외부에 유출되는 것이 아닌가 하는 것이었어요. 담당 PO님께 문의드린 결과 데이터가 학습되거나 유출되지 않으니 안심하고 많이 써달라고 하시더라구요! 😁 사용 권한과 기본적인 사용 방법에 대해 가이드 받고 본격적으로 시작을 준비했습니다. 1차 시도 1차 프롬프트 : {요구사항 내용} 위 내용에 대해 테스트를 위한 TC를 작성해줘 TC에 반드시 필요한 항목은 체크리스트, 기대결과야. 저는 이전까지 테스트 자동화, 업무 자동화 코드에 대해서 질문할때 AI를 사용해봤어요. 그러다보니 생성형 AI에게 좋은 질문을 하는 방법에 대해 잘 몰랐습니다. 따라서 당연히 좋지 못한 결과를 받게 되었습니다. 만족스럽지 못한 결과로 인해 추가로 이어지는 이런 저런 프롬프트들이 있었습니다. 체크리스트와 기대결과를 한 줄로 작성해달라거나 내용이 부족한 것 같으니 예외 케이스를 추가해달라거나 하는 내용이었습니다. 그나마 원하는 답에 도달하기 까지 7회 이상의 질문이 있었습니다. 이렇게 여러 번의 질문을 통해 답을 구했을 때의 단점은 동일한 요구사항과 프롬프트를 가지고 질문을 할 때마다 결과가 너무 달라져 버린다는 것이었죠. 가능한 고퀄리티의 프롬프트를 이용해 한 번의 질문으로 답변을 얻어내는 것이 좋겠다는 생각을 하게 되었습니다. 이렇게 얻어낸 1차 시도 결과에 대한 평가를 해보았습니다. 요구사항에 적혀있는 내용에 한해 아주 기본적인 테스트는 가능하다. 예외 케이스는 내용이 부족하다. 기존 기능, 정책, UI에 대한 고려가 되지 않았다. 1차 시도 결과 배운 것은 "AI에게 더 많은 정보를 주자!" 입니다. 2차 시도 1차 시도에서 배운 점을 적용하여 프롬프트에 더 자세한 내용을 알려주기로 했습니다. 작성되어 있는 요구사항에 애매한 표현과 중의적인 표현을 직접 상세하게 수정하여 작성했습니다. 그리고 요구사항으로부터 체크리스트를 도출하기 위해 필요한 기존 정책 등의 사전 지식을 프롬프트에 추가했습니다. ex) 버튼 클릭 시 모달 노출. -> 더보기 버튼 클릭 시 상세 페이지 모달 노출. 그리고 어떤 종류의 케이스가 필요한지도 작성하면 좋을 것 같아 해피패스 케이스, 예외 케이스, 엣지 케이스, 비유효 케이스, 비기능 요소에 대한 내용이 필요하다고 프롬프트에 추가했습니다. 더 상세한 정보를 AI에게 전달하니 체크리스트의 퀄리티가 확 올라가는 것을 느낄 수 있었습니다. 이후에는 추가적으로 프롬프트를 수정하기보다 제가 작성한 내용과 비교하는데 집중해도 될 정도였어요. 제가 작성한 내용과 비교하고 보니 체크리스트 내용은 꽤 비슷해서 놀랐지만 AI가 작성한 체크리스트의 수가 현저히 적다는 것을 알게 되었습니다. 그래서 이번에는 그 부분을 점검해 보았어요. 제가 AI에게 많은 정보를 전달했다 생각했지만 해당 요구사항으로 인한 영향범위나 사전에 미리 알고있어야 하는 지식들에 대해서는 정보가 부족했기 때문이었다는 것을 알게 되었습니다. 2차 시도 결과에 대해서도 평가해 보았습니다. 1차 시도 보다 요구사항을 상세하게 작성했지만 고려해야 하는 내용은 훨씬 더 많았다. 2차 시도 결과물로는 해당 요구사항에 대한 기본적인 검증만 가능할 것 같다. 요구사항에 없어도 점검이 필요한 부분 또한 프롬프트에 추가가 필요하다. 2차 시도 결과 배운 것은 "제품을 인수인계 하듯이 상세한 프롬프트를 작성해야 한다!" 입니다. 프롬프트의 중요성 2차 시도까지 하고나서 느낀점은 두가지였습니다. 가볍게 시도해봤는데 이거 진짜 제대로 해보면 가능성이 있겠다. 프롬프트가 진짜 중요하구나. 가능성을 확인했기에 프롬프트 엔지니어링에 대해 빠르게 학습을 시작했습니다. 프롬프트 엔지니어링에 대해서는 거의 백지였기 때문에 효과적인 기법들을 빠르게 실습해 볼 수 있었습니다. 3차 시도와 후카츠 프롬프트 3차 시도에서는 여태까지 사용했던 기법과 방법을 모두 사용했습니다. 거기에 더해 기본적으로 해당 요구사항을 테스트하기 위해 알아야할 사전 지식도 프롬프트에 추가했어요. 그렇게 결과를 받아보았고 꽤 만족할만한 결과물이 나오게 되었습니다. 다만 AI에게 기대 결과까지 작성해달라고 했더니 예외 사항에 대한 체크포인트는 잘 작성해 주었으나 기대결과를 마음대로 생각해버리는 바람에 엉뚱한 내용이 들어가게 되었어요. 따라서 저는 AI에게 기대결과는 작성하지 말아달라고 했습니다. 여기까지 프롬프트를 수정해서 받아본 결과물은 아주 마음에 들었어요. 가끔 엉뚱한 체크리스트가 있기는 했지만 그정도는 사람이 직접 보고 충분히 솎아낼 수 있어서 괜찮았어요. 체크리스트 항목들은 사람이 작성했던 내용만큼 풍부했고 고려해야 할 내용들을 충분히 고려하고 있었습니다. 오히려 QA 개인의 성향이나 지식의 한계로 고려하지 못한 내용들도 작성되어 나오는 것을 보고 감탄하게 되었습니다. 여기에 더해 프롬프트 엔지니어링을 학습할때 눈여겨뒀던 후카츠 프롬프트라는 기법을 사용해 보았습니다. 후카츠 프롬프트는 (프롬프트 알못인)제가 보기에 여러가지 기법을 동시에 활용할 수 있는 기법처럼 보였습니다. 후카츠 프롬프트 기법을 사용해본 결과 그 전보다 더 정리되고, 정제된 체크리스트를 받아볼 수 있게 되었습니다. 그리고 그것은 실제로 약간의 터치만 거친다면 테스트를 수행할 수 있을 정도로 작성된 체크리스트였습니다. 마무리 AI로 체크리스트를 만들어 보는 것은 동료분들의 시간을 절약해드리고 싶어 시도해본 것이었습니다. 나중에는 AI가 보여준 가능성 때문에 제가 재미있어서 푹 빠져 하게 되었지만요. 어쨌든 실무에 적용할 수 있을 정도의 결과물이 나와서 너무 뿌듯했습니다. 저도 그전까지 러프하게 사용해왔지만 업무에서 생성형 AI의 도움을 아주 많이 받아오고 있었습니다. 앞으로는 더 많은 사람들이 더 많은 도움을 받을거라 생각합니다. 그리고 많은 업무들이 AI에게 맡겨지고 대체되겠죠. AI를 이용해 체크리스트를 작성할 수 있다는 가능성을 보아 기쁘기도 하지만 이럴수록 인간으로서의 QA 능력이 더욱 빛을 발해야만 하는 시기가 오고 있다고 생각됩니다!