white box testing complete guide with techniques
화이트 박스 테스트 란 무엇입니까?
최고의 무료 Windows 10 레지스트리 클리너
정의에 따라 '화이트 박스 테스트'(투명, 유리 상자 또는 구조 테스트라고도 함)는 프로그램의 코드와 내부 구조를 평가하는 테스트 기술입니다.
화이트 박스 테스트에는 코드 구조를 살펴 보는 것이 포함됩니다. 제품의 내부 구조를 알고 있으면 사양에 따라 내부 작업이 수행되는지 테스트를 수행 할 수 있습니다. 그리고 모든 내부 구성 요소가 적절하게 사용되었습니다.
학습 내용 :
내 경험
제가 소프트웨어 테스트 분야에 들어간 지 거의 10 년이 지났고 지금까지 테스터들이 전체 소프트웨어 산업에서 가장 열정적이라는 것을 알게되었습니다.
이것의 주된 이유는 테스터가 항상 배울 수있는 것이 있다는 것입니다. 도메인, 프로세스 또는 기술이든, 테스터는 원하는 경우 완전한 개발을 할 수 있습니다.
하지만 그들이 말했듯이 “항상 어두운면이 있습니다” .
테스터는 또한 실제로 매우 복잡하고 개발자의 케이크 조각이라고 느끼는 유형의 테스트를 피합니다. 예, '화이트 박스 테스트'입니다.
적용 범위
화이트 박스 테스트는 코드의 사양 범위입니다.
1. 코드 커버리지
2. 세그먼트 적용 범위 : 각 코드 문이 한 번 실행되는지 확인하십시오.
3. 분기 범위 또는 노드 테스트 : 각 코드 분기의 커버리지는 모두 가능했습니다.
4. 복합 조건 적용 : 여러 조건의 경우 여러 경로와 다른 경로의 조합으로 각 조건을 테스트하여 해당 조건에 도달합니다.
5. 기본 경로 테스트 : 코드의 각 독립 경로는 테스트를 위해 사용됩니다.
6. 데이터 흐름 테스트 (DFT) : 이 접근 방식에서는 가능한 각 계산을 통해 특정 변수를 추적하므로 코드를 통해 중간 경로 집합을 정의합니다. DFT는 종속성을 반영하는 경향이 있지만 주로 데이터 조작 시퀀스를 통해 이루어집니다. 요컨대, 각 데이터 변수가 추적되고 그 사용이 확인됩니다. 이 접근법은 사용되었지만 초기화되지 않은 변수, 선언되었지만 사용되지 않은 변수 등과 같은 버그를 발견하는 경향이 있습니다.
7. 경로 테스트 : 경로 테스트는 코드를 통해 가능한 모든 경로를 정의하고 다루는 곳입니다. 시간이 많이 걸리는 작업입니다.
8. 루프 테스트 : 이러한 전략은 단일 루프, 연결된 루프 및 중첩 루프 테스트와 관련됩니다. 이 접근 방식은 독립적이고 종속적 인 코드 루프와 값을 테스트합니다.
WBT를 수행하는 이유는 무엇입니까?
보장하려면 :
- 모듈 내의 모든 독립 경로가 적어도 한 번 실행되었습니다.
- 모든 논리적 결정은 참 및 거짓 값에 대해 확인되었습니다.
- 경계와 운영 경계 내에서 실행되는 모든 루프는 내부 데이터 구조 유효성입니다.
다음 유형의 버그를 발견하려면 :
- 논리적 오류는 프로그램에서 벗어난 기능, 조건 또는 제어를 설계하고 구현할 때 작업에 포함되는 경향이 있습니다.
- 프로그램의 논리적 흐름과 실제 구현의 차이로 인한 설계 오류
- 오타 및 구문 검사
이 테스트에는 자세한 프로그래밍 기술이 필요합니까?
우리는 쓸 필요가 있습니다 테스트 케이스 프로그램 로직의 전체 범위를 보장합니다.
이를 위해서는 프로그램을 잘 알아야합니다. 즉, 테스트 할 사양과 코드를 알아야합니다. 이러한 유형의 테스트에는 프로그래밍 언어 및 논리에 대한 지식이 필요합니다.
한계
프로그램에서 루프의 모든 경로를 테스트하는 것은 불가능합니다. 즉, 대규모 시스템에서는 철저한 테스트가 불가능합니다.
그렇다고 WBT가 효과적이지 않다는 의미는 아닙니다. 테스트를위한 중요한 논리적 경로와 데이터 구조를 선택함으로써 실제로 가능하고 효과적입니다.
화이트 박스와 블랙 박스 테스트의 차이점
간단히 말하면 :
블랙 박스 테스트에서는 사용자의 관점에서 소프트웨어를 테스트하지만 화이트 박스에서는 실제 코드를보고 테스트합니다.
블랙 박스 테스트에서는 내부 시스템 코드를 보지 않고 테스트를 수행하지만 WBT에서는 내부 코드를보고 테스트합니다.
화이트 박스 테스트 기술은 개발자와 테스터 모두가 사용합니다. 실제로 실행되는 코드와 그렇지 않은 코드를 이해하는 데 도움이됩니다. 이는 누락 된 논리 또는 오타가 있음을 나타내며 결국 일부 부정적인 결과를 초래할 수 있습니다.
추천 읽기 => 블랙 박스 테스트에 대한 완전한 가이드
WBT 수행 단계
1 단계 – 소스 코드를 통해 애플리케이션의 기능을 이해합니다. 즉, 테스터는 소프트웨어 개발에 사용되는 기술과 프로그래밍 언어 및 기타 도구에 대해 잘 알고 있어야합니다.
2 단계 – 테스트를 생성하고 실행합니다.
테스트의 개념을 논의 할 때 ' 적용 범위 ”가 가장 중요한 요소로 간주됩니다. 여기에서는 화이트 박스 테스트의 맥락에서 최대 범위를 갖는 방법을 설명합니다.
또한 읽으십시오=> 원인 및 결과 그래프 – 최대 커버리지를위한 동적 테스트 케이스 작성 기법
화이트 박스 테스트의 유형과 기법
각 화이트 박스 테스트 유형에는 여러 유형과 다른 방법이 있습니다.
아래 이미지를 참조하십시오.
오늘 우리는 주로 '단위 테스트 화이트 박스 기법'의 실행 테스트 유형.
3 가지 주요 화이트 박스 테스트 기법 :
- 명세서 범위
- 지점 범위
- 경로 범위
설명문, 분기 또는 경로 범위는 수정해야하는 버그 나 결함을 식별하지 않습니다. 실행되지 않거나 그대로 남아있는 코드 줄만 식별합니다. 이 추가 테스트를 기반으로 집중할 수 있습니다.
간단한 예를 들어 이러한 기술을 하나씩 이해합시다.
# 1) 진술 범위 :
프로그래밍 언어에서 명령문은 컴퓨터가 그에 따라 이해하고 그에 따라 행동하도록하는 코드 또는 지침에 불과합니다. 문은 컴파일되고 개체 코드로 변환 될 때 실행 가능한 문이되고 프로그램이 실행 모드에있을 때 작업을 수행합니다.
그 후 “성명 범위” , 이름 자체에서 알 수 있듯이 코드의 모든 줄이 한 번 이상 실행되는지 여부를 확인하는 방법입니다.
# 2) 지점 범위 :
프로그래밍 언어의 '분기'는 'IF 문'과 같습니다. IF 문에는 두 가지 분기가 있습니다. T 후회와 거짓 .
따라서 분기 범위 (결정 범위라고도 함)에서는 각 분기가 한 번 이상 실행되는지 확인합니다.
'IF 문'의 경우 두 가지 테스트 조건이 있습니다.
- 하나는 실제 분기를 확인하고,
- 기타는 거짓 분기의 유효성을 검사합니다.
따라서 이론적으로 Branch Coverage는 실행될 때 각 결정 지점의 모든 분기가 실행되는지 확인하는 테스트 방법입니다.
# 3) 경로 범위
경로 범위는 프로그램의 모든 경로를 테스트합니다. 이것은 프로그램의 모든 경로가 한 번 이상 통과되도록하는 포괄적 인 기술입니다. Path Coverage는 Branch Coverage보다 훨씬 더 강력합니다. 이 기술은 복잡한 프로그램을 테스트하는 데 유용합니다.
이러한 모든 화이트 박스 테스트 기술을 이해하기 위해 간단한 예를 들어 보겠습니다.
또한 확인=> 다양한 유형의 테스트
화이트 박스 테스트 예
아래의 간단한 의사 코드를 고려하십시오.
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE”
에 대한 명세서 범위 – 코드의 모든 줄을 확인하려면 하나의 테스트 케이스 만 필요합니다.
그 의미는:
내가 고려한다면 TestCase_01을 (A = 40 및 B = 70), 그러면 모든 코드 라인이 실행됩니다.
이제 질문이 생깁니다.
- 충분합니까?
- 테스트 케이스를 A = 33 및 B = 45로 간주하면 어떻게됩니까?
스테이트먼트 커버리지는 실제 측면 만 다루기 때문에 의사 코드의 경우 하나의 테스트 케이스만으로는 테스트하기에 충분하지 않습니다. 테스터로서 우리는 부정적인 사례도 고려해야합니다.
따라서 최대 적용 범위를 위해 고려할 필요가 있습니다 ' 지점 범위 ' , 'FALSE'조건을 평가합니다.
현실에서는 조건이 실패 할 때 적절한 문을 추가 할 수 있습니다.
이제 의사 코드는 다음과 같습니다.
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” ELSE PRINT “ITS PENDING”
Statement Coverage는 전체 의사 코드를 테스트하기에 충분하지 않으므로 최대 적용 범위를 보장하려면 Branch Coverage가 필요합니다. .
따라서 Branch 커버리지의 경우이 의사 코드의 테스트를 완료하려면 두 개의 테스트 케이스가 필요합니다.
TestCase_01 : A = 33, B = 45
TestCase_02 : A = 25, B = 30
이를 통해 코드의 모든 줄이 적어도 한 번 실행되는 것을 볼 수 있습니다.
지금까지 도출 된 결론은 다음과 같습니다.
- Branch Coverage는 Statement Coverage보다 더 많은 Coverage를 보장합니다.
- 분기 적용 범위는 진술 적용 범위보다 더 강력합니다.
- 100 % 지점 커버리지 자체는 100 % 명세서 커버리지를 의미합니다.
- 그러나 100 % 명세서 커버리지는 100 % 지점 커버리지를 보장하지 않습니다.
이제 다음으로 이동하겠습니다. 경로 범위 :
앞서 언급했듯이 경로 커버리지는 기본적으로 루프 문 또는 루프와 결정 문 조합을 포함하는 복잡한 코드 조각을 테스트하는 데 사용됩니다.
이 의사 코드를 고려하십시오.
INPUT A & B C = A + B IF C>100 PRINT “ITS DONE” END IF IF A>50 PRINT “ITS PENDING” END IF
이제 최대 범위를 보장하기 위해 4 개의 테스트 케이스가 필요합니다.
어떻게? 간단히 – 2 개의 결정문이 있으므로 각 결정문에 대해 테스트 할 두 개의 분기가 필요합니다. 하나는 참이고 다른 하나는 거짓 조건입니다. 따라서 2 개의 결정문에 대해 2 개의 테스트 케이스가 참측을 테스트하고 2 개의 테스트 케이스가 거짓 측을 테스트해야하므로 총 4 개의 테스트 케이스가 생성됩니다.
이를 단순화하기 위해 우리가 가지고있는 의사 코드의 아래 순서도를 고려해 보겠습니다.
전체 커버리지를 얻으려면 다음 테스트 케이스가 필요합니다.
TestCase_01 : A = 50, B = 60
TestCase_02 : A = 55, B = 40
TestCase_03 : A = 40, B = 65
TestCase_04 : A = 30, B = 30
따라서 다루는 경로는 다음과 같습니다.
빨간색 선 – TestCase_01 = (A = 50, B = 60)
파란색 선 = TestCase_02 = (A = 55, B = 40)
주황색 선 = TestCase_03 = (A = 40, B = 65)
녹색 선 = TestCase_04 = (A = 30, B = 30)
경험이 풍부한 PDF에 대한 PL SQL 인터뷰 질문 및 답변
******************
= >> 문의하기 여기에 목록을 제안하려면
*****************
화이트 박스 테스트 도구
아래에 최고의 화이트 박스 테스트 도구 목록이 있습니다.
# 1) Veracode
Veracode의 화이트 박스 테스트 도구는 저렴한 비용으로 소프트웨어 결함을 빠르고 쉽게 식별하고 해결하는 데 도움이됩니다. .NET, C ++, JAVA 등과 같은 여러 응용 프로그램 언어를 지원하며 데스크톱, 웹 및 모바일 응용 프로그램의 보안을 테스트 할 수도 있습니다. 여전히 Veracode 도구에는 몇 가지 다른 이점이 있습니다. Veracode 화이트 박스 테스트 도구에 대한 자세한 정보는 아래 링크를 확인하십시오.
웹 사이트 링크: Veracode
# 2) EclEmma
EclEmma는 처음에 Eclipse 워크 벤치 내에서 테스트 실행 및 분석을 위해 설계되었습니다. 무료 Java 코드 커버리지 도구로 간주되며 여러 기능도 있습니다. EclEmma를 설치하거나 자세히 알아 보려면 아래 링크를 확인하십시오.
웹 사이트 링크: EclEmma
# 3) RCUNIT
mp3 변환기 리뷰에 무료 유튜브
C 프로그램을 테스트하는 데 사용되는 프레임 워크를 RCUNIT라고합니다. RCUNIT는 MIT 라이선스의 조건에 따라 사용할 수 있습니다. 무료로 사용할 수 있으며 설치하거나 이에 대해 자세히 알아 보려면 아래 링크를 확인하십시오.
웹 사이트 링크: RCUNIT
# 4) cfix
cfix는 테스트 스위트 개발을 가능한 한 간단하고 쉽게 만드는 것을 목표로하는 C / C ++ 용 단위 테스트 프레임 워크 중 하나입니다. 한편, cfix는 일반적으로 NT 커널 모드 및 Win32에 특화되어 있습니다. cfix를 설치하고 자세히 알아 보려면 아래 링크를 확인하십시오.
웹 사이트 링크: cfix
# 5) Google 테스트
Googletest는 Google의 C ++ 테스트 프레임 워크입니다. 테스트 발견, 죽음 테스트, 값 매개 변수 테스트, 치명적 및 치명적이지 않은 실패, XML 테스트 보고서 생성 등은 GoogleTest의 몇 가지 기능이지만 몇 가지 다른 기능도 있습니다. Linux, Windows, Symbian, Mac OS X는 GoogleTest가 사용 된 몇 가지 플랫폼입니다. 하기 위해다운로드는 아래 링크를 확인 해주세요.
다운로드 링크: Google 테스트
# 6) EMMA
Emma는 사용하기 쉬운 무료 JAVA 코드 커버리지 도구입니다. 여기에는 몇 가지 기능과 이점이 포함됩니다. Emma에 대한 자세한 내용을 다운로드하고 알아 보려면 아래 링크를 확인하십시오.
다운로드 링크: EMMA
# 7) NUnit
NUnit은 테스트 결과를 판단하기 위해 수동 개입이 필요하지 않은 사용하기 쉬운 오픈 소스 단위 테스트 프레임 워크입니다. 모든 .NET 언어를 지원합니다. 또한 NUnit에서 병렬로 실행되는 데이터 기반 테스트 및 테스트를 지원합니다. NUnit의 이전 릴리스는 NUnit 라이센스를 사용했지만 NUnit 3은 MIT 라이센스에 따라 릴리스되었습니다. 그러나 두 라이선스 모두 제한없이 무료로 사용할 수 있습니다. NUnit에 대한 자세한 내용을 다운로드하고 알아 보려면 아래 링크를 확인하십시오.
다운로드 링크: NUnit
# 8) CppUnit
CppUnit은 C ++로 작성된 단위 테스트 프레임 워크이며 JUnit의 포트로 간주됩니다. CppUnit의 테스트 출력은 XML 또는 텍스트 형식 일 수 있습니다. 자체 클래스로 단위 테스트를 생성하고 테스트 스위트에서 테스트를 실행합니다. LGPL에 따라 사용이 허가되었습니다. CppUnit에 대한 자세한 내용을 다운로드하고 알아 보려면 아래 링크를 확인하십시오.
다운로드 링크: CppUnit
# 9) JUnit
JUnit은 Java 프로그래밍 언어로 테스트 자동화를 지원하는 조용하고 간단한 단위 테스트 프레임 워크입니다. 주로 Test Driven Development를 지원하며 Test Coverage 보고서도 제공합니다. Eclipse Public License에 따라 사용이 허가되었습니다. 무료 다운로드 및 JUnit에 대한 자세한 내용은 아래 링크를 확인하십시오.
다운로드 링크: JUnit
# 10) JsUnit
JsUnit은 JUnit에서 javascript 로의 포트로 간주됩니다. 또한 클라이언트 측 자바 스크립트를 지원하는 오픈 소스 단위 테스트 프레임 워크입니다. GNU Public License 2.0, GNU Lesser Public License 2.1 및 Mozilla Public License 1.1에 따라 사용이 허가되었습니다. JsUnit에 대한 자세한 내용을 다운로드하고 알아 보려면 아래 링크를 확인하십시오.
다운로드 링크: JsUnit
또한 아래에 나열된 모든 도구를 확인하십시오. 정적 코드 분석 여기 .
화이트 박스 기술에 사용중인 더 간단하거나 고급 도구를 자유롭게 제안하십시오.
결론
블랙 박스 테스트에만 의존하는 것만으로는 테스트 범위를 극대화 할 수 없습니다. 블랙 박스와 화이트 박스 테스트 기술의 조합이 필요합니다. 최대 결함 커버 .
올바르게 수행되면 화이트 박스 테스트가 소프트웨어 품질에 확실히 기여할 것입니다. 또한 코드에 대해 가장 '편견없는'의견을 제공 할 수 있으므로 테스터가이 테스트에 참여하는 것이 좋습니다. :)
이 기사에서 논의한 방법에 대해 궁금한 점이 있으면 알려주십시오.