운영 품질 ① 테스트의 필요성

bacccine·2022년 6월 3일
0

운영품질

목록 보기
1/2

테스트란?

과거: 시스템의 정상 동작여부를 확인하는 과정
현재: 사용자의 기대 수준과 요구사항에 맞게 구현되고 동작하는지 확인하여 결함을 발견
       개발 초기 단계부터 산출물 관점의 리뷰를 통한 결함 발견 및 예방

테스트 항목의 특성에 대한 발견 또는 평가를 용이하게 하기 위한 일련의 활동

테스팅이란?

장애를 일으켜 결함을 발견하는 것으로, 테스터가 수행한다
SW 테스팅은 수동이나 자동으로 시스템을 작동시키고 평가하는 작업으로, 명시된 요구를 만족하는지 식별하는 일련의 과정

디버깅이란?

장애 원인을 찾고 분석하여 제거하는 개발 활동으로, 개발자가 수행한다

테스트의 중요성

(1) 모바일 앱
최근 손쉽게 다운받고 사용하는 휘발성인 경향이 커졌다
충분한 테스팅 없이 제공된다면 주목받지 못한다

테스트를 왜 해야하는가?

① 시스템 장애를 최소화하기 위해
② 사용자가 원하는 바를 모두 달성했음을 증명하기 위해
③ 제품이 항상 기대한대로 잘 작동하지는 않음

테스트의 진화 과정

(1) 디버깅 위주: 테스트와 디버깅 구분이 모호하고 테스트는결함 제거를 돕는 활동으로 인식
(2) 증명 위주: 요구사항을 만족하는지, 올바르게 동작한단 사실을 입증. 테스터의 등장
(3) 파괴 위주: 테스트는 결함을 발견하는 활동. 디버깅은 결함 위치와 원인을 파악하고 수정하는 활동으로 인식
(4) 평가 위주: 개발 프로세스 전반에 테스트가 흡수되고 통합된 상태. 검토에 대한 가치가 인식. 조기 테스트를 통한 결함 발견
(5) 예방 위주: 오류 발생을 사전에 방지. 테스트 용이성을 고려한 요구사항, 설계, 구현활동을 통해 결함 예방

테스팅이 어려운 이유

(1) 소프트웨어 복잡도
(2) 불완전한 명세: 명세서까지 테스트해야 한다
(3) 테스트 환경 구축의 어려움: 실제 데이터의 활용 불가
(4) 소프트웨어 고유의 특성: 사소한 변수 처리가 생명과 직결될 수 있음
(5) 테스트 마인드 부재

테스트의 종류

(1) 정적 테스트 영역: 문서를 바탕으로 진행
요구사항 → 시스템 설계 → 구조설계 → 상세 설계
☞ 인스펙션, 워크쓰루, 동료검토 등의 방법으로 테스트

구현

(2) 동적 테스트 영역
단위 테스팅 → 통합 테스팅 → 시스템 테스팅 → 인수 테스팅
☞ 구조적 테스트(화이트박스, 제어흐름), 기능 테스트(블랙박스, 경험기반), 비기능 테스트

정적 테스트란?

동작을 시키지 않고 수행하는 테스트를 의미

정적 테스트의 기대효과

  1. 결함을 개발 초기에 발견 → 결함예방 및 비용 절감
    결함을 늦게 발견할 수록 비용이 많이 든다
  2. 재 작업시간 단축 → 개발 기간 단축
  3. 테스트 전문가의 시스템에 대한 이해 증가 → 완성도 높은 테스팅 가능
  4. 설계 단계부터 테스트 참여 == 조기 테스트 설계

동적 테스트란?

동작시키며 수행하는 테스트를 의미

(1) 명세 기반 기법(블랙박스): 문법 테스팅, 원인-결과 그래프, 분류 트리 기법, 동등 분할/ 경계값 분석 등
(2) 구조 기반 기법(화이트박스): 문장 테스팅, 분기 테스팅,데이터 흐름 테스팅 등
(3) 경험 기반 접근법: 에러 추정, 탐색적 테스팅 등

테스트 케이스 vs 테스트 시나리오

테스트 케이스는 input과 output만을 보는 것, 테스트 시나리오는 일련의 흐름에 따라 테스트 하는 것

유지운영에서의 테스트

구현과 테스트 단계를 유지운영에서의 테스트에서도 나누어 진행하는 것이 바람직하다
변경 요구사항 분석/설계 단계가 유지운영 테스트에서 중요하다 → 변경이 현재 서비스에 어떤 영향을 끼칠 것인지
유지운영에서는 "영향도 분석" 및 "리그레션 테스트(회귀 테스트)"가 중요하다

리그레션 테스트

변경된 내역때문에

결함이란

시스템의 결함 부분이 수행되면 장애가 발생한다

결함의 원인

휴먼 에러, 시간 압박, 시스템의 복잡성, 상호 연동, 환경 등

결함 관리의 중요성

개발자와 다른 프로젝트 이해관계자가 문제점을 식별,격리하고 필요하면 정정하도록 피드백 제공
테스트 대상 시스템의 품질과 테스팅 진척도를 추적하는 수단을 테스트 리더에게 제공
제품 및 프로세스 개선에 대한 아이디어 제공

결함 관리로 파악할 수 있는 정보

(1) 결함 유형: 기능성,비기능성 등
(2) 결함 심각도
(3) 결함 수정 우선순위
(4) 단위 모듈 당 결함 수
(5) 개발 단계별(테스트 단계별)로 발견된 결함 수
(6) 현재 시점에서 수정되지 않은 결함 수
(7) 현재 시점에서 수정이 유보된 결함 수

결함 관리의 기대효과

(1) 일정, 범위 등 모니터링에 활용 가능
(2) 제품 품질을 정량적으로 표현 가능

0개의 댓글