[JavaScript] TestBuilder

Fleuve·2020년 9월 17일
0
post-thumbnail

디버깅이란?

디버깅은 버그를 잡는 다는 의미로 예상치 못한 프로그램의 행동들에 원일을 분석하기 위한 기술이다.

디버깅 : 문제 해결을 위한 방법

1. 이상한 결과가 나왔을 경우

  • 뭐가 문제인지 알아야 한다.
function foo() {
	for(let i = 0; i < 10; i++) {
    console.log(i);
  }
}
} // Uncaught SyntaxError : Unexpected token

이렇게 결과가 나왔을 경우 "SyntaxError의 의미가 뭐지?, 에러메세지의 의미가 뭐지?, 몇 번째 줄에서 발생한 문제지?" 를 파악해야 한다.

  • 문법에러가 아닌 로직에러가 발생한 경우
    - 문제가 발생했을 것이라고 생각되는 부분의 가설 설정
    - 가설이 맞는지 틀린지 가설 검증

    여가서 가설은 한번에 여러개를 세우지 않는다. 만약 여러개를 세우더라고
    서로 독립적인 가설을 세워야 한다.

2. 유용한 테스트 방법

  • 경우의 수를 정리
  • 경우의 수에 대해 하나 씩 기대값과 실제값 비교
    • 이것을 유닛 테스트라고 한다.
    • 이러한 개발 방법을 테스트 주도 개발이라고 한다.

테스트 주도 개발(TDD)

TDD는 코드를 작성하기 전 테스트를 쓰는 방법론이다. 개발자 자신이 바람직하다고 생각하는 코드의 결과를 미리 정의하고, 이것을 바탕으로 코드를 작성하는 방법이다.

장점

테스트를 먼저 작성하는 것은 판별적으로 코드를 어떻게 구성할지 고민하고. 그 과정에서 버그가 더 적은 코드를 작성할 수 있다. 즉 테스트가 쉽도록 코드의 구조를 기획하는 것과 같은 효과를 내게 된다.

단점

코드를 기획한다는 것은 초반에 명호가하지 않을 수 있고 대신 빠르게 프로토 타입을 만들어 전반적인 아웃라인을 그리는 것이 좋을 수 있다. 이런 경우 지속적으로 기획이 바뀌는 과정에서 초반에 테스트를 짜다가 다시 짜야하거나 끼워야 할 경우가 높다. 즉 TDD의 가장 큰 단점은 속도다. 장기적으로 피할 수 있는 문제는 피할지 라도 개발속도가 느리다는 것이 큰 단점이다.

왜 테스트를 작성해야하는가?

예를 들어 자동차를 만든다고 가정을 했을 때 자동차 안에는 많은 부품들이 들어간다. 여기서 부품들이 잘 작동하는지에 댛나 검증이 필요하다. 이 과정에서는 수학을 사용하곤한다. 수학으로 엄격한 검증을 거쳐 완벽한 설계를 하는 것 처럼 소프트웨어에는 테스트를 통해 검증을 하는 것이다!

0개의 댓글