기본 콘텐츠로 건너뛰기

결함 심각도에 집착하지 마라.

한 택시회사가 있다.

그 택시회사에는 100명의 운전기사가 있는데 99명은 친절하고 1명은 불친절하다.

한 승객이 그 회사의 택시를 몇번 이용해 보았는데 매번 운전기사들이 너무 친절하여 단골이 되었다.

그러던 어느날 그 승객은 여느때처럼 이 회사의 택시를 불렀는데 하필 불친절한 운전기사의 택시를 타게 되었다.

그리고 그 승객은 다시는 그 택시회사의 택시를 이용하지 않게 되었다.

게다가 주변의 다른 사람들에게 그 회사의 택시가 불친절하다고 소문을 내게 되었다.

근래에 트위터 덕분에 쫄딱 망했다던 냉면가게 사건을 듣다가 생각나는게 있었다.

사람들은 대체로 아무리 긍정적인 경험이 많다고 하더라도 단 한번의 불쾌한 경험을 더 강렬하게 기억하는 경향이 있다.

이 불쾌한 경험은 그 회사 입장에서는 마치 주홍글씨처럼 따라 붙어다니는 족쇠가 되는 경우가 많다.

우리는 아이폰에 열광하는 수많은 사람들의 미사여구를 접하지만 그것보다 더 강렬하게 남아있는 기억은 아이폰 4의 핸드 그립으로 인한 통화 품질 저하인 것처럼 말이다.

이와 유사한 것이 블랙 스완이다.

모든 백조가 하얗다고 생각했지만 단 한마리의 검은 백조만으로 그 모든 가정이 와르르 부서져 버린것처럼..

소프트웨어를 테스트 하면서 이와 같은 일이 발생하는 경우가 심각도에 따라 결함을 처리하는 경우이다.

심각도는 결함에 대한 데이터를 가공할 때 가장 많이 사용되는 매트릭 중 하나이다.

우리는 심각도와 리스크에 따라 결함 수정의 우선순위를 정하기도 하고 심각도가 높은 결함을 더 많이 발견하기 위해 노력을 한다.

하지만 조금만 더 생각해보면 심각도란 무척이나 애매모호한 매트릭 중 하나이다.

심각한 결함과 아주 심각한 결함의 경계는 어디일까? 많은 회사들이 나름의 기준을 가지고 있지만 모두가 납득할 만한 기준이 많지 않다. 그리고 그러한 기준들은 새로운 유형의 결함이 발견될때마다 바뀌고 가이드라인은 점점 더 복잡해진다.

더 큰 문제는 결함에 대한 여러 관점 중 심각도에 조금 더 매진할 때 많은 테스터들은 심각도가 높은 결함을 더 많이 발견하기 위해 노력하게 되고 개발자를 포함한 모든 이해관계자는 심각도가 높은 결함에만 집중하는 경향이 생기게 된다.

이러한 경우 우리가 심각하다고 생각한 결함이 실제로 사용자에게도 심각한 결함이라면 문제가 없지만 만약에 사용자에게는 그 결함이 그다지 심각하지 않은 결함이라면? 문제는 커진다.

우리가 테스트를 하고 결함을 수정하는 과정에서 심각도가 낮다는 이유만으로 수정이 미뤄지고 결국에는 잊혀지는 결함이 생각보다 많다.

출시 일정을 정해 놓고 개발을 하는 우리 나라의 고질적인 개판 개발환경에서 많은 결함들은 수정 우선순위에서 밀려나고 결국 결함을 수정되지 않고 출시되는 경우가 많다.

이러한 경우 핑계는 그 결함은 심각도가 높지 않기 때문에 괜찮다는 것이다.

그리고 그 결함은 유지보수 단계에서도 쉽게 잊혀진다. 유지보수 단계에서도 수정의 우선순위가 높은 결함은 고객들이 회사에 보고하는 결함들 뿐 그렇지 못한 결함들은 정말 쉽게 잊혀지고 고쳐지지 않는다.

그러한 결함 중 어떤 결함은 언젠가는 회사에 아주 큰 손실을 가져다 줄수도 있는데 말이다.

심각도는 분명 아주 유용하고 필요한 매트릭임에는 분명하다.

하지만 테스터라면 결함에 대해 최소한 공평하게 대우를 해줘야 한다.

열손가락을 깨물어 아니 아픈 손가락이 없고 아무리 많은 자식이 있다 한들 누구만 이쁘고 누구는 이쁘지 않은 경우는 없다.

열손가락이라도다 쓰임새가 틀리고 많은 자식들 중에서도 누구는 좀더 이쁘고 누구는 좀더 미울수도 있지만 결국 모두가 소중한 것임에는 변함이 없다.

정해진 시간과 예산에서 효과적이고 효율적으로 소프트웨어를 개발하고 테스트하고 결함을 수정하기 위해서는 객관적인 기준이 필요하고 심각도는 그러한 기준  가장 유용한 기준임에는 분명하지만 결국에는더 중요한 결함과 덜 중요한 결함은 없는 것이다.

모두가 잊는다 하더라도 테스터만은 잊지 않고 해결되지 않은 결함을 일깨워주고 찾아내기 위한 노력을 게을리 하면 안된다고 생각한다.

나는 최소한 테스트를 수행할 때 심각도만 높은 결함을 찾기 위해 애쓰기보다는 좀 더 많은 다양한 결함을 발견하기 위해 애를 쓴다.

결함은 모두 소중하니까...

댓글

이 블로그의 인기 게시물

AI 에이전트의 환각과 프롬프트 폭증을 막는 '컨텍스트 엔지니어링(Context Engineering)'과 아키텍처의 미래

AI 코딩 에이전트나 생성형 LLM을 소프트웨어 개발에 접목하는 시도가 늘어나면서, 엔지니어들이 마주하는 가장 큰 기술적 병목 중 하나는 바로 '컨텍스트(Context)'의 관리입니다. 저 역시 최근 AI와 바이브 코딩(Vibe Coding)을 활용해 여러 프로젝트를 진행하고 있는데, 하나의 대화창(세션)을 오래 켜둔 채 작업을 계속 이어가다 보면 AI가 초기 맥락을 잊어버리거나 이전에 지켜달라고 했던 제약조건을 놓치며 실수를 저지르는 경우를 자주 겪곤 합니다. 그래서 저는 목적별로 대화창을 명확하게 분리해서 작업하거나, 어느 정도 작업 단계가 진행되면 지금까지의 구현 내용과 의사결정을 요약 정리한 뒤 새 대화창에서 AI에게 이를 다시 학습시키는 방식으로 맥락을 관리하고 있습니다. 그렇다면 엔지니어링 아키텍처 차원에서는 이 문제를 어떻게 접근하고 있을까요? InfoQ의 발표 아티클 "Architecture / Context Engineering"에서는 바로 이 지점, 즉 단순한 프롬프트 엔지니어링을 넘어 시스템 아키텍처 수준에서 컨텍스트를 제어하는 '컨텍스트 엔지니어링(Context Engineering)'의 필요성과 구체적인 프레임워크를 다루고 있습니다. (출처: InfoQ - Architecture / Context Engineering) https://www.infoq.com/presentations/architecture-context-engineering/ 발표자들은 코딩 에이전트나 자율형 에이전트가 현장에서 실패하는 가장 큰 이유로 '비대해진 컨텍스트 윈도우(Bloated Context Windows)'와 무분별하게 채워진 프롬프트(Stuffed Prompts)를 꼽습니다. AI에게 너무 많은 정보를 한 번에 주면, 모델의 주의력(Attention)이 분산되거나 논리적 우선순위를 놓치는 현상이 발생합니다. 마치 인간 엔지니어에게 백과사전 수십 권을 던져주고 "이거 다 읽고 10초 ...

AI의 UX, 단 5개 문항으로 측정하는 방법: SUXAI

테스트 관리에는 아주 유명한 명언이 있습니다. 어쩌면 이 말은 테스트 관리에서만 유용한 얘기는 아닐거고.. 어쩌면 여러분도 다른 곳에서 들었을 수도 있습니다. "측정할 수 없으면 개선할 수 없다" 지난 글(https://murianwind.blogspot.com/2026/07/ai_01010698011.html)에서 생성형 AI 시대에는 기존의 일반적인 사용성 지표(SUS 등)만으로는 부족하며 정확성, 신뢰성, 설명 가능성, 제어 가능성이라는 AI 에 특화된 품질 특성이 필요하다고 정리해 드린 바 있습니다. 하지만 실무자의 입장에서 항상 부딪히는 현실적인 고민이 있습니다. "이론은 좋은데, 당장 매주 업데이트되는 AI 기능의 UX를 바쁜 현장에서 어떻게 빠르고 정량적으로 측정할 것인가?"라는 점이죠. MeasuringU에서 이에 대한 명확하고 실용적인 해답을 제시하는 후속 아티클을 공개했습니다. 바로 "Streamlined Measurement of the UX of AI"입니다. (출처: MeasuringU - Streamlined Measurement of the UX of AI / Jeff Sauro, PhD & Jim Lewis, PhD) https://measuringu.com/streamlined-measurement-of-the-ux-of-ai/ Jeff Sauro와 Jim Lewis 박사는 실무 연구자들과 테스터들이 긴 설문이나 복잡한 프레임워크 없이도 AI 제품의 핵심 품질을 빠르게 측정할 수 있도록 SUXAI(Streamlined UX of AI)라는 간소화된 측정 모델을 구축했습니다. 기존에 수많은 문항으로 분산되어 있던 지표들을 통계적 요인 분석을 통해 쥐어짜고 압축하여, 핵심적인 5가지 5점 척 문항 으로 표준화했습니다. SUXAI를 구성하는 5가지 핵심 평가 문항 정확성 (Accuracy): "이 AI가 생성한 결과물은 정확하다." 신뢰성 (Trust/Re...

합성 사용자(Synthetic Users)의 5가지 유형과 AI 테스팅 현장에서의 활용법

AI와 생성형 모델 기술이 발전하면서, 사용자 경험(UX) 연구와 테스팅 현장에서 가상 퍼소나를 활용해 테스트 데이터를 수집하거나 사용성을 평가하려는 시도가 급격히 늘고 있습니다. 이를 흔히 '합성 사용자(Synthetic Users)'라고 부릅니다. 하지만 막연히 "AI에게 사용자 역할을 시켜 테스트를 돌린다"고 할 때, 그 가상 사용자가 어떤 방식과 데이터로 생성되었는지 명확히 구분하지 않으면 자칫 왜곡된 결과에 빠질 위험이 있습니다. UX 및 사용성 리서치 분야의 권위 있는 기관인 MeasuringU에서 이 합성 사용자의 개념을 명쾌하게 분류한 아티클을 공개했습니다. 바로 "What Are the Different Types of Synthetic Users?"라는 글입니다. (출처: MeasuringU - What Are the Different Types of Synthetic Users? / Jeff Sauro, PhD & Jim Lewis, PhD) https://measuringu.com/what-are-the-different-types-of-synthetic-users/ Jeff Sauro와 Jim Lewis 박사는 합성 사용자를 단순히 하나의 개념으로 뭉뚱그리지 않고, 생성 기술의 근거와 데이터 기반에 따라 크게 5가지 유형으로 깔끔하게 정리해 줍니다. 첫째는 규칙 기반(Rule-Based) 합성 사용자입니다. AI 모델이 아니라 사전 정의된 조건문, 정규식, 시나리오 스크립트에 따라 움직이는 전통적인 형태의 가상 사용자입니다. 예측 가능하고 정확하지만, 인간 사용자의 복잡한 정서나 미묘한 변수를 반영하진 못합니다. Selenium, Playwright, K6 같은 도구를 통해 지정된 경로대로 버튼을 누르고 데이터를 입력하는 방식을 들 수 있습니다. 둘째는 퍼소나 기반 LLM(Persona-Based LLM) 합성 사용자입니다. 생성형 AI에게 "너는 50대 비테크놀로지 사용...