소프트웨어 테스트

애플리케리션에서 사용자가 요구하는 기능과 성능, 사용성 등이 만족하는지를 확인 하고 결함을 찾는 활동을 소프트웨어 테스트라 합니다.

 

 

소프트웨어 테스트의 관점은 오류를 어떻게 발견하는지 언제 발견하는지에 따라 여러 관점으로 나눠집니다.

 

- 오류 발견 관점: 오류 발견 관점은 프로그램에 잠재되 있는 오류를 발견하고 수정하기 위해 필요합니다.

 

- 오류 예방 관점: 프로그램을 실행 전에 동료 검토나 워크스루, 인스펙션 기법을 이용해 오류를 사전에 예방 하는 기법입니다.

 

- 품질 향상 관점: 사용자의 요구사항에 맞춰 반복적인 테스트를 거쳐 제품의 신뢰도를 향상시키는 기법을 품질 향상 관점이 있습니다. 

 

즉, 위에서 설명한 각 관점을 모두 숙지하고 신경써서 오류가 없는 애플리케이션을 서비스 하는게 목적입니다. 

 

 

 

소프트웨어 테스트 원리

소프트웨어 테스트는 다양한 원리가 존재합니다. 

 

테스팅은 결함 존재를 밝힌다는 원리는 결함이 존재하는 것을 프로그래머는 테스팅을 통해 밝혀 결함을 줄이는 활동을 하게 됩니다. 

 

완벽한 테스팅이 불가능한 것은 너무도 완벽한 테스팅을 하면 결국 사용한 시간과 자원 대비 낭비라는 이야기입니다.  

 

개발초기에 테스팅을 시작해야한다는 것은 초기부터 테스트 설계를 시작하게 되면 빠른 결과를 얻을 수 있고 테스팅에 소모 되는 시간과 재작업이 줄어들어 서비스 개발에 있어 개발기간과 결함을 줄이게 됩니다.

 

결함집중은 80대 20의 법칙이라고도 불립니다. 20%적은 수의 모듈에서 80% 이상의 대부분의 오류가 발견된다는 소프트웨어 테스트 법칙입니다.

 

살충제 패러독스는 동일한 테스트 케이스로 반복적으로 오류검사를 시행하게 된다면 새로운 버그를 놓치게 된다는 법칙입니다. 

 

테스트는 정황에 의존적은 소프트웨어의 성격이 달라지면 그 성격에 맞춰 테스트를 다르게 수행해야됩니다.

 

오류-부재의 궤변은 만약 결함도 없는 완벽한 소프트웨어를 만들어 낸다해도 요구사항을 만족시킬수 없다면 그것은 높은 품질은 소프트웨어는 아닐 것입니다. 

 

 

다양한 소프트웨어 테스트의 원리에 대해서 알아봤는데 특히 결함집중(80대20의 법칙), 살충제 패러독스, 오류-부재의 궤변 등은 시험에서 내기 좋은 문제임으로 반드시 암기하시고 넘어가야합니다.

 

 

 

소프트웨어 테스트 유형

소프트웨어 테스트는 프로그램 실행 여부에따라서 나뉘거나 테스트에 사용되는 기법에 따라서도 나뉘게 됩니다. 

 

 

실행여부에 따라서 나눠진 테스트 기법의 유형에 대해서 알아보겠습니다.

 

- 정적 테스트: 정적 테스트는 동료 검토나 워크스루, 인스펙션과 같이 프로그램의 실행없이도 구조를 분석하고 논리성을 검증하는 방식입니다.

 

- 동적 테스트: 동적 테스트는 직접 프로그램을 실행해 소프트웨어를 테스트하는 방식으로 화이트박스 테스트와 블랙박스 테스트가 여기에 속합니다.

 

 

동적테스트 기법에 속해있는 따른 화이트 박스 테스트와 블랙박스 테스트는 테스트의 기법에 차이가 있습니다.

 

화이트 박스 테스트는 구조테스트라고도 불리며 프로그램 내부의 로직과 구조를 투명하게 보며 수행되는 테스트 기법입니다.

 

화이트 박스 테스트도 어떤 방식을 이용하는지에 따라 두가지로 분류됩니다.

소프트웨어의 논리적 복잡도를 측정을 통한 수행 경로의 집합을 정의하는 제어구조 테스트와 프로그램의 루프를 이용해 실시되는 루프테스트로 나눠지게 됩니다.

 

화이트박스 테스트는 구문 커버리지와 결정 커버리지, 조건 커버리지, 조건/결정 커버리지 등을 포함하고 있습니다.

 

 

 

다음은 블랙박스 테스트에 대해서 알아보겠습니다. 블랙박스 테스트는 기능 테스트로도 불리며 외부 사용자의 요구사항 명세를 확인을 통해 수행되는 기법입니다.

 

블랙박스 테스트의 유형은 어떻게 도출하는지에 따라 총 7가지로 분류됩니다.

 

- 동등 분할 테스트: 동등 분할 테스트는 입력 데이터의 영역이 유사한 도메인으로 유효 값과 무효 값을 그룹핑합니다. 그 사이에서 대표 값을 도출하는 테스트 기법입니다.
예를 들어서 0<X<100인 X가 있습니다. 동등분할 테스트를 이용하면 X=10, X=-100, X=1000을 대표 값으로 지정해 테스트합니다.

 

- 경계 값 분석 테스트: 경계 값 분석 테스트는 등가 분할한 뒤 경계 값 부분에서 오류가 발생할 가능성이 높다는 원리를 이용한 테스트입니다. 그래서 경계 값을 포함한 테스트 케이스들을 설계하여 테스트하게 됩니다.
위와 같은 예를 들어보겠습니다. X가 0<X<100일 경우 X=0, X=1, X=99, X=100을 테스트하면 경계 값 부분을 테스트 가능합니다.

 

- 결정 테이블 테스트: 결정 테이블 테스트는 요구사항을 논리와 발생조건을 테이블 형태로 나열한 뒤 조건과 행위를 모두 조합 해 테스트하는 기법입니다.

 

- 상태전이 테스트: 상태전이 테스트는 테스트 대상이나 시스템, 객체 등의 상태 구분합니다. 그 후 이벤트가 오면 다른 상태로 전이 되는 경우의 수를 찾는 테스트 기법입니다.

 

- 유즈케이스 테스트: 유즈케이스의 경우 실제 자주 사용되는 테스트 기법입니다. 시스템이 모델링 되어 있으면 프로세스를 기반으로하여 테스트 케이스를 명세화 수행을 하게됩니다.

 

- 분류 트리 테스트: 분류 트리테스트는 소프트웨어의 일부 또는 전체를 트리 구조로 표현 후 분석을 통해 테스트 케이스를 설계하는 기법입니다.

 

- 페어와이즈 테스트: 페어와이즈 테스트는 테스트할 데이터 값을 최소 한번씩 조합하게되면 커버하게 될 기능적 범위가 모든 조합에 비해 상대적으로 적어지게 됩니다. 이를 테스트 셋으로 구성해 사용하는 기법을 이야기합니다.

 

 

 

마지막으로 알아볼 내용은 테스트 종류에 따른 분류입니다.

 

첫번째로 이야기할 테스트는 명세 기반 테스트라고도 불리는 블랙박스 테스트입니다. 프로그램의 요구사항 명세서를 기반으로 테스트 케이스를 선정합니다.

 

두번째 테스트는 구조 기반 테스트라 불리는 화이트박스 테스트입니다. 소프트웨어 내부 논리 흐름을 따라 테스트 케이스를 선정하는 기법입니다.

 

마지막으로는 경험기반 테스트입니다. 경험기반 테스트는 유사 소프트웨어나 테스터의 경험을 토대로 수행하는 테스트 기법을 이야기합니다.

+ Recent posts