디버깅이란? (+Junit, intellij의 디버깅)

Yuri Lee·2021년 5월 26일
0

배경

  • 현재 나는 인텔리제이 tool 을 사용하여 작업하고 있지만, 제대로 된 디버깅을 활용하고 있지 않았다. tool 을 처음 써봐서 활용하지 않는다는 말도 안되는 핑계거리는 치워버리자!!! 🤔🤔🤔
  • (+) 상사분께서 디버깅의 중요성에 대해 알려주셔서 배웠던 내용들을 정리해보려고 한다.

디버깅이란?

  • 디버깅(영어: debugging) 또는 디버그(영어: debug)는 컴퓨터 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산(버그)을 찾아내고 그 원인을 밝히고 수정하는 작업 과정을 뜻한다.
  • 일반적으로 디버깅을 하는 방법으로 테스트 상의 체크, 기계를 사용하는 테스트, 실제 데이터를 사용해 테스트하는 법이 있다.

용어의 기원, 디버깅이라는 이름은 왜 붙었을까?

  • 버그(bug)와 디버깅(debugging)이라는 용어는 1940년대 그레이스 호퍼가 기원이다.그러나 "기술적 오류"라는 문맥에서의 "버그"는 적어도 1878년과 토머스 에디슨으로 거슬러 올라간다. (소프트웨어 버그 문서 참고)
  • 옛날의 컴퓨터는 천공카드였었다. 이 천공카드를 이용하다가 고장이 났던 것, 살펴보니 구멍에 나방이 (벌레 = 버그)가 있었다. 즉 이 벌레를 제거한다고 해서 디버깅이라는 말이 생긴 것이다.
  • 즉 프로그래밍적 오류를 고친다라는 의미를 지니고 있다.

디버깅의 중요성

  • 코딩이 2할이면 디버깅은 8할이다. 잘못된 부분을 잘 캐치하는 게 중요하다.
  • 코딩이 2할이면 디버깅은 8할이다. 잘못된 부분을 잘 캐치하는 게 중요하다.
  • TDD 테스트 주도 개발 → Junit , 테스트 코드를 만들 때도 편하다.
  • 모든 것은 디버깅으로 이어진다.
  • 내가 만든 건 알 수 있지만, 다른 사람들의 코드는 알기 힘들다. 즉 코딩보다 다른 사람들의 코드를 읽고 분석하는 일이 비일비재하다. 그때마다 일일히 로그를 찍어 확인하는 것은 굉장히 비효율적이다.
  • 디버깅을 하면 순간순간마다 어떤 데이터 값이 들어있는지 알 수 있다.

Junit

JUnit is an open source Unit Testing Framework for JAVA. It is useful for Java Developers to write and run repeatable tests. ... As the name implies, it is used for Unit Testing of a small chunk of code. Developers who are following test-driven methodology must write and execute unit test first before any code.

  • 단정(assert) 메서드로 Test case의 수행 결과를 판별할 수 있다.
    • assertArrayEquals(a, b) :  배열 A와 B가 일치함을 확인한다.
    • assertEquals(a, b) : 객체 A와 B가 같은 값을 가지는지 확인한다.
    • assertEquals(a, b, c) :  객체 A와 B가 값이 일치함을 확인한다.( a: 예상값, b:결과값, c: 오차범위)
    • assertSame(a, b) : 객체 A와 B가 같은 객체임을 확인한다.
    • assertTrue(a): 조건 A가 참인지 확인한다.
    • assertNotNull(a) : 객채 A가 null이 아님을 확인한다.

intellij

Step Over (F8)

  • 다음 단계로 넘어가기

Step Into (F9)

  • 함수 안으로 들어가기

Resume Program (F9)

  • 다음 Breakpoint로 이동하는 버튼

Evaluate Expression(Alt + F8)

  • 특정 객체 값을 확인 가능(크롬 개발자 도구 console 처럼 할 수 있는 기능)
  • 함수에 넣어볼 수 있음. 값 계산하기

Alert + 하단 탭의 숫자 누르기

  • Alert + 9 : Git
  • Alert + 3 : Find
  • Alert + 4 : Run
  • Alert + 6 : Problems
  • Alert + 5 : Debug

결론

  • 디버깅이 메인이다. 일일히 로그를 찍어서 확인하는 것은 매우 비효율적이다. (콘솔 제거 로그 제거!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
  • 기존 코드 분석를 분석하는 일이 80% 이므로 디버깅을 습관으로 만들자.
  • 인텔리제이 문서 사이트 꼭 제대로 익히기

https://ko.wikipedia.org/wiki/%EB%94%94%EB%B2%84%EA%B7%B8
https://beomseok95.tistory.com/205
[JUnit] JUnit을 이용한 단위 테스트하기+단정(assert)메소드 정리
Assert (JUnit API)
[Intellij] - 디버깅 시 값 확인하는 법(Evaluate)
https://www.jetbrains.com/help/idea/guided-tour-around-the-user-interface.html

profile
Step by step goes a long way ✨

0개의 댓글