동적 테스트란 무엇입니까? 유형, 기술 및 예

⚡ 스마트 요약

동적 테스트는 애플리케이션을 실행하고 실제 입력값을 사용하여 실행 중인 코드가 어떻게 동작하는지 관찰함으로써, 아무리 많은 문서 검토를 하더라도 드러낼 수 없는 기능, 성능 및 안정성을 검증할 수 있도록 합니다.

  • 🎯 목적 : 실행 결과를 검증할 때는 실행 결과를 설명하는 문서가 아니라 실제 실행 동작을 검증해야 합니다.
  • 🔀 두 갈래: 화이트박스는 코드를 검사하고, 블랙박스는 동작을 검사합니다.
  • 🧱 네 가지 레벨: 단위 테스트, 통합 테스트, 시스템 테스트 및 인수 테스트는 모두 코드를 실행합니다.
  • ⚙️ 작동하지 않음: 성능, 복구, 호환성, 보안 및 사용성 검사가 여기에서 실행됩니다.
  • 🔄 프로세스 : 전략 수립, 테스트 설계, 환경 설정, 실행 및 결함 보고.
  • 💰 트레이드오프: 시간, 환경 및 비용 증가를 감수하면 더욱 심층적인 결함 탐지가 가능합니다.

동적 테스트 유형, 기법 및 예시

동적 테스트란 무엇입니까?

동적 테스트 동적 테스트는 소프트웨어 코드의 동적 동작을 테스트하는 소프트웨어 테스트 방법입니다. 동적 테스트의 주요 목적은 상수가 아닌 변수와 같은 동적 변수를 사용하여 소프트웨어 동작을 검사하고 소프트웨어 실행 환경의 취약점을 찾는 것입니다. 동적 동작을 테스트하려면 코드를 실행해야 합니다.

테스트는 검증 및 검증테스트를 완료하려면 검증과 유효성 검사(Verification, Variation, Validation) 두 가지 모두 필요합니다. 검증은 정적 테스트를 통해 수행되며, 요구사항, 설계 문서 및 코드를 실행하지 않고 검토합니다. 유효성 검사는 동적 테스트를 통해 수행되며, 빌드를 실행하고 애플리케이션의 실제 동작과 설계 의도된 동작을 비교합니다.

아래 표는 두 가지를 한눈에 구분할 수 있도록 해줍니다.

아래 정적 테스트(검증) 동적 테스트(검증)
Code 처형 된 아니 가능
일반적인 활동 Rev뷰, 워크스루, 점검, 정적 분석 모든 테스트 레벨에 걸친 테스트 케이스 실행
질문에 대한 답변 우리는 제품을 올바르게 만들고 있는가? 우리는 올바른 제품을 만들고 있는가?
발견 된 결함 모호한 요구사항, 코딩 표준 위반, 사용되지 않는 코드 잘못된 출력, 메모리 누수, 타이밍 오류, 통합 오류
시작 유물이 존재하는 즉시 실행 가능한 빌드가 존재하게 되면
수리 비용의 상대적 비율 결함을 더 일찍 발견할 수 있기 때문에 비용이 더 낮습니다. 결함이 나중에 드러나기 때문에 더 높습니다.

동적 테스트 예

간단한 예시를 통해 동적 테스트가 실제로 어떻게 작동하는지 보여줍니다.

로그인 페이지를 테스트 중이라고 가정해 보겠습니다. 이 페이지에는 사용자 이름과 비밀번호라는 두 개의 입력란이 있으며, 사용자 이름은 영숫자만 사용할 수 있습니다.

사용자가 사용자 이름을 "로 입력할 때Guru사용자가 "99"를 입력하면 시스템이 이를 수락합니다.Guru"99@123"을 입력하면 애플리케이션에서 오류 메시지가 발생합니다. 이 결과는 코드가 사용자 입력에 따라 동적으로 동작함을 보여줍니다.

따라서 동적 테스트란 실제 시스템을 사용하여 입력을 제공하고 애플리케이션의 실제 동작을 예상 동작과 비교하는 것을 의미합니다. 즉, 오류를 찾을 목적으로 시스템을 사용하는 것입니다.

따라서 동적 테스트는 최종 사용자가 다양한 환경에서 소프트웨어를 사용하는 것처럼 소프트웨어 애플리케이션을 검증하여 올바른 소프트웨어를 구축하는 과정입니다.

동적 테스트는 무엇을 합니까?

동적 테스트의 주요 목적은 소프트웨어가 설치 중 및 설치 후에도 제대로 작동하는지 확인하여 주요 결함 없이 안정적인 애플리케이션을 제공하는 것입니다. 완전히 오류가 없는 소프트웨어는 없으며, 테스트는 결함의 존재는 보여줄 수 있지만 결함이 없다는 것을 보장할 수는 없습니다.

이 예시에서 볼 수 있듯이 동적 테스트는 소프트웨어 전반의 일관성을 보장합니다.

은행 애플리케이션에는 내 계좌, 자금 이체 등 여러 화면이 있습니다. Bill 결제. 모두 금액 입력란을 포함하고 있습니다.

내 계정 필드에 금액이 25,000으로 표시되고, 자금 이체에도 25,000달러가 표시된다고 가정해 보겠습니다. Bill 결제 화면에는 25000달러로 표시됩니다. 금액 자체는 같지만 표시 방식이 달라 소프트웨어의 일관성이 떨어집니다.

일관성은 기능에만 국한되지 않습니다. 성능, 사용성, 호환성과 같은 표준도 포함하므로 동적 테스트가 매우 중요합니다.

동적 테스트의 유형

동적 테스트는 두 가지 범주로 분류됩니다.

  • 백 Box 지원
  • 검정 Box 지원

아래 다이어그램은 두 가지 범주를 그 아래에 있는 테스트 수준과 연관시켜 보여줍니다.

동적 테스트는 화이트박스 테스트와 블랙박스 테스트로 나뉘며, 기능적 수준과 비기능적 수준으로 구분됩니다.

각 유형과 그 용도는 아래에 설명되어 있습니다.

백 Box 지원 — 테스터가 시스템의 내부 구조와 설계를 알고 있는 상태에서 수행하는 소프트웨어 테스트 방법입니다. 주요 목적은 코드에 기반하여 시스템의 성능을 검증하는 것입니다. 주로 개발자 또는 프로그래밍 지식을 갖춘 화이트 박스 테스터가 수행합니다.

검정 Box 지원 — 테스터가 시스템의 내부 구조, 코드 및 설계를 알지 못하는 상태에서 수행하는 테스트 방법입니다. 주요 목적은 테스트 대상 시스템의 기능을 검증하는 것입니다. 이 유형의 테스트는 전체 테스트 스위트를 실행해야 하며, 주로 테스터가 수행하고 프로그래밍 지식이 필요하지 않습니다.

블랙박스 테스트는 다시 두 가지 유형으로 분류됩니다.

  • 기능 테스트
  • 비기능 테스트

기능 테스트

기능 테스트 개발된 모든 기능이 기능 사양과 일치하는지 확인하기 위해 수행됩니다. 이는 기능 테스트를 실행함으로써 이루어집니다. 테스트 케이스 QA 팀에서 작성한 테스트입니다. 이 단계에서는 시스템에 입력을 제공하고, 출력을 검증하고, 실제 결과와 예상 결과를 비교하여 시스템을 테스트합니다.

기능 테스트에는 여러 단계가 있으며, 그중 가장 중요한 네 가지는 다음과 같습니다.

  • 단위 테스트 — 유닛은 작고 테스트 가능한 코드 조각입니다. 유닛 테스트는 소프트웨어의 개별 유닛에 대해 수행되며 개발자가 수행합니다.
  • 통합 테스팅 — 개별 테스트 단위를 결합한 후 단위 테스트가 완료된 후에 수행됩니다. 개발자 또는 테스터가 수행할 수 있습니다.
  • 시스템 테스트 — 시스템이 요구사항대로 작동하는지 확인하기 위해 수행됩니다. 일반적으로 시스템 개발이 완료되고 빌드가 QA 팀에 배포된 후 테스터가 수행합니다.
  • 수락 테스트 — 시스템이 비즈니스 요구 사항을 충족하고 사용 또는 배포 준비가 되었는지 확인하기 위해 수행됩니다. 일반적으로 최종 사용자가 수행합니다.

비기능 테스트

비기능 테스트 비기능 테스트는 시스템의 기능적 측면이 아닌 메모리 누수, 성능, 안정성과 같은 비기능적 속성에 초점을 맞추는 테스트 기법입니다. 비기능 테스트는 모든 테스트 단계에서 수행됩니다.

비기능 테스트 기법에는 여러 가지가 있지만, 그중 가장 중요한 다섯 가지는 다음과 같습니다.

  • 성능 시험 — 원하는 네트워크 부하 조건에서 시스템의 응답 시간이 요구 사항에 따라 정상적인지 확인합니다.
  • 복구 테스트 — 시스템이 충돌 및 하드웨어 오류로부터 얼마나 잘 복구되는지 검증합니다.
  • 호환성 테스트 — 시스템이 다양한 환경에서 어떻게 작동하는지 검증합니다.
  • 보안 테스트 — 애플리케이션의 안정성을 검증하여 승인된 사용자와 역할만 시스템에 접근할 수 있도록 합니다.
  • 사용성 테스트 — 최종 사용자가 시스템을 얼마나 쉽게 사용할 수 있는지, 그리고 시스템에 얼마나 만족하는지를 검증합니다.

동적 테스트 기술

유형이 정해졌으니, 다음 질문은 동적 테스트 사이클이 실제로 어떻게 실행되는가입니다.

동적 테스트 기법 STLC 동적 테스트는 테스트 요구사항 분석, 테스트 계획 수립, 테스트 케이스 설계 및 구현, 테스트 환경 설정, 테스트 케이스 실행, 버그 보고, 그리고 최종적으로 테스트 종료와 같은 작업들로 구성됩니다. 동적 테스트의 모든 작업은 이전 작업의 완료에 따라 진행됩니다.

STLC(테스트 수명 주기 관리) 내에서 실제 동적 테스트 프로세스는 테스트 케이스 설계부터 시작됩니다. 아래 다이어그램은 일련의 활동을 보여주며, 각 활동은 다이어그램 뒤에 설명되어 있습니다.

테스트 설계부터 실행, 버그 보고까지 이어지는 동적 테스트 프로세스 흐름도

이 과정에 들어가기 전에 동적 테스트를 위해 따라야 할 전략을 합의해야 합니다.

테스트 전략은 주로 가용 자원과 기간에 초점을 맞춰야 합니다. 이 두 가지 요소를 기반으로 테스트 목표, 테스트 범위, 테스트 단계 또는 주기, 환경 유형, 예상되는 문제점 또는 어려움, 그리고 위험 요소를 모두 문서화해야 합니다.

전략이 수립되고 경영진의 승인을 받으면 실제 테스트 케이스 설계 프로세스가 시작됩니다.

테스트 설계 및 구현

이 단계에서 팀은 다음 사항을 파악합니다.

  • 테스트할 기능
  • 이러한 특징들로부터 도출된 테스트 조건
  • 테스트 조건에서 도출된 커버리지 항목
  • 커버리지 항목에서 파생된 테스트 케이스

블랙 박스 테스트 설계 기법 동등 분할, 경계값 분석과 같은 것들 의사결정표 테스트 상태 전환 테스트 테스트 조건을 구체적인 실행 가능한 사례 집합으로 바꿔주는 요소입니다.

테스트 환경 설정

The 테스트 환경 테스트 환경은 항상 실제 운영 환경과 유사해야 합니다. 이 단계에서는 빌드를 설치하고 테스트 머신을 관리 및 구성합니다.

테스트 실행

이 단계에서는 테스트 케이스가 수동으로 또는 자동화된 방식으로 실제로 실행됩니다. 자동화그리고 실제 결과는 예상 결과와 비교하여 기록됩니다.

버그 신고가 캡처되었습니다.

실행 결과 예상 결과와 실제 결과가 일치하지 않으면 해당 테스트 케이스는 실패로 표시하고 버그를 기록해야 합니다. 결함 관리 프로세스.

동적 테스트의 장점

  • 동적 테스트는 정적 분석으로는 전혀 포착할 수 없는, 너무 어렵거나 복잡해서 발견하기 힘든 결함을 밝혀냅니다.
  • 이 소프트웨어는 처음부터 끝까지 실행되므로 제품과 프로젝트 모두의 품질이 향상됩니다.
  • 동적 테스트는 실행 중인 시스템에서 보안 위협을 탐지하는 데 필수적인 수단입니다.
  • 메모리 누수, 타이밍 문제, 통합 오류와 같은 런타임 오류는 오직 여기에서만 발생하며 다른 곳에서는 발생하지 않습니다.

동적 테스트의 단점

  • 동적 테스트는 애플리케이션이나 코드를 실행하는 데 많은 리소스가 필요하기 때문에 시간이 많이 소요됩니다.
  • 이는 소프트웨어 개발 초기 단계에서부터 고려되지 않아 프로젝트 비용을 증가시키고, 후반 단계에서 발생하는 문제를 해결하는 데 더 많은 비용이 소요되기 때문입니다.
  • 실제 운영 환경과 유사한 환경 및 현실적인 테스트 데이터는 필수 조건이며, 이를 구축하고 유지하는 데에는 노력이 필요합니다.

자주 묻는 질문

개발자는 화이트박스 측면에서 단위 및 구성 요소 검사를 수행합니다. QA 테스터는 블랙박스 측면에서 시스템 테스트부터 그 이후의 모든 과정을 담당합니다. 최종 사용자는 인수 테스트를 통해 전체 개발 주기를 마무리합니다.

모델은 요구사항과 기존 사례를 분석하여 경계값, 유효하지 않은 입력값, 상태 시퀀스 등을 제안하는데, 이는 사람이 직접 검토할 때 흔히 놓치는 부분입니다. 하지만 실행 전에 테스터가 각 예상 결과를 확인하는 과정은 여전히 ​​필수적입니다.

네. 어설션 스캐폴딩, 페이지 객체 및 픽스처 설정은 반복적인 코드이며, 어시스턴트가 이를 잘 처리합니다. 하지만 무엇이 올바른 동작인지에 대한 판단은 요구사항에 기반한 인간의 판단에 달려 있습니다.

단위 프레임워크(예: ...) JUnit, TestNG 그리고 pytest를 비롯하여 UI 및 API 실행 도구 등이 있습니다. Selenium, Cypress Postman다음과 같은 도구를 로드합니다. JMeter 기능적이지 않은 측면을 덮다 자동화.

화이트 박스 작업 보고서는 계측 실행에서 얻은 분기 및 경로 커버리지를 명시합니다. 블랙 박스 작업 보고서는 요구 사항 및 테스트 조건 커버리지를 보고합니다. 이 두 가지 수치만으로는 빌드가 충분히 테스트되었음을 ​​입증할 수 없습니다.

아니요. 동적 테스트는 누가 또는 무엇이 코드를 실행하든 상관없이 코드를 실행하는 것을 의미합니다. 스크립트 기반 테스트는 그렇지 않습니다. 조작 실행과 자동화된 회귀 테스트 스위트는 모두 동적 테스트입니다.

네. 동적 애플리케이션 보안 테스트는 실행 중인 애플리케이션을 외부에서, 마치 블랙박스처럼 검사하는 방식입니다. 보안 테스트 이 프로그램은 실행 시에만 나타나는 취약점을 보고합니다.

이는 하나의 핵심 기반입니다. 유닛 및 API 제품군은 모든 커밋을 승인하는 역할을 하며, 그보다 더 긴 기간 동안 지속됩니다. 되돌아옴 성능 테스트는 배포된 빌드를 대상으로 매일 밤 실행됩니다.

이 게시물을 요약하면 다음과 같습니다.