(번역) GeeksForGeeks > 테스팅 기법
GeeksForGeeks > Testing Techniques 목차의 세 글을 번역해 공유드립니다.
- 동등 분할 기법(Equivalence Partitioning Method)
- 소프트웨어 테스팅 — 경곗값 분석(Boundary Value Analysis, BVA)
- 소프트웨어 테스팅의 오류 추측(Error Guessing)
동등 분할 기법(Equivalence Partitioning Method)
원문: https://www.geeksforgeeks.org/equivalence-partitioning-method
동등 분할 기법은 동치류 분할(Equivalence class partitioning, ECP)이라고도 불립니다. 동등 분할 기법은 입력 도메인을 데이터 분류로 나누고, 이러한 데이터 분류를 통해 테스트 케이스를 도출할 수 있는 소프트웨어 테스팅 기법이자 블랙박스 테스팅 방법입니다. 이상적인 테스트 케이스란, 일반적인 오류를 발견하기 위해 수많은 임의의 테스트를 실행해야 할 수도 있는 오류 유형을 미리 식별해야 합니다.
동등 분할에서는 주어진 입력 조건들에 대해 동치류를 평가합니다. 입력이 들어오면 먼저 해당 입력 조건의 유형을 확인하고, 그 입력 조건에 따라 동치류는 유효한 상태와 무효한 상태의 집합을 구분하여 정의합니다.
동등 분할 지침
- 범위 조건이 입력으로 주어진 경우, 하나의 유효 클래스와 두 개의 무효 클래스가 정의됩니다.
- 특정 값이 입력으로 주어진 경우, 하나의 유효 클래스와 두 개의 무효 클래스가 정의됩니다.
- 집합의 구성원이 입력으로 주어진 경우, 하나의 유효 클래스와 하나의 무효 클래스가 정의됩니다.
- 불리언 값이 입력 조건으로 주어진 경우, 하나의 유효 클래스와 하나의 무효 클래스가 정의됩니다.
예시 1
대학 입학 과정으로 예시를 만들어보겠습니다. 학생들의 성적 백분율을 기준으로 입학을 허가하는 대학이 있습니다. 성적 백분율은 50%에서 90% 사이만 허용되며, 그 이상이나 이하는 허용되지 않고 사용자는 오류 페이지로 이동하게 됩니다. 사용자가 입력한 백분율이 50% 미만이거나 90%를 초과하는 경우, 동등 분할 기법은 이를 무효한 백분율로 표시합니다. 입력된 백분율이 50%에서 90% 사이인 경우, 동등 분할 기법은 이를 유효한 백분율로 표시합니다.
예시 2
다음으로 온라인 쇼핑 사이트를 예시로 살펴보죠. 이 사이트에서는 각 제품마다 특정 제품 ID와 제품명이 있습니다. 제품은 제품명이나 제품 ID를 사용하여 검색할 수 있습니다. 여기서는 유효한 제품 ID나 제품명만 허용하는 검색 필드를 고려해 보겠습니다.
제품 ID가 있는 제품들의 집합을 살펴보고, 사용자가 휴대폰을 검색하려는 상황을 가정해 보겠습니다. 아래는 제품과 제품 ID를 보여주는 표입니다.
사용자가 입력한 제품 ID가 유효하지 않은 경우, 애플리케이션은 고객이나 사용자를 오류 페이지로 이동시킵니다. 사용자가 입력한 제품 ID가 유효한 경우(예: 휴대폰의 경우 45), 동등 분할 기법은 이를 유효한 제품 ID로 표시합니다.
예시 3
이제 OTP 소프트웨어 애플리케이션을 예시로 들어보겠습니다. 이 앱에는 특정 자릿수만을 허용하는 기능이 있으며, 그보다 많거나 적은 자릿수는 허용되지 않습니다.
6자리 숫자만 포함하는 OTP 번호를 예로 들어보겠습니다. 6자리보다 많거나 적은 숫자는 허용되지 않으며, 애플리케이션은 고객이나 사용자를 오류 페이지로 이동시킵니다. 사용자가 입력한 비밀번호가 6자리보다 적거나 많은 경우, 동등 분할 기법은 이를 무효한 OTP로 표시합니다. 입력된 비밀번호가 정확히 6자리인 경우, 동등 분할 기법은 이를 유효한 OTP로 표시합니다.
소프트웨어 테스팅 — 경곗값 분석(Boundary Value Analysis, BVA)
원문: https://www.geeksforgeeks.org/software-testing-boundary-value-analysis
기능 테스팅은 시스템의 기능적 요구사항을 대상으로 소프트웨어 테스팅의 한 유형으로 요구사항을 제대로 충족하는지 확인하기 위해 수행됩니다. 기능 테스팅은 소프트웨어 애플리케이션의 각 기능이 요구사항과 명세에 맞게 작동하는지 검증합니다. 이번에 살펴볼 경곗값 분석(BVA)은 기능 테스팅의 한 종류입니다.
경곗값 분석
경곗값 분석은 유효한 영역과 무효한 영역의 경곗값을 테스트하는 것에 기초합니다. 동등 분할 방식에서 내부 영역보다 경계 부분에서 오류가 발생할 가능성이 더 높기 때문에, 경계 영역은 결함을 발견하기 쉬운 중요한 테스트 대상 영역입니다.
경곗값 분석은 오류가 발생할 가능성이 높은 경계 근처의 입력값을 확인합니다. 모든 분할에는 최댓값과 최솟값이 있으며, 이러한 최댓값과 최솟값이 분할의 경곗값입니다.
간단히 말해서 경곗값 분석은 소프트웨어의 엣지 케이스를 테스트하는 것과 같습니다. 대부분의 경우 이러한 엣지 케이스에서 문제가 발생하기 때문에 코드를 배포하기 전에 BVA를 수행하는 것이 중요합니다. 이 외에도 많은 다른 테스트가 있으며, 이 모든 것을 배우고 싶다면 우리의 완전한 소프트웨어 테스팅 과정을 수강하면 됩니다.
참고
- 유효한 분할의 경곗값은 유효한 경곗값입니다.
- 무효한 분할의 경곗값은 무효한 경곗값입니다.
- 각 변수에 대해 다음을 확인합니다.
- 최솟값
- 최솟값보다 조금 큰 값
- 중간값
- 최댓값보다 조금 작은 값
- 최댓값
예시: 18세부터 56세까지의 나이를 허용하는 시스템을 고려해 보겠습니다.
경곗값 분석(나이는 18세부터 56세까지 허용)
유효한 테스트 케이스: 17보다 크고 57보다 작은 모든 값이 유효한 테스트 케이스가 될 수 있습니다.
- 값 입력- 18
- 값 입력- 19
- 값 입력- 37
- 값 입력- 55
- 값 입력- 56
무효한 테스트 케이스: 18보다 작거나 56보다 큰 값이 입력될 때입니다.
- 값 입력- 17
- 값 입력- 57
단일 오류 가정(Single Fault Assumption): 동일한 앱에 대해 둘 이상의 변수를 확인할 때 단일 오류 가정을 사용할 수 있습니다. 하나의 변수를 제외한 모든 변수를 극단값으로 고정하고, 나머지 변수가 극단값을 취하도록 합니다. n개의 변수를 확인하는 경우 아래와 같습니다.
최대 4n+1개의 테스트 케이스
문제: 이전 날짜를 결정하는 프로그램을 고려해 보세요.
입력: 아래와 같은 유효 범위를 가진 일, 월, 연도
1 ≤ 월 ≤ 12
1 ≤ 일 ≤ 31
1900 ≤ 연도 ≤ 2000
경곗값 테스트 케이스를 설계 해보세요.
답: 단일 오류 가정으로 연도를 예시로 들어보면, 즉, 연도는 1900부터 2000까지의 값을 가지고 다른 값들은 중간값을 유지하는 경우를 살펴보겠습니다.
일을 단일 오류 가정으로 적용할 경우, 즉 일은 1부터 31까지의 값을 가지고 다른 값들은 중간값을 유지합니다.
월을 단일 오류 가정으로 적용할 경우, 즉 월은 1부터 12까지의 값을 가지고 다른 값들은 중간값을 유지합니다.
확인해야 할 n개의 변수에 대해 최대 4n + 1개의 테스트 케이스가 필요합니다. 따라서 n = 3인 경우, 최대 테스트 케이스는
4 × 3 + 1 =13
13개의 테스트 케이스가 필요합니다.
BVA(경곗값 분석)의 핵심: BVA는 함수의 입력 변수를 중점적으로 테스트합니다. 예를 들어, 두 변수 X1과 X2가 있을 때, X1은 a와 b 사이의 값을, X2는 c와 d 사이의 값을 가진다고 할 때, 각 범위의 경곗값을 테스트합니다.
BVA가 중요한 이유는 대부분의 오류가 변수의 극단값, 즉 경곗값 주변에서 발생하는 경향이 있기 때문입니다. 경곗값에서 발생하는 결함은 다양한 원인에서 비롯될 수 있습니다.
프로그래밍 언어의 타입 관련: BVA는 코볼이나 포트란같은 자유로운 형식의 언어(약한 타입 언어)에는 적합하지 않습니다. 이러한 언어들의 유연성은 장점이 될 수 있지만, 동시에 버그의 원인이 될 수도 있습니다.
반면 파스칼, 에이다와 같이 모든 상수나 변수에 대해 명확한 데이터 타입 정의를 요구하는 강한 타입 언어에서는 BVA가 효과적입니다.
경곗값 분석의 한계점
- 제품이 테스트 단계에 있을 때만 효과적입니다.
- 여러 변수 사이의 상호 의존적인 관계를 고려하지 못합니다.
- BVA는 매우 기본적인 테스팅 방법입니다.
동등 분할
이는 모든 수준의 소프트웨어 테스팅에 적용할 수 있는 블랙박스 테스팅의 한 유형입니다. 이 기법에서는 테스트 케이스를 도출하기 위해 입력 데이터를 동등한 분할로 나눕니다.
- 이 방법에서는 입력 데이터를 서로 다른 동등한 데이터 클래스로 나눕니다.
- 입력값의 범위가 있을 때 적용됩니다.
예시: 아래는 동등 분할과 경곗값 분석을 결합한 예시입니다. 최소 6자에서 최대 10자까지 허용하는 필드를 고려해 봅시다. 이때 테스트 케이스의 분할 범위는 0–5, 6–10, 11–14입니다.
테스트 시나리오테스트 설명예상 결과10에서 5자 입력허용되지 않음26에서 10자 입력허용됨311에서 14자 입력허용되지 않음
동등 분할과 경곗값 분석 테스팅을 결합하는 이유: 다음은 두 접근 방식을 결합하는 이유입니다.
- 테스트 케이스를 관리 가능한 단위로 줄일 수 있습니다.
- 테스트 케이스에 대한 테스팅의 효과성이 손상되지 않습니다.
- 많은 수의 변수에 대해 잘 작동합니다.
소프트웨어 테스팅의 오류 추측(Error Guessing)
원문: https://www.geeksforgeeks.org/error-guessing-in-software-testing
우리에게 소프트웨어 애플리케이션은 일상생활의 일부입니다. 노트북이나 휴대폰 그리고 어느 디지털 기기의 인터페이스에서든, 우리는 하루종일 다양한 소프트웨어 애플리케이션을 사용합니다. 그래서 소프트웨어 회사들은 사용자들을 위해 좋은 품질의 오류 없는 소프트웨어 애플리케이션을 개발하기 위해 최선을 다하고 있습니다.
그래서 회사가 소프트웨어 애플리케이션을 개발할 때는 소프트웨어 테스팅이 중요한 역할을 합니다. 테스터들은 지정된 테스트 케이스로만 제품을 테스트하는 것이 아니라, 테스팅 문서의 범위를 벗어난 부분에 대해서도 테스트합니다. 여기서 오류 추측(Error Guessing)이라는 용어가 등장하는데, 이는 테스팅 지침 매뉴얼에는 명시되어 있지 않지만 실제로 수행되는 케이스를 의미합니다.
오류 추측의 용도는 무엇인가요?
오류 추측은 테스터들이 자신들의 경험, 직관, 그리고 도메인 지식에 의존하여 공식 테스트 케이스나 명세서에서 포착되지 않을 수 있는 소프트웨어 애플리케이션의 잠재적 결함을 식별하는 비공식 테스팅 기법입니다. 이는 유사한 시스템이나 애플리케이션에 대한 경험, 일반적인 함정, 또는 사용자 행동과 기대에 대한 이해를 바탕으로 오류나 버그가 존재할 수 있는 곳을 추측하는 것을 포함합니다. 이 기법은 구조화된 테스팅 프로세스에서 간과될 수 있는 문제들을 발견함으로써 공식적인 테스팅 방법을 보완합니다.
오류 추측과 다른 고급 테스팅 기법에서의 기술을 향상하기 위해서는 이 종합적인 소프트웨어 테스팅 과정을 수강하는 것을 고려해 보세요. 이 과정은 다양한 테스팅 전략에 대한 실질적인 통찰력을 제공하며, 미묘한 결함을 탐지하고 소프트웨어 품질을 향상하는 능력을 강화하는 데 도움이 됩니다.
이것은 공식적인 테스팅 방법은 아니지만, 때때로 많은 미해결 문제를 해결할 수 있기 때문에 중요합니다.
- 모호한 영역 파악: 테스터들이 명확한 명세가 없는 불분명하거나 부실하게 명세된 소프트웨어 영역을 찾는 데 사용하는 기법입니다. 테스터들은 확신을 가지고 추정함으로써 요구사항에서 더 많은 설명이나 상세화가 필요한 영역을 찾아내고 보완할 수 있습니다.
- 경험 기반 테스팅: 테스터들은 자신의 전문 지식과 일반적인 소프트웨어 위험에 대한 이해를 바탕으로 발생할 수 있는 결함을 예측합니다. 특히 복잡하거나 문서화가 부족한 시스템에서는 경험이 결함을 찾는데 매우 중요하기 때문에, 이 방법이 특히 효과적입니다.
- 위험 기반 테스팅: 테스터들이 높은 위험을 가진 소프트웨어 컴포넌트에 집중할 수 있게 함으로써, 위험 기반(risk-based) 테스팅 방법론과 일치합니다. 테스터들은 결함이 시스템에 영향을 미칠 가능성이 더 높은 영역에 대한 평가를 바탕으로 테스팅 노력의 우선순위를 정합니다.
- 초기 오류 식별: 오류 추측을 통해 테스팅 중 초기 결함 탐지가 가능해집니다. 테스터들은 공식 테스트 케이스 실행 전에 잠재적 문제를 식별함으로써 초기 단계에서 결함을 해결하여 제품의 전반적인 품질에 기여할 수 있습니다.
오류 추측 기법을 어디서 어떻게 사용하나요?
소프트웨어 테스팅 접근방식에서 오류 추측은 블랙박스 테스팅 기법의 일종이며, 다른 블랙박스 테스팅 기법들이 시행되는 조건의 일부로 사용하는 것이 가장 효과적입니다. 예를 들어, 경곗값 분석과 동등 분할 기법만으로는 애플리케이션에서 오류가 발생하기 쉬운 모든 조건을 커버하지 못하는 경우가 있기 때문입니다.
- 시간과 자원 제약: 철저한 테스트를 계획할 충분한 자원이나 시간이 없는 상황에서 오류 추측은 결함을 빠르고 효율적으로 찾을 수 있는 기법입니다.
- 애자일 및 적응형 작업 환경: 오류 추측은 적응과 유연성이 필수적인 애자일 개발 환경에서의 점진적이고 반복적인 개발 특성과 잘 맞습니다.
- 생소하거나 복잡한 시스템: 테스터들은 복잡한 시스템이나 잘 알려지지 않은 기술을 다룰 때, 자신들의 일반적인 테스팅 경험을 활용하여 잠재적인 문제점들을 식별할 수 있습니다.
- 명세가 부족한 부분: 명세가 불명확하거나, 부족하거나, 제대로 정의되지 않은 경우에 오류 추측이 효과적입니다.
- 고위험 영역: 오류 추측은 테스터들이 고위험 소프트웨어 영역에 집중할 수 있게 해주는 유용한 도구입니다. 테스터들은 시스템의 취약점에 대한 전문 지식을 적용하여, 오류가 심각한 문제를 일으킬 가능성이 가장 높은 곳에 테스팅 노력을 집중할 수 있습니다.
오류 추측 기법의 장점
- 다른 테스팅 접근법들과 함께 사용할 때 효과적입니다.
- 애플리케이션의 복잡하고 문제가 있는 영역을 해결하는 데 도움이 됩니다.
- 다른 공식 테스팅 기법으로는 발견하기 어려운 오류들을 찾아낼 수 있습니다.
- 전체 테스팅 시간을 줄이는 데 도움이 됩니다.
오류 추측 기법의 단점
- 능력 있고 숙련된 테스터만이 수행할 수 있습니다.
- 테스터의 경험과 기술에 크게 의존합니다.
- 애플리케이션의 품질 기준을 보장하지 못합니다.
- 투입되는 노력에 비해 오류 검출이 효율적이지 않습니다.
오류 추측 기법의 한계점
- 소프트웨어가 기대하는 품질 수준에 도달했는지 확신할 수 없습니다.
- 애플리케이션의 완전한 테스트 커버리지를 제공하지 못합니다.
오류 추측 기법에 사용되는 요소들
- 이전 릴리스에서 얻은 교훈
- 테스터의 경험
- 과거의 학습 내용
- 테스트 실행 보고서
- 과거에 발견된 결함들
- 운영 중에 발생한 이슈 티켓
- 일반적인 테스팅 규칙들
- 애플리케이션 사용자 인터페이스
- 이전 테스트 결과들
결론
오류 추측은 널리 사용되는 테스팅 기법 중 하나입니다. 정확한 테스팅 접근법은 아니지만 작업을 단순화하고 많은 시간을 절약할 수 있게 해줍니다. 특히 다른 테스팅 기법들과 결합할 때 더 나은 결과를 얻을 수 있습니다.
이 테스팅에서는 숙련되고 경험이 풍부한 테스터가 필수적입니다.
오류 추측 기법에 대한 자주 묻는 질문들
오류 추측은 블랙박스 테스팅인가요?
네, 오류 추측은 테스터가 내부 코드 구조에 대한 구체적인 지식 없이 경험과 직관에 의존하는 블랙박스 테스팅의 한 형태입니다.
오류 추측은 화이트박스 테스팅인가요?
아니요, 오류 추측은 화이트박스 테스팅이 아닙니다. 테스터의 직관과 경험에 기반한 블랙박스 테스팅의 한 형태입니다.
탐색적 테스팅은 블랙박스 테스팅인가요?
네, 탐색적 테스팅은 일반적으로 테스터가 내부 코드나 구조에 대한 자세한 지식 없이 소프트웨어의 기능을 탐색하는 블랙박스 테스팅의 한 형태로 간주됩니다.
여러분의 경력에 도움이 될 소프트웨어 테스팅과 자동화를 배우고 싶으신가요? 품질 보증 분야에서 전문성을 키우고자 하는 학생이나 전문가라면 GeeksforGeeks에서 제공하는 소프트웨어 테스팅과 자동화 완벽 가이드 과정을 수강하세요. 최신 테스팅 방법론, 자동화 도구, 실제 프로젝트와 현실적인 시나리오를 통한 업계 모범 사례들을 실습해 볼 수 있습니다. 초보자이든 기존 기술을 발전시키고자 하는 분이든, 이 과정은 소프트웨어 제품의 품질과 신뢰성을 보장하는 데 필요한 역량을 제공할 것입니다. 소프트웨어 테스팅 전문가가 되고 싶으신가요? 지금 등록하고 여러분의 경력을 한 단계 높여보세요!