블랙 박스 또는 화이트 박스 테스트-먼저 무엇을합니까?


14

블랙 박스와 화이트 박스 테스트가 같은 사람에 의해 수행되는 아주 작은 팀에서 테스터가 먼저해야 할 일은 무엇입니까?


1
나는 이것이 상황에 달려 있다고 생각합니다. 대부분 사양 구현을 마쳤으며 최종 테스트를 시작하려고합니까, 아니면 개발주기 중 언제라도 일반적으로 말하고 있습니까? 답변에서 언급했듯이 구현자는 일반적으로 내부 테스트를 이해하고 커밋하기 전에 구현의 기능을 주장하기 위해 Whtie Box 테스트의 일부로 간주 될 수있는 단위 테스트를 작성합니다.
Chris

답변:


11

가장 정확한 것은 무엇이든.

화이트 박스 테스트 (즉, 코드 내부 테스트)는 코드를 작성한 개발자가 단위 테스트를 수행하는 것이 이상적입니다. 단위 테스트는 시간이 지남에 따라 빌드되고 빌드 프로세스의 일부이므로 빌드되지 않은 테스터의 시간을 제대로 작동하지 않는 코드로 낭비하지 않습니다. 팀이 작을수록 단위 테스트가 더욱 중요해집니다. 특히 테스터 군대가 없어서 문제를 해결할 수 없기 때문입니다.

블랙 박스 테스트 (즉, 사용자 / 시스템 인터페이스를 통한 테스트)는 일반적으로 대부분의 테스터가하는 일입니다.

완제품에 기능이 얼마나 중요한지 모든 테스트를 우선시해야합니다. X를 수행 할 도구를 제공하고 제품이 X를 수행하지 않는 것이 큰 문제입니다.


1
글쎄, 지금까지 읽은 최고의 답변.
Chris

5

검은

기능을 검증하기위한 블랙 박스 테스트. 필요한 경우 화이트 박스 테스트. 모든 블랙 박스 테스트가 통과되고 적용 범위가 양호하면 화이트 박스 테스트가 필요하지 않습니다.


2
물론 블랙 박스 테스트에서 핵심 기능 또는 구성 테스트를 놓친 경우가 아니면 :}
Alan

3
@Alan : 같은 인수 따라서주의 '범위가 좋은가'화이트 박스 테스트에 적용
스티븐 A. 로우

1
동의-나는 나의 진술이 좋은 범위의 당신의 정의에 달려 있다고 생각합니다.
Alan

1
@DocBrown 나는 당신이 설명 한 것이 원격으로 화이트 박스 테스트와 같은 것이 무엇인지 절대 알 수 없습니다. 화이트 박스 테스트는 특정 구현의 분기 경로를 따르고 모든 경로를 수행 할 테스트 사례를 작성하는 것입니다. 아직 구현하지 않은 경우 정의마다 화이트 박스 테스트를 수행 할 수 없습니다. TDD와 BDD를 사용하면 때에 따라 일반적인 형태의 테스트를 작성합니다. 입력 데이터 또는 사전 조건 상태를 설정하고 장치를 시작하며 출력 데이터를 확인하거나 상태 또는 타사 호출을 종료합니다. 이것이 블랙 박스 테스트의 정의입니다.
Sammi

1
@ SamJudge : 이해를 돕기 위해 구현 코드 내부를 살펴보고 해당 정보를 사용하여 매우 구체적인 테스트 데이터 (공개 인터페이스를 통해 전달됨)를 디자인 한 다음이 화이트 박스 테스트를 호출하는 것이 타당합니다. 결과가 예상과 다르면 그러한 테스트도 실패합니다. 나중에 테스트 만 보더라도 "이 테스트는 흰색 상자 (또는 블랙 박스) 방식으로 생성 된 것"이라고 명확하게 말하지 못할 수 있습니다.
Doc Brown

3

블랙 박스.

화이트 박스 구성 요소는 일반적 으로 블랙 박스 구성 요소에 의존하므로 블랙 박스를 먼저 테스트 한 다음 화이트 박스로 이동하고 싶습니다.


2
"블랙 박스 구성 요소"와 "화이트 박스 구성 요소"의 의미가 무엇인지 잘 모르겠습니다. 기본 구성 요소 나 기본 지식이 있거나 없는지 테스트 할 수있는 "구성 요소"입니다.
Alan

나는 당신이 여기서 제안하는 "의존적"관계를 이해하지 못합니다. 화이트 블랙과 블랙 박스는 구성 요소가 아니며 Alan이 언급 한대로 모든 구성 요소를 테스트하는 스타일입니다. 차이점은 문제의 구성 요소를 테스트하기 위해 취한 방식입니다.
Chris

2

먼저 코더 / 개발자로서 화이트 테스트 사고를 수행하여 제대로 작동하는지 확인하십시오. 그런 다음 일반적으로 프로그램의 내부 구조에 대한 생각없이 최종 사용자 인 것처럼 생각하려고 블랙 박스 테스트를 수행합니다. 다른 사람이 작성한 내부 모듈을 테스트하고 코드에 액세스 할 수 없기 때문에 블랙 테스트를 수행하는 경우에도 코더 / 개발자처럼 생각해야하는 경우가 있습니다.


2

좋은 테스트주기를 원한다면 다른 사람들이 두 가지 모두를 수행해야합니다 .

  • 화이트 박스 테스트에 중점을 둔 개발자는 최근 코드에서 변경된 사항, 더 복잡한 영역 (및 깨질 가능성이있는 영역) 등을 알고 있으며 새로운 결함이 발생할 가능성이 가장 높은 영역에 적절한 노력을 집중할 수 있습니다.

  • 반면 블랙 박스 테스트에 중점을 둔 QA 테스터는 최종 사용자와 같은 테스트에보다 쉽게 ​​접근 할 수 있습니다. 코드에 대한 내부 지식이 없으면 새로운 접근 방식을 취할 수 있으며 솔루션의 다른 부분이 어떻게 구현되는지에 대한 지식에 의해 편향되지 않습니다. 개발자가 간과했을 수있는 버그 나 실수로 응용 프로그램의 다른 영역을 손상시킨 코드 변경으로 인한 회귀를 포착합니다.

귀하의 질문에 대답하려면 먼저 화이트 박스 테스트를 수행해야합니다. 그러나 효과를 발휘하려면 블랙 박스 테스트를 수행하는 다른 사람이 필요합니다.


1

블랙 박스 테스트로 시작한 다음 코드 적용 범위 정보 또는 디버거를 사용하여 수행중인 작업을 파악하고 진행중인 작업을 분석합니다.

그러나 진정한 대답은 그것이 달려 있다는 것 입니다. API 테스트를 수행하는 경우 코드를 더 빨리 (아마도 먼저) 살펴볼 가능성이 있지만, 나중에 대규모 엔드 투 엔드 시나리오를 보는 것이 목표 인 경우 훨씬 늦습니다.


1

TDD의 지지자로서 코드 (또는 상자)가 존재하기 전에 테스트가 작성되기 때문에 블랙 박스 테스트를 먼저 말합니다. :)

화이트 박스 테스트 (내가 이해하는 한)는 디버깅 사고 방식에 더 유용합니다.


-1, TDD 화이트 박스 테스트입니다. TDD에서는 다음 테스트를 작성하기 위해 테스트에 관련된 코드가 무엇을하고 무엇을하지 않는지를 알아야합니다. 블랙 박스 테스트 란 코드에 대해 잘 모르는 사람 (테스터, 코딩 방법 을 알 필요가없는 사람 )이 테스트를 설계 함을 의미합니다.
Doc Brown

1
그런 다음 같은 방식으로 TDD를 연습하지 않습니다. 나를 위해 TDD는 클래스 / 함수의 사양을 적용하는 것에 관한 것입니다 : 테스트는 클래스 / 함수가 지정된대로 동작하는지 확인하기 위해 작성되었지만 해당 사양이 유지되는 한 코드가 장면 뒤에서 어떻게 동작하는지 신경 쓸 수는 없습니다 ... 기능보다 먼저 테스트를 작성해야합니다.
Matthieu M.

1

코드가 존재하기 전에 테스트를 작성하기 때문에 블랙 박스 테스트. 테스터는 소규모 팀에서 효율적으로 코드를 작성하는 개발자와 병행하여 시간 소모적 인 자동 테스트를 개발해야합니다.

코드가 이미 작성된 경우 블랙 박스 관점에서 테스트 범위를 스케치하여 실제 코드로 두뇌를 혼란시키기 전에 시간을 브레인 스토밍하는 데 시간을 할애하는 것이 좋습니다. 그러나 실제 테스트와 너무 멀어지기 전에 화이트 박스로 전환하고 코드를 살펴보고 위험한 영역에 대한 느낌을 얻거나 앞서 브레인 스토밍 한 테스트의 우선 순위를 정할 수 있습니다. 복잡하거나 의심스러워 보이는 코드 부분을 살펴보십시오).


0

둘 다. 내가 사용하는 좋은 테스트를 작성하려고 마우스 오른쪽 이두근을 염두에두고없고, 올바른 경계 조건 에 상관없이이 마음에 와서 차례를. 이것들은 Pragmatic Unit Testing 에서 제안 된 두문자어 입니다.

저의 목표는 좋은 테스트를 작성하는 데 중점을 두는 것입니다.


'White'와 'black'은 단위 테스트 용어가 아니므로 걱정하지 않아도됩니다. 단위 테스트는 사실상 흰색 상자입니다.
Ethel Evans

@Ethel Evans : 정의상 화이트 박스 테스트가 아닙니다. 대부분의 단위 테스트는 화이트 박스 테스트이지만 필수는 아닙니다. 입력 영역을 함수의 출력 범위에 매핑하는 모든 테스트는 단위 테스트이지만 구현의 세부 사항을 알 필요는 없습니다.
Steven Evers

0

먼저 흰색 상자 테스트를 수행하십시오 .

두 번째는 블랙 박스 테스트입니다.

> 블랙 박스 테스트

I. 테스터는 텍스트 상자, 라디오 버튼, 목록 상자, 명령 버튼 등과 같은 응용 프로그램의 기능을 확인해야합니다.

II. 테스터는 로고, 이미지, 철자 등 응용 프로그램이 작동하지 않는지 확인해야합니다.

III. 테스터는 응용 프로그램의 전체 흐름을 확인해야합니다.

참고 : 긍정적 및 부정적 조건을 확인합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.