본문 바로가기
소프트웨어공학/정보처리기사

[정보처리기사 필기] 소프트웨어 개발 - 애플리케이션 테스트 관리

by javapp 자바앱 2022. 3. 25.
728x90

 

애플리케이션 테스트 관리

 

소프트웨어 검사 (테스트)

    개발 단계의 마지막 단계

    오류를 찾아 내는 것

    잠재적 오류 : 오류는 있지만 발견되지 않으면서 존재하는 오류

    성공적인 검사 : 오류를 많이 찾아내는 검사

 

 

요구사항 검토 방법

    동료 검토

    워크 스루

    인스펙션

 

 

소프트웨어 품질 보증 - 정형 기술 검토의 지침 사항

    논쟁과 반박 제한

    의제를 제한하되, 충분히 받아들인다.

    제품의 검토에 집중

    참가자 수 제한

 

 

테스트 원칙

    완벽한 테스트는 불가능

    개발자가 테스트 x

    결함을 밝히는 활동

    계획 단계부터 해야한다.

 

 

파레토 법칙 : 오류의 80%는 전체 모듈의 20% 내에 발견

낚시의 법칙: 특정 기능, 모듈, 라이브러리에서 결함이 많이 발견

Defect Clustering (결함 집중) : 대부분 소수의 특정한 모듈에 집중

Absence of Errors Fallacy (오류-부재 궤변)

    사용자 요구사항 만족 못한다면, 품질이 높다고 말할 수 없다.

    오류를 100% 없애는 것이 목적이 아니라, 일정 수준 이하로 줄이는 것

Pesticide Paradox (살충제 패러독스) : 주기적으로 테스트 케이스 점검하고 개선

 

 

테스트 프로세스

    테스트 계획

    분석 및 디자인

    테스트 케이스 및 시나리오 작성

    ...

 

 

테스트 기법 분류

    분석 기법, 설계 기법, 실행 기법, 자동화 기법

    테스트 설계 기법

        구조기반 설계, 명세기반, 경험기반

        명세 기반

            결정 테이블, 정형 명세 기반, 유한 상태 기반

 

 

동적 테스트 : 화이트 박스, 블랙 박스

정적 테스트 : 인스펙션, 코드 테스트, Walk-Through

 

 

화이트 박스 테스트

    가장 기본적인 방법

    소스코드 모든 문장 한 번 이상 수행

    제어 구조 따라 선택, 반복 등 , 논리적 경로 점검

    종류

        기초 경로 테스트 Base Path Testing

        데이터 흐름 테스트 Data Flow Testing

        루프, 조건 테스트

    찾을 수 있는 오류

        세부적, 논리 구조상

        반복문, 수행 경로

 

 

블랙박스 테스트

    종류

        동등/균등 분할

        경계값

        오류예측

        원인 결과 그래프

        비교 그래프

    찾을 수 있는 오류

        부정확

        인터페이스

        자료 구조상

        성능

        시작 종결상

 

 

기초 경로 테스트

    MaCave Cyclomatic

        복잡도 = E - V + 2

    모듈의 크기는 제한 하고 있다.

    인접 행렬 복잡도

    ( 0 1 0 1 1 0 3 - 1

    0 0 0 0 1 0 1 - 1

    1 0 1 1 0 0 3 - 1

    0 1 0 0 1 0 2 - 1 = 5 + 1 = 6

 

 

단위 테스트

    코드 테스트

    모듈 테스트

    프로그램 설계 테스트

 

 

통합 테스트

    점증적인 방식

        상향식, 하향식

    비 점증적인 방식

        빅뱅 방식

            전체 프로그램 한꺼번에 테스트

 

 

하향식 통합 테스트

    깊이 우선, 너비 우선

    Stub (가짜 모듈) 사용

 

 

상향식 통합 테스트

    클러스터 : 하위 모듈 그룹

    드라이버 : 더미 모듈

    순서

        낮은 수준 모듈들을 클러스터로 결합

        드라이버 작성

        클러스터 검사/테스트

        드라이버 제거하고 클러스터를 상위로 결합

 

 

시스템 테스트

    회귀 테스트

        한 모듈의 수정 → 다른 부분에 미치는 영향

    스트레스 테스트

        비정상적으로 과도한 분량 자원을 요청할 때 영향

 

 

인수 테스트 수행 방법

    알파 테스트

        개발자 장소에서 , 사용자가 시험

        사용자와 개발자가 함께 확인하면서 검사

    베타 테스트

        사용자 사용, 개발자에게 통보

 

 

테스트 산출물

    계획서 ㅡ 케이스 ㅡ 시나리오 ㅡ 결과서

    시나리오

        절차를 명세한 문서

        테스트를 위한 여러 케이스 집합

        테스트 항목을 하나의 시나리오에 모두 작성 X

        시나리오 도출하는 것이 첫 번째 프로세스

 

 

테스트 장치 구성 요소

    드라이버 / 스터브

    Test Case

        입력값, 실행조건, 기대결과 등 집합

        환경 설정, 의존성

    Suites : 테스트 케이스의 집합

    Test script : 자동화된 테스트 실행 절차에 대한 명세

    Mock Object : 조건부로 사전에 입력 - 예정된 행위 수행하는 객체

 

 

테스트 오라클

    테스트 결과가 참인지 거짓인지 판단

    True, Consistent , Sampling, Heuristic 오라클

 

 

테스트 시작 조건

    계획 수립

    투입 조직, 참여 인력의 역할과 책임 정의

    사용자 요구사항에 대한 테스트 명세서 작성

    일정 확정

    환경 구축

 

 

테스트 자동화 도구 장단점

    사용자 요구 기능 일관성 있는 검증 유리

    도구 사용 방법에 대한 교육/학습 필요

    테스트 결과의 통계 작업과 그래프 등 다양한 표시 형태 제공

 

 

테스트 자동화 도구 유형에서 정적 분석 도구

    작성된 소스 코드 실행 x

    리뷰 프로세스에 관한 정보 저장, 리뷰 코멘트 저장

    동적 테스트 하기 전에 결함 발견하도록 지원

    코드 자체만으로 코딩 표준 준수 여부, 코딩 스타일 적정 여부 확인 가능


결함

    결함 추이 분석

        결함 분포, 결함 추세, 결함 에이징

    오픈 소스 결함 관리 도구

        Bugzilla, Mantis, Trac


연계 테스트

    연계 테스트 3단계

        단위 ㅡ 연계 ㅡ 통합

 

    단위 테스트

        송수신 모듈

        변환 매핑

        데이터베이스

        네트워크 → 연계 테스트

 

    연계 테스트 수행전 협의 사항

        일정, 방법, 소요시간

 

    연계 테스트 수행 결과 검증 방법

        데이터 확인

        파일 크기

        시스템 기록 로그

        디스크 X

 

 

테스트 커버리지

    단위 테스트에서 라인 커버리지를 척도로 삼기도 한다.

 

    다중 조건

    변경 조건/결정 : 독립적으로 전체 조건식의 결과에 영향

    조건 결정


성능 분석 및 품질 평가

    성능 측정 지표

        Throughput 처리량

        Response Time 응답시간

        Turnaround Time 반환시간

        Resource Usage 자원 사용률

 

    성능 분석 도구

        모니터링 도구

            장애진단

            성능 저하 원인 분석

            용량 산정

 

    소스코드 품질 분석 도구

        정적 분석 도구

        pmd , ... check... ,Find Bug, Corbetura

 

 

성능 저하 원인

    데이터베이스 Lock

    불필요한 데이터베이스 Fetch

    연결 누수 Leak / 부적절한 연결 풀 크기 Pool Size

    불완전한 완료 Commit

 

 

유지보수 종류

    Corrective Maintenance 수리 보수

    Perfective 기능 \ 완전

    유지보수 비용 가장 많은 부분 차지

    Adaptive 환경 적응

    Preventive 예비 예방

 

 

외계인 코드

    아주 오래되거나 , 개발자가 없어 유지보수 작업 어려운 프로그램

    모듈 x

    방지 : 철저하게 문서화

    문서화 부작용 : 자료 코드에 대한 변경이 매뉴얼에 적용되지 않을 때

 

 

품질

    QA (Quality Assurance)

        요구사항과 일치하는 가

 

    소프트웨어 품질 측정

        정확성 : 사용자 요구사항 충족시키는 정도

    무결성 : 자료 변경 제어

    사용성

    신뢰성 : 오류 없이 수행

    이식성 : 다른 환경 운용

 

 

신뢰성과 가용성

    신뢰성은 과거와 개발상의 자료를 이용하여 측정과 예측 가능

    가용성은 프로그램이 요구사항에 따라 운영되는 확률

 

 

신뢰도

    가동 / (고장 + 가동)

 

 

 

댓글