| English | 의미 |
|---|---|
| bug/bʌɡ/ | 버그 |
| debugging/ˈdiːbʌɡɪŋ/ | 디버깅 |
| syntax error/ˈsɪntæks ˈerə/ | 구문 오류 |
| logic error/ˈlɒdʒɪk ˈerə/ | 논리 오류 |
| runtime error/ˈrʌntaɪm ˈerə/ | 런타임 오류 |
| overflow error/ˌəʊvəˈfləʊ ˈerə/ | 오버플로우 오류 |
| edge case/edʒ keɪs/ | 경계 사례 |
| expected output/ekˈspektɪd ˈaʊtpʊt/ | 예상 출력 |
모든 프로그램에는 버그가 있다
- 팀이 아무리 신중하더라도 프로그램에는 실수가 포함됩니다.
- 프로그램 내의 실수를 **버그(bug)**라고 합니다.
- 버그를 찾아 수정하는 작업을 **디버깅(debugging)**이라고 합니다.
- 숙련된 디버깅 능력은 프로그래머가 쌓을 수 있는 가장 가치 있는 기술 중 하나입니다.
어떤 종류의 오류인가?
구문 오류(syntax error)는 실행을 멈추고, 논리 오류(logic error)는 실행되지만 잘못된 결과를 냅니다. 실행 중 오류(runtime error)는 중간에 충돌시키고, 오버플로우 오류는 저장 공간을 초과합니다.
프로그램의 실수를 찾고 수정하는 작업은 ______라고 합니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
실수는 버그(bug)이며, 버그를 수정하는 것을 디버깅(debugging)이라고 합니다.
프로그램 실행을 막는 brakket이 없는 것은:
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
언어 규칙을 위반하면 구문 오류(syntax error)가 발생합니다.
논리 오류가 가장 찾기 어려운 이유는 무엇입니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
명백히 깨지는 부분이 없으므로, 예상된 결과와 실제 출력을 비교해야 합니다.
주요 오류 종류
- **구문 오류(syntax error)**는 언어 규칙 위배(예: 괄호 누락)로 프로그램 실행이 거부됩니다.
- **논리 오류(logic error)**는 실행되지만 지시사항이 계획과 일치하지 않아 잘못된 결과를 출력합니다.
- **실행 중 오류(runtime error)**는 실행 중 프로그램이 충돌하는 것—영으로 나누기 같은 경우입니다.
- **오버플로우 오류(overflow error)**는 값이 저장 공간보다 너무 커질 때 발생합니다.
경계 조건(빈 입력, 매우 큰 숫자 등)으로 테스트하면 숨겨진 버그를 찾을 수 있습니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
버그는 종종 프로그램이 기대하는 한계 부근에 숨어 있습니다.
테스트에서 버그를 발견하려면 실제 출력과 다음 중 무엇을 비교해야 합니까?
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
실제 출력과 예상 출력 사이의 차이는 버그를 가리킵니다.
찾는 방법
- 다양한 입력으로 테스트하세요. 이상한 경우, 매우 큰 숫자, 빈 입력, 또는 한계치에 해당하는 경계 조건(edge case) 등도 포함해야 합니다.
- 실제 출력과 예상(output expected) 출력 비교; 차이가 있으면 버그를 의미합니다.
- 내부 값을 확인하기 위해 임시 출력 문장을 추가하여 어디서 처음 잘못되는지 찾으세요.
- 분할 및 검증(divide and check): 일부가 올바른지 확인한 뒤 나머지를 좁혀가며 점검하세요.
버그 수정 후 전체 프로그램을 재테스트해야 합니다. 수정 작업이 새로운 버그를 생성할 수 있기 때문입니다.
난이도 1/5 · 100 코인 + 오늘 첫 완료 시 소액 보너스
신중한 재테스트가 소프트웨어를 신뢰할 수 있게 만듭니다.
수정 후 재테스트
- 논리 오류는 가장 어렵습니다. '고장 난' 것이 분명하지 않고, 답만 틀린 것입니다.
- 하나의 버그를 수정하면 다른 버그를 만들 수도 있습니다.
- 따라서 모든 수정 후 전체 프로그램을 재테스트해야 합니다.
- 세심하고 반복적인 테스트가 거친 프로토타입을 사람들이 신뢰할 수 있는 소프트웨어로 만듭니다.
"실행되었다"가 "올바르다"와 같습니다. 논리 오류는 충돌이나 메시지 없이 실행되므로 프로그램이 정상처럼 보이지만 답은 틀립니다. 이를 잡으려면 단순히 실행되었는지 확인하는 것이 아니라, 출력물을 예상된 내용과 비교해야 합니다.
버그는 실수이며, 이를 수정하는 것은 디버깅입니다. 구문 오류는 실행을 멈추고, 논리 오류는 실행되지만 틀린 답을给出하며, 실행 중 오류는 중간에 충돌시키고, 오버플로우 오류는 저장 공간을 초과합니다. 버그는 다양한 입력(특히 경계 조건)을 예상 출력과 대조하여 찾고, 수정 후에는 반드시 재테스트해야 합니다.