검증 및 검증은 시험 과정의 일부입니까?


9

많은 소스를 기반으로 테스트의 목표가 가능한 많은 버그를 찾는 것이라고 생각하지 않습니다. 우리는 그것이 작동하는지 또는 작동하지 않는지 테스트합니다. 예를 들어 다음은 ISTQB 양식 테스트의 목표입니다.

  1. (소프트웨어 제품)이 지정된 요구 사항을 충족하는지 확인

  2. (소프트웨어 제품)이 목적에 적합 함을 증명합니다 (유효하다고 생각합니다)

  3. 결함 감지

    테스트는 검증, 검증 및 결함 감지라는 데 동의합니다. 그 맞습니까?


1
테스트에 관한 서적의 첫 번째 말은 "테스트는 소프트웨어가 올바르게 작동한다는 것을 보여주는 프로세스가 아닙니다. 결함을 찾는 프로세스입니다"입니다. 그리고 그 책들이 그런 테스트를 정의해야하는 많은 이유들을 가져옵니다. 따라서 검증은 소프트웨어가 요구 사항을 충족하지 않는 위치를 찾는 프로세스입니다.
superM

정의에 따르면 검증은 요구 사항이 충족되었는지 확인합니다. 실제로 책은 테스트를 소프트웨어 품질을 측정하는 프로세스로 정의합니다. 따라서 시스템이 작동하는지 확인하기 위해 시스템이 작동하고 있는지 확인하는 경우 버그를 찾지 않아 테스트 중이 아닙니까? :) Wikipedia : 테스트 기술에는 소프트웨어 버그를 발견하려는 의도로 프로그램이나 응용 프로그램을 실행하는 프로세스가 포함됩니다.
John V

단어 테스트의 경계를 식별하는 가장 좋은 방법은 가설 테스트를 생각하는 것입니다.이 경우 가설에 오류가 있거나 부정확성이 없는지 테스트하려고 시도하는 것이 유용성을 확인하는 것과 다릅니다 또는 적용 가능성을 검증하는 경우 목적에 관계없이 전체 행동 범위를 식별하는 경우 일뿐입니다.
Jimmy Hoffa

"좋은 질문"보너스가 있습니다 :)
Andrew

답변:


1

나는 당신이 정확히 맞았다 고 생각합니다.

  1. 검증과 검증은 다른 것들이며 사실 꽤 잘 정의되어 있습니다. 이 문서를별로 좋아하지는 않지만 ISO 9000ff는 QA와 관련성이 높으며 검증은 제품을 요구 사항 및 검증과 제품을 비교하여 고객 / 사용자의 요구에 실제로 맞는지 확인하는 것으로 정의합니다. .

  2. 둘 다 테스트를 통해 수행 할 수 있습니다. 검증은 테스트에서 생성 된 양식 요구 사항으로 이어집니다. 검증은 요구 사항을 직접 참조하지 않고 테스트에 의해 수행됩니다. 나는 이것을 탐색 적 테스트라고 종종 생각합니다. 분명히 사용자의 실제 요구를 실제로 이해하는 사람들이 수행해야하므로 실제 사용자의 알파 및 베타 테스트가 확실한 옵션입니다.

  3. 이론적으로는 처음 두 가지가 버그가 아니라고 주장 할 수 있다고 생각합니다. 따라서 별도의 목표로 버그를 찾는 것이 의미가 없습니다. 그러나 실제로 확인하거나 확인할 수없는 것이 있다고 생각합니다. 예를 들어 보안 : 소프트웨어 시스템이 공격에 대해 안전한지 어떻게 확인 또는 검증합니까? 대신 취약점을 찾으십시오. 이 검색은 문제를 찾지 못하면 아무것도 확인하거나 확인하지 않지만 성공하면 버그를 찾습니다.


문제는 많은 소스가 검증은 정적이지만 검증은 동적이라고 언급합니다. 매우 혼란 스러워요. 그렇다면 기능 테스트는 무엇입니까? 나는 그 역동적 인 검증을 말할 것이다 ..
John V

1
어떤 출처에서이 검증 및 검증 정의를 사용합니까? 반면에 나는 테스트로 끝나는 것의 정의에 대해 명확하고 일반적으로 동의하지 않습니다. 따라서 실제로 기능 테스트가 무엇인지 잘 모르겠습니다.
Jens Schauder

예를 들어 ISO 12207은 테스트를 검증 프로세스로만 제한합니다.
John V

3

위키 백과에서 : "... 즉, 제품이 실제로 맞는지 검증 보장하지만 사용자의 필요 , 그 사양은 처음에 정확을 검증 제품이 요구 사항 및 설계 사양에 따라 구축 된 보장되는 동안, 유효성 검사는 "올바른 것을 만들었습니다". 확인은 "올바른 것을 만들 었는지"를 확인합니다. 유효성 검사는 제공된대로 제품이 의도 한대로 사용되는지 확인합니다. "

사용자의 요구를 테스트 할 수 없으며 코드로 사양이 올바른지 확인할 수 없습니다. 따라서 테스트를 통해 유효성 검사를 수행하지 않습니다.

검증은 요구 사항과 디자인이 정확하다고 가정하므로 코드를 작성하여 테스트 할 수 있습니다 (테스트).


BTW, 위키피디아는 또한 다음과 같이 말합니다. 소프트웨어 테스트는 소프트웨어 프로그램 / 애플리케이션 / 제품의 유효성을 검증하고 확인하는 프로세스로 언급 될 수 있습니다. 이 프로그램은 사용자가 원하는 것인지 아닌지에 대한 실행 및 조사에 의해 프로그램됩니다.
John V

실제로 당신이 옳습니다. 테스트 프로세스에는 테스트 수락도 포함되지만 단위, 통합 및 시스템 테스트에 대해 이야기했습니다. 테스트 프로세스 전체를 생각하면 테스트를 통해 확인 및 검증이 수행됩니다.
Mert Akcakaya

1

실제 환경에서 테스트는 소프트웨어 요구 사항 (비즈니스 / 기능 / 비 기능)을 충족하는 소프트웨어의 검증 및 검증입니다. 이것의 목적은 소프트웨어가 목적에 적합한 지 결정하는 것입니다. 응용 프로그램의 요구 사항을 충족하지 않는 동작은 결함입니다. 소프트웨어의 목적에 맞는지 결정하기 전에 심각도를 평가해야합니다.

심각도가 낮은 결함은 프로덕션 유형 용도로 소프트웨어를 전달하는 데 방해가되지 않을 수 있습니다. 심각도가 높으면 수정이 필요합니다. 실제로 모든 소프트웨어에는 결함이 있으며 일부 소프트웨어에는 코딩 문제가 있고 다른 소프트웨어에는 요구 사항이 누락되어 있습니다. 알 수없는 요구 사항을 테스트 할 수 없기 때문에 테스트 할 수 없습니다.


1

검증 및 검증에 대한 많은 정의가 있습니다. 많은 사람들이 V & V 태그를 사용하여 둘 다 단일 활동으로 그룹화합니다. 목표는 소프트웨어가 올바른 것을 만들고 올바른 것을 만드는 것입니다. 요구 사항의 준수 여부를 확인하거나 버그를 찾으려고하는지 여부는이 수준에서 필수적인 것은 아닙니다.

테스트는 다른 방법이 아닌 검증 및 검증에 대한 많은 기술 중 하나입니다. 코드 검토는 수학 증명과 함께 또 하나의 공식 검증입니다.

그럼에도 불구하고 요구 사항의 준수 여부를 확인하기위한 것이 아니라 버그를 찾기위한 목적으로 테스트를 수행해야합니다.

주요 차이점은 테스터의 마음에 있습니다. 소프트웨어가 실패했음을 나타내는 테스트 사례 (버그 찾기)를 구축하는 것보다 소프트웨어가 의도 한대로 작동하는지 (준수 확인) 테스트 사례를 구축하는 것이 훨씬 쉽습니다.

훌륭한 테스터는 안전한 방식으로 소프트웨어를 실행하는 것이 아니라 소프트웨어를 깨는 데 열정적입니다.


감사합니다. 그러나 요구 사항이 충족되었음을 테스트하기 위해 테스트하지 않습니까? 우리는 소프트웨어가 작동하는지 확인하고 (사양을 충족) 결함을 찾으려고 노력합니다. 따라서 버그를 찾는 것만이 아닙니다. 테스트의 주요 목표는 버그를 찾는 것이 아니라 품질을 측정하는 것입니다. 첫 번째 요점은 코드 검토, 수학 증명 등도 테스트 중이며 정적이라고합니다.
John V

요구 사항과 달리 결함이나 버그가 있습니다. 직업의 본질은 동일합니다. 그것은 효율성을 향상시키기 위해 테스터를 생각하는 방식의 차이 일뿐입니다. 첫 번째 요점은 소프트웨어 유효성 검사에 사용되는 모든 용어에 대한 많은 정의가 있으며 팀에 합류하는 첫 번째 단계는 해당 팀에서 현지 방언을 얻는 것입니다. 대부분의 사람들은 테스트가 역동적이라는 데 동의합니다 기술. 정적 테스팅 은 옥시 모론이거나 컴퓨터가 아닌 "테스터"를 염두에두고 코드가 실행되는 검토와는 거리가 멀다.
mouviciel

mouviciel : 옥시 모론? 정적 테스트는 실행하지 않고 가능한 결함을 검사하는 것을 의미합니다. 이는 완전히 가능합니다 (요구 사항 문제, 디자인 결함.). 요구 사항을 확인하고 버그를 확인하는 것은 동일하지 않습니다. 필드가 int32 값을 보유 할 수 있는지 테스트해야합니다. 그것이 작동하는지 테스트합니다. 그런 다음 버그를 테스트하는 더 높은 값을 입력 할 수 있습니다.
John V

1

실제적인 관점에서 이것을 볼 수 있습니다. 테스트를 위해서는 테스트 사례를 정의해야합니다. 일반적으로 지정된 요구 사항에 따라 테스트 사례를 정의하고 "행복한 하루"사례와 "가장자리 사례"를 다루어야합니다. 특히 후자는 종종 소프트웨어를 중단하려는 의도로 정의됩니다. 일부 테스트가 실패하면 버그 / 결함이 나타납니다. 각 요구 사항에 대해 적절한 양의 테스트 사례가 있고 모든 테스트에 통과 한 경우 모든 요구 사항이 충족되었음을 완전히 증명 하지는 못했지만 그 가능성을 개선하여 일부 확인을 수행 한 것입니다.

따라서 문제의 해당 부분에서 버그를 발견하고 확인하는 것은 동일한 프로세스의 양면 일 수 있습니다.

  • 테스트 실패 : 결함 발견

  • 테스트 통과 : 검증 완료 (적어도 적절한 테스트를 제공하는 경우 어느 정도)

검증과 관련하여 : @Mert가 지적했듯이, 검증은 승인 테스트를 통해 수행 할 수 있지만 다른 형태의 테스트로는 수행 할 수 없습니다. 따라서 일반적으로 테스트는 일부 잠재적 사용자가 승인 테스트로 수행 한 경우에만 유효성 검사를 수행하지 않습니다.


0

그것은 모두 "확인"의 정의에 달려 있습니다. 예를 들어, 공식 검증 은 일반적으로 QA 팀이 수행하는 것이 아니라 개발자의 책임입니다. 그와 관련된 높은 비용 (지식 갭 및 필요한 자원)으로 인해 공식적인 검증을 수행하는 사람은 거의 없습니다.


0

소프트웨어 테스트는 QA와 다릅니다. 니가 맞았 어. 소프트웨어 테스트에는 전체적으로 많은 단계 (연기, 단위, 회귀, 통합, 사용자 승인 등)가 포함됩니다.

따라서 소프트웨어가 요구 사항에 따라 작동하는지 확인하는 것이 QA의 목표입니다 (품질 보증 전문가-일명 단순히 테스터라고 불림). 그러나 그것은 단지 테스트아닙니다 . QA는 문제가되는 제품의 품질 검사를 수행하기위한 적절한 프로세스 세트가 마련되어 있거나 최소한 프로젝트의 설계 단계에 들어가도록합니다.

따라서 이상적으로는 QA가 소프트웨어를 깨고 결함을 찾아서 테스트하지 않고 요구 사항 세트에 대해 애플리케이션검증 할 것으로 기대합니다 .


품질 관리는 테스트 만하는 것이 아닙니다. QA는 개발 프로세스의 품질을 다루고 있습니다.
John V

QA는 일련의 요구 사항에 대해 애플리케이션을 확인합니다.
Yusubov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.