라이프스타일
테스트, 코드 리뷰와 PR
테스트는 조건별 동작, 리뷰는 변경의 결함, PR은 통합 제안을 다룹니다. 테스트 통과, 승인과 병합은 별도 상태입니다.
읽는 데 약 15분 · 실습 30 분

이 글의 목차
Codex 학습 목차로 돌아가기Codex 학습 센터: 전체 튜토리얼 목차설치와 첫 작업부터 MD 지침과 고급 연동까지 60개 강의, 열 개 단원을 계획합니다. 수준, 환경, 목표, 명령으로 다음 글을 찾고 미게시 항목의 상태를 확인할 수 있습니다.전체 글 읽기
목표와 준비
이 단락의 학습 자료: Git 기초Git, 브랜치, diff와 복원Git은 파일 이력, 브랜치는 변경 묶음, diff는 차이를 관리합니다. 대화를 재개한다고 파일이 복원되지는 않습니다.전체 글 읽기
테스트는 작성 사례, Review는 놓친 영향, PR은 브랜치 결과 검토입니다. 서로 대체하지 않으며 지적 없음은 무결함 보장이 아니고 PR 생성은 merge/공개가 아닙니다. 이번에는 검증 범위 빈틈을 직접 확인합니다.
1단계: 의도적으로 잘못된 제안 준비
새 codex-review-lab에 expected 다섯 파일을 두고 Git 기초의 로컬 실습 신원으로 main 기준을 commit합니다. 무변경 확인 뒤 다음 브랜치를 만듭니다. 미완료 변경이 있는 저장소를 재사용하지 않습니다.
git switch -c codex/review-lab
node --test core.test.mjs
3통과 후 visibleTasks 마지막만 return tasks.reverse();로 바꿉니다. 기존은 Active/Completed만 확인하므로 다시3통과입니다. 의도적인 미검토 제안이며 아직 commit/정상 기능으로 취급하지 않습니다.
git diff -- core.mjs
node --test core.test.mjs
2단계: 올바른 Review 범위 선택
데스크톱 앱에서 이 Git 프로젝트를 열고 Review 패널의 Unstaged를 선택해 수정한 core.mjs가 보이는지 확인한 다음 Codex 입력창에서 /review를 사용하고 선택된 차이를 확인합니다. CLI에서는 codex-review-lab의 시스템 터미널에서 codex를 시작하고 작업 경로를 확인한 뒤 대화형 입력창에 /review를 입력하고 Review uncommitted changes를 선택합니다. 시스템 셸에 입력하지 마세요. 아직 커밋하지 않았으므로 특정 커밋만 검토하면 reverse를 놓칩니다. 진입점과 범위는 공식 Code review 문서를 참고합니다.
앱에는 Staged, Commit, Branch, Last turn도 있으며 Last turn은 전체 브랜치가 아닙니다. CLI의 미커밋 검토는 스테이징, 미스테이징, 미추적 내용을 포함하므로 git diff만 보는 것보다 범위가 넓습니다. Review 패널에는 사용자나 다른 작업의 수정도 표시될 수 있으므로 여러 repository가 있으면 대상 저장소를 확인합니다. 같은 파일에 두 상태가 함께 있으면 Git 안내의 MM 연습Git, 브랜치, diff와 복원Git은 파일 이력, 브랜치는 변경 묶음, diff는 차이를 관리합니다. 대화를 재개한다고 파일이 복원되지는 않습니다.전체 글 읽기처럼 각각 확인하고 검토할 부분을 지정합니다.
All 순서 유지/입력 불변을 보완합니다. 유효한 지적은 reverse 줄, All 조건, 순서 반전/배열 직접 변경, 누락 테스트를 보여 줍니다. 위치/영향 없는 추상적 품질 개선은 부족합니다.
Review the uncommitted change only. All must preserve task order and must not mutate the input array. Existing tests pass, so inspect their coverage rather than treating that as proof.
For each finding, state the file/line, trigger, concrete impact and a verification case. Do not edit, stage, commit or push during this review. If you find no issue, report what you examined and any uncertainty.
놓치면 결론에만 의존하지 않고 reverse와 다음 테스트를 봅니다. 틀린 지적이면 재현 예시를 요청해 판단합니다. Review는 증거를 제공하며 이해한 수정은 별도로 요청하고 최종 차이와 연결합니다.
3단계: 테스트 추가와 잘못된 변경 제거
review.test.mjs를 추가해 All 순서/동결 배열 불변을 확인합니다. 잘못된 버전에서 기존3통과/새2실패를 먼저 봐야 새 테스트가 실제 탐지하는지 압니다.
import test from "node:test";
import assert from "node:assert/strict";
import { visibleTasks } from "./core.mjs";
const makeTasks = () => [
{ id: "a", title: "Read", completed: true },
{ id: "b", title: "Build", completed: false },
];
test("All preserves original order", () => {
assert.deepEqual(visibleTasks(makeTasks(), "all").map((task) => task.id), ["a", "b"]);
});
test("All does not attempt to mutate the input array", () => {
const tasks = Object.freeze(makeTasks());
assert.doesNotThrow(() => visibleTasks(tasks, "all"));
});
node --test core.test.mjs review.test.mjs
마지막 줄만 return tasks;로 돌려 새 테스트를 남기고5통과를 봅니다. core.mjs는 main과 같고 추가 테스트만 결과입니다. PR은 최종 테스트 보강을 설명하고 차이에 없는 코드 수정을 주장하지 않습니다.
4단계: 검토 가능한 commit과 PR 초안
새 테스트만 스테이지하고 내용 확인 후 commit하며 main 차이가 한 파일인지 봅니다. 추가 편집 뒤 영향 테스트를 다시 실행하고 이전 성공을 인용하지 않습니다. 다음 초안 결과는 실제 관찰 후만 남깁니다.
git add review.test.mjs
git diff --cached --name-only
git diff --cached -- review.test.mjs
git commit -m "Test All filter order and input preservation"
git diff --stat main...HEAD
git status --short
Title: Add regression coverage for All filter ordering and input preservation
The existing filter tests cover Active and Completed but miss All ordering and input mutation. Add two focused cases so a reversing implementation is rejected. Production code is unchanged.
Validation: node --test core.test.mjs review.test.mjs — 5 passed, if actually run.
The deliberate reverse variant fails both new tests.
Browser checks: NOT RUN in this test-only change unless separately verified.
Deployment: not performed.
로컬 결과는 검토 가능하지만 PR은 아직 없습니다. 선택 실습은 README 없는 빈 GitHub 저장소를 만들고 실제 URL로 자리표시자를 바꿉니다. remote -v가 자신의 새 저장소인지 확인한 뒤 두 push로 기준/테스트 브랜치를 보냅니다.
git remote add origin YOUR_REPOSITORY_URL
git remote -v
git push -u origin main
git push -u origin codex/review-lab
GitHub New pull request에서 base main/compare codex/review-lab을 골라 테스트만의 차이/설명을 확인해 생성합니다. 논의 중이면 draft를 씁니다. CI는 설정했을 때만 있으며 현재 head 검사인지 봅니다. merge/공개는 별도 단계입니다.
검증 기록을 최종 버전에 연결
로컬 커밋 후 이 연습 저장소를 수정할 수 있는 다른 작업을 멈추고 아래 명령을 한 줄씩 실행합니다. 전후 HEAD가 같고 status는 깨끗하며, 브랜치는 codex/review-lab, main...HEAD에는 review.test.mjs만 있어야 합니다. 테스트는 5개 통과에 건너뜀은 없어야 합니다. 실제 SHA와 출력을 인계 기록에 첨부하세요. HEAD가 같아도 파일이 수정됐다면 테스트에 미커밋 내용이 포함되므로 해당 커밋만의 결과로 볼 수 없습니다.
git branch --show-current
git rev-parse HEAD
git status --short --untracked-files=all
git diff --name-only main...HEAD
node --test core.test.mjs review.test.mjs
git rev-parse HEAD
git status --short --untracked-files=all
Git diff 공식 설명처럼 main...HEAD는 공통 조상부터 HEAD까지 비교하며 미커밋 수정은 포함하지 않습니다. review.test.mjs를 새로 만들어도 git add 전에는 일반 diff에 보이지 않을 수 있으므로 status와 파일 자체도 확인합니다. 이 연습은 로컬 main을 사용합니다. 실제 PR에서는 base, head, 해당 head의 CI를 확인하고 건너뜀, 취소, 미완료를 따로 기록합니다. 초록 아이콘만으로 검증 범위를 판단하지 않습니다.
문제 해결, 복원과 검수
| 현상 | 필요한 증거 |
|---|---|
| 테스트 성공인데 오동작 | 새 사례 전 실패/후 성공 |
| 차이가 안 보임 | 미커밋/commit/base 범위 |
| 지적 이유 없음 | 위치/조건/최소 재현 |
| PR 무관 파일 | stage/시작점/base·compare |
| CI 없음/이전 버전 | workflow/head SHA |
| 추가 편집 | 최종 차이 재검증 |
기존3개 누락/새2개 탐지/최종5통과/테스트만 commit을 남깁니다. 반복은 독립 실습에서 reverse를 다시 넣고 복원하며 Git 삭제/공개 기록 변경은 하지 않습니다. 불필요한 실습 PR은 논의를 남겨 닫습니다. 그림1증거,2판단,3전달입니다. 독자의 모델 Review/push/공개는 미실행입니다.
Codex 학습 목차로 돌아가기Codex 학습 센터: 전체 튜토리얼 목차설치와 첫 작업부터 MD 지침과 고급 연동까지 60개 강의, 열 개 단원을 계획합니다. 수준, 환경, 목표, 명령으로 다음 글을 찾고 미게시 항목의 상태를 확인할 수 있습니다.전체 글 읽기
자세한 설명 보기
Tests to Review to PR
같은 주제의 글
라이프스타일
Codex 학습 센터: 전체 튜토리얼 목차
설치와 첫 작업부터 MD 지침과 고급 연동까지 60개 강의, 열 개 단원을 계획합니다. 수준, 환경, 목표, 명령으로 다음 글을 찾고 미게시 항목의 상태를 확인할 수 있습니다.
라이프스타일
Worktree와 작업 격리
Worktree는 하나의 Git 저장소에 다른 브랜치의 작업 폴더를 만듭니다. 파일이 분리되어도 DB, 포트와 외부 서비스는 공유될 수 있습니다.
라이프스타일
실습: 작은 웹사이트 만들기
brief.md에서 Small Steps 할 일 사이트를 계획하고 추가·완료·삭제·필터·로컬 저장을 구현합니다. HTML·CSS·데이터 함수·화면 이벤트·시험을 분리하고 Node와 브라우저로 검증한 뒤 재시작·복원 인계 기록을 남깁니다.
라이프스타일
사용량과 효율: 재작업 줄이기
조건, 모델 선택, 시간, 결과를 기록해 불필요한 재시도와 과도한 문맥을 줄입니다.
이 글을 인용한 글
최신 여행 소식·가이드

가이드도쿄
도쿄 어디에 묵을까? 신주쿠·우에노·도쿄역·시부야·아사쿠사·이케부쿠로·긴자 일곱 지역 비교: 공항 교통, 숙박세, 짐 배송까지
도쿄 어디에 묵을까? 신주쿠, 우에노, 도쿄역, 시부야, 아사쿠사, 이케부쿠로, 긴자 일곱 지역을 같은 기준으로 비교한다. 나리타·하네다 공항에서 오는 방법, 교통 노선, 주변의 볼거리, 동네 분위기, 적합한 여행자를 비교표와 야마노테선 안내도로 살펴보고, 2026년 9월에 확인한 도쿄도 숙박세(2027년 4월부터 3%)와 공항 택배로 짐을 보내는 규정도 정리했다.
- 예산
- 호텔

가이드도쿄
도쿄 교통패스 선택법: Suica/Welcome Suica, Tokyo Subway Ticket, JR Pass는 살 만할까?
도쿄를 처음 여행한다면 먼저 1인당 IC 카드 한 장으로 탈 때마다 결제한다(Welcome Suica는 보증금이 없고 28일간 유효). 하루에 지하철을 4번 이상 타면 2,000엔짜리 Tokyo Subway Ticket 72시간권을 추가하고, 간사이에 가지 않고 도쿄만 여행한다면 JR Pass는 반드시 손해다. TOURIST PASMO, iPhone의 Suica, 도쿄 Metro 하루권의 이용 가능·불가 범위를 결정도로 비교한다. 가격은 2026년 9월 확인.
- 교통
- 예산

가이드도쿄
도쿄 디즈니랜드·디즈니씨 가이드: 티켓 가격, 판타지 스프링스 Fantasy Springs, 디즈니 프리미어 액세스 DPA와 스탠바이 패스 이용법, 첫 방문에는 어느 파크가 좋을까
도쿄 디즈니 하루짜리 패스포트는 변동 가격제로, 2026년 9월에는 평일 대부분이 9,900엔, 주말이 10,900엔이다. 공식 홈페이지에서 매일 14:00에 두 달 뒤 같은 날짜의 티켓을 판매한다. 무료 프라이오리티 패스는 공식 서비스 목록에서 빠져 대기 시간을 줄이는 방법은 유료 디즈니 프리미어 액세스(한 사람당 한 번 1,000~3,500엔)뿐이다. 운영 시간, 25주년 행사, 스탠바이 패스, 엔트리 리퀘스트, 판타지 스프링스 이용법, 첫 방문 때 디즈니랜드와 디즈니씨 중 어디를 고를지도 담았다. 2026년 9월 공식 홈페이지에서 확인했다.
- 추천 일정
- 가족 여행
출처
- Codex review scopes · 확인일:
- CLI review commands · 확인일:
- Creating a pull request · 확인일: