database by narae :p

객체를 활용한 테스트 주도 개발 본문

테스트

객체를 활용한 테스트 주도 개발

dbbymoon 2021. 12. 5. 17:51

테스트 주도 개발로 배우는 객체 지향 설계와 실천

2장. 객체를 활용한 테스트 주도 개발

 

2.1. 객체망

  • 객체지향설계 : 객체 간의 의사소통에 집중.
  • 협업하는 객체의 망 

 

2.2 값과 객체

  • 값 : 변하지 않는 양이나 크기
  • 객체 : 시간이 지남에 따라 상태가 변할지도 모르지만 식별자가 있는 계산 절차 

 

2.3. 메시지를 따르라

다른 객체와 쉽게 관계를 맺을 수 있게 객체를 설계하면, 고수준의 선언적 접근법이 주는 혜택을 누릴 수 있다. 객체가 일반적인 의사소통 패턴을 따르고 객체 간의 의존성이 명시적임을 의미한다. 

  • 의사소통 패턴 : 객체들이 다른 객체와 상호작용하는 방법을 관장하는 각종 규칙으로 구성
  • 객체
  • 역할 : 관련된 책임의 집합
  • 책임 : 어떤 과업을 수행하거나 정보를 알아야할 의무
  • 협력 : 객체나 역할의 상호작용

 

2.4. 묻지 말고 답하라

호출하는 객체가 무엇을 원하는지 기술하고, 호출된 객체가 그러한 바를 어떻게 실현할 지 결정하게 해야한다. (디미터의 법칙)

객체는 그것이 내부적으로 보유하고 있거나 메시지를 통해 확보한 정보만 가지고 의사결정을 내려야 한다. 

호출자는 객체의 내부 구조나 역할 인터페이스 너머에 존재하는 시스템의 나머지 구조에 관해 전혀 알 필요가 없다.

 

2.5. 그래도 가끔은 물어라

호출자에 질의메서드를 추가해 가장 적절한 객체에 행위가 자리 잡아 행위에 이해하기 쉬운 이름이 생기고 테스트하기가 쉬워진다. 

 

2.6. 협력 객체의 단위 테스트

  • 테스트에 존재하는 대상 객체의 이웃을 다른 대체물(목 객체, mock object)로 대체

=> 발생하는 이벤트에 대해 대상 객체가 가짜 이웃과 어떻게 상호 작용할지 지정할 수 있다.

= 예상 구문(expectation)

  • 테스트가 진행되는 동안 목 객체는 자신이 예상대로 호출되었는지 단정한다. 
  • 나머지 테스트가 동작하는데 필요한 행위(스텁 형태로 동작하는)를 구현하기도 한다.

 

2.7. 목 객체를 활용한 TDD 지원

  • 과정
  • 테스트 핵심 구조

단위 테스트는 대상 객체와 해당 객체를 둘러싼 환경 간의 관계를 명확하게 드러낸다.

그곳에 있는 모든 객체를 생성하고 대상 객체와 해당 객체의 협력자 사이의 상호 작용에 관한 단정을 만들어 낸다.

 

 

 

 

 

 

'테스트' 카테고리의 다른 글

테스트 주도 개발 주기의 유지  (0) 2021.12.05
테스트 주도 주기 시작  (0) 2021.12.05
도구 소개  (0) 2021.12.05
테스트 주도 개발의 핵심은 무엇인가?  (0) 2021.12.05