[소공 목차]

 

개념 : 비즈니스 연속성 보장 기법

  • 시스템에 의해 제공하는 비즈니스의 연속성과 안정성을 보장하기 위해 운영 환경에 소스 배포 시 서비스가 중단되지 않도록 코드를 배포 할 수 있는 기술
  • 소프트웨어 배포 : 소프트웨어 개발 이후 결과물을 고객에게 제공하는 방법, 시스템을 중단하는 중단배포와 시스템의 중단없이 배포하는 무중단 배포로 부류

중단배포의 문제점

문제점 설명
다운타임 발생  - 24시간 항상 가동되어야하는 서비스의 경우 문제 발생 가능
무결성 저하  - 다중 서버 이용시 서버간 시차로 인한 데이터 중복 발생 가능
롤백시 중단  - 배포시 문제 발생할 경우, 롤백시에도 다운타임 발생

무중단 배포 기법의 종류  

(1) Rolling Update(롤링 배포)

구분 설명
개념 - 일반적인 배포를 의미하며, 단순하게 인스턴스(또는 서버)에 대해 동일한 인스턴스를 띄우고, 준비가 되어 있는 상황에서 1개씩 Rolling을 통해 점진적으로 인스턴스를 변경하는 기법
- Ramped, Incremental 이라고도 불리며, 기존에 사용하고 있었던 기본적인 배포 전략 방식
장점 - 관리 및 롤백이 용이
단점 - 서버 처리 용량에 대한 서전 고려 필요 

(2) Blue/Green Deployment(블루-그린 배포)

구분 설명
개념 - Old 버전을 블루, New 버전을 그린으로 호명하고, New 버전을 모두 배포 후 서비스 준비가 되었을 때 모든 트래픽을 New 버전으로 한번에 Switching 을 하는 기법 
- Red-Black 이라고도 불리며, 서버가 2개가 다 active이기 때문에 Rollbak이 다소 쉽게 처리 가능
장점 운영 환경에 영향을 주지 않고, 실제 서비스 환경으로 신버전 테스트가 가능
단점 시스템 자원이 두배로 필요하여 비용이 증가

(3) Canary Release(카나리 배포)

구분 설명
개념  - 트래픽 제어를 통해 일부 사용자만 신규 서버로 접속하게 하여 모니터링과 디버깅을 수행 한 후 문제가 없는 경우 모든 서버로 교체하는 기법 
 - 수정한 코드가 워낙 많이 바뀌어서 불안할 경우 점진적으로 배포하는 형태를 통해 위험 감소 가능
장점  - Risk 를 빠르게 감지 가능, A/B 테스트로도 활용 가능
단점  - 네트워크 트래픽에 대한 제어 부담

[소공 목차]

 

개념

  • 프로그램이 효율적으로 관리될 수 있도록 하는 소프트웨어의 특성으로 모듈화를 수행하면 소프트웨어 복잡도가 감소하고 변경이 용이하며 프로그램 구현 편의성이 증대됨
  • 시스템을 분해하고 추상화를 통하여 소프트웨어 제품의 성능을 향상시키거나 시스템의 디버깅, 시험, 통합 및 수정을 용이하게 하는 설계 방법

  • 모듈화는 구현 및 유지보수에 있어 비용 및 성능을 크게 좌우하는 요소로, 설계 및 구현 단계에 있어서도 중요한 원리로 자리 잡고 있음

모듈화의 원리

구분 설명
비용과 모듈과의 관계 모듈수가 증가하면 인터페이스 비용의 증가
모듈의 독립성 낮은 결합도와 높은 응집도를 가짐
자료 추상화 각 모듈 자료구조를 액세스하고 수정하는 함수 내에 자료 구조의 표현 내역을 은폐

모듈화의 주요 특성

구분 설명 특징
모듈성
(Modularity)
프로그램을 효율적으로 관리할 수 있도록 하는 소프트웨어의 특성으로 시스템 분해 및 추상화를 통해 소프트웨어 성능 향상을 위한 적합한 프로그램 단위 성능향상
컴포넌트화
재사용성
응집도
(Cohesion)
모듈의 독립성을 나타내는 개념으로 하나의 모듈 내부 처리 요소들간에 기능적 연관도를 측정하는 척도 높을수록 좋음
결합도
(Coupling)
소프트웨어 구조에서 모듈간 연관성을 측정하는 척도 낮을수록 좋음

 

모듈화 기법의 종류

구분 기법 내용
설계 Module
  • 설계 시 관련이 있는 기능을 한 부분에 모아놓고 library 형태로 사용
컴포넌트
  • 바이너리형태의 재사용 가능한 형태로
  • 인터페이스에 의해 로직을 수행할 수 있는 모듈단위
서비스
  • 기존 컴포넌트 보다는 Loosely coupled 한 형태의 기능을 제공하는 모듈단위
구현 Macro
  • 프로그램 구현 시 반복되는 부분을 특정 이름을 부여하고 이름을 호출하여 실행할 수 있도록 하는 프로그래밍 기법. , 전 처리기는 macro가 사용된 모든 곳에 코드를 대체해 놓음
Function
  • 프로그램 구현 시 커다란 프로그램의 일부 코드로
  • 특정한 작업을 수행하고 상대적으로 다른 코드에 비해 독립적인 모듈
Inline
  • 프로그램 구현 시 반복되는 부분을 특정 이름을 부여해 놓고 이름을 호출하여 실행할 수 있도록 하는 프로그램 기법. , 컴파일러는 이 inline이 사용된 모든 곳에 코드를 복사해 놓음
  • Module
    - 전체 프로그램을 구성할 요소인데, 기능 단위로 묶은 것이며 재사용을 용이하게 하기 위해 만든다.

Component
- 재사용 가능한 블럭, 다른 component들의 조합으로도 가능
  다른 서버에 배치 가능, 서비스 위해 서로 통신 가능

응집도/결합도

fan-in/fan-out

[소공 목차]

 

1. 결함 제거 극대화, 테스트 설계 기법의 개요

   가. 테스트 설계 기법의 정의

  • 테스트 설계 과정을 통해 테스트 케이스와 테스트 데이터를 설계하고 명세화하는 기법
  • 보다 적은 테스트 케이스로 보다 많은 결함을 찾을 수 있도록 테스트를 설계하는 방법

   나. 테스트 설계 기법의 분류

            - 분류 방법은 SW내부구조 참조여부에 따라 분류(블랙/화이트)할 수도 있고,

              설계근원의 기준에 따라 분류(명세/구조/경험기반) 할 수도 있음
            - 블랙박스 기법명세기반 기법과 경험기반 기법을 포함,  화이트박스 기법구조 기반 기법을 포함함 

 

2. 테스트 설계 기법의 주요 종류     

분류 주요 종류 설명
명세기반




- 동등분할 - 입력값/출력값 영역, 등가집합 대표값 예) 각 레벨 범위의 대표값을 테스트
- 경계값 분석 - 동등분할의 경계값 포함 예) 각 레벨의 경계의 값을 테스트
- 결정테이블 테스팅  - 논리적으로 의존적 모든 조건들의 조합 생성
- 테스트 조건/기대결과 True, False로 논리조합
- 상태전이 테스팅 - 현재상황, 이전이력의 상태/변화를 상태 전이 다이어그램을 통해 도출
- 유즈케이스 테스팅 - 컴포넌트(단위)레벨, 시스템 레벨
- 페어와이즈 테스팅 - 결함의 2요소의 상호작용에 기인, 2개 요소의 모든 조합을 다루는 테스트
- 직교배열 테스팅 - 각 행과 열이 페어와이즈하게 함으로써 조합의 수를 줄임
- 구문 커버리지(SC) - 테스트 스위트(테스트 케이스 묶음)에 실행된 구문이 몇 퍼센트인지를 측정
- 결정 커버리지(DC)  - 결정포인트 내의 전체 조건식이 최소한 참/거짓 한번의 값을 갖도록 측정
- 조건 커버리지(CC)  - 전체 조건식의 결과와 관계없이 각 개별 조건식이 참/거짓 한번 모두 갖도록 개별 조건식을 조합
- 조건/결정 커버리지 (C/DC) - 전체조건식 참/거짓 한번씩하면서 개별조건식 참/거짓 모두 한번씩 갖도록 조
- 변경조건/결정 커버
   리지(MC/DC)
- 각 개별 조건식이 다른 개별 조건식에 무관하게 전체 조건식의 결과에 무관하게 영향
- 각 ISO 26262의 최고 안전 무결성 등급인 ASIL D의 경우 MC/DC 100%의 구조적(코드) 커버리지를 만족해야 함
- 다중조건 커버리지
(MCC)
- 결정포인트 내의 모든 개별조건식의 모든 가능한 논리적 조합 100% 보장
경험기반 - 탐색적 테스팅 접근법
(Exploratory Testing approach)
- 테스트의 설계, 수행, 계획, 테스트 기록 및 학습을 동시에 진행하는 휴리 스틱(heuristic, 발견적인) 테스팅 접근법
 o 테스트 목적 기반 수행 (Test-charter)
 o 60~120분의 제한된 시간에 수행 (Time-boxing)
 o 테스트 수행 후 요약보고 (Debriefing)
- 분류 트리 기법 - SW 일부 또는 전체를 트리 구조로 분석 및 표현, 테스트케이스를 도출
- 체크리스트 - 테스트 하고 평가해야 할 내용과 경험과 노하우를 분류 정리하고 목록화
- 특성 테스팅 - ISO9126 등의 품질모델에 있는 품질특성을 근간으로 테스트케이스를 도 출하는 방법
- 비기능적 테스팅에서 주로 사용

 

[소공 목차]

1. 요구명세서 기반 테스트, 블랙박스 테스트 (BlackBox Test)

1) 개념

- 소프트웨어 내부 구조를 고려하지 않고, 입력값에 대한 출력값을 확인하여 테스트하는 기법

- 특) 기능테스트, Data Driven, I/O Driven

 

2) 블랙박스 테스트 주요 기법

기법 활용예 상세 설명
동등 클래스
분할 기법
(Equivalence
Class
Partitioning)

- 등가 분할 된 대표 값을 이용 테스트케이스 도출
- 프로그램의 입력 도메인을 등가 영역들로 분할 후 각 영역별로 대표되는 값들을 선정하여 테스트 케이스를 설계하는 방법
) 입력데이터 x값이 0 ~ 100 사이여야 한다면 TC (x < 0), (x = 50), (x > 100)으로 분할하여 적용
경계값 분석
(Boundary Value Analysis)


- 결함은 경계 값 근처에서 많이 발생 이용
- 입력 영역의 분할 클래스의 경계값으로 테스트 케이스를 설계하는 방법
- 등가 분할 기법의 확장, 등가분할 된
경계의 유효한 값, 경계의 가장 가까운
유효하지 않는 값 선택 테스트 진행
) x값이 0∼100사이여야 한다면 TC
(x=0), (x=100), (x=-0.01), (x=100.1) 로 정의
의사결정 테이블 테스팅
(Decision
Table
Testing)

- 조건과 결과를 참/거짓으로 표현
- 주요한 의사결정 요소들을 표(결정테이블)로 만들고, 요소들간의 결합에 의한 테스트 케이스 설계
- 각 의사결정 요소들의 조합을 통해 다양한 형태의 테스트 시나리오를 도출
유스케이스
테스팅
(Use Case
Testing)

- usecase명세서 이용 테스트 케이스 설계
- 유즈케이스를 통해 도출되는 비즈니스 시나리오 (기본 흐름, 대체 흐름)를 기반으로 테스트를 명세화하여 테스트
- 컴포넌트/단위 레벨 유즈케이스 테스팅
- 시스템 레벨 유즈케이스 테스팅
분류 트리 기법(Classification Tree Method)

- SW의 일부 또는 전체를 트리 구조로 분석 및 표현하여 테스트 케이스를 설계하는 기법
- 트리구조를 시각화 하여 테스트 케이스를 설계하므로 불필요한 중복 및 누락을 회피
페어와이즈
테스팅
(Paireise
Testing)
- 대부분 결함이 2 개의 요소(Pair)의 상호 작용에 기인한다는 것에 착안하여, 각 값들이 다른 파라미터의 값과 최소 한번씩은 조합을 이루도록 구성하는 테스트 기법
- 모든 조합을 포함하지 않으므로 결함을 찾지 못하는 경우 발생 가능
원인-결과
그래프
(Cause Effect
Graph)
- 입력 데이터간 관계가 출력에 영향을 미치는 상황을 체계적으로 분석하여 테스트 케이스 설계 및 테스트
- 원인,결과에 근거한 테스트 케이스 생성하며 시스템 외부 동작만 고려 
오류예측
기법
(Error Guessing)
) 입력값 없이 Return 친다.
문법에 어긋난 입력을 시험한다 등
각 시험 기법들이 놓치기 쉬운 오류들을 감각과 경험으로 찾아 검증
- Ad-hoc Testing이라고도 하며 직관과 경험에 의한 특정 형태의 결함 예측 및 해당 결함을 드러내는 테스트 케이스 설계 기법.

 

2. 내부구조기반 테스트. 화이트박스 테스트 (White-Box Test)

1) 개념

- 소프트웨어의 내부 구조와 복잡도를 기반으로 테스트 케이스를 도출하여 테스트를 수행하는 방식

- 특) 구조 테스트, Logic Driven

 

2) 화이트박스 테스트 주요 기법

기법 설명 사례
제어구조 시험
(Control Structure Testing)
- McCabe에 의해 제안된 대표적 White Box Test 기법
- 프로그램의 처리 흐름을 제어하는 방법 및 수행 제어를 위해 사용되는 문장의 구조
- 순차형(순차 구조, Sequence)
- 선택형(분기구조, If Then Else)
- 반복형(반복구조, Do While)
루프 시험
(Loop Testing)
- 프로그램 루프 구조에 국한해서 실시하는 기법
- 루프 시험의 대상 결함 : 초기화 결함, 인덱싱 및 증가의 결함, 루프의 경계선에서 나타나는 경계 오류
- 루프의 유형 : 단순루프, 중첩루프, 연결루프, 비구조적 루프
- for, while
- go to

- Test Coverage 선정으로 테스트 범위 정의 가능

https://meta-study-group.tistory.com/322

 

코드 커버리지(김도현 부장님)

[소공 목차] 1. 코드에 대한 테스트 수행 범위 지표, 코드 커버리지의 개념 - What : 테스트 대상인 소스 코드 중 테스트를 통해 실행된 코드의 비율 지표 - Why : 테스트의 정확성(테스트 범위)을 판

meta-study-group.tistory.com

 

 

3. 블랙박스, 화이트박스 테스트 비교

구 분 블랙박스 테스트(명세기반) 화이트박스 테스트(구조기반)
개념도
개념 프로그램 내부 구조를 고려하지 않고, 요구사항 명세서나 사양서에서 테스트 케이스를 추출하여 테스트 하는 기법 컴포넌트 혹은 소프트웨어의 내부 구조 분석에 바탕을 두고 테스트케이스를 도출하여 테스트 하는 기법
특징 기능/데이터 위주, 명세 기반 내부로직 위주 설계, 알고리즘 위주, 구조 기반
관점 개발자 관점 사용자 관점
대상 시작/종료/인터페이스 결함 Loop, Decision 결함, 비 수행 구문
장점 시스템의 기능과 명세로 테스트 케이스를 도출하여 테스트케이스가 명확 내부 로직에 대한 테스트를 수행함으로써 상세한 테스트 가능
단점 내부 로직 테스트가 없어 테스트 범위가 구조기반보다 제한적 테스트케이스 도출 한계
기법 동등분할, 경계값분석, 의사결정테이블, 상태전이, Pairwise 분석 오류 예측, 원인결과 그래프 구문 커버리지, 결정 커버리지, 조건/결정 커버리지, 루프테스트, 제어구조 시험
활용 대부분의 테스트에 적용, 베타 테스트 단위 테스트 위주, 알파 테스트

* 알파테스트 : 자체 테스트 * 베타테스트 : 사용자 테스트

[소공 목차]

 

1. 신규사업 프로젝트에 대한 평가 사업타당성 평가 개요

<실무상 기술 가치 평가 방법>

- 사업화 하거나 투자를 확대할 때 사업의 기술서 및 타당성을 등급으로 평가하는 방법

- 사업타당성 평가 방법 : 기술성/권리성 관점, 시장성/사업성 관점, 유용성 관점, 경쟁성 관점

2. 사업타당성 평가 방법

 - 평가에 따라 기업의 생존성이 달려 있기 때문에 세분화 기준이 필요함.

 - 기술적 사업 타당성 여부는 기술의 현재와 미래를 보는 것

 - 따라서 현재를 보고 미래를 예측 해야 함.

가. 기술성/권리성 관점

나. 시장성/사업성 관점

다. 유용성 관점

라. 경쟁성 관점

3. 기술사업타당성 평가와 기술가치평가의 비교

-끝-

+ Recent posts