differences between unit testing
단위, 통합 및 기능 테스트의 자세한 비교 :
모든 소프트웨어 응용 프로그램의 경우 단위 테스트와 통합 테스트는 모두 고유 한 프로세스를 사용하여 소프트웨어 응용 프로그램을 테스트하므로 매우 중요합니다.
그러나 어느 하나 또는 둘 다 어느 시점에서든 기능 테스트를 대체 할 수 없습니다.
학습 내용 :
단위 테스트 대 통합 테스트 대 기능 테스트
단위 테스트 코드가 제대로 작동하는지 확인하기 위해 애플리케이션의 개별 모듈을 독립적으로 테스트 (종속성과의 상호 작용없이)하는 것을 의미합니다.
최고의 DVD 복사 소프트웨어 Windows 10
통합 테스트 다른 모듈이 그룹으로 결합 될 때 잘 작동하는지 확인하는 것을 의미합니다.
기능 테스트 시스템의 기능 조각 (종속성과 상호 작용할 수 있음)을 테스트하여 코드가 올바른 작업을 수행하는지 확인하는 것을 의미합니다.
기능 테스트는 통합 테스트와 관련이 있지만 모든 코드가 함께 실행되는 상태에서 전체 애플리케이션의 기능을 확인하는 테스트를 의미합니다. 거의 슈퍼 통합 테스트입니다.
단위 테스트는 시스템의 단일 구성 요소 검사를 고려하는 반면 기능 테스트는 시스템 요구 사항 사양에 설명 된 의도 된 기능에 대해 응용 프로그램 작동을 검사하는 것을 고려합니다. 반면 통합 테스트에서는 시스템의 통합 모듈 검사를 고려합니다.
그리고 가장 중요한 것은 투자 수익 (ROI)을 최적화하려면 코드 기반에 가능한 한 많은 단위 테스트, 적은 수의 통합 테스트 및 최소한의 기능 테스트가 있어야합니다.
이것은 다음 테스트 피라미드에서 가장 잘 설명됩니다.
단위 테스트는 작성하기 쉽고 실행이 더 빠릅니다. 위의 피라미드에서 볼 수 있듯이 테스트를 구현하고 유지하는 데 드는 시간과 노력은 단위 테스트에서 기능 테스트로 증가합니다.
예:
지나치게 단순화 된 예를 통해이 세 가지 유형의 테스트를 이해하겠습니다.
예 : . 기능성 휴대폰의 경우 필요한 주요 부품은“배터리”와“심 카드”입니다.
단위 테스트 예 – 배터리의 수명, 용량 및 기타 매개 변수를 확인합니다. SIM 카드가 활성화되었는지 확인합니다.
통합 테스트 예 – 배터리와 SIM 카드가 일체화되어 휴대폰을 시작하기 위해 조립됩니다.
기능 테스트 예 – 휴대폰의 기능 및 배터리 사용량은 물론 SIM 카드 설비 등을 확인합니다.
우리는 평신도의 용어로 예를 보았습니다.
이제 로그인 페이지의 기술적 인 예를 살펴 보겠습니다.
거의 모든 웹 응용 프로그램에는 사용자 / 고객이 로그인해야합니다.이를 위해 모든 응용 프로그램에는 다음 요소가 포함 된 '로그인'페이지가 있어야합니다.
- 계정 / 사용자 이름
- 암호
- 로그인 / 로그인 버튼
단위 테스트의 경우 테스트 사례는 다음과 같습니다.
- 필드 길이 – 사용자 이름 및 암호 필드.
- 입력 필드 값이 유효해야합니다.
- 로그인 버튼은 두 필드에 유효한 값 (형식 및 세로)을 입력 한 후에 만 활성화됩니다.
통합 테스트의 경우 다음이 테스트 케이스 일 수 있습니다.
- 사용자는 유효한 값을 입력하고 로그인 버튼을 누르면 환영 메시지가 표시됩니다.
- 사용자는 유효한 항목을 입력하고 로그인 버튼을 클릭 한 후 환영 페이지 또는 홈 페이지로 이동해야합니다.
이제 단위 및 통합 테스트가 완료된 후 추가 기능 테스트를 위해 고려되는 테스트 케이스 :
- 예상되는 동작이 확인됩니다. 즉, 유효한 사용자 이름과 암호 값을 입력 한 후 로그인 버튼을 클릭하여 로그인 할 수있는 사용자입니다.
- 로그인에 성공하면 환영 메시지가 표시됩니까?
- 잘못된 로그인에 표시되어야하는 오류 메시지가 있습니까?
- 로그인 필드에 저장된 사이트 쿠키가 있습니까?
- 비활성화 된 사용자가 로그인 할 수 있습니까?
- 비밀번호를 잊어 버린 사용자를위한 '비밀번호 찾기'링크가 있습니까?
기능 테스트를 수행하는 동안 기능 테스터가 떠오르는 그러한 경우가 훨씬 더 많습니다. 그러나 개발자가 단위 및 통합 테스트 케이스를 빌드하는 동안 모든 케이스를 처리 할 수는 없습니다.
따라서 단위 및 통합 테스트 후에도 아직 테스트되지 않은 시나리오가 많이 있습니다.
이제 단위, 통합 및 기능 테스트를 하나씩 검토 할 때입니다.
단위 테스트 란 무엇입니까?
이름에서 알 수 있듯이이 수준에는 '단위'테스트가 포함됩니다.
여기서 단위는 가장 작은 개별 기능, 방법 등 테스트 할 수있는 애플리케이션의 가장 작은 부분이 될 수 있습니다. 소프트웨어 개발자는 단위 테스트 케이스를 작성하는 사람입니다. 여기서의 목표는 요구 사항과 장치의 예상 동작을 일치시키는 것입니다.
다음은 단위 테스트와 그 이점에 대한 몇 가지 중요한 사항입니다.
- 단위 테스트는 다음을 사용하는 소프트웨어 개발자가 통합 테스트 전에 수행됩니다. 화이트 박스 테스트 기술 .
- 단위 테스트는 긍정적 인 동작, 즉 유효한 입력의 경우 올바른 출력뿐만 아니라 잘못된 입력으로 발생하는 오류도 확인합니다.
- 초기 단계에서 문제 / 버그를 찾는 것은 매우 유용하며 전체 프로젝트 비용을 절감합니다. 코드 통합 전에 단위 테스트가 수행되기 때문에이 단계에서 발견 된 문제는 매우 쉽게 해결할 수 있으며 그 영향도 매우 적습니다.
- 단위 테스트는 작은 코드 조각이나 개별 기능을 테스트하므로 이러한 테스트 사례에서 발견 된 문제 / 오류는 독립적이며 다른 테스트 사례에 영향을주지 않습니다.
- 또 다른 중요한 장점은 단위 테스트 케이스가 코드 테스트를 단순화하고 쉽게 만든다는 것입니다. 따라서 코드의 최신 변경 사항 만 테스트하기 때문에 나중 단계에서도 문제를 해결하는 것이 더 쉬워집니다.
- 단위 테스트는 시간과 비용을 절약하고 재사용이 가능하고 유지 관리가 쉽습니다.
JUnit ( 자바 프레임 워크 ), PHPUnit (PHP 프레임 워크), NUnit (.Net 프레임 워크) 등은 다양한 언어에 사용되는 인기있는 단위 테스트 도구입니다.
통합 테스트 란 무엇입니까?
통합 테스트는 시스템의 다른 부분을 함께 통합하는 것입니다. 시스템의 두 가지 다른 부품 또는 모듈이 먼저 통합 된 다음 통합 테스트가 수행됩니다.
통합 테스트의 목적은 통합시 시스템의 기능, 신뢰성 및 성능을 확인하는 것입니다.
통합 테스트는 먼저 단위 테스트 된 모듈에서 수행되고 통합 테스트는 모듈 조합이 원하는 출력을 제공하는지 여부를 정의합니다.
통합 테스트는 독립적 인 테스터 또는 개발자가 수행 할 수 있습니다.
통합 테스트 접근 방식에는 3 가지 유형이 있습니다. 각각에 대해 간략하게 설명하겠습니다.
mp3 앱으로 최고의 YouTube 변환
a) 빅뱅 통합 접근법
이 접근 방식에서는 모든 모듈 또는 장치가 한 번에 전체적으로 통합되고 테스트됩니다. 이는 일반적으로 전체 시스템이 단일 시점에서 통합 테스트를 수행 할 준비가되었을 때 수행됩니다.
이 통합 테스트 접근 방식을 시스템 테스트와 혼동하지 마십시오. 시스템 테스트에서 수행되는 전체 시스템이 아닌 모듈 또는 장치의 통합 만 테스트됩니다.
빅뱅 접근 방식의 전공 이점 통합 된 모든 것이 한 번에 테스트된다는 것입니다.
하나의 전공 불리 실패를 식별하는 것이 어려워진다는 것입니다.
예: 아래 그림에서 Unit 1에서 Unit 6은 Big Bang 접근 방식을 사용하여 통합 및 테스트되었습니다.
b) 하향식 접근법
유닛 / 모듈의 통합은 위에서 아래로 단계적으로 테스트됩니다.
첫 번째 단위는 쓰기를 통해 개별적으로 테스트됩니다. 테스트 스텁 . 그 후 마지막 레벨이 합쳐지고 테스트 될 때까지 하위 레벨이 하나씩 통합됩니다.
하향식 접근 방식은 실제 환경에서 일어나는 일과 일치하기 때문에 매우 유기적 인 통합 방법입니다.
유일한 관심사 이 접근 방식을 사용하면 마지막에 주요 기능이 테스트됩니다.
소프트웨어 테스트의 결함 수명주기
c) 상향식 접근
모든 수준의 장치 / 모듈이 통합되고 하나의 장치로 테스트 될 때까지 장치 / 모듈은 아래에서 위로 단계적으로 테스트됩니다. 라는 자극 프로그램 드라이버 이 접근 방식에 사용됩니다. 하위 수준에서 문제 나 오류를 감지하는 것이 더 쉽습니다.
메이저 불리 이 접근 방식의 상위 수준 문제는 모든 장치가 통합되었을 때만 마지막에 식별 할 수 있다는 것입니다.
단위 테스트와 통합 테스트
단위 테스트와 통합 테스트에 대해 충분히 논의 했으므로 다음 표에서 두 가지의 차이점을 빠르게 살펴 보겠습니다.
단위 테스트 | 통합 테스트 |
---|---|
테스트 초기 단계에서 수행 한 후 언제든지 수행 할 수 있습니다. | 단위 테스트 후 및 시스템 테스트 전에 수행해야합니다. |
전체 시스템의 단일 구성 요소를 테스트합니다. | 함께 작동하는 시스템 구성 요소를 테스트합니다. 즉, 여러 장치의 공동 작업을 테스트합니다. |
더 빠른 실행 | 천천히 달릴 수있다 |
외부 의존성이 없습니다. 모든 외부 종속성은 조롱되거나 제거됩니다. | 외부 종속성 (예 : 데이터베이스, 하드웨어 등)과의 상호 작용이 필요합니다. |
단순한 | 복잡한 |
개발자가 수행 | 테스터가 실시 |
화이트 박스 테스트의 한 유형입니다. | 블랙 박스 테스트의 일종입니다. |
저렴한 유지 보수 | 비싼 유지 보수 |
모듈 사양에서 시작 | 인터페이스 사양에서 시작 |
단위 테스트는 작은 코드 조각이 의도 한 작업을 수행하는지 확인하기 때문에 범위가 좁습니다. | 전체 응용 프로그램을 포괄하므로 더 넓은 범위가 있습니다. |
단위 테스트의 결과는 코드의 세부적인 가시성입니다. | 통합 테스트의 결과는 통합 구조에 대한 자세한 가시성입니다. |
개별 모듈의 기능 내에서만 문제를 발견하십시오. 통합 오류 또는 시스템 전체 문제를 노출하지 않습니다. | 서로 다른 모듈이 서로 상호 작용하여 전체 시스템을 구성 할 때 발생하는 버그 발견 |
기능 테스트
에 블랙 박스 테스트 기술 , 특정 입력을 제공 할 때 원하는 출력을 생성하기 위해 애플리케이션의 기능을 테스트하는 것을 '기능 테스트'라고합니다.
우리의 소프트웨어 테스트 프로세스 , 우리는 요구 사항 및 시나리오에 따라 테스트 케이스를 작성하여이를 수행합니다. 모든 기능에 대해 작성된 테스트 케이스의 수는 하나에서 여러 개까지 다양합니다.
테스트 케이스는 기본적으로 다음 부분으로 구성됩니다.
- 테스트 요약
- 전제 조건 (있는 경우)
- 테스트 케이스 입력 단계
- 테스트 데이터 (있는 경우)
- 예상 출력
- 참고 (있는 경우)
'요구 사항 기반'및 '비즈니스 시나리오 기반' 수행되는 두 가지 형태의 기능 테스트입니다.
요구 사항 기반 테스트에서는 요구 사항에 따라 테스트 케이스가 생성되고 그에 따라 테스트됩니다. 비즈니스 시나리오 기반 기능 테스트에서 테스트는 비즈니스 관점에서 모든 시나리오를 염두에두고 수행됩니다.
그러나 전공 불리 기능 테스트의 가능성은 테스트의 중복 가능성과 일부 논리적 오류를 놓칠 가능성입니다.
정확한 차이
차이점을 살펴 보겠습니다.
다음은 몇 가지 주요 사항입니다.
단위 테스트 | 통합 테스트 | 기능 테스트 | |
---|---|---|---|
정의 및 목적 | 가장 작은 단위 또는 모듈을 개별적으로 테스트합니다. | 작업 수행을 위해 결합 된 둘 이상의 장치 / 모듈 통합 테스트. | 요구 사항에 따라 응용 프로그램의 동작을 테스트합니다. |
복잡성 | 가장 작은 코드를 포함하므로 전혀 복잡하지 않습니다. | 단위 테스트보다 약간 더 복잡합니다. | 단위 및 통합 테스트에 비해 더 복잡합니다. |
테스트 기술 | 화이트 박스 테스트 기술. | 화이트 박스 및 블랙 박스 테스트 기법. 회색 상자 테스트 | 블랙 박스 테스트 기법. |
주요 관심 | 개별 모듈 또는 단위. | 모듈 또는 유닛의 통합. | 전체 애플리케이션 기능. |
다루는 오류 / 문제 | 단위 테스트는 모듈에서 자주 발생할 수있는 문제를 찾습니다. | 통합 테스트는 다른 모듈을 통합하는 동안 발생할 수있는 문제를 찾습니다. | 기능 테스트는 응용 프로그램의 기능 수행을 허용하지 않는 문제를 찾습니다. 여기에는 몇 가지 시나리오 기반 문제도 포함됩니다. |
탈출 문제 | 문제 탈출 가능성이 없습니다. | 문제 탈출 가능성이 적습니다. | 실행할 테스트 목록이 항상 무한하기 때문에 문제가 벗어날 가능성이 더 많습니다. |
또한 읽기 => 기능 테스트 란?
결론
이 세 가지 테스트 유형은 모두 상관 관계가 있습니다.
완전한 커버리지를 얻으려면 '단위'가 함께 일관되게 작동하는지 확인하기 위해 코드 경로 / 라인, 기능 및 통합 테스트에 대한 단위 테스트가 필요합니다.
이 기사가 단위, 통합 및 기능 테스트에 대한 차이점과 함께 이러한 형식의 테스트에 훨씬 더 많은 내용을 제공했기를 바랍니다.