본문 바로가기

자격증/정보처리기사 2과목

2-16장. 애플리케이션 테스트 관리-애플리케이션 통합 테스트

[ 목차 ]

1. 테스트 결함 관리

2. 결함 관리 도구 유형

3. 결함 관리 도구 도입 시 고려사항

4. 결함 관리 프로세스

5. 소프트웨어 테스트 자동화

6. 소프트웨어 테스트 도구 분류

 

1. 테스트 결함 관리

1) 각 단계별 테스트 수행 후 발생한 결함의 재발 방지를 위해 유사 결함 발견시 처리 시간 단축을 위해 결함을 추적하고 관리하는 활동

2) 테스트 결함 관리 도구는 이러한 결함관리를 자동화하는 도구

 

2. 결함 관리 도구 유형

1) 상용도구

  1] QC : quality center, HP에서 만든 결함관리 도구

  2] Clear Quest : IBM에서 만든 결함관리 도구

  3] JIRA : 애틀래시안에서 만든 결함관리 도구로, PHP로 개발

2) 오픈소스 도구

  1] Bugzilia : 설치가 까다로우며 개발언어는 perl, 서버는 mySQL, postrgreSQL지원, 다양한 플러그인 기능 제공

  2] Trac : 버그 관리, 개발 task용 이슈 관리, 소스 코드 형상 관리 및 위키 기반의 문서관리,. 파이썬으로 작성, SQlite db 사용, 웹에서 게시판 형태로 사용이 용이하며 티켓 발행으로 팀원 간 원활한 의사소통 제공

  3] Mantis : 버그관리에 최적화, 설치와 사용법이 쉽고 결함만 관리할 경우 추천, 운영체제와 관계없이 PHP, MySQL, 아파치만 있으면 사용 가능

postgreSQL : 객체 관계형 데이터베이스 관리 시스템

버그 : 프로그램 상의 결함에 의해 컴퓨터 오류나 오작동이 일어나는 현상

SQLite : MySQL이나 postgreSQL과 같은 데이터베이스 관리 시스템이지만 서버가 아니라 응용 프로그램에 넣어 사용하는 비교적 가벼운 데이터베이스

티켓 : 해야 할 하나의 작업 단위로, 버그 발견시 티켓을 발행해 개발자에게 전달

3. 결함 관리 도구 도입 시 고려사항

1) 웹 클라이언트를 지원하는지 확인

2) 윈도우, 유닉스 등 이기종 플랫폼의 웹 서버를 지원하는지 확인

3) 프로세스 및 워크플로우 변경이 가능해야 함

4) 결함 간에 연관관계 정보를 제공

5) 결함 등록 및 상태 변경 시 담당자에게 이벤트 통보 기능

6) 각종 레포트, 차트, 쿼리 구성 및 저장이 가능

7) 결함 상태 변경에 대한 추적 기능

8) 다국어 지원

9) 다중 프로젝트 지원

워크플로우 : 작업 절차를 통한 정보 또는 업무의 이동을 의미하며 작업 흐름이라고도 지칭

4. 결함 관리 프로세스

1) 결함 발견 : 요구사항 분석, 설계, 테스트 실행 중 에러가 발견될 경우 테스트 전문가, 프로젝트 팀과 논의

2) 결함 등록 : 결함 관리 대장에 발견된 에러 등록

3) 결함 분석 : 등록된 에러가 단순 에러인지 실제 결함인지 분석

4) 결함 확정 : 에러가 실제 결함으로 확정된 경우 결함 확정 상태로 설정

5) 결함 할당 : 해결할 담당자를 지정하여 결함을 할당하고 결함 할당 상태로 전환

6) 결함 조치 : 결함에 대해 수정 활동을 수행하고 수정이 완료된 경우 결함 조치 상태로 설정

7) 결함 조치 검토 및 승인 : 수정이 완료된 결함에 대해 테스를 수행하고 정상적으로 결함 조치가 완료된 경우 결함 조치 완료 상태로 설정

 

5. 소프트웨어 테스트 자동화

1) 소프트웨어 개발 시 포함되는 다양한 테스트 과정을 하드웨어 혹은 소프트웨어적으로 자동화 도구를 사용해 반복성, 일관성, 생산성을 향싱시키는 테스트 기법

2) 테스트에 포함되는 다양한 과정(테스트 관리, 소스코드 리뷰 및 인스펙션, 테스트 설계 및 개발, 테스트 수행)을 자동적으로 지원하는 도구

인스펙션
1) 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하며 결함을 발견하는 검토방법

6. 소프트웨어 테스트 도구 분류

1) 소프트웨어 개발 라이프사이클SDLC 전반에 걸쳐 테스트 자동화 도구가 존재

2) 테스트 자동화 도구에 테스트 케이스를 업로드 하면 테스트 실행 결과 등록까지 추적 되며 ALM과 연계

 

7. V모델에서의 테스트 자동화 도구

1) 테스트 관리 자원 도구

  1] 테스트 라이프 사이클 전 영역에 걸쳐 필요한 도구

  2] 테스트 설계, 실행, 모니터링 및 정적 테스트 자원 도구를 통합

  3] 관리를 효율적으로 수행할 수 있도록 지원하는 도구

2) 테스트 설계 지원 도구

  1] 애플리케이션 요구사항 분석, 설계, 개발 과정에서 테스트 케이스 및 데이터 설계를 지원하는 도구

  2] 테스트 설계 시 활용하는 도구

  3] 테스트 케이스, 테스트 데이터, 테스트 절차 등을 자동화하는 도구

3) 정적 테스트 지원 도구

  1] 애플리케이션 개발 과정에서 애플리케이션을 실행하지 않고 소스 코드 분석

  2] 코딩 표준에 어긋나게 코딩이 되지는 않았는지 확인

  3] 애플리케이션을 실행시키지 않은 상태에서 결함을 분석하는 도구

  4] 많은 서버 자원을 소모하지 않는지 등을 점검하는 도구

4) 동적테스트 지원 도구

   1] 단위, 통합, 시스템 테스트 수행

  2] 애플리케이션을 실행하여 기능, 성능의 이상 유무를 판단하는 도구

 

8. V모델 관점에서 테스트 자동화 도구 구분

1) 설계단계

  1] 명세 기반 테스트 설계 도구 : 소프트웨어 명세로부터 테스트 절차, 데이터, 드라이버 등 생성, 사용자의 요구사항에 대한 명세를 빠짐없이 테스트 케이스로 구현하고 있는지 테스트, 블랙 박스 테스트, 동적 테스트

  2] 코드 기반 테스트 설계 도구 : 소스 코드로부터 테스트 절차, 데이터, 드라이버 생성, 화이트 박스 테스트, 정적 테스트

  3] 테스트 관리 도구 : 테스트 계획 수립, 프로세스 관리, 요구사항 및 결함 추적 관리

2) 구현/테스트 단계

  1] 정적 분석 도구 : 프로그램을 수행하지 않고 분석하는 도구, 복잡도 측정

  2] 리뷰 및 인스펙션 도구 : 소스 코드/설계 문서를 분석해 가이드라인 및 규칙 준수 검사

  3] 커버리지 측정 도구 : 주어진 테스트케이스에 의해 얼마나 테스트 되었는가를 측정

  4] 동적 분석 도구 : 프로그램이 수행되는 동안 이벤트의 상태를 파악하기 위해 특정한 변수나 조건의 스냅샷을 생성, 활용

  5] 성능/부하/시뮬레이션 도구 : 시스템 부하를 생성하여 반응시간 및 메모리 사용량 평가

  6] 기능 테스트 수행 도구 : 주어진 테스트 케이스 자동 수행, 예상 결과와 비교, 단위, 통합, 시스템, 인수의 모든 단계에서  

스냅샷 
1) 동적 분석 전 현재 상태를 찍고 동적 분석 후 변화 상태를 찍어 무엇이 추가되고 변했는지 확인 가능

3) 테스트관리

  1] 테스트 관리 도구 : 테스트 관리 협업 환경 지원, 테스트 라이프 사이클 전 영역에 걸쳐 필요한 도구

  2] 인시던트 관리 도구 : 인시던트(결함) 할당 및 모니터링 지원

  3] 요구사항 관리 도구 : 요구사항 작성 및 추적성 모니터링 지원

  4] 형상 관리 도구 : 각종 소프트웨어의 버전 관리

4) 테스트 설계

  1] 테스트 설계 도구 : 테스트 케이스 설계 지원

  2] 테이스케이스 생성 : 자료 흐름도 - 테스트 경로 관리, 입력 도메인 분석 - 테스트 데이터 산출, 랜덤 테스트 - 무작위 값 입력, 신뢰성 검사

5) 정적 테스팅

  1] 코드 분석 도구 : 룰 메트릭(소스 코드 메트릭 : 소스코드 품질 측정지표) 제공, 원시코드 문법적 정합성, 위반 사례 검출

  2] 구조 검사 도구 : 논리 그래프(순서도), 결함 체크

  3] 데이터 분석 : 데이터 선언, 컴포넌트 인터페이스, 정의/링크 충돌 발견

  4] 순서 검사 도구 : 이벤트 순서, 오류 순서 지적

6) 동적 테스팅

  1] 단위 테스트 도구 : 단위 함수 기능 검증

  2] 테스트 실행 도구 : 반복 테스트 자동 수행, 캡쳐 및 리플레이 기능

  3] 성능 테스트 도구 : 가상의 부하 발생을 통한 성능, 부하, 스트레스 테스트 실행

  4] 커버리지 측정 도구 : 코드 레벨 커버리지 측정 지원

  5] 동적 분석 도구 : 테스트 수행 시 런타임 결함 검출

  6] 모니터링 도구 : 시스템 특정 항목 모니터링 지원

캡쳐 및 리플레이
1) 테스트 데이터를 자동으로 입력하고 실행 과정에 발생하는 화면이나 결과를 캡쳐해 예상되는 결과와 비교하고 예상 결과와 차이가 보일 경우 테스트 프로그래머에게 보고
2) 오류를 발견하고 수정한 후 고치는 작업이 바르게 되었는지 확인하는 테스트 실행 도구

런타임 결함
1) 프로그램의 실행 중 발생하는 오류
2) 예외처리 : 런타임 오류를 처리하도록 설계된 기능

9. 소프트웨어 테스트 관리 지원 도구

1) 실행된 테스트와 테스트 활동 관리를 지원

2) 테스트 실행 도구나 결함 추적 도구, 요구사항 도구와의 인터페이스 역할

3) 결함이 발견, 분재, 수정, 확인, 종료되는 결함의 수명주기를 관리

4) 테스트 진행 상황에 대한 리포트 생성, 발견된 결함의 정량적(숫자, 양적표현)인 분석을 지원

 

10. 테스트 관리 지원 도구

1) 오픈소스

  1] 결함관리 도구 : mantis, bugzilla

2) 상용소스

  1] 버그추적 : jira, tpms, test director, clear quest (오픈소스의 결함관리 도구와 같은 기능)

 

11. 소프트웨어 정적 분석 지원 도구

1) 리뷰 프로세스에 관한 정보를 저장, 리뷰 코멘트를 작성

2) 동적 테스트를 하기 전에 결함을 발견할 수 있도록 지원

3) 코딩 표준을 지킬 것을 강제하고 구조와 의존관계를 분석

4) 소스 코드의 복잡도를 측정

 

12. 소프트웨어 테스트 실행 및 로깅 지원 도구

1) 로깅 : 기록을 만드는 것, 즉 로그 시스의 사용에 관계된 이련의 사건을 시간의 경과에 따라 기록하는 것

2) capture and playback : 스크립트 언어의 도움으로 저장된 입력값과 예상 결과를 이용해 테스트를 실행하고 실제 결과와 비교

3) 테스트 하네스 도구 : 테스트 대상이 실행되는 환경을 시물레이션

5) 커버리지 측정 도구 : 측정하고자 하는 특정 유형의 코드 구조가 몇 퍼센트 수행되었는가를 측정

테스트 하네스
1) 애플리케이션의 컴포넌트 및 모듈을 테스트하는 환경의 일부분으로 테스트를 지원하기 위해 생성된 코드와 데이터를 의미
2) 테스트가 실행될 환경을 시물레이션 하여 컴포넌트 및 모듈이 정상적으로 테스트되도록 함

시물레이션
1) 실제의 상황을 간단하게 축소한 모형을 통해 실험을 하고 그 실험결과에 따라 행동이나 의사결정을 하는 기법

13. 소프트웨어 성능 및 모니터링 도구

1) 소프트웨어가 실행도중에만 발생하는 시간 의존성과 메모리 누수와 같은 결함 발견에 활용

2) 소프트웨어의 성능/부하/스트레스를 테스트

3) 특정 시스템 리소스의 사용량을 지속적으로 분석하고 확인

시간의존성
1) 함수의 호출 순서가 중요한 경우 함수를 특정 시간에 호출해야 하고 그 함수는 시간에 민감한 결과를 돌려줌
2) 인터페이스만 한정된 의존서을 가지는 것이 아닌 시간적인 의존성까지 가지는 것

메모리 누수
1) 컴퓨터 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상
2) 할당된 메모리를 사용한 다음 반환하지 않는 것이 누적되면 메모리가 낭비
3) 램의 일부가 실제로는 내가 사용하고 있지 않지만 사용 중으로 표시되는 현상

14. 통합 테스트

단위 검사 -> 통합 검사 -> 검증 검사 -> 시스템

1) 단위 검사(화이트 박스 테스트)가 끝나면 진행

2) 하향식 : 상위 모듈에서 하위 모듈 방향으로 통합하면서 검사하는 기법

  1] 스텝 필요 : 모듈 간에 통합 시험을 하기 위해 일시적으로 제공되는 시험용 모듈

  2] 메인 제어 컴포넌트로부터 아래 방향으로 제어의 경로를 따라 이동하면서 통합하며 테스트 진행

  3] 메인 제어 컴포넌트는 작성된 프로그램을 사용하고, 아직 작성되지 않은 하위 제어 컴포넌트 및 모든 하위 컴포넌트를 대신해 더미 컴포너트인 스텁을 개발

  4] 깊이-우선 방식 또는 너비-우선 방식에 따라 하위 컴포넌트인 스텁이 한 번에 하나씩 실제 컴포넌트로 대체

3) 상향식 : 하위 모듈에서 상위 모듈 방향으로 통합하면서 검사하는 기법

  1] 절차 : 하위 모듈을 클러스터로 결합 -> 드라이버라는 제어 프로그램 작성 -> 클러스터 검사 -> 드라이버 제거 또는 실제 모듈로 대체하고 클러스터를 상위로 결합

  2] 애플리케이션 구조에서 최하위 레벨의 컴포넌트로부터 위쪽 방향으로 제어 경로를 따라 이동하며 테스트 시작

  3] 최하위 레벨의 컴포넌트들이 하위 컴포넌트의 기능을 수행하는 클러스터로 결합

  4] 사위 컴포넌트 개발이 안되었을 경우 더미 컴포넌트인 드라이버를 작성

  5] 각 통합된 클러스터 단위를 테스트

  6] 테스트가 완료되면 각 클러스터들은 프로그램의 위쪽으로 결합되며, 드라이버는 실제 컴포넌트로 대체

4) 소프트웨어 각 모듈 간의 인터페이스 관련 오류 및 결함을 찾아내기 위한 체계적 테스트 기법

5) 단위 테스트가 끝난 모듈 또는 컴포넌트 단위의 프로그램이 설계 단계에서 제시한 애플리케이션과 동일한 구조와 기느으로 구현된 것인지 확인

6) 애플리케이션 통합 테스트 수행 방법

  1] 점증적인 방법과 빅뱅 방식으로 구분

  2] 점증적 방식 : 개발된 컴포넌트 중 일부를 테스트하고 점차적으로 컴포넌트를 늘려가면서 테스트하는 방식으로, 점증적인 방법은 다시 상향식 통합과 하향식 통합으로 구분

  3] 빅뱅 방식 : 모든 컴포넌트를 사전에 통합해 한꺼번에 테스트하는 방식

 

15. 어플리케이션 통합테스트 유형

1) 회귀 테스트

  1] 통합 테스트 과정에서 오류를 제거하거나 수정한 프로그램이 새로운 형태의 오작동이나 오류를 일으킬 수 있음

  2] 회귀 테스트는 이미 통합 테스트를 완료한 컴포넌트가 어떠한 변화로 인해 의도하지 않은 오류가 생기지 않았음을 보증하기 위해 반복 테스트를 하는 것을 의미

2) 애플리케이션 회귀 테스트 케이스 선정 기준

  1] 실제 수정이 발생한 컴포넌트와 관련된 테스트 케이스를 도출하며 이를 위해 변경 관리 도구를 사용해 애플리케이션 변경 영향도 분석

  2] 변경 영향도가 가장 높은 컴포넌트 기느에 집중한 회귀 테스트 케이스를 도출

3) 사용 기반(use based) vs 스레드 기반(thread base) 테스트

  1] 사용 기반 : 독립 클래스를 테스트한 후 그 다음 독립 클래스의 종속 클래스를 테스트

  2] 스레드 기반 : 시스템에 대한 하나의 입력이나 이벤트에 응답하는 데 요구되는 클래스들을 통합하는 것으로, 각각의 스레드가 통합되고 개별적으로 테스트

스레드 : 프로세스 내에서 작업 단위(cpu가 독립적으로 처리하는 하나의 작업 단위

4) 빅뱅 vs 점증적 테스트

  1] 빅뱅 : 모든 모듈을 한꺼번에 테스트

  2] 점증적 : 주요 기능을 먼저 테스트 후 점차 범위를 넓혀나가는 테스트

 

16. 애플리케이션 통합 테스트 수행 절차

1) 통합 테스트 케이스 설계

  1] 단위 테스트 케이스를 비즈니스 시나리오에 따라 여러 개를 묶고 이어서 통합 테스트 케이스를 생성

  2] 통합 테스트 케이스는 사용자 요구사항을 기준으로 작성

2) 통합 데스트 데이터 준비

  1] 운영 데이터베이스에서 일부를 추출해서 테스트 데이터를 생성

  2] 보안을 위해 테스트 데이터에서 개인정보는 스크램블링

3) 통합 테스트 수행 및 결과 확인

  1] 테스트 수행 시 1개월 전부터 현재까지의 데이터를 애플리케이션 그대로 입력하여 레거시와 비교검사(=재연 테스트)

  2] 테스트 케이스에 따라 데이터를 입력하고 예상 결과와 비교

4) 결함 등록

  1] 테스트 결과가 예상 결과와 다를 경우 결함 등록

  2] 화면 캡처

5) 테스트 결과 보고 및 종료

  1] 통합 테스트 수행 완료 후 결과 집계하며 보고, 종료

스크램블링 : 허가되지 않은 사용자의 접근을 마기 위해 데이터를 자신만이 아는 방법으로 섞는 암호화 작업

 

17. 애플리케이션 통합 테스트 시작 및 종료 기준

1) 시작 기준

  1] 계획서 작성 : 승인, 작성된 통합테스트 계획서에 대해 승인

  2] 테스트 케이스 작성 : 100%, 통합 테스트 대상 범위에 대해 모두 작성

  3] 테스트 데이터 준비 : 100%, 테스트 수행자의 테스트 데이터 요구사항에 따른 데이터 생성여부 확인

  4] 테스트 환경 셋업 : 100%, 스모크 테스트 통과(장치가 제대로 작동하는지 알아보기 위해 처음에 전원은 공급하는 일)

2) 종료 기준

  1] 수행률 : 100%, 테스트 관리 도구에서 통합 테스트 수행률 확인

  2] 합격률 : 95%, X = A/B * 100, A : 테스트 시 패스된 테스트 케이스 수, B : 계획된 테스트 케이스 총 수

  3] 결함 조치율 : 95%, 위와 동, A : 시정조치가 완료된 건수, B : 결함 기준 시정 조치 대상 건수

  4] 요구사항 추적률 : 97%, 요구사항 ID와 통합 테스트 케이스 목록 비교

38:49