2장 소프트웨어 수명주기와 테스팅 

소프트웨어 개발 모델

V-모델 에서 제시하는 테스트 레벨 (폭포수 개발 모델)

  1. 컴포넌트(단위) 테스팅 - 코딩
  2. 통합 테스팅 - 물리 설계
  3. 시스템 테스팅 -  논리 설계
  4. 인수 테스팅 - 요구사항 분석

반드시 1:1 대응은 아니다. 

베리피케이션 : 개발 산출물이 초기 단계 설정된 조건을 만족하는지 여부를 검증하는 프로세스

벨리데이션  : 사용자 관점에서의 요구사항이 만족하는지를 평가하는 프로세스

반복적이고 점진적인 개발방법론의 테스트

애자일한 테스트 (Agile, RUP, RAD, 이해관계자 중심의 소프프웨어 개발, 프로토 타이핑)

  • 테스트를 미리 설계하지 않으며 누구나 테스트에 적극 참여 할수 있다.
  • 애자일 테스팅은 결함을 최대한 빨리 발견하도록 해준다. 요구사항을 개발함과 동시에 결함을 발견할수 있다.
  • 애자일 테스팅은 문서를 최소화 한다.
  • 개발완료는 테스트 완료를 의미한다. 즉 개발과 테스트가 같이 시작되고 때로는 테스트가 먼저 시작 된다.

테스트 레벨

컴포넌트 테스팅 

테스트가 가능한 최소단위로 나누어진 모듈 내에서 결함을 찾고 그 기능을 검증

  • 주된 테스트 방법은 구조기반(white-box) 테스팅
  • 구조적인 테스팅은 물론 기능성 테스트와 리소스 관련, 강건성등 비기능적 테스팅을 포함한다.
  • 기본 경로(path)를 확인
  • 모든 오료 처리 경로를 확인
  • 컴포넌트 내의 인터페이스 확인
  • 로컬 데이터 확인, 경계값 확인 
통합 테스팅

컴포넌트간 인터페이스를 테스트 하는것은 물론, OS, 파일시스템, 하드웨어 또는 시스템간 인터페이스와 같은 각기 다른 상호 연동되는 동작을 테스트 한다.
  • 컴포넌트 통합 테스팅은 소프트웨어 컴포넌트 사이의 상호작용을 테스트 하며 컴포넌트 테스팅 이후에 수행 된다.
  • 시스템 통합 테스팅은 시스템 사이의 상호작용을 테스트 하며 시스템 테스트 이후에 수행된다.
통합 테스트 레벨의 통합 접근법

 

 백본(backbone)

빅뱅(bigbang) 

상향식(bottom up) 

하향식(Top down) 

 수행방법

 가장 중요하고 리스크가 높은 모듈로 초기 통합 형성

모든 테스트 모듈을 동시에 통합 

가장 하부의 모듈부터 통합해 가면서 

가장 상부의 모듈부터 통합해 가면서 

 드라이버/스텁

드라이버/스텁을 필요에 따라 만들어 사용 

드라이버/스텁 없이 실제 모듈로 테스트 

테스트 드라이버가 필요하며 점차 개발되고 테스트된 상부 모듈로 대치 

테스트 스텝이 필요하며 점차 개발되고 테스트된 하부 모듈로 대치 

 장점

결함 격리 쉬움 

리스크가 높은 결함을 초기에 발견 

단시간 테스트 

결함 격리 쉬움

하위 모듈을 충분히 테스트 

결함 격리 쉬움

설계상의 결함을 빨리 발견 

 단점

테스트 시간이 오래 걸릴수 있음 

결함 격리 어려움 

수정이 어려운 중요한 결함(설계상 결함)을 상부 구조에서 발견 가능 비즈니스 로직 반영 어려움 

수정이 어려운 중요한 결함을 하부에서 발견 가능 예)디자인 결함을 가진 DB 

시스템 테스팅

시스템 테스팅은 개발 프로젝트 차원(범위)에서 정의된 전체 시스템 또는 제품의 동작에 대해 테스트 하는것이다

가능한 실제 최종 사용 환경 또는 유사한 환경에서 수행해야 한다.

시스템 테스팅 수행 근간은 아래와 같은 상위 레벨의 테스트 베이시스(개발산출물)이다.

  • 리스크 분석서
  • 요구사항 명세
  • 비즈니스 프로세스
  • 유즈 케이스
  • 기타 비즈니스 레벨의 시스템 동작 명세
  • OS및 시스템 리소스 와의 상호 작용 명세
기능 및 비기능 사항을 모두 검증 해야한다.
독립적인 테스트 팀이 수행하는 경우가 대부분이다.

인수 테스팅

시스템을 사용하는 고객이나 사용자가 전담하여 수행하는 경우가 대부분인데 다른 이해 관계자도 참여할수 있다.

  1. 인수 테스팅의 목적은 시스템이나 시스템의 일부 또는 특정한 비기능적인 특성에 대해 확신을 얻는 것이다.
  2. 시스템을 배포하거나 실제 사용할 만한 준비가 되었는지에 대해 평가한다. 
  3. 반드시 최종 테스팅 이라고 보기 어렵다. 프로젝트 전과정에서 수행할수 있다.

사용자 인수 테스팅 

운영상의 (인수) 테스팅

  • 백업 /복원 테스팅, 재난 복구, 사용자 관리, 유지보수 작업, 보안 취약성에 대한 정기적인 점검

계약 인수 테스팅과 규정 인수 테스팅 

알파 테스팅과 베타(또는 필드) 테스팅

  • 공장 인수 테스팅  - 알파 테스팅 : 개발 조직 내에서 고객에 의해 수행
  • 사이트 인수 테스팅 - 베타 테스팅 : 고객 사이트로 이동한 후에 테스팅

테스트 유형

  • 기능 테스팅 
    • 시스템이 수행하는 무엇을 의미 
    • 모든 테스트 레벨 에서 수행될수 있다.
    • 블랙 박스 테스팅 
    • ISO 9126 기능성 : {적합성, 정확성, 준수성, 상호운용성, 보안성} 보안성 부특성 가용성, 무결성, 기밀성, 부인 방지
  • 비기능 테스팅 
    • 성능 테스팅 , 부하 테스팅, 스트레스 테스팅, 사용성, 유지보수성, 신뢰성, 이동성 테스팅 
  • 구조적 테스팅 
    • 테스트 커버리지를 평가하여 테스팅의 보장성 또는 충분함을 측정.
  • 확인(재)/리그레션 테스팅
    • 확인테스팅 : 결함이 발견되고 수정한 후에 결함이 성공적으로 제거 되었는지 확인하는 테스트
    • 회귀테스팅 : 이미 테스트된 프로그램의 테스트를 반복 변경으로 결함이 발견 되었는지 확인 하는 테스트 모든 레벨에서 수행.

유지보수 테스팅

이미 운영되고 있는 시스템에서 수행 

  • 소프트웨어나 시스템이 변경, 단종 , 마이그레이션이 될때 발생 ,OS업그레이드, 취약점 패치등. 
  • 영향도 분석 을 통해 리그레션 테스팅이 필요여부 결정


Posted by 마법수정화살
,