소프트웨어 테스팅 기법 또는 범주 [닫기]


16

어떤 종류의 소프트웨어 테스트를 알고 있습니까? 테스트 주도 개발, 단위 테스트 등에 대해 들었지만 그 중요성과 차이점을 이해할 수 없습니다. 예를 들어 회귀 테스트 또는 승인 테스트를 사용하는 이유는 무엇입니까? 그들이 제공하는 장점은 무엇입니까?


8
이 중 어떤 부분이 혼란 스럽거나 불완전 했습니까? en.wikipedia.org/wiki/Software_testing
S.Lott

2
YOu는 기존 기능을 중단하더라도 걱정하지 않고 회귀 테스트를 건너 뛸 수 있으며 사람들이 실제로 소프트웨어를 사용하는지 또는 비용을 지불하는지 사람들이 걱정하지 않으면 수락 테스트를 건너 뛸 수 있습니다. . 전문 프로그래머는이 두 가지를 모두 걱정합니다.
HLGEM

이 질문이 다른 종류의 테스트 범주에 대한 좋은 개요를 제공 할 수있는 유일한 것이므로이 질문을 다시 열기로 투표합니다. 어쩌면 누군가 가이 사이트에 더 적합하도록 질문을 다시 쓰는 방법을 알고 있습니까?
Doc Brown

답변:


38

내 마음에 넓은 범주는 다음과 같습니다.

블랙 박스 테스트 . 응용 프로그램이나 시스템의 내용이 숨겨져 있으므로 코드를 보지 못하고 어느 정도는 맹목적으로 테스트하고 있습니다. 따라서이 경우 사람들은 모든 오류 사례를 알지 못하며 모든 사례를 찾는 것이 분명하거나 그렇지 않은 다양한 경계 조건으로 추측해야합니다.

화이트 박스 테스트 . 코드를보고 코드 범위를 메트릭으로 사용하여 시스템에서 모든 논리가 사용되고 있는지 확인할 수 있도록 코드 경로를 확인할 수 있습니다. 여기서 아이디어는 코드가 블랙 박스 테스트만큼 신비하지 않도록 테스트를 안내하는 데 도움이되는 코드의 모양을 아는 것입니다.

그레이 박스 테스트 는 이전 두 가지의 하이브리드입니다.

경계 케이스는 적중 테스트를 작성하는 코드에 볼 수있는 다양한 조건이 있기 때문에 화이트 박스 테스트에서 볼 수있는 경향이 있습니다. 코드 어딘가에 보여야합니다.

테스트의 일반적인 분류는 다음과 같습니다.

단위 테스트 . 이것들은 일반적으로 다소 특정한 것을 테스트하는 가장 작은 테스트입니다. 예를 들어이 방법이이 경계를 처리합니까? 참고 의존성 주입을 포함한 경우에 대해 여기에서 사용될 수있는 모의 시험에 대한 의존성을 감소시키기 위해 개체.

통합 테스트 . 이는 몇 개의 구성 요소가 연결되어 있고 구성 요소가 제대로 작동하는지 테스트하기위한 테스트입니다. 단위 테스트는 독립적으로 작동 할 수 있지만, 계층 간 통신이 잘못되어 다양한 문제를 포착하는 데 유용 할 수 있으므로 계층 간 통신이 잘못 될 수 있기 때문에 여러 가지 요소가 잘 결합되어 있는지 테스트합니다. 엔드-투-엔드 (end-to-end) 테스트 라는 용어 는 "애플리케이션의 한 엔드 포인트에서 다른 엔드 포인트로"(그 의미가 무엇이든) 전체 구성 요소 체인을 테스트하는 통합 테스트에 사용됩니다.

회귀 테스트 . 과거에 수행 된 테스트는 수정 된 사항이 수정 된 상태로 유지되고 버그가 코드에 다시 도입되지 않도록하기 위해 다시 수행됩니다.

사용성 테스트 . 최종 사용자가 소프트웨어를 사용하여 다양한 작업을 얼마나 잘 수행 할 수 있는지 테스트하기위한 테스트입니다. 무언가를 더 빨리 사용하거나 UI를 조정하여 무언가를 더 쉽게 사용할 수 있도록 자동화 할 수있는 위치

사용자 승인 테스트 . 이 테스트는 최종 사용자가 수행 한 테스트이므로 어떤 방식으로 작동하는지 직접 확인할 수 있으며 소프트웨어가 처음에 요청한 비즈니스 요구를 충족시키는 데 동의 할 수 있습니다.

기능 테스트테스트 중인 소프트웨어의 기능 사양을 기반으로하는 모든 종류의 테스트입니다. 이들은 항상 블랙 박스 테스트입니다.

성능 테스트. 이는 시스템이 너무 느려지지 않고 특정 양의 부하를 처리 할 수 ​​있도록하기위한 테스트입니다. 예를 들어, 새로운 웹 서버 서버를 테스트하면 100 명의 사용자가 동시에 사이트를 방문하는 것을 처리 할 수있는 것이 성능 테스트의 예입니다. 여기에서는 일반적으로 시스템을 한계로 밀어 붙이거나 시스템이 다른 부서의 일부 프로젝션을 처리 할 수 ​​있는지 확인하는 것으로 "로드 테스트"또는 "스트레스 테스트"라고도합니다. 이러한 테스트의 이론적 근거는 병목 현상을 발견하고 이에 대한 문제를 해결하는 데 약간의 노력이 소요될 수있는 최적화 할 구성 설정이 여러 개라는 경우가 많습니다. 여기서 병목 현상은 메모리, I / O, CPU 또는 네트워크 대역폭으로 인해 시스템이 예상대로 응답하지 않을 수 있습니다.

테스트 주도 개발 (Test Driven Development )은 방법론이며 특정 종류의 테스트를 의미하는 것이 아니라 코드보다 먼저 테스트를 작성하여 테스트가 행동 , 도메인 또는 기능 보다는 개발을 주도하는 요소 가되는 다른 사례가되는 것입니다. 방법.

연속 통합 은 단위, 통합 및 회귀 테스트와 같은 일부 테스트를 정기적으로 실행하여 변경으로 인해 테스트가 중단되는 경우 가능한 한 빨리 포착되도록하는 방법입니다.


5
+1 ... 안타깝게도 그 이후에도 여전히 수동 테스트가 있습니다.
Steven Evers

2
그리고 Stres Test-UAT의 일부로 포함 된 테스트 시나리오를 통해 동일한 마스크와 동일한 시간에 동일한 마스크를 테스트하는 모든 가능한 세션, btw +1
mKorbel

1
커버리지 / 분기 커버리지 테스트가 누락되지 않았습니까? 또한 "Electric Fence"malloc 또는 Valgrind와 같은 일종의 메모리 감시 시스템에서 실행합니까?
브루스 Ediger

1
@Bruce Ediger : 적용 범위는 화이트 박스 테스트에 대한 통계이며 자체 테스트 방법이 아니며 설명하는 도구는 성능 테스트 용입니다.
Steven Evers

"도구 ... 성능 테스트 용"과는 다릅니다. valgrind에서 많은 단위 테스트를 실행하는 일부 언어 (C 또는 C ++)에서는 위에 나열된 다른 종류의 테스트에서 찾을 수없는 버그가 발견됩니다. Valgrind는 확실히 디버깅 도구이지만 valgrinded 프로그램에서 테스트를 실행하는 것이 매우 필요합니다.
Bruce Ediger

4

회귀 테스트는하지 않은 기존의 기능을 중단하지 않은 시스템에 그 새로운 변화를 확인하기 위해 수행 되어 변경에 의해 영향을받은 것으로한다.

수락 테스트는 일반적으로 고객 / 클라이언트 / 비즈니스 사용자가 수행하며, 다른 형태의 테스트보다 더 높은 수준이며 변경을 요청한 사람들이 만족하고 변경 사항을 홍보 할 수 있도록 수행됩니다. 생산 시스템.


1
그리고 가장 중요한 것은 그들이 원하는 것을 얻었고 지금 지불 할 수 있다는 데 동의합니다.
Mchl
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.