본문 바로가기
기본 지식

애플리케이션 테스트 관리

by HJINHA 2021. 7. 6.

01 애플리케이션 테스트 케이스 설계

1. 소프트웨어 테스트

- 원리

  - 테스팅은 결함이 존재함을 밝히는 것. 결함이 없음은 증명 못 함

  - 완벽한 테스팅은 불가능함

  - 개발 초기에 테스팅 시작

  - 결함집중. 적은 수의 모듈에서 대다수의 결함이 발견됨. 파레토 법칙 (8020)

  - 살충제 패러독스: 동일 테스트 케이스에 의한 반복 테스트는 새로운 버그를 찾지 못함

  - 테스팅은 정황에 의존적. 정황에 따라 테스트를 다르게 수행

  - 오류-부재의 궤변: 요구사항을 충족하지 못한다면 결함이 없어도 품질이 높은 게 아님

- 유형

1) 정적 테스트

: 테스트 대상을 실행하지 않고 구조 분석. (리뷰, 정적 분석)

2) 동적 테스트

: 소프트웨어를 실행해 결함을 검출 (화이트박스, 블랙박스, 경험기반)

(1) 화이트박스 테스트: 응용 프로그램의 내부 구조와 동작을 검사

(2) 블랙박스 테스트: 사용자의 요구사항 명세를 보며 검사

  - 동등분할 테스트

   : 입력 데이터 영역을 유사한 도메인별로 유효/무효값을 그룹핑, 대푯값 테스트케이스를 도출해 테스트

  - 경곗값 분석 테스트

  - 결정 테이블 테스트

  - 상태 전이 테스트

  - 유스케이스 테스트

  - 분류 트리 테스트

  - 페어와이즈 테스트

  - 원인-결과 그래프 테스트

  - 비교 테스트

2. 애플리케이션 테스트 시나리오 작성

- 테스트 레벨

: 함께 편성되고 관리되는 테스트 활동의 그룹. 각 레벨은 서로 독립적.

- 종류

  1) 단위 테스트

  2) 통합 테스트

  3) 시스템 테스트

  4) 인수 테스트

 

02 애플리케이션 통합 테스트

1. 애플리케이션 테스트

1) 단위 테스트

- 개별적인 모듈(또는 컴포넌트)을 테스트

- 구현 단계에서 각 모듈 구현 후 수행

2) 통합 테스틑

- 각 모듈 간 인터페이스 관련 결함을 찾아내기 위한 테스트

  (1) 하향식 통합(Top Down)

    : 깊이우선 / 너비우선. 하위 모듈을 대신해 더미 모듈인 스텁 개발

  (2) 상향식 통합(Bottom Up)

    : 상위 모듈 대신 드라이버 작성

  (3) 샌드위치 통합: 상향+하향

3) 테스트 자동화 도구

  : 반복적인 테스트 작업을 스크립트 형태로 구현해 시간을 단축하고 쉽게 테스트할 수 있게 함

  (1) 정적 분석 도구

    : 만들어진 애플리케이션을 실행하지 않고 분석. 소스 코드에 대한 결함 발견용

  (2) 테스트 실행 도구

    : 작성된 스크립트를 실행. 데이터 주도 접근/키워드 주도 접근 방식

  (3) 성능 테스트 도구

  (4) 테스트 통제 도구

4) 테스트 하네스

  : 테스트를 지원하기 위한 코드와 데이터. 코드 개발자가 작성.

2. 애플리케이션 개선 조치사항 작성

1) 테스트 커버리지

  : 소프트웨어의 테스트 범위를 측정하는 테스트 품질 측정 기준 테스트의 정확성과 신뢰성을 향상시킴

  - 유형: 기능 기반 / 라인 / 코드 커버리지

 

03 애플리케이션 성능 개선

1. 애플리케이션 성능 측정

- 측정 지표

  1) 처리량: 주어진 시간에 처리할 수 있는 트랜잭션 수

  2) 응답 시간: 사용자 입력이 끝난 시점 ~ 응답 출력 개시될 때까지의 시간

  3) 경과 시간: 사용자 요구 입력 시점 ~ 출력 완료 시간

  4) 자원 사용률: 트랜잭션을 처리하는 동안 사용하는 CPU, 메모리, 네트워크 사용량

2. 소스 코드 최적화

1) 배드 코드

  (1) 외계인 코드: 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 매우 어려운 코드

  (2) 스파게티 코드: 소스 코드가 복잡하게 얽힌 것. 작동은 하지만 사람이 읽으며 파악하기 어려운 코드

  (3) 알 수 없는 변수명

  (4) 로직 중복

2) 클린 코드

  - 작성 원칙: 가독성, 단순성, 의존성 최소, 중복성 제거, 추상화

3. 소스 코드 품질 분석

  : 소스 코드에 대한 코딩 스타일, 설정된 코딩 표준, 코드 복잡도, 코드 내 메모리 누수 현황, 스레드 결함 등을 발견하기 위한 활동

- 도구 유형

  1) 정적 분석 도구

    : 작성된 소스 코드를 실행하지 않고 코드 자체만으로 분석

    - pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura

  2) 동적 분석 도구

    : 애플리케이션을 실행해 분석

    - Avalanche, Valgrind

4. 애플리케이션 성능 개선 방안

  1) 소스 코드 최적화 기법 적용 

  2) 아키텍처 조정

  3) 프로그램 호출 순서 조정

  4) 소스 코드 품질 분석 도구 활용

  5) 리팩토링

    - 기능을 변경하지 않고 복잡한 소스코드를 보완해 가용성, 가독성을 높이는 기법

    - 모듈의 외부적 기능은 수정하지 않고 내부적으로 구조, 관계 등을 단순화

    - 목적: 유지보수성 향상, 유연한 시스템, 생산성 향상, 품질 향상

  6) 애플리케이션 성능 현황 관리


'기본 지식' 카테고리의 다른 글

소프트웨어 개발 보안 구축  (0) 2021.07.05
서버 프로그램 구현  (0) 2021.07.03
절차형 SQL  (0) 2021.07.03
데이터 분석 함수  (0) 2021.07.03
데이터베이스 기본  (0) 2021.07.03

댓글