What I Learned
  • Introduction
  • Introduction
  • Javascript
    • 클로저 (closure)
    • 프로토타입 (Prototype)
    • 정규표현식 (RegExp)
    • 날짜 (Date)
    • jQuery 분석
    • 스코프 (this)
    • 성능 최적화 (Optimization)
  • Style
    • CSS
      • Prevent user select
      • Aspect Ratio
      • Sticky Footer
    • SASS
      • for loop
      • mixin example
      • Media Query
  • Web
    • 웹의 동작 과정
    • Cross Browser
    • Document Reflows
    • Open Graph
    • 이미지 압축 (Image optimization)
    • SPA, SSR 비교
  • Algorithm and Data Structure
    • 자료구조 (Data Structure)
      • 큐 (Queue)
      • 스택 (Stack)
      • 링크드 리스트 (Linked List)
    • 기초 이론
      • 복잡도 분석
    • 수학 (Math)
      • factorial (계승)
      • 피보나치 수 (Fibonacci)
    • 정렬 (Sorting)
      • 버블 정렬 (Bubble Sort)
      • 선택 정렬 (Selection Sort)
      • 삽입 정렬 (Insertion Sort)
      • 합병 정렬 (Merge Sort)
      • 퀵 정렬 (Quick Sort)
    • 탐색 (Search)
      • 순차 탐색 (linear search)
      • 이진 탐색 (Banary search)
    • 문제 풀이
      • 땅따먹기
      • 가장 큰 원소의 합 구하기
      • JS with HTML
  • Software Engineering
    • OOP
    • Development Process
    • TDD / BDD
  • Interview
    • HTML
    • CSS
    • Javascript
    • Other
    • General Questions
  • DevOps
    • gulp
  • PHP
    • Basic
Powered by GitBook
On this page
  • 단위 테스트 (Unit Testing)
  • TDD (Test-Driven Development)
  • TDD Process
  • BDD (Behavior-Driven Development)
  1. Software Engineering

TDD / BDD

단위 테스트 (Unit Testing)

  • 단위 테스트는 각각 하나의 행동에 대해서만 테스트를 구행하고, 서로 독립적이어야 한다.

  • 모듈이나 객체를 구성하는 작은 단일 함수 크기에 집중하여 테스트 자체를 단순화하고 빠르게 작성, 수행한다.

  • 단위 테스트로 변경과 상관없는 구현 코드 동작이 이상없다고 신뢰할 수 있다.

  • 단위테스트는 네트워크, DB 등에 의존되지 않아야 한다.

TDD (Test-Driven Development)

  • 짧은 개발 서클의 반복에 의존하는 소프트웨어 개발 프로세스

  • 개발자는 요구되는 새로운 기능에 대한 자동화된 테스트케이스 작성

  • 해당 케이스를 통과하는 가장 짧고 가독성이 좋고 유지보수성이 뛰어난 코드 작성

  • 일단 테스트 통과하는 코드를 작성하고 상황에 맞게 리팩토링하는 과정을 거침

  • 말 그대로 테스트가 코드 작성을 주도하는 개발 방식

TDD Process

  1. 테스트 코드 작성 (Add a test) 새 기능을 추가하기 전 테스트 케이스를 먼저 작성한다. 개발자는 해당 기능의 요구사항과 명세를 이해하고, 사용자 케이스, 스토리 등과 함께 이해해야 한다. 이는 개발자가 코드를 작성하기 전 요구사항에 더 집중할 수 있도록 도와준다.

  2. 테스트 코드 수행 (Run all tests and see if new one fails) 새 기능 추가 시 기존에 잘 되던 기능이 작동하지 않을 수 있는데, 이를 방지하기 위해 테스트 코드를 작성한다. 새 기능 추가 시 테스트 코드를 작성하여, 새 기능과 기존 기능이 잘 작동하는지 테스트 케이스를 통해 확인할 수 있다.

  3. 코드 리펙토링 (Refactor code) 가독성, 코딩 컨벤션, 네이밍, 예외처리 등을 고려하여 유지보수, 확장하기 좋은 코드를 작성하기 위해 리펙토링 한다.

BDD (Behavior-Driven Development)

  • TDD에 파생된 프로그래밍 개발 프로세스

  • 구현(Implementation)을 테스트하는 것이 아니라, 동작(Behavior)을 테스트하는 것

  • 테스트 케이스 자체가 요구사항이 되도록 하는 방식

  • 테스트 코드를 결합 테스트, 시나리오 테스트까지 확장하여 각각에 해당하는 문서를 대체.

  • 어떤 것을 테스트할지, 얼마나 할지 등 테스트에 집중

PreviousDevelopment ProcessNextInterview

Last updated 6 years ago