센로그
[ED] 3. 선행 조건과 후행 조건 만족 여부 확인하기 본문
선행 조건과 후행 조건
- 전자제품을 수리할 때는 가장 먼저 전원 공급 장치로부터 전기가 잘 나오는지, 그래서 회로에 잘 전달되는지부터 점검해야 한다.
- 의외로 이 부분이 문제의 원인인 경우가 많다
- 소프트웨어도 마찬가지로 특정 루틴에 진입하기 전의 값(선행 조건)과 루틴을 실행하고 나온 시점의 값(후행 조건)을 확인하는 것이 가장 기본적이며 중요하다.
- 선행 조건: 프로그램의 상태와 입력값
- 후행 조건: 프로그램의 상태와 반환값
선행 조건 만족 여부를 잘 확인하는 법
- 중단점 활용
- 루틴 호출 지점, 루틴 시작 부분, 핵심 알고리즘이 실행되는 지점에 중단점을 걸어 확인한다.
- 의심스런 코드에서 사용하는 전역 변수, 매개 변수, 호출한 메서드가 속한 객체 등의 상태를 확인한다.
- 값이 null이 아니어야 하는 부분이 null인지
- 수학 함수의 경우, 전달한 값이 함수의 정의역 안인지 확인
- 루틴에 전달된 객체나 구조체, 배열에 필요한 내용이 잘 담겨있는지 확인
- 변수의 값이 정상 범위 안인지 확인
- 무작위 추출 검사를 통해 루틴에 전달한 데이터 구조의 무결성을 검사
- 일부 항목을 무작위로 선택하여 검사하는 방법
- ex) 해당 항목에 대해 맵의 키, 값이 올바른지 검사
후행 조건 만족 여부를 잘 확인하는 법
- 중단점 활용
- 루틴의 끝, 루틴을 호출한 지점 뒤, 핵심 알고리즘의 실행이 끝나는 지점에 중단점을 걸어 확인한다.
- 값이 정상 범위에 있다면, 실제로 결과가 정확한지 확인
- 루틴의 부작용이 예상했던 것인지, 아니면 의심스런 코드로 인해 데이터가 손상되거나 엉뚱한 값으로 설정되어 있지 않은지 확인
- 알고리즘에서 사용하는 자원(파일 핸들이나 락 같은)을 정상적으로 반환했는지 확인
- 루틴의 끝, 루틴을 호출한 지점 뒤, 핵심 알고리즘의 실행이 끝나는 지점에 중단점을 걸어 확인한다.
'Effective > Effective Debugging' 카테고리의 다른 글
[ED] 6. 소프트웨어에서 제공하는 디버깅 기능 활용하기 (0) | 2024.11.12 |
---|---|
[ED] 5. 정상 시스템과 비정상 시스템의 차이점 분석하기 (0) | 2024.11.11 |
[ED] 4. 문제 발생 지점부터 버그를 추적하거나, 프로그램 시작 지점부터 버그를 찾아나가기 (0) | 2024.11.11 |
[ED] 2. 해결책을 웹에서 검색할 때 검색어를 구체적으로 표현하기 (0) | 2024.11.11 |
[ED] 1. 모든 문제를 이슈 추적 시스템으로 관리하기 (0) | 2024.11.11 |
Comments