ISTQB에 대해서 알아보자
ISTQB CTFL(Certified Tester Foundation Level) 자격은 소프트웨어 테스팅에 관련된 모든 사람을 대상으 로 한다. 테스터, 테스트 분석가, 테스트 엔지니어, 테스트 컨설턴트, 테스트 관리자, 사용자 인수 테스터 및 개발자가 여기 포함된다. 이 CTFL 자격은 또한 제품 소유자, 프로젝트 관리자, 품질 관리자, 소프트웨어 개발 관리자, 비즈니스 분석가, IT 디렉터나 경영 컨설턴트 등 소프트웨어 테스팅에 대한 기본적인 이해를 원하는 모든 사람에게 적합하다. CTFL 자격증 소지자는 더 상위 수준의 소프트웨어 테스팅 자격증 취득의 자격을 가진다(예: ISTQB Advanced Level, ISTQB Expert Level 외 도메인 특화 스페셜리스트 모듈 등).
Foundation Level 시험?
실러버스를 기반으로 시험이 만들어지고 내용이상으로 문제를 출제하지 않는다고 합니다.
각 문서는 테스팅의 기초, 소프트웨어 개발 수명주기와 테스팅, 정적 테스팅, 테스트 분석 및 설계, 테스트 활동 관리, 테스트 지원 도구
K1 : 기억(remember) • K2 : 이해(understand) • K3 : 적용(apply)
올바르게 동작하지 않은 소프트웨어는 금전적, 시간적, 비지니스 평판 손실은 물론, 심하게는 부상이나 사망에 이르게 다양한 문제를 일으킬 수 있다.
테스팅은 동적 또는 정적일 수 있다.
동적은 소프트웨어를 실행 정적은
테스팅은 테스터가 전문 지식을 갖추고 분석 기술을 사용해 비판적 사고와 시스템적 사고를 적용하는 지적 활동
테스트 설계 기법
동등 분할 기법 (Equivalence Partitioning)
특정 범위가 있으며 해당 범위 내에는 동등한 결과 값을 가지게 된다는 가정에 대표 값을 선정하여 테스트를 하는 기법
경계값 분석 (Boundary Value Analysis)
경계값에 서 오류가 발생할 가능성이 높다는 가정에 경계값을 집중적으로 테스트 하는 기법
경계값 사이의 값을 기준으로 테스트 합니다
조합 테스트 (Combination Testing / Pairwise Testing)
여러 입력 값이 있을 때 그 값들의 조합을 테스트 하는 기법
주요 조합을 선택하여 테스트 진행 페어와이즈(pairwise) 테스트는 두 가지 값의 조합만을 선택하여 테스트하는 방식 두 조건 간의 상호작용을 확인하는 데 사용됩니다.
이 시스템에서는 사용자가 선택할 수 있는 조건들이 여러 가지 있습니다:
- 비행 클래스: 일반석, 비즈니스석
- 추가 수하물 옵션: 없음, 1개 추가, 2개 추가
- 기내식 옵션: 채식, 일반식
예를 들어:
- 일반석 + 없음 + 채식
- 비즈니스석 + 1개 추가 + 일반식
- 일반석 + 2개 추가 + 일반식
이처럼 조합 테스트를 사용하면 더 적은 수의 테스트로도 각 조건이 올바르게 동작하는지를 확인할 수 있습니다.
모든 경우의 수를 다 테스트하지 않아도 되기 때문에 테스트의 효율성을 높일 수 있습니다.
결정 테스팅 (Decision Testing)
결정 테스팅은 프로그램이 여러 조건에 따라 다른 결정을 내릴 때, 그 조건들이 올바르게 반영되어 결과를 제대로 도출하는지를 테스트하는 기법입니다.
구문 테스팅 (Statement Testing)
구문 테스팅은 프로그램의 모든 코드 구문이 한 번 이상 실행되었는지 확인하는 기법입니다.구문 테스팅을 사용해 프로그램의 모든 기능이 제대로 동작하는지 확인하기 위해, 각 기능을 하나씩 실행해 봅니다.
예를 들어:
- 두 숫자를 입력하고 더하기 버튼을 클릭하여 더하기 기능이 실행되는지 확인
- 두 숫자를 입력하고 빼기 버튼을 클릭하여 빼기 기능이 실행되는지 확인
- 나누기를 할 때, 0으로 나누는 경우 오류 메시지가 표시되는지 확인
구문 테스팅을 통해 모든 코드가 최소 한 번은 실행되는지 확인할 수 있으며, 실행되지 않는 코드가 있으면 이를 찾아내어 수정할 수 있습니다.
제어 흐름 테스팅 (Control Flow Testing)
제어 흐름 테스팅은 프로그램의 제어 흐름, 즉 조건문이나 반복문을 따라 모든 경로를 테스트하는 기법입니다.
회원가입 시스템을 예로 들어 보겠습니다.
회원가입을 할 때는 다음과 같은 흐름이 있습니다:
1. 이메일 입력
2. 비밀번호 입력
3. 비밀번호 확인
4. 모든 필드가 올바르게 입력되었으면 회원가입 성공
5. 입력된 정보가 틀리면 오류 메시지 출력
제어 흐름 테스팅을 통해 이 흐름을 모두 테스트해 봅니다:
- 모든 정보를 올바르게 입력했을 때, 회원가입이 성공하는지 테스트
- 이메일 형식이 틀렸을 때, 오류 메시지가 출력되는지 테스트
- 비밀번호와 비밀번호 확인이 일치하지 않을 때 오류 메시지가 표시되는지 테스트
이렇게 모든 경로를 테스트하여 프로그램이 조건에 따라 제대로 동작하는지 확인할 수 있습니다.
동적 테스팅과 정적 테스팅
- 동적 테스팅: 소프트웨어를 실행하고 그 동작을 테스트.
- 정적 테스팅: 소프트웨어 실행 없이 코드와 문서를 검토.
위와 같은 조건으로 테스팅을 하는데 개발 현장에서 실질적으로 적용이 되는 상황에 두 가지의 테스팅은 어떻게 적용되나요?
1. 정적 테스팅 적용 상황
- 초기 개발 단계: 소프트웨어 개발 초기에 코딩이 완료되지 않았거나 코드가 아직 실행되지 않은 상태에서, 설계 문서, 요구사항 문서를 리뷰하거나 코드를 정적 분석합니다. 이를 통해 논리적 오류, 불명확한 요구사항, 설계의 결함 등을 발견할 수 있습니다.
- 예: 요구사항 명세서가 완성된 후, 개발자들과 함께 문서를 리뷰해 불명확한 점을 찾는 경우.
- 코드 품질 개선이 필요할 때: 정적 분석 도구를 사용해 코드 내에서 발생할 수 있는 잠재적 버그나 비효율적인 코드 패턴을 찾아 수정합니다. 특히, 메모리 누수, 변수 사용 오류 등 런타임 전에 미리 확인할 수 있는 문제를 해결할 수 있습니다.
- 예: 코드 리뷰 도구를 이용해 동료의 코드를 리뷰하거나, 정적 분석 도구(예: SonarQube)를 사용해 코딩 규칙을 위반한 부분을 확인할 때.
2. 동적 테스팅 적용 상황
- 코드가 완성된 후 기능을 검증할 때: 동적 테스팅은 코드를 실제로 실행하면서 예상한 결과와 실제 결과를 비교하여 오류를 찾습니다. 소프트웨어가 의도한 대로 작동하는지 확인할 수 있습니다.
- 예: 단위 테스트(Unit Testing)를 통해 함수나 모듈이 올바르게 작동하는지 확인하는 경우.
- 통합 후, 시스템 전체 테스트: 모듈들이 통합된 후, 시스템 전체의 동작을 테스트하여 서로 간의 상호작용이 잘 이루어지는지 확인합니다. 시스템 테스트나 통합 테스트는 주로 이 단계에서 사용됩니다.
- 예: API 간 통합 테스트를 통해 데이터 전송이 정확히 이루어지는지 검증할 때.
- 실제 사용자 시나리오 검증: 사용자 입장에서 소프트웨어를 사용하는 것처럼 테스트하여, 실 사용 시나리오에서 버그나 오류가 발생하지 않는지 확인합니다. 이 과정에서 동적 테스팅이 필요합니다.
- 예: 사용자가 앱의 모든 기능을 정상적으로 사용할 수 있는지 검증하는 사용자 수용 테스트(UAT) 단계.
- 성능 테스트: 성능 테스트를 통해 시스템이 특정 상황에서 얼마나 효율적으로 동작하는지, 예를 들어, 부하나 스트레스 테스트를 통해 성능 저하가 발생하는지 확인합니다.
- 예: 웹 애플리케이션이 많은 트래픽을 처리할 때 성능이 유지되는지 확인하는 경우.
종합적인 적용
- 정적 테스팅은 주로 초기 단계나 코드 품질 향상에 중점을 둔 상황에서 유용합니다. 빠른 피드백을 얻을 수 있고, 비용이 적게 들며, 초기에 문제를 발견해 수정하면 전체 개발 과정에서 시간과 비용을 절약할 수 있습니다.
- 동적 테스팅은 소프트웨어가 실제로 동작하는지 확인하는 과정에서 필수적입니다. 기능적 오류, 성능 문제 등 실제 환경에서 발생할 수 있는 문제를 발견할 수 있는 유일한 방법입니다.
'코딩 교육 TIL' 카테고리의 다른 글
2024-10-16 QA TIL (3) | 2024.10.17 |
---|---|
2024-10-15 QA TIL (0) | 2024.10.15 |
2024-10-10 QA TIL (6) | 2024.10.10 |
2024-09-24 TIL (5) | 2024.09.24 |
2024.09.20 TIL (1) | 2024.09.20 |