<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>회귀 테스트 on 얼쑤 · Team Edo</title><link>https://team-edo.github.io/tags/%ED%9A%8C%EA%B7%80-%ED%85%8C%EC%8A%A4%ED%8A%B8/</link><description>Recent content in 회귀 테스트 on 얼쑤 · Team Edo</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Wed, 28 Oct 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://team-edo.github.io/tags/%ED%9A%8C%EA%B7%80-%ED%85%8C%EC%8A%A4%ED%8A%B8/index.xml" rel="self" type="application/rss+xml"/><item><title>빈 로그에서도 통과하는 비밀값 검사</title><link>https://team-edo.github.io/posts/2026/10/capture-isolated-python-logs/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0900</pubDate><guid>https://team-edo.github.io/posts/2026/10/capture-isolated-python-logs/</guid><description>&lt;p>얼쑤의 분석 API는 시도마다 처리 결과를 한 줄로 남깁니다. 개발 환경에 따라 루트 로거에 이미 처리기가 붙어 있을 수 있어서, 모듈 처리기에서도 같은 줄을 출력하면 기록이 두 번 나타날 수 있습니다. 모듈의 처리기는 유지하고 &lt;code>propagate = False&lt;/code>를 설정해 그 기록을 루트 쪽으로 다시 보내지 않도록 했습니다.&lt;/p>
&lt;p>이 설정을 바꾸자 테스트에서 별도의 경로를 고려해야 했습니다. pytest의 &lt;code>caplog&lt;/code>가 루트에 붙어 있는 상태에서는 이 모듈이 로그를 남겨도 캡처에 들어오지 않습니다. 검사 내용이 “서명값이 로그에 없다”뿐이면 빈 캡처에서도 통과합니다. 확인하려던 로거에 실제 이벤트가 들어오는지 먼저 확인해야 했습니다.&lt;/p></description></item><item><title>서비스 검사를 꺼도 통과한 테스트 8개</title><link>https://team-edo.github.io/posts/2026/10/fake-repository-masks-service-check/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0900</pubDate><guid>https://team-edo.github.io/posts/2026/10/fake-repository-masks-service-check/</guid><description>&lt;p>얼쑤에서 분석을 다시 시작할 수 있는 경우는 기존 녹음을 유지한 서버 오류나 시간 초과입니다. 다른 상태에서 요청이 들어오면 서비스는 먼저 거절합니다. 그 검사를 통과한 뒤에도 DB 갱신은 조건부로 실행합니다. 서비스가 상태를 읽은 뒤 다른 요청이 그 행을 바꿀 수 있기 때문입니다.&lt;/p>
&lt;p>단위 테스트의 가짜 저장소도 실제 DB의 조건을 비슷하게 구현했습니다. 서비스의 재시도 가능 여부 검사를 일부러 항상 참으로 바꿔 봤는데, 당시 테스트 &lt;strong>여덟 개&lt;/strong>가 모두 통과했습니다. 서비스는 거절했어야 할 요청을 저장소에 넘겼지만, 가짜 저장소가 대신 거절해서 바깥에서 본 결과와 행 상태는 같았습니다.&lt;/p></description></item><item><title>스테레오 평균 테스트가 놓친 합산</title><link>https://team-edo.github.io/posts/2026/10/stereo-rms-test-mono-reference/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0900</pubDate><guid>https://team-edo.github.io/posts/2026/10/stereo-rms-test-mono-reference/</guid><description>&lt;p>얼쑤의 연주 분석은 스테레오 녹음을 16kHz 모노 PCM으로 변환한 뒤 시작합니다. 두 채널을 같은 비중으로 평균 내는 동작을 검사하려고, &lt;strong>440Hz 사인파&lt;/strong>를 담은 &lt;strong>44.1kHz·2초짜리 AAC&lt;/strong> 파일 두 개를 만들었습니다. 한 파일에는 왼쪽 채널에만 소리를 넣고, 다른 파일에는 양쪽에 같은 소리를 넣었습니다.&lt;/p>
&lt;p>처음에는 두 출력의 RMS를 나눴습니다. RMS는 샘플을 제곱해 평균을 낸 뒤 제곱근을 구한 값으로, 여기서는 디코딩한 신호의 크기를 비교하는 데 썼습니다. 왼쪽만 소리가 나는 출력의 RMS를 양쪽에 같은 소리가 나는 출력으로 나눠 &lt;strong>0.5 ± 0.05&lt;/strong>인지 확인했습니다. 리뷰어가 FFmpeg 필터를 두 채널의 &lt;strong>합&lt;/strong>으로 바꿔도 이 검사는 통과했습니다.&lt;/p></description></item><item><title>잡음 다섯 프레임은 0점일까</title><link>https://team-edo.github.io/posts/2026/10/reject-all-missed-recordings/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0900</pubDate><guid>https://team-edo.github.io/posts/2026/10/reject-all-missed-recordings/</guid><description>&lt;p>얼쑤는 녹음에서 추정한 음높이를 악보와 맞춘 뒤 음표마다 판정을 내립니다. 처음에는 어느 프레임에서도 음높이를 찾지 못했을 때 &lt;code>NO_SOUND&lt;/code>로 끝냈습니다. 잡음을 음높이로 잡으면 이 검사를 통과할 수 있었습니다. 그러면 악보의 모든 음표를 놓쳤는데도 분석이 완료돼 0점이 나왔습니다.&lt;/p>
&lt;p>이 경우를 고정하려고 악보 길이에 맞춘 음높이 배열을 만들었습니다. 대부분을 무음으로 표시하고 &lt;strong>다섯 프레임&lt;/strong>에만 음높이 값을 넣었습니다. 마이크로 잡음을 녹음하는 대신, 음높이 추정 단계가 몇 프레임을 소리로 넘긴 상황을 재현한 입력입니다. 기존에는 이 배열이 &lt;code>DONE&lt;/code>과 &lt;strong>0점&lt;/strong>을 냈습니다.&lt;/p></description></item></channel></rss>