クイズ: 最小再現ケース
한국어 원문으로 표시합니다.
최소 재현 사례를 만들 때 축소보다 판정기(오라클)를 먼저 만드는 이유로 가장 알맞은 것은?
- 축소 도중 프로그램이 다른 오류로 죽어도 재현이 유지된 것으로 착각하게 되기 때문이다
- 판정기가 있어야 축소 알고리즘의 시간 복잡도를 로그로 낮출 수 있기 때문이다
- 판정기를 나중에 만들면 이미 줄어든 입력으로는 원본 실패를 재현할 수 없기 때문이다
- 고객에게 보낼 보고서에 판정 기준을 먼저 적어야 승인을 받을 수 있기 때문이다
판정기가 '종료 코드가 0 이 아니면 재현' 으로 되어 있다. 이 판정기의 문제는?
- 정상 종료한 실행을 재현으로 잘못 세어 축소가 끝나지 않는다
- 설정 파일이 없어 나는 오류나 입력이 비어 나는 오류까지 재현으로 세어, 전혀 다른 결함으로 축소가 흘러간다
- 종료 코드는 셸에서만 볼 수 있어 파이썬 축소기에서는 읽을 수 없다
- 같은 코드가 여러 번 나오면 중복으로 세어 호출 횟수가 부풀려진다
판정기가 보면 안 되는 것으로 가장 알맞은 것은?
- 프로그램의 종료 코드
- 표준오류에 나오는 그 실패 고유의 서명 문자열
- 실행 시각이나 임시 파일 이름처럼 실행마다 달라지는 값
- 같은 예외가 두 자리에서 날 때 어느 자리에서 났는지
델타 디버깅(ddmin)이 한 줄씩 빼 보는 방법보다 판정기 호출이 적은 이유는?
- 판정기 결과를 기억해 두었다가 같은 후보가 다시 나오면 다시 부르지 않기 때문이다
- 원인이 되는 줄의 위치를 미리 추정해 그 주변만 집중해서 시험하기 때문이다
- 실패와 무관한 줄을 정적 분석으로 먼저 걸러 낸 뒤 남은 줄만 시험하기 때문이다
- 후보를 덩어리로 갈라 덩어리째 빼 보기 때문에 한 번의 판정이 여러 줄을 한꺼번에 걸러 내기 때문이다
축소 결과가 1-최소(1-minimal)라는 말의 뜻으로 정확한 것은?
- 남은 것 중 어느 하나를 빼도 재현이 멈춘다는 뜻이며, 더 작은 다른 조합이 있을 수도 있다
- 가능한 모든 부분집합 중 가장 작은 것이라는 뜻이다
- 원본의 1퍼센트 이하로 줄었다는 뜻이며 크기 기준을 만족한다는 표시다
- 판정기를 한 번만 더 불러도 결과가 바뀌지 않는다는 뜻이다
재현 절차를 줄일 때 시험할 때마다 작업 디렉터리를 새로 잡아야 하는 이유는?
- 같은 디렉터리를 쓰면 파일 잠금 때문에 명령이 서로를 기다려 시험이 느려지기 때문이다
- 절차마다 작업 경로가 달라야 로그에서 어느 시험의 결과인지 구별할 수 있기 때문이다
- 앞 실행이 남긴 파일이 있으면 그 파일을 만드는 단계를 빼도 재현되어, 그 단계가 필요 없다는 잘못된 결론이 나오기 때문이다
- 작업 디렉터리를 재사용하면 디스크 용량이 빠르게 차서 뒤의 시험이 실패하기 때문이다