Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 올림픽 통계 서비스 최적화
- 제너레이터와 async/await
- 자바스크립트 패턴
- unique identifiers
- const
- mixin pattern
- 프로그래머스
- 이벤트
- pr review
- js pattern
- 블로그 서비스 최적화
- 자바스크립트
- package management
- 새 코드 받아오기
- 프론트엔드 성능 최적화 가이드
- version management
- peerdependencies
- 커리어
- 학습내용정리
- 모던 자바스크립트 Deep Dive
- 이미지 갤러리 최적화
- 자바스크립트 딥다이브
- Babel과 Webpack
- 진행기록
- 스코프
- 브라우저의 렌더링 과정
- middleware pattern
- js pattern
- 딥다이브
- DOM
Archives
- Today
- Total
Dev Blog
에러와 버그의 차이점 본문
에러(Error)와 버그(Bug)는 소프트웨어 개발에서 자주 혼용되지만, 의미와 맥락에서 차이가 있습니다.
아래에서 두 개념을 비교합니다.
1. 에러 (Error)
- 정의: 소프트웨어가 실행 중 예상치 못한 동작을 수행하거나 실패할 때 발생하는 문제.
- 발생 원인: 주로 런타임(Runtime) 또는 컴파일 단계에서 코드나 시스템이 의도한 대로 작동하지 않을 때 발생.
- 유형:
- 컴파일 에러: 문법 오류나 잘못된 코드 작성으로 인해 프로그램이 컴파일되지 않는 경우.
- 예:
int x = "text";
(데이터 타입 불일치)
- 예:
- 런타임 에러: 실행 중에 발생하는 문제로, 프로그램이 멈추거나 비정상적으로 종료됨.
- 예:
0으로 나누기
,NullPointerException
, 메모리 부족 등.
- 예:
- 논리적 에러: 실행에는 문제가 없으나, 결과가 의도와 다를 때.
- 예: 잘못된 수식 사용으로 인해 계산 결과가 틀릴 때.
- 컴파일 에러: 문법 오류나 잘못된 코드 작성으로 인해 프로그램이 컴파일되지 않는 경우.
- 특징:
- 에러는 기술적 문제와 관련이 깊음.
- 종종 예외(Exception)로 처리되며, 시스템 로그에 기록되거나 디버깅 도구를 통해 확인 가능.
2. 버그 (Bug)
- 정의: 소프트웨어의 설계, 개발 또는 유지보수 과정에서 사람의 실수로 인해 코드에 포함된 결함.
- 발생 원인:
- 개발자의 실수 (오타, 논리적 오류 등).
- 잘못된 요구 사항 해석.
- 시스템 간 호환성 문제 또는 통합 테스트 부족.
- 유형:
- UI 버그: 사용자 인터페이스(UI)가 의도와 다르게 보이거나 작동하지 않는 경우.
- 예: 버튼 클릭 시 동작하지 않음, 레이아웃 깨짐.
- 기능 버그: 특정 기능이 정상적으로 작동하지 않는 경우.
- 예: 로그인 버튼 클릭 후 아무 반응이 없을 때.
- 퍼포먼스 버그: 성능이 저하되거나 기대치에 못 미치는 경우.
- 예: 과도한 메모리 사용, 느린 페이지 로딩.
- UI 버그: 사용자 인터페이스(UI)가 의도와 다르게 보이거나 작동하지 않는 경우.
- 특징:
- 버그는 인간 실수와 관련이 있음.
- 테스트, 코드 리뷰, QA를 통해 발견 및 수정.
- 에러를 유발할 가능성이 있지만, 반드시 실행 중 에러로 이어지는 것은 아님.
주요 차이점
쉽게 이해하는 비유
- 에러: 요리를 하다가 재료가 불에 타거나 오븐이 고장난 것.
- 예: 오븐 온도 설정 실패로 요리가 망함.
- 버그: 요리사가 레시피를 잘못 작성한 것.
- 예: 설탕 대신 소금을 사용.
결론
- 에러는 주로 소프트웨어 실행 중에 나타나는 문제를 의미하며, 시스템 또는 코드의 기술적 문제로 발생.
- 버그는 소프트웨어의 설계 또는 개발 단계에서 발생한 결함으로, 에러를 유발할 수도 있지만 항상 실행 오류를 의미하는 것은 아님.
둘은 상호 관련이 있으나, 사용하는 맥락과 발견 시점에 따라 구분됩니다.
'Development Notes > Terminology and Concepts' 카테고리의 다른 글
리스코프 치환 원칙(Liskov substitution principle) (0) | 2024.12.08 |
---|---|
Unique Identifiers (1) | 2024.12.08 |
peerDependencies 와 overrides 의 차이점(package management) (0) | 2024.11.09 |
DOM 트리의 탐색 (0) | 2022.12.13 |
dependencies version in package.json (0) | 2021.10.16 |
Comments