기본 콘텐츠로 건너뛰기

테스터의 새로운 언어, 프롬프트 엔지니어링

현대 소프트웨어 테스팅 아키텍처에서 생성형 AI는 단순한 도구(Tool)를 넘어 테스터의 '생각하는 파트너(Thinking Partner)'로 진화했습니다. 이제 테스터의 역량은 테스트 케이스를 직접 작성하는 기술을 넘어, AI 활용능력 프레임워크가 정의하는 세 가지 상호작용 방식—자동화(Automation), 증강(Augmentation), 그리고 에이전트(Agency)—을 얼마나 능숙하게 오가는가에 따라 결정됩니다. 단순히 테스트 케이스 하나를 생성하는 '자동화'를 넘어, AI와 함께 엣지 케이스를 브레인스토밍하는 '증강', 그리고 특정 보안 가이드라인을 준수하는 AI '에이전트'를 CI/CD 파이프라인에 배치하는 단계로 나아가기 위해 프롬프트 엔지니어링은 테스터가 반드시 익혀야 할 새로운 설계 언어입니다. 프롬프트는 단순한 명령어가 아닌, AI의 출력을 제어하는 구조적 설계물로 정의할 수 있습니다. 특히 시니어 아키텍트는 일관성 있는 결과를 위해 시스템 프롬프트(System Prompt)와 사용자 프롬프트(User Prompt)를 명확히 구분해야 합니다. 시스템 프롬프트는 AI의 전체적인 가이드와 퍼소나를 담당하며, 사용자 프롬프트는 개별 테스트 작업의 컨텍스트와 지시를 담당합니다. 구성 요소 정의 및 역할 아키텍처 설계 전략 (예시) 역할 (Role) AI에게 부여하는 특정 전문 퍼소나 [System] "너는 ISTQB 표준을 준수하는 10년 차 시니어 테스팅 아키텍트야." 제약 조건 (Constraints) 출력 형식, 범위, 비결정론적 행동 제어 [System] "반드시 Gherkin 형식으로 출력하고, 할루시네이션 방지를 위해 근거가 없는 테스트 데이터는 생성하지 마." 컨텍스트 (Context) 테스트 대상 시스템(SUT) 및 도메인 지식 [User] "대상은 MSA 기반의 실시간 금융 결제 모듈이며, ISO 25010 품질 모델을 기준으로 해....
최근 글

코드의 시대에서 행동의 시대로: AI 테스팅의 첫걸음

수년간 테스팅 현장을 지키다 보니 참 많은 변화를 목격하게 됩니다. 예전에는 검증해야 할 대상이 명확한 '코드'와 정해진 '기호'의 세계였다면, 최근에는 그 물결의 성격이 근본적으로 변하고 있다는 것을 피부로 느끼곤 합니다.  그래서 한동안 버리다시피 방치한 이 블로그에 잠시 우리가 마주한 이 새로운 기술적 패러다임과, 그 안에서 테스터가 가져야 할 마음가짐에 대해 제 개인적인 생각을 적어보고자 합니다. 누군가에는 도움이 되길 바라는 마음입니다. 우리가 과거에 다루던 SW는 명확한 논리 규칙(Logic rules)을 사용하던 시대였죠. 'A이면 B이다'라는 규칙이 명확했기에, 테스터의 역할도 그 규칙이 잘 지켜지는지 확인하는 데 집중되어 있었습니다. 하지만 이제는 생활의 일부가 되어버린듯한 생성형 AI(Generative AI)는 전혀 다른 차원의 존재입니다. 대규모 데이터셋의 패턴을 학습하여 사람과 유사한 콘텐츠를 만들어내는 생성형 AI는, 규칙이 아니라 '통계적으로 그럴듯함(Statistically plausible)'을 기반으로 답을 내놓습니다. 여기서 중요한 점은 '그럴듯해 보인다'는 것이 반드시 '정확하다'는 의미는 아니라는 사실입니다. 이제 테스터는 단순히 코드의 결함을 찾는 수준을 넘어, 맥락을 파악하고 일관성 있는 응답을 내놓는지, 그 과정에서 논리적 비약은 없는지 살피며 AI와 상호작용해야 합니다. 테스팅의 대상이 '딱딱한 규칙'에서 '유연한 행동'으로 넘어가고 있는 셈이지요. 이런 변화 속에서 제가 강조하고 싶은 개념은 단순히 도구 사용법을 익히는 숙련도가 아니라, 'AI 활용능력(AI Fluency)'입니다. 이는 AI를 단순한 도구가 아니라, 우리의 능력을 확장해 주는 함께 생각하는 파트너(Augmentation)로 바라보는 관점의 전환을 의미합니다. 테스터가 가진 날카로운 도메인 지식과 AI의 생성 능력이 결합...

음력 일정 만들기

요즘 세상에 음력 쓰시는 분은 거의 안계시겠지만.. 저나 제 부모님은 아직도 음력으로 생일을 보냅니다. 그런데, 애플 캘린더나 구글 캘린더에서는 음력으로 일정을 못만듭니다. 음력 날짜는 볼 수 있는데.. 음력 일정을 못만드니... 그래서 그냥 AI한테 하나 만들어 달라고 했습니다. 구글 캘린더의 경우 Calendar API를 활성화 시켜서 Client ID 와 API Key 가 있어야만 합니다. 귀찮으시면 그냥 ics 다운로드 받아서 업로드 하실 수 있도록 해놨습니다. 사용자 설명서도 들어 있고.. 구글 캘린더의 경우 특정 이벤트를 검색해서 삭제하는 기능도 들어 있습니다. 음력은 한국천문연구원 데이터라서 아마 잘 맞을 겁니다. 써보시고 혹시 뭔가 이상하면 알려주세요. https://murianwind.github.io/lunar-calendar/ 

AI 테스팅의 새로운 시대: 코드 중심에서 행동 중심으로의 전환

소프트웨어 개발의 근본적인 패러다임이 변화하고 있습니다. 과거의 소프트웨어는 예측 가능하고, 규칙에 기반하며, 결정론적으로 작동했습니다. 정해진 입력값에 대해 항상 동일한 결과를 내놓는 것이 품질의 기준이었습니다. 그러나 인공지능(AI)이 주도하는 새로운 시대의 시스템은 본질적으로 다릅니다. AI 시스템은 데이터를 통해 학습하고, 지속적으로 적응하며, 확률적으로 작동합니다. 이러한 아키텍처의 진화는 전통적인 소프트웨어 테스팅 방법론을 더 이상 유효하지 않게 만들었습니다. 결정론적 시스템을 위해 설계된 기존의 테스팅 패러다임은 확률적 행동과 지속적인 학습을 특징으로 하는 AI 시스템에 적용하기에는 역부족입니다. 소프트웨어 아키텍처의 발전만큼이나, 이제는 테스팅에 대한 접근 방식 역시 동등한 수준의 진화가 필요합니다. 이러한 변화의 핵심에는 아키텍처의 대전환이 있습니다. 과거의 시스템은 명시적으로 코딩된 논리에 따라 작동하는 결정론적 아키텍처(Deterministic Architecture)를 기반으로 했습니다. 개발자가 작성한 코드 경로를 따라 모든 기능이 정확하게 실행되었습니다. 그러나 현대의 시스템은 데이터를 통해 행동을 학습하는 확률론적 시스템(Probabilistic Systems)으로 진화했습니다. 단순히 프로그래밍된 대로 움직이는 것이 아니라, 방대한 데이터에서 패턴을 학습하여 예측하고 결정을 내립니다. 그리고 이제 우리는 그 다음 단계인 에이전틱 아키텍처(Agentic Architecture)의 부상을 목격하고 있습니다. 이는 자율적인 AI 에이전트가 애플리케이션을 이해하고, 추론하며, 상호작용하는 구조입니다. 이 에이전트들은 하드코딩된 로직을 대체하는 핵심적인 "추론 계층(Reasoning Layer)" 역할을 합니다. 우리는 더 이상 코드를 작성하는 데 그치지 않고, 지능적인 에이전트들을 조율하고 지휘하는 시대로 나아가고 있습니다. 이 아키텍처의 혁명은 우리의 테스팅 방법론에 즉각적인 위기를 초래합니다. 동일한 입력에 대해 항상...

구글 스프레드시트를 RSS 리더로 사용해보기

옛날부터 이메일로 RSS로 뉴스레터로 이런 저런 소식 받아보기를 참 좋아해서 지금도 계속 받아보고 있는데.. 세월이 지나니 영어 읽는 것도 좀 지치고.. 요즘같은 좋은 세상에 자동으로 번역이라도 되어서 편하게 볼 수 있으면 좋겠다.. 라고 생각만 하다가.. 요즘같이 생성형 AI로 이것 저것 쉽게 해보기 좋은 시절이 되어서.. 저도 한번 해봤습니다. 생성형 AI로 뚝딱 거리다가 구글 스프레드시트로 RSS 로 발행되는 내용을 자동으로 번역해서 메일로 보내주는 스크립트를 만들어봤습니다. 구글 스프레드 시트의 A1열에는 이 스프레드시트의 변경 시점을 입력 받고 B1에는 변경 내용을 입력 받게 했습니다. A2에는 RSS로 내용을 불러올 수 있게 QUERY(IMPORTFEED("RSS 주소", "items", TRUE), "SELECT * LIMIT 6") 이런 함수를 적었습니다. 한번에 너무 많은 내용을 불러오면 정신 없어서 제목 행 포함해서 딱 5개의 최신 내용만 불러오도록 설정했습니다. 그리고 저는 Title, URL, Date Created, Summary, 번역된 내용 이렇게 5개의 열만 사용할 거라서 가끔 어떤 사이트는 내용을 불러와보면 저자가 넘어오는 경우가 있는데 그런 경우에는  QUERY(IMPORTFEED("RSS 주소", "items", TRUE), "SELECT Col1, Col3, Col4, Col5 LIMIT 6") 이런 식으로 특정 열은 제외하도록 설정했습니다.  번역된 내용이 입력될 셀에는 아래 함수에 따라  TRANSLATE_TO_KOREAN(D7) 와 같은 함수를 입력하시면 됩니다.  각 RSS 사이트마다 딱 5개만 불러올거기 때문에 여러 사이트에서 내용을 불러온다면 이전 사이트의 밑에 함수로 사이트를 계속 추가만 해주시면 됩니다. 이제 내용은 준비되었고 불러온 내용을 번역해서 메일로 보내주는 스크립트입니다. 확장 프로그램에서 App...