본문 바로가기
자격증 준비/정보처리기사

7장 어플리케이션 테스트 관리

by 박살낼겨 2022. 4. 17.

1. 어플리케이션 테스트

    1) 소프트웨어 테스트

        - 사용자 요구사항에 만족되는지 확인 및 결함을 찾아내는 과정

    2) 테스트 프로세스 : 계획 > 분석 및 설계 > 수행 > 관리

    3) 테스트 원리

        - 살충제 패러독스 : 동일한 테스트 케이스로 테스트 시 결함찾기 어려움,

                                  주기적으로 테스트 케이스 점검 및 관리

        - 오류-부재의 궤변 : 요구사항 충족 못 할 시 결함이 없어도 품질이 낮음

2. 어플리케이션 테스트의 분류

    1) 프로그램 실행여부에 따른 테스트

        - 정적 테스트 : 실행 없이 구조를 분석(동료검토, 인스펙션, 워크스루)

        - 동적 테스트 : 실행을 요구하는 테스트(화이트,블랙박스 테스트)

          ** 화이트박스 : 내부 로직 보면서 수행, 구조기반 테스트(제어구조/루프테스트)

          ** 블랙박스 : 사용자 요구사항 명세를 보면서 수행, 기능 테스트                    

    2) 테스트 기반에 따른 테스트

        ** 구경하는 건 재밌지 **

       - 명세 기반 : 사용자 요구사항의 명세를 테스트 케이스로 만들어 구현여부를 확인

                        => 동등분할, 경계값 분석 등

       - 구조 기반 : 소프트웨어 내부 흐름에 따라 테스트 케이스 만들어 확인

                        => 구문기반, 결정기반, 조건기반 등

       - 경험 기반 : 유사 소프트웨어, 기술 등 테스터 경험을 기반으로 수행

                        => 에러추정, 체크 리스트, 탐색적 테스팅

    3) 시각에 따른 테스트

      - 검증 : 소프트웨어 과정 테스트, 개발자/테스터의 시각으로 기능의 수행과정을 검토

      - 확인 : 소프트웨어 결과 테스트, 사용자 시각으로 소프트웨어의 올바른 개발여부 검토

    4) 목적에 따른 테스트

       ** 강능(강릉) 안전하고 에도 좋아서 하기 힘들어 **

       -  : 과부하 시 정상작동 여부 테스트

       -  : 응답시간, 특정시간, 처리량 등 시스템 반응속도 테스트

       -  : 고의 실패유도 후 정상복귀여부 테스트

       -  : 오류제거 후 새롭게 유입된 오류여부 테스트

       - 안전 : 보안적 결함 테스트

       -  : 동일한 데이터 입력 후 결과 비교

       -  : 경로나 소스코드 복잡도 테스트

3. 테스트 기법에 따른 어플리케이션 테스트

    1) 화이트박스 테스트 : 원시 코드의 모든 경로 테스트

       1-1) 화이트박스 종류

             - 기초 경로 검사 : 대표적 화이트박스 테스트, 설계의 논리적 복잡성 측정

             - 제어 구조 검사

               #조건검사 : 모듈 내 논리적 조건 테스트  

               #루프검사 : 반복구조에 초점 맞춰 테스트

               #데이터 흐름 검사 : 변수의 정의와 사용 위치에 초점 맞춰 테스트

       1-2) 화이트박스 테스트 검증기준

             - 문장 검증 기준 : 코드의 모든 구문 한 번 이상 수행

             - 분기 검증 기준 : 코드의 모든 조건문 한 번 이상 수행

             - 조건 검증 기준 : 코드의 모든 조건문에 대해 TRUE 및 FALSE인 경우 한 번 이상 수행

             - 분기/조건 검증 기준 : 코드의 모든 조건문과 각 개별 조건식의 결과가 

                                       TRUE 및 FALSE인 경우 한 번 이상 수행

    2) 블랙박스 테스트 : 기능작동 테스트

        2-1) 블랙박스 테스트의 종류

               ** 동계줌이 비교적 많이 마렵다 **

              - 치 분할 : 입력 조건맞는 케이스, 안 맞는 케이스 동등하게 준비, 

                               해당 조건에 맞는 결과 나오는지 확인

              - 값 분석 : 입력 조건의 경계값으로 테스트

              - 인효과 그래프 : 입력 데이터 간 관계, 출력에 영향 미치는 상황 체계적 분석,

                                        효용성 높은 테스트 케이스 선정 검사

              - 류 예측 검사 : 과거 경험, 확인자의 감각으로 테스트

              - 비교 검사 : 여러 버전 프로그램에 동일한 테스트 자료 제공, 동일한 결과 출력되는 지 확인

4. 개발 단계에 따른 어플리케이션 테스트

       ㅣ     소프트웨어 개발 단계     ㅣ   ㅣ                          테스트 단계                              ㅣ

        요구사항 > 분석 > 설계 > 구현  >  단위 테스트 > 통합 테스트 > 시스템 테스트 > 인수 테스트

   

    1) 단위 테스트 : 코딩 직후 모듈, 컴포넌트에 초점을 맞춰 테스트

        - 요구사항 기반 기능성 테스트 최우선

        - 구조 기반, 명세 기반 테스트로 나뉨, 주로 구조 기반 테스트 시행

    2) 통합 테스트 : 단위 테스트 완료된 모듈들의 결합 => 하나의 시스템으로 완성하는 과정에서의 테스트

        - 모듈 간 또는 통합된 컴포넌트 간의 상호작용 오류 검사

    3) 시스템 테스트 : 개발된 소프트웨어가 완벽하게 수행되는 지 테스트

        - 기능,비기능적 요구사항으로 구분, 각각 만족하는지 테스트

    4) 인수 테스트 : 사용자 요구사항 충족여부에 중점을 테스트

        - 알파 테스트 : 사용자가 개발자 앞에서 테스트

        - 베타 테스트 : 최종 사용자가 다수의 사용자 앞에서 테스트

5. 통합 테스트

    1) 하향식 통합 테스트 : 상위 -> 하위 모듈 방향으로 통합 하면서 테스트

        - 깊이 우선 통합법

0 > 1 > 3 > 4 > 2 > 5 > 6

        - 넓이 우선 통합법

0 > 1 > 2 > 3 > 4 > 5 > 6

출처 : https://dev.to/danimal92/difference-between-depth-first-search-and-breadth-first-search-6om

 

        # 하향식 통합 테스트 절차

           - 주요 제어 모듈의 종속 모듈들은 스텁(Stub)으로 대체

              * 스텁(Stub) : 일시적 필요한 조건만 갖고 있는 시험용 모듈

           - 스텁들이 한 번에 하나씩 실제 모듈로 교체

           - 모듈이 통합될 때마다 테스트 실시

           - 회귀 테스트 실시

    2) 상향식 통합 테스트 : 하위 -> 상위 모듈 방향으로 통합하면서 테스트

        # 상향식 통합 테스트 절차

           - 하위 모듈들을 클러스터(Cluster)로 결합

              * 클러스터(Cluster) : 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹

           - 상위 모듈에서 입출력 확인을 위해 더미 모듈인 드라이버(Driver) 작성

           - 통합된 클러스터 단위 테스트

           - 테스트 완료 되면 클러스터 > 상위로 이동, 결합하고 드라이버 > 실제 모듈 대체

    3) 혼합식 통합 테스트 : 하위 수준 > 상향식 통합, 상위 수준 > 하향식 통합을 사용, 최적의 테스트 지원

        - 샌드위치(Sandwich) 통합 테스트

    4) 회귀 테스팅 : 통합 테스트로 인해 변경된 모듈, 컴포넌트에 오류 확인 테스트

        - 이미 테스트된 프로그램, 테스팅 반복

        - 새로운 오류 발생하지 않음을 보증하기 위한 테스트

6. 어플리케이션 테스트 프로세스

    1) 어플리케이션 테스트 프로세스

       - 계획 > 분석/디자인 > 시나리오 작성 > 수행 > 평가/리포팅 > 추적/관리

    2) 결함 관리 프로세스

       - 에러 발견 > 에러 등록 > 에러 분석 > 결함 확정 > 결함 할당 > 결함 조치 > 조치 검토 및 승인

7. 테스트 케이스 / 테스트 시나리오 / 테스트 오라클

    1) 테스트 케이스 : 테스트 항목 명세서

    2) 테스트 시나리오 : 테스트 케이스를 묶은 집합

    3) 테스트 오라클 : 테스크 결과 판단을 위해 참 값을 대입해 비교하는 기법

        # 특징

           - 제한된 검증 / 수학적 기법 / 자동화 가능

        # 종류

           - 참 오라클 : 모든 오류 검출

           - 샘플링 오라클 : 몇몇 케이스만 결과 제공

           - 추정 오라클 : 특정 케이스 결과 제공 나머지 추정

           - 일관성 검사 오라클 : 수행 전/후 값 동일여부

8. 테스트 자동화 도구 : 자동화 도구 적용으로 쉽고 효율적 테스트 수행 가능

    1) 정적 분석 도구 : 프로그램 실행 안 하고 분석

    2) 테스트 실행 도구 : 스크립트 언어 사용

    3) 성능 테스트 도구 : 가상의 사용자 > 성능 목표 달성여부

    4) 테스트 통제 도구 : 형상관리 도구, 결함 추적/관리 도구

    5) 테스트 하네스 도구 : 시뮬레이션 > 모듈이 정상적 테스트

9. 결함 관리 : 개발자 설계 의도와 다르게 동작 및 다른 결과 발생

    1) 결함 관리 프로세스

        - 계획 > 기록 > 검토 > 수정 > 재확인 > 상태 추적 및 모니터링 > 분석 및 보고서 작성

    2) 결함 상태 추적

        - 결함 분포 : 특정 속성 결함 수 측정

        - 결함 추세 : 결함 수의 추이 분석

        - 결함 에이징 : 지속되는 시간 측정

    3) 결함 추적 순서

        - 등록 > 검토 > 할당 > 수정 > 조치 보류 > 종료 > 해제

    4) 결함 분류 : 시스템 결함 / 기능 결함 / GUI 결함 / 문서결함

    5) 결함 심각도 : High, Medium, Low 또는 치명적, 주요, 보통, 경미, 단순

    6) 결함 관리 도구 

        - Mantis : 단위별 작업 내용 기록

        - Trac : 결함 통합관리

        - Redmine : 프로젝트 관리, 결함 추적

        - Bugzilla : 결함 지속적인 관리

10. 어플리케이션 성능 분석

    1) 어플리케이션 성능 측정 지표 :  처리량 / 응답시간 / 경과시간 / 자원사용률

    2) 성능 테스트 도구

        - JMeter : HTTP, FTP지원 부하 테스트 도구

          * FTP(File Transfer Protocol) : 파일을 전송할 때 사용하는 규칙 *

        - LoadUI : 사용자 편리성 강화된 부하 테스트 도구, HTTP, JDBC 지원

        - OpenSTA : HTTP, HTTPS 프로토콜에 대한 테스트 및 모니터링

    2) 시스템 모니터링 도구

        ** 드래곤볼의 스카우트 뭘 볼 때 사용하지? 모니터링 **

        ** 아이언맨의 자비스 뭐 보면서 만날 자비스한테 물어보지? 모니터링 **

        - Scouter : 튜닝에 최적화, 인프라 통합 모니터링 도구

        - Zabbix : 웹기반 서버, 서비스, 어플리케이션 모니터링 도구

11. 복잡도

    1) 시간 복잡도: 프로세스 연산 횟수 수치화(낮을 수록 알고리즘 실행시간 짧고 높으면 길어진다)

        - 빅오 표기법 : 알고리즘 실행시간 최악

        - 세타 표기법 : 알고리즘 실행시간 평균

        - 오메가 표기법 : 알고리즘 실행시간 최상

    2) 빅오 표기법 표현 > 최악의알고리즘 시간 복잡도

        - O(1) : 스택의 삽입, 삭제

        - O(log2n) : 이진 트리, 이진 검색

        - O(n) : for문

        - O(nlog2n) : 힙 정렬

        - O(n2) : 삽입, 쉘, 선택, 버블, 퀵 정렬

        - O(2n) : 피보나치 수열

    3) 순환 복잡도 : 논리적인 복잡도 측정 척도

        - 맥케이브 순환도 / 맥케이브 복잡도 메트릭

        - 순환 복잡도 계산 방법

            화살표 수 - 노드 수 + 2

            6 - 4 + 2 = 4

12. 어플리케이션 성능 개선

    1) 소스 코드 최적화 : 나쁜 코드 배제, 클린 코드 작성

        * 나쁜 코드 : 스파게티 코드(로직 복잡, 얽혀있음), 외계인 코드(오래됨, 유지보수 어려움)

    2) 클린 코드 작성 원칙

        ** 단추의 가중 **

        - 독성 / 순성 / 존성 배제 / 복성 최소화 / 상화

    3) 소스 코드 최적화 유형

        - 클래스 분할 배치 : 응집도 UP, 크기는 작게

        - 느슨한 결합 : 클래스 간 의존성 최소화

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

        - 정적 분석 도구 : 코드 실행 안함, 코딩 표준/스타일/결함 등 확인

          * pmd, cppcheck, SonarQube, checkstyle, ccm, cobertura

        - 동적 분석 도구 : 코드 실행, 메모리 누수/스레드 결함 확인

          * Avalanche, Valgrind

'자격증 준비 > 정보처리기사' 카테고리의 다른 글

11장 응용SW기초기술활용  (0) 2022.04.27
9장 소프트웨어 개발 보안 구축  (0) 2022.04.20
6장 화면설계  (0) 2022.04.08
5장 인터페이스 구현  (0) 2022.04.06
4장 서버프로그램 구현  (0) 2022.04.04