어 ... 여기에 대한 답변으로 작성된 단위 및 통합 테스트에 대한 좋은 점이 있습니다!
나는 그리워 비용과 관련된 실제적인 뷰를 여기에. 즉, 매우 고립 된 / 원자 단위 테스트 (데이터베이스, 파일 시스템 등의 종속성없이 병렬로 실행할 수있는 옵션)와 (높은 수준의) 통합 테스트의 이점을 분명히 알 수 있습니다. 그러나 ... 또한 비용 (시간, 돈 등)과 위험 의 문제이기도합니다 .
내 경험에서 "테스트하는 방법" 을 생각하기 전에 훨씬 더 중요한 다른 요소가 있습니다 (예 : "무엇을 테스트할지" ) .
내 고객이 추가 쓰기 및 유지 관리 테스트 비용을 암시 적으로 지불합니까? 보다 테스트 중심의 접근 방식 (코드를 작성하기 전에 먼저 테스트를 작성)이 내 환경 (코드 오류 위험 / 비용 분석, 사람, 설계 사양, 테스트 환경 설정)에서 실제로 비용 효율적입니까? 코드는 항상 버그가 있지만 테스트를 프로덕션 용도 (최악의 경우)로 옮기는 것이 더 비용 효율적일 수 있습니까?
또한 코드 품질 (표준)이 무엇인지, 프레임 워크, IDE, 디자인 원칙 등 여러분과 팀이 따라야하는 경험과 그 경험에 따라 달라집니다. 잘 작성되고, 이해하기 쉽고, 충분히 문서화되어 있고 (이상적으로 자체 문서화) 모듈 식 코드는 반대보다 버그가 적습니다. 따라서 광범위한 테스트를위한 실제 "필요", 압력 또는 전체 유지 보수 / 버그 수정 비용 / 위험은 높지 않을 수 있습니다.
우리 팀의 동료가 제안한 극한까지 살펴 보자. 순수한 Java EE 모델 계층 코드를 데이터베이스 내의 모든 클래스와 모의 클래스에 대해 원하는 100 % 적용 범위로 단위 테스트를 시도해야한다. 또는 통합 테스트를 원하는 관리자는 모든 실제 사용 사례 및 웹 UI 워크 플로의 100 %를 적용하여 사용 사례가 실패 할 위험이 없기 때문입니다. 그러나 우리는 약 100 만 유로의 예산을 가지고 있으며, 모든 것을 코딩 할 계획이 있습니다. 잠재적 인 앱 버그가 사람이나 회사에 큰 위험이되지 않는 고객 환경. 우리의 앱은 내부적으로 (일부) 중요한 단위 테스트, 통합 테스트, 설계된 테스트 계획을 통한 주요 고객 테스트, 테스트 단계 등으로 테스트됩니다. 우리는 일부 원자력 공장이나 제약 생산을위한 앱을 개발하지 않습니다!
나는 가능한 경우 테스트를 작성하고 코드를 단위 테스트하는 동안 개발하려고합니다. 그러나 나는 종종 하향식 접근 방식 (통합 테스트)에서이 작업을 수행하고 중요한 테스트 (종종 모델 계층에서)를 위해 "앱 계층 잘라 내기"를 수행 할 수있는 좋은 점을 찾으려고 노력합니다. ( "레이어"에 대해 종종 많기 때문에)
또한 단위 및 통합 테스트 코드는 시간, 비용, 유지 관리, 코딩 등에 부정적인 영향을 미치지 않습니다. 시원하고 적용해야하지만 5 년 동안 개발 된 많은 테스트를 시작하거나 5 년 동안 수행 한 후주의가 필요합니다. 암호.
따라서 실제로 는 신뢰 또는 비용 / 위험 / 혜택 평가에 크게 의존 한다고 말하고 싶습니다. 실제 생활에서와 같이 100 % 안전 메커니즘으로 뛰어 다니고 싶지 않으며 달리고 싶지 않습니다.
아이는 어딘가에 올라가서 넘어져서 다칠 수 있습니다. 잘못된 연료를 채워서 차가 작동을 멈출 수 있습니다 (잘못된 입력 :). 3 년 후에 시간 단추가 작동을 멈 추면 토스트가 연소 될 수 있습니다. 그러나 나는 절대로 고속도로를 운전하고 분리 된 스티어링 휠을 손에 쥐고 싶지 않습니다. :)