Case 01 · SPC Regression
보고서 37종·1,382개 출력조합 회귀 자동화
수동 보고서 검증과 DB 원본 비교를 하나의 반복 가능한 검증 체계로 전환했습니다.
- 전체 TC 5,372건 중 2,641건(46%) 자동화
- HTML 보고서 파싱값과 DB 원본 직접 비교
- X/Y 컬럼 오출력·언어팩 누락 등 데이터 이슈 300건 이상 사전 차단
Resume Summary · QA Automation
기능 성공만 보지 않고 데이터·렌더링·고객여정·제조설비–MES E2E와 Clean Runner 재현성까지 검증합니다.
보고서 37종·출력 경우의 수 1,382종을 담당자 1명이 검증하던 SPC 환경에서 UI 자동화와 DB 정합성 검증을 구축했습니다. 전체 TC 5,372건 중 2,641건을 자동화했고, 자동화가 읽기 어려운 GPU·광학·실장비 영역은 수동 검증으로 남겼습니다. QA가 현상과 고객영향을 판단하면 Agent가 증적과 Jira를 회사 표준으로 구조화하며, Skill·실행 절차·Validator·GitLab Pipeline이 완료조건을 강제합니다.
Detailed Portfolio
Case 01 · SPC Regression
수동 보고서 검증과 DB 원본 비교를 하나의 반복 가능한 검증 체계로 전환했습니다.
Case 02 · QA Feedback Loop
QA는 실행불가·데이터·업무단계·금전·시각·고객이탈만 분류하고, Agent가 회사 표준 문서와 발사순서를 구성합니다.
Case 03 · Visual Quality
버튼 이벤트와 API가 정상이어도 CTA가 배경색과 같아 보이지 않으면 고객여정은 실패합니다.
Case 04 · AOI Resilience
공유 메모리 기반 AOI 프로그램의 랜덤 다운에 외부 UI Wrapper와 Watchdog 기반 부분 재시작 구조를 제안·검증했습니다.
Case 05 · Failure Simulation
네트워크 스토리지의 file lock, partial read/write, concurrent modify, freeze를 Python으로 재현했습니다.
Case 06 · MES E2E Test Architecture
기존 시뮬레이터의 프로토콜 호환성 한계를 대체 구현하고 Loader·AOI·Repair Station·MES를 연결해 현장에서만 확인되던 결함을 사내 회귀환경으로 가져왔습니다.
수정할 수 없는 기존 실행 파일 대신 규약 문서·예시 데이터·연동 코드 설명을 기준으로 웹 서버와 소켓 텔레그램 요청·응답을 구현했습니다. 이후 보드 투입 대기, 검사 중 전·후단 순서 강제, Repair Station 자리 부족, Repair Plus 상호작용 등 공정 예외를 포함하도록 확장했습니다.
QA와 비개발자가 문제를 발견한 즉시 시뮬레이터 Agent와 상호작용해 해결안을 만들 수 있도록 장비 화면의 전·후 2개 프레임, 그림판 동그라미·화살표 표시, 자연어 현상 설명과 원래 수행하려던 작업 의도를 함께 입력했습니다. 멀티모달 Agent는 화면 변화와 업무 맥락을 해석해 시뮬레이터 수정안을 구현하고, 해결한 브랜치를 GitLab Dev에 커밋했습니다. 담당자는 개발 MES에서 바로 동작을 확인하고, 개발자는 해당 변경이 지속 가능한 구조인지 검토한 뒤 예외처리를 보강해 Main으로 병합했습니다. 즉, 단순한 문제 전달 자동화가 아니라 현장 문제를 발생 즉시 해결하고 검증 가능한 코드 변경으로 전환하는 폐루프를 구축했습니다.
고객사명, 내부 제품명, 실제 장비 화면, 원문 통신 규약과 메시지 전문은 공개하지 않습니다.
Case 07 · Release Quality
공용 Trunk와 고객사 커스텀 패치가 뒤섞인 환경에서 변경 의도를 실행 증거와 연결했습니다.
Case 08 · TC Automation Retrospective
문서와 Excel을 직접 생성하던 흐름을 Evidence Gate, YAML TC, run/Jira, 제품별 웹과 최종 앱 검증으로 발전시켰습니다.
Failure Case · Change Risk Control
최초 제품에서는 갱신 후 UIA 하위 객체가 사라지는 문제를 국소 수정으로 해결했습니다. 그러나 같은 패턴을 패밀리 제품에 적용하는 과정에서 AI Agent의 변경이 컨테이너 내부 구조까지 확대됐습니다. QA 관점에서는 UIA 탐색 성공만으로 Pass할 수 없고, 수정 목적 때문에 새로 생기는 회귀 표면과 검증 비용까지 합격 기준에 포함해야 했습니다.
아이템 리스트는 애플리케이션 첫 실행 시 UIA 트리에 정상적으로 나타났습니다. 갱신 버튼을 누른 뒤 화면에는 항목이 다시 표시됐지만, 자동화 트리에서는 컨테이너 하위 객체의 연결이 끊겼습니다.
따라서 최초 결함을 “컨테이너가 동작하지 않는다”가 아니라 “동적 객체 재생성 뒤 접근성 객체 생명주기가 복원되지 않는다”로 정의했습니다. 첫 제품에서는 연결 복구와 동적 버튼의 Name 부여만으로 해결했고, 최초 실행·갱신·반복 갱신·Name 기반 탐색을 확인했습니다.
패밀리 제품의 UI와 기능이 비슷하므로 같은 수정이 작은 회귀 범위로 적용될 것이라 가정했습니다. 하지만 다른 제품은 컨테이너 구성, 하위 객체 생성 순서, 바인딩과 이벤트 연결 방식이 달랐습니다.
실패는 “AI가 코드를 못 만들었다”가 아니라, 제품 간 구조가 같다는 가설을 검증하기 전에 수정부터 확장한 데 있었습니다.
AI Agent는 UIA 결과를 맞추기 위해 컨테이너 내부 구현을 넓게 변경하기 시작했습니다. 이 시점부터 검증 대상은 접근성 트리만이 아니었습니다.
UIA 자동화 한 항목을 통과시키기 위해 제품 컨테이너 전체를 재검증해야 하는 상태가 됐습니다. 수정의 효과보다 재검증 비용과 미탐 회귀 위험이 커졌습니다.
코드가 컴파일되고 UIA 객체가 다시 보일 가능성만으로 승인하지 않았습니다. 원래 결함의 책임 범위와 실제 수정 책임 범위를 비교했습니다.
테스트 대상이 수정 목적보다 훨씬 커지는 순간, 그것은 작은 버그 수정이 아니라 별도 리팩터링 프로젝트입니다. 같은 티켓과 같은 승인 기준으로 진행하면 안 됩니다.
작업을 긴급 취소하고 확장 Diff를 폐기했습니다. 최초 제품의 국소 수정은 유지하되, 패밀리 제품은 제품별 구조와 테스트 범위를 다시 정의하기 전까지 보류했습니다.
QA의 역할은 결함을 재현하거나 수정 결과가 한 번 동작하는지 확인하는 데서 끝나지 않습니다. 수정 목적, 변경 폭, 회귀 표면, 검증 가능성을 함께 보고 “이 해결책을 제품에 받아들여도 되는가”를 판정해야 합니다. 이번 사례에서는 미완료를 인정하고 Reject하는 것이 품질 측면의 성공이었습니다.
Operating Model
SW 설치뿐 아니라 테스트 장비의 컨베이어 벨트·모터·광학계 교체, 광학계 캘리브레이션, 보드 펌웨어 업데이트, 산업용 PC 선정과 온도·진동·클럭·동작 검증을 수행해 HW·SW·네트워크 중 어느 영역의 문제인지 현장에서 1차 분류할 수 있습니다.