기본 콘텐츠로 건너뛰기

AI 시대, 테스터의 가치는 '비판적 사고'에서 결정된다.

과거의 소프트웨어 테스팅은 마치 명확한 지도 위를 걷는 것처럼 평온한 여정이었습니다. 정적인 코드를 검증하고, 입력에 따른 결정론적인 출력을 확인하며 결함(Defect)을 식별하는 일은 우리에게 비교적 예측 가능한 길을 보여주었습니다.  하지만 생성형 AI의 등장은 테스팅의 패러다임을 ‘고정된 지도의 검증’에서 ‘유동적인 행동(Behavior)의 관찰’로 완전히 바꾸어 놓았습니다. 이제 테스터는 마치 짙은 안개가 자욱한 은하계를 여행하는 히치하이커처럼, AI가 내놓는 불확실한 결과물 사이를 조심스럽게 통과해야만 합니다. 생성형 AI는 통계적으로 가장 그럴듯한 다음 토큰을 예측하는 확률적 모델입니다.이 ‘확률의 성단’ 안에서 우리 테스터들은 기존의 상식으로는 설명하기 힘든 태생적인 리스크와 마주하게 됩니다.  가장 당혹스러운 것은 바로 비결정론적(Non-deterministic) 특성입니다. 동일한 좌표(프롬프트)를 입력하더라도 매번 다른 목적지에 도착할 수 있는 이 특성은 테스트 결과의 재현성을 위협하며 우리를 깊은 혼란에 빠뜨리곤 합니다. 또한 AI는 사실이 아닌 것을 마치 진실인 양 속이는 할루시네이션(Hallucination)이라는 신기루를 만들어내거나, 논리적 단계에서 실패하는 추론 오류(Reasoning Error)를 범하기도 합니다. 이러한 현상들은 단순한 노이즈가 아니라, 테스팅의 타당성을 오염시키는 중대한 결함이라는 점을 우리는 잊지 말아야 합니다. 리스크 유형 정의 테스팅에 미치는 영향 비결정론적 특성 확률적 모델의 특성상 동일 입력에도 출력이 변하는 현상 테스트 결과의 일관된 검증을 방해하며 재현성을 어렵게 함 할루시네이션 존재하지 않거나 사실이 아닌 정보를 그럴듯하게 생성하는 현상 생성된 테스트 케이스나 요구사항 분석의 신뢰도를 근본적으로 실추시킴 추론 오류 논리적 단계나 복잡한 문제 해결 과정에서 발생하는 논리적 결함 테스트 설계 시나리오나 분석 과정에서 잘못된 인과관계를 제공함 데이터 편향 훈련 데이터의 편향이 결과물에 ...
최근 글

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

현대 소프트웨어 테스팅 아키텍처에서 생성형 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)" 역할을 합니다. 우리는 더 이상 코드를 작성하는 데 그치지 않고, 지능적인 에이전트들을 조율하고 지휘하는 시대로 나아가고 있습니다. 이 아키텍처의 혁명은 우리의 테스팅 방법론에 즉각적인 위기를 초래합니다. 동일한 입력에 대해 항상...