1

단위 테스트를 작성하기 전에 통합 테스트를 작성하는 것이 일반적입니까? 그것은 일반적인 것입니까, 좋은 생각입니까 아니면 모범 사례입니까?단위 테스트를 작성하기 전에 통합 테스트를 작성하는 것이 일반적입니까?

특히 제 3 자 API를 처음으로 사용하는 경우에는 논리적 인 일입니다. 자신의 코드를 테스트하기 전에 타사 소프트웨어를 사용하는 방법을 알아야합니다. 타사 소프트웨어와의 적절한 상호 작용 - 즉, 적절한 사용을 위해 코드를 테스트하기 전에 (통합 테스트를 통해) 타사 API와 상호 작용하는 방법에 대한 이해를 테스트해야합니다 (3 단을 조롱 한 단위 테스트를 통해) -party API), 맞습니까?

올바른 경로에 있습니까?

편집은 당신의 답변을 여러분 모두 감사합니다. 방금 similar/related question을 게시했습니다.

+1

정말 중요합니까 테스트를 위해 지불 프로세서를 사용하여 통합 테스트를 상상할 수 없다? 당신은 SO 군중과 함께 인기 이외에 다른 속성을 기반으로 아이디어의 장점을 가치있게 평가할 수 있어야합니다. –

+0

@Esteban - 동의합니다. 나는 SO 주체성의 나치를 두려워하며 평범함이 선하심보다 덜 주관적이라고 생각한다. 그래서 나는 그에 맞게 질문을했다. 평범한 지혜는 훌륭한 아이디어를 찾는 훌륭한 경험입니다. – apollodude217

답변

7

제 3 자 API를 개발할 때 가장 먼저해야 할 일은 예상/원하는 결과를 얻기 위해 프로토 타입 (통합 테스트)을 작성하는 것입니다. 그런 다음 기대치를 적용하고 프로토 타입을 실제 코드로 리팩토링하는 일부 단위 테스트를 만들어 앞으로 사용할 것입니다.

예, IMO, 꽤 일반적입니다. 그것은 가장 순수한 의미에서 TDD가 아닐지도 모르지만 나는 그걸로 괜찮습니다.

1

음, 예, 저는 종종 같은 방식으로 진행됩니다. 그러나 실제로 당신이 무엇을하고 있는지, 얼마나 믿고 있는지에 달려 있습니다.

예를 들어, 데이터베이스와 관련된 작업의 경우, 통합 테스트는 단위 테스트보다 훨씬 더 신뢰할 수 있습니다. 예를 들어, NHibernate는 특정 기준에 대해 잘못된 쿼리를 생성 할 수 있고 생성합니다.

반면 알고리즘이 처음 시도 (복잡한 정규식/구문 분석, 예를 들어 복잡한 비즈니스 규칙)에서 올바르게 작성하기 어려운 복잡한 알고리즘 인 경우 단위 테스트가 더 적합 할 수 있습니다. 당신은 (종종 더 느린) 통합을 기다리기를 원하지 않는다.

4

올바른 경로에 있습니까?

테스트 개발을 사용하고 있습니까? 즉, TDD?

그렇다면 올바른 길을 가고 있습니다.

"통합 테스트"및 "단위 테스트"는 어두운 정의입니다. 학자들은 머리카락을 구분할 수있는 방법을 찾기 위해 머리카락을 나눌 수 있습니다.

머리카락을 나눌 때 시간을 낭비하지 마십시오.

먼저 테스트를 작성하십시오.

+0

내가 IT 부서와 UT 사이의 위치에 대해 큰 논쟁이있는 것 같지 않지만 TDD를한다면 정말로 관심있는 부분이 자신의 코드가 작동한다는 신뢰감을 얻는 것입니다. 당신이 그것을 바꾸더라도 당신은 여전히 ​​그 확신을 가질 것입니다. IT 및 UT는이 작업에 모두 유용하므로 전반적으로 훌륭한 테스트 방법을 따르는 한 잘못 갈 수는 없습니다. – kai

3

얼마나 일반적인 지 잘 모르겠지만 더 높은 수준의 테스트가 첫 번째 단계로 옹호되는 것을 보았습니다. 예를 들어, Growing Object-Oriented Software Guided by Tests에서 저자가 추천하는 첫 번째 기능은 기능/수용 테스트 스 캐 폴딩을 작성한 다음 높은 수준의 수용 테스트를 작성하여 개발을 시작하는 것입니다 (수락 테스트는 테스트 삼각형의 끝 부분에 있으며 통합 테스트가 중간에 있고 맨 아래에 단위 테스트가 있으므로 실제로는 같은 원리입니다.)

그것은 같은 것을가는 종료 :

  • 는 기능 테스트를 통과합니까 기능 X
  • 쓰기 실패 단위 테스트
  • 만들기 단위 테스트 통과에 대한 기능 테스트를 실패

    • 쓰기? 그렇지 않은 경우 실패 단위 테스트를 작성하고 다음 블록을 구현하십시오.
  • 0

    나는에 달려 있다는 생각 : 당신이 사용하는 3 어떤 자

    1. .

      가 나는 INSERT 쿼리가 제대로 SQL 서버에 행을 삽입하지만 일부하지 인기있는 웹 서비스 테스트의 일환으로 결과를 예상 수신 여부를 테스트 할 수 있는지 테스트하기 위해 아무 소용 없다 생각

    2. 얼마나 어려운 외부 설치에 의존성 및 비용.

      나는 $ 1000 양의 트랜잭션이 성공하면 :)이 일반적이다 아닌지

    관련 문제