1 애플리케이션 테스트 케이스 설계
1 애플리케이션 테스트 케이스 작성
1 소프트웨어 테스트
1 개념
개발된 응용 애플리케이션이나 시스템의 만족도와 결함을 찾는 활동
2 필요성
- 오류 발견
- 오류 예방
- 품질 향상
3 원리
- 테스팅은 결함이 존재함을 밝히는 것: 없다는 것 증명 불가
- 완벽한 테스팅은 불가능: 완벽한 테스팅은 불필요
- 개발 초기에 테스팅 시작: 재작업을 줄여 개발 기간 단축 및 결함 예방
- 결함 집중: 적은 수의 모듈에서 대다수의 결함이 발견
- 살충제 패러독스: 동일한 테스트 케이스은 새로운 버그를 찾지 못함
- 테스팅은 정황에 의존적: 소프트웨어 성격에 맞게 테스트
- 오류-부재의 궤변: 요구사항 부재 시 오류가 없더라도 낮은 품질
4 절차
- 테스트 계획
- 테스트 분석 및 디자인
- 테스트 케이스 및 시나리오 작성
- 테스트 수행
- 테스트 결과 평가 및 리포팅
5 산출물
- 테스트 계획서: 테스트의 목적과 범위 정의
- 테스트 케이스: 테스트 설계 산출물
- 테스트 시나리오: 테스트 케이스 집합
- 테스트 결과서: 테스트 프로세스 리뷰, 테스트 결과 평가
2 소프트웨어 테스트 유형
- 프로그램 실행 여부에 따른 분류
- 정적 테스트: 논리적 구조 분석
- 동적 테스트
- 테스트 기법에 따른 분류
- 화이트박스(구조) 테스트: 내부 로직을 보면서 테스트
- 제어구조 테스트: 논리적 복잡도 측정 후 수행 경로 집합 정의
- 루프 테스트: 루프 구조에 국한해서 실시
- 블랙박스(기능) 테스트: 요구사항 명세를 보면서 테스트
- 동등 분할 테스트: 도메인별 대표값 테스트 케이스를 도출하여 테스트
- 경계 값 분석 테스트: 등가분할 후, 경계값을 포함하여 테스트
- 결정 테이블 테스트: 발생 조건과 행위를 조합하여 테스트
- 상태전이 테스트: 이벤트에 의한 상태 전의 경우의 수를 테스트
- 유스케이스 테스트: 유스케이스 모델링이 되어 있을 때 프로세스 흐름을 기반으로 테스트 케이스 명세화
- 분류트리 테스트: SW 일부 또는 전체를 트리 구조로 분석
- 페어와이즈 테스트: 테스트 데이터를 최소 한 번씩 조합하여 테스트
- 화이트박스(구조) 테스트: 내부 로직을 보면서 테스트
- 테스트 시각에 따른 분류
- 검증: 과정
- 확인: 결과
- 테스트 목적에 따른 분류
- 회복: 고의로 실패, 복귀 여부
- 안전: 보안 결함 여부
- 강도: 정보량 과부하시 정상 작동 여부
- 성능: 성능 평가
- 구조: 내부 논리 경로, 소스코드 복잡도 평가
- 회귀: 오류를 제거하거나 수정한 시스템에서의 오류를 확인하는 반복 테스트
- 병행: 변경된 시스템과 기존 시스템에 동일한 데이터를 입력하여 비교
- 테스트 종류에 따른 분류
- 명세 기반 테스트: 요구사항 명세서를 기반으로 테스트
- 구조 기반 테스트: 소프트웨어 내부 논리 흐름에 따라 테스트
- 경험 기반 테스트: 경험을 토대로한 직관과 기술 능력을 기반으로 테스트
3 테스트 케이스
1 개념
특정 요구사항에 준수하는 지를 확인하기 위해 개발된 입력값, 실행 조건, 예상된 결과 집합
2 작성 절차
- 테스트 계획 검토 및 자료 확보
- 위험 평가 및 우선순위 결정
- 테스트 요구사항 정의
- 테스트 구조 설계 및 테스트 방법 결정
- 테스트 케이스 정의
- 테스트 케이스 타당성 확인 및 유지보수
3 필요 항목
- 공통 작성 항목 요소
- 테스트 단계명, 작성자, 승인자, 작성 일자, 문서 버전 식별
- 대상 시스템 식별
- 변경 여부 식별
- 테스트 범위 식별
- 테스트 조직 식별
- 개별 테스트케이스 항목 요소
- 테스트 ID 작성
- 테스트 목적 작성
- 테스트할 기능 요약
- 입력 데이터 작성
- 기대 결과 작성
- 테스트 환경 설정
- 전제 조건 설정
- 성공/실패 기준 설정
- 기타 요소를 식별하여 설정
4 테스트 오라클
1 개념
테스트 결과의 참, 거짓을 판단하기 위해 사전에 정의된 참 값을 입력하여 비교
2 종류
- 참 오라클: 모두 검사
- 샘플링 오라클: 일부 검사
- 휴리스틱 오라클: 샘플링 오라클 개선, 나머지 값에 대해서 휴리스틱(추정) 처리
- 일관성 검사 오라클: 애플리케이션 변경이 있을 때, 전후 동일 여부 확인
2 애플리케이션 테스트 시나리오 작성
1 테스트 레벨
1 개념
함께 편성되고 관리되는 테스트 활동 그룹
2 종류
- 단위 테스트 - 개발: 사용자 요구사항에 대한 단위 모듈, 서브 루틴 등을 테스트
- 통합 테스트 - 설계: 단위 테스트를 통과한 모듈 사이의 인터페이스, 통합된 컴포넌트 간의 상호작용을 검증하는 테스트 단계
- 시스템 테스트 - 기계 명세 분석: 통합된 단위 시스템의 기능이 시스템에서 정상적으로 수행되는지를 검증하는 테스트 단계
- 인수 테스트 - 요구사항 분석: 계약 상의 요구사항이 만족되었는지 확인하기 위한 테스트 단계
2 테스트 시나리오
1 개념
테스트 케이스 집합
2 작성 시 유의사항
- 테스트 시나리오 분리 작성
- 요구사항 기반 테스트 시나리오 작성
- 필요 항목 포함
3 테스트 환경 구축
1 개념
테스트를 위하여 실제 운영 환경을 구축하는 활동
2 유형
- 하드웨어 기반: 서버 장비, 클라이언트 장비, 네트워크 장비 설치
- 소프트웨어 기반: 응용 소프트웨어 설치, 필요 데이터 구축
- 가상 시스템 기반: 물리적으로 테스트 환경 구축이 힘든 경우
3 테스트 조건
- 테스트 시작 조건
- 테스트 종료 조건
- 테스트 성공과 실패의 판단 기준
2 애플리케이션 통합 테스트
1 애플리케이션 통합 테스트 수행
1 통합 테스트
1 개념
2 수행 방법 분류
- 비점층적 방식
- 빅뱅 방식: 모든 컴포넌트를 사전에 통합하여 테스트
- 점층적 방식
- 하향식 통합: 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 통합하면서 테스트
- 메인 제어 모듈은 아직 작성되지 않은 하위 모듈 제어
- 검사 초기에 시스템 구조 파악
- 스텁(더미 모듈) 개발
- 깊이/너비 우선 방식에 따라 실제 모듈 대체
- 각 모듈 통합
- 테스트가 완료되면 스텁이 실제 모듈로 작성
- 상향식 통합: 최하위 레벨의 모듈로부터 위쪽 방향으로 제어의 경로를 따라 구축하면서 테스트
- 하위 레벨의 모듈들이 클러스터로 결합
- 상위 모듈에서 데이터의 입력과 출력을 확인하기 위한 드라이버(더미 모듈) 작성
- 각 통합된 클러스터 단위 테스트
- 클러스터는 프로그램의 위쪽으로 결합, 드라이버가 실제 모듈로 대체
- 하향식 통합: 메인 제어 모듈로부터 아래 방향으로 제어의 경로를 따라 통합하면서 테스트
2 테스트 자동화 도구
1 개념
테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현
2 장단점
- 장점: 재입력 작업 자동화, 일관성 검증에 유리, 객관적인 평가 기준 제공, 정밀한 테스트 가능
- 단점: 사용 방법 교육 및 학습 필요, 프로세스 단계별 적용 비용, 도구 비용
3 유형
- 정적 분석 도구: 소스코드 결함
- 테스트 실행 도구: 작성된 스크립트 실행
- 데이터 주도 접근 방식
- 키워드 주도 접근 방식
- 성능 테스트 도구: 가상의 사용자를 생성하고 테스트
- 테스트 통제 도구: 테스트 수행에 필요한 데이터와 도구를 관리하는 형상 관리 도구
4 테스트 단계별 테스트 자동화 도구
- 테스트 계획
- 요구사항 관리
- 테스트 분석/설계
- 테스트 케이스 생성
- 테스트 수행
- 테스트 자동화
- 정적 분석
- 동적 분석
- 성능 테스트
- 모니터링
- 테스트 관리
- 커버리지 측정
- 형상 관리
- 결함 추적/관리
3 테스트 하네스
1 개념
모듈을 테스트하는 환경의 일부
2 구성요소
- 테스트 드라이버
- 테스트 스텁
- 테스트 슈트
- 테스트 케이스
- 테스트 스크립트
- 목 오브젝트
2 애플리케이션 테스트 결과 분석
1 테스트 결과 분석
1 소프트웨어 결합
- 에러/오류: 결함의 원인
- 결함/결점/버그: 제거하지 않으면 실패하거나 문제 발생
- 실패/문제: 결함 실행 시 발견
2 테스트 완료 조건
최적의 완료 조건 계획 필요
3 테스트 리포팅
- 테스트 결과 정리:
- 테스트 요약 문서
- 품질 상태
- 테스트 결과서
- 테스트 실행 절차 및 평가
2 결함 관리
1 개념
테스트 수행 결함의 재발 방지와 유사 결함 발견 시 처리 시가나 단축을 위해 결함을 추적하고 관리하는 활동
2 결함 추적 관리 활동
- 단위 테스트
- 통합 테스트: 설계 문서 결함 발견 시
- 시스템 테스트: 요구사항 명세서 결함 발견 시
- 운영 테스트: 요구사항 명세서 결함 발견 시
3 프로세스
- 에러 발견
- 에러 등록
- 에러 분석
- 결함 확정
- 결함 할당
- 결함 조치
- 결함 조치 검토 및 승인
3 결함 추이 분석
1 개념
테스트 결함의 관리 측정 지표 분석, 예상 결함 추정
2 유형
- 결함 분포 분석: 각 모듈의 특정 속성에 대한 결함 수
- 결함 추세 분석: 테스트 진행 시간의 흐름에 따른 결함의 수
- 결함 에이징 분석: 등록된 겨함에 대해 특정한 결함 상태의 지속 시간
3 애플리케이션 개선 조치사항 작성
1 테스트 커버리지
1 개념
테스트 범위를 측정하는 테스트 품질 측정 기준
2 유형
- 기능 기반 커버리지
- 라인 커버리지: 단위 테스트 척도
- 코드 커버리지
- 구문 커버리지
- 결정 커버리지
- 조건 커버리지
- 조건/결정 커버리지
- 변경 조건/결정 커버리지
- 다중 조건 커버리지
2 결함의 식별 및 관리
1 단계별 결함 유입의 종류
- 기획 시 유입되는 결함
- 설계 시 유입되는 결함
- 코딩 시 유입되는 결함
- 테스트 부족으로 유입되는 결함
2 결함 심각도별 분류
- 치명적 결함: 기능이나 제품의 테스트를 완전히 방해
- 주요 결함: 기능이 기대와 많이 다르게 동작
- 보통 결함: 프로그램이 특정 기준을 충족하지 못하거나, 일부 기능 부자연스러운 결함
- 경미한 결함: 불편함 유발
- 단순 결함: 사소한 버그
3 결함 우선순위
- 결정적
- 높음
- 보통
- 낮음
4 결함 관리 항목
- 결함 내용
- 결함 ID
- 결함 유형
- 발견일
- 심각도
- 우선순위
- 시정 조치 예정일
- 수정 담당자
- 재 테스트 결과
- 종료일
3 애플리케이션 성능 개선
1 애플리케이션 성능 분석
1애플리케이션 성능 점검 개요
1 애플리케이션 성능 측정 지표
- 처리량
- 응답 시간
- 경과 시간
- 자원 사용률
2 유형별 성능 분석 도구
- 성능/부하/스트레스 점검 도구
- JMeter
- LoadUI
- OpenSTA
- 모니터링 도구
- Scouter
- Zabbix
2 애플리케이션 성능 저하 원인
- 데이터베이스 관련 성능 저하 원인
- 데이터베이스 락
- 불필요한 데이터베이스 패치
- 연결 누수
- 부적절한 커넥션 풀 크기
- 확정 관련
- 내부 로직으로 인하나 성능 저하 원인
- 웹 애플리케이션의 인터넷 접속 불량
- 특정 파일의 업로드, 다운로드로 인한 성능 저하
- 정상적으로 처리되지 않은 오류 처리로 인한 성능 저하
- 외부 호출로 인한 성능 저하 원인: 임의의 트랜잭션이 수행되는 동안 외부 트랜잭션이 장시간 수행되거나, 타임아웃이 일어나는 경우
- 잘못된 환경 설정으로 인한 성능 저하: Heap Memory Full
- 네트워크 장비로 인한 성능 저하
3 애플리케이션 성능 테스트 프로세스
- 애플리케이션 성능 테스트 케이스 작성
- 애플리케이션 성능 테스트 수행
- 성능 테스트 도구 설치
- 테스트 환경 설정
- 시나리오 생성
- 성능 테스트 실행 및 모니터링
- 성능 테스트 결과 분석
2 애플리케이션 성능 개선
1 소스코드 최적화 이해
1 나쁜 코드
- 오염
- 문서 부족
- 의미 없는 이름
- 높은 결함도
- 아키텍처 침식
2 클린 코드
높은 가독성, 단순, 의존성 중복 최소화
- 의미 있는 이름
- 간결하고 명확한 주석
- 보기 좋은 배치
- 작은 함수
- 읽기 쉬운 제어 흐름
- 오류 처리
2 소스코드 품질 분석
1 개념
2 도구
- 정적 분석 도구
- pmd
- cppcheck
- SonarQube
- checkstyle
- 동적 분석 도구
- Avalanche
- Valgrind
- 코드 복잡도 도구
- ccm
- cobertura
3 애플리케이션 성능 개선 방안
- 소스코드 최적화 기법 적용
- 아키텍처 조정을 통한 성능 개선
- 프로그램 호출 순서 조정 적용
- 소스코드 품질분석 도구 활용
- 메모리 사용 최소화
- 입출력 발생 최소화
- 로거 사용
- 애플리케이션 성능 현황 관리
'자격증 > 정보처리기사' 카테고리의 다른 글
2020 정보처리기사 실기 6. UI 설계 (0) | 2020.11.25 |
---|---|
2020 정보처리기사 실기 5. 인터페이스 구현 (0) | 2020.11.25 |
2020 정보처리기사 실기 4. 서버 프로그램 구현 (0) | 2020.11.13 |
2020 정보처리기사 실기 3. 통합 구현 (0) | 2020.11.13 |
2020 정보처리기사 실기 2. 데이터 입출력 구현 (0) | 2020.11.13 |