내 캡션 너비 가드는 모든 테스트를 통과했습니다. 렌더러가 절대 그리지 않은 텍스트를 측정하고 있었습니다.
잘못 분할된 자막에 대한 사용자 불만으로 인해 새로운 미묘한 문제가 발생하는 버그 수정으로 이어졌습니다. 원래 문제는 문장 구조를 무시하고 고정된 단어 덩어리로 자막이 분할된다는 것이었습니다. 이로 인해 문장 중간에 끊기는 등 말이 안 되는 분할이 발생했습니다.수정에는 구두점을 존중하고 덩어리당 특정 단어 수를 목표로 하는 등 더 나은 덩어리 분할을 위한 규칙을 구현하는 것이 포함되었습니다. 중요한 추가 사항은 렌더링된 덩어리가 화면에 맞도록 하는 픽셀 너비 제한이었습니다. 이 너비 제한은 실제 렌더링된 텍스트의 너비를 측정하기 위한 것이었습니다.그러나 텍스트 너비를 측정하는 코드는 측정 전에 텍스트를 잘못 대문자로 변환했습니다. 이는 시각적 스타일을 위해 의도적으로 모든 대문자를 사용한 비디오 파이프라인의 다른 부분에서 단계를 차용했기 때문입니다. 선택한 글꼴에서 대문자 텍스트는 혼합 대소문자 텍스트보다 더 넓습니다.측정은 대문자로 변환된 입력에 대해 정확했지만 실제 자막은 원래 혼합 대소문자로 렌더링되었습니다. 이 불일치로 인해 텍스트가 훨씬 더 넓다고 믿었던 너비 제한이 불필요한 분할을 강제했습니다. 이는 초기 문제보다 더 나쁜 사용자 경험인 한 단어 덩어리를 만들었습니다.중요하게도, 너비 측정 함수가 받은 입력(대문자로 변환된 텍스트)에 대해 올바르게 작동했기 때문에 모든 자동화된 테스트가 통과했습니다. 테스트는 측정된 텍스트가 화면에 실제로 렌더링된 텍스트와 일치하는지 확인하지 않았습니다. 이 버그는 렌더링된 비디오를 시청하는 사람에 의해서만 발견되었습니다.이 상황은 일반적인 함정을 강조합니다. 프로덕션과 검증을 위한 별도의 코드 경로가 텍스트 변환과 같은 가정에 동의해야 한다는 것입니다. 이러한 가정이 벗어나면 자동화된 테스트가 놓치는 미묘한 버그가 발생합니다. 작성자는 경로 간에 변환 함수를 공유하거나 실제 렌더링된 출력을 정기적으로 샘플링하고 검사하는 것을 완화 전략으로 제안합니다. 인간의 감독 없이 녹색 테스트 스위트에만 의존하면 이러한 미묘한 편차가 눈에 띄지 않게 지속될 수 있습니다.