소프트웨어 설계 / 구현 / 소프트웨어 테스트
1. UI 설계 원칙
1) 직관성 : 누구나 큰 노력없이 쉽게 이해하고 사용 가능해야 함
2) 유효성 : 사용자의 목적이 정확하고 완벽하게 달성될 수 있어야 함
3) 학습성 : 초보와 숙력자 모두 쉽게 배우고 익힐 수 있어야 함
4) 유연성 : 사용자의 요구사항을 최대한 수용하고 오류를 최소화할 수 있어야 함
2. UI 품질 요구사항 (ISO/ISE 9126)
1) 기능성 : 실제 수행 결과와 품질요구사항간의 차이를 분석, 정확하지 않은 결과 발생율 등과 관련한 동작 관찰.
2) 신뢰성 : 시스템이 일정 시간 또는 작동되는 시간 동안 의도하는 기능을 수행하는것을 보장
3) 사용성 : 사용자와 컴퓨터 사이에 발생하는 행위를 정확하고 쉽게 인지 가능
4) 효율성 : 할당된 시간에 한정된 자원으로 얼마나 빨리 처리하는가
5) 유지보수성 : 요구사항을 개선하고 확장하는 데 있어 얼마나 용이한가
6) 이식성 : 다른 플랫폼에서도 많은 추가 작업 없이 얼마나 쉽게 적용이 가능한가.
3. UI 요구사항
1) 기능적 요구사항
(1) 시스템의 입력 / 출력으로 무엇이 포함되어야 하는가
(2) 시스템이 어떤 데이터를 저장해야하는가
(3) 시스템이 어떤 연산을 수행해야 하는가
2) 비기능적 요구사항
(1) 기능적인 부분 이외의 요구사항
(2) 사용성, 효율성, 신뢰성, 유지보수성, 재사용 성 등 품질에 관한 요구사항
(3) 플랫폼, 사용 기술 등 시스템 환경에 관한 요구사항
(4) 비용 일정 등 프로젝트 계획에 관한 요구사항
4. 네트워크 : OSI 7계층
7) 응용 계층 : HTTP, FTP 등
6) 표현 계층 :
5) 세션 계층 :
4) 전송 계층 : TCP, UDP
3) 네트워크 계층 : IP
2) 데이터링크 계층
1) 물리 계층 : RS232C
5. TCP/IP 4계층
4) 응용 계층 (5~7) : TCP/UDP 기반의 응용 프로그램 구축.
3) 전송 계층 (= 4) : 연결 제어, 데이터 전송, TCP, UDP
2) 인터넷 계층 (= 3) : 통신 노드간의 패킷 전송, 라우팅, IP, ARP, RARP 등
1) 네트워크 엑세스 (1~2) : 물리적 주소, MAC 등, LAN 패킷망 등에 사용
6. 라우팅 프로토콜
1) RIP : 최초의 라우팅 프로토콜, 거리 벡터 알고리즘 활용, 30초 주기 갱신, 라우팅 루프 발생 가능.
2) IGRP : RIP 개선, 네트워크 상태 고려
3) OSPF : 링크 상태 알고리즘 사용, 변경 정보에 대해 RIP보다 빠른 업데이트. 토폴로지 정보가 전체 라우터에 동일하게 유지
4) BGP : 규모가 큰 네트워크 (ISP 등)의 상호연결
7. 소프트웨어 테스트 프로세스
1) 테스트 계획 : 목적 범위 정의, 대상시스템 구조 파악, 테스트 일정 / 종료 조건 정의 등
2) 테스트 분석 및 디자인 : 테스트 목적 / 원칙 검토, 요구사항 분석, 데이터 및 환경 준비
3) 테스트 케이스 및 시나리오 작성 : 테스트케이스 작성 및 검토, 테스트 시나리오 작성
4) 테스트 수행
5) 테스트 결과 평가 및 리포팅 : 테스트 결과 정리, 결과 평가, 리포팅
8. 소프트웨어 테스트 산출물
1) 테스트 계획서 : 테스트 활동의 범위, 접근법, 자원, 일정, 업무 배정, 환경, 리스크 식별
2) 테스트 케이스 : 테스트를 위한 설계 산출물, 테스트 케이스의 집합을 명세화.
3) 테스트 시나리오 : 테스트 실행을 위한 동작 순서 기술
4) 테스트 결과서 : 테스트 결과를 정리한 문서. 결과 평가 및 리포팅
9. 소프트웨어 테스트 원리 및 특성
1) 테스팅은 결함이 존재함을 밝히는 활동 : 결함이 발견되지 않더라도 결함이 없다는것을 증명할 수 없음.
따라서 소프트웨어 테스팅은 시스템에 결함이 존재함을 증명하는 것.
2) 완벽한 테스팅은 불가능하다. : 모든 것을 테스팅하는것은 불가능. (무한 경로/입력값/타이밍 이슈 존재)
리스크 분석과 우선순위를 토대로 한 테스트에 노력을 집중하는것이 좋음.
3) 조기 테스팅 (Early Testing)으로 시간 절약 가능 :
수명 초기부터 테스팅을 함으로써 나중에 큰 비용이 동반되는 수정을 줄이거나 없엘 수 있음.
4) 결함 집중 : 대부분의 결함은 소수의 모듈에 집중되어 발생된다. 80 / 20 법칙
5) 살충제 페러독스 : 같은 테스트 연속 반복시에는 추가적인 결함 발견이 불가능하다.
6) 테스트는 정황 (Context)에 의존한다. : 테스트는 환경 및 구조에 따라 다르게 진행해야한다.
+ 오류-부재의 궤변 : 개발된 시스템이 요구사항을 만족시키지 못하거나 사용성이 낮다면 오류를 발견하고 제거해도 품질이 높다고 할 수 없음.
10. 테스트 커버리지
1) 기능 기반 커버리지 : 테스트 대상의 전체 기능을 모수로 설정, 실제 테스트가 수행된 기능의 수를 측정
일반적으로 100% 달성을 목표로 하며, UI가 많은 경우 화면 수를 모수로 사용.
2) 라인 커버리지 : 전체 소스코드의 Line 수를 모수로, 테스트 시나리오가 수행한 Line 수를 측정.
단위 테스트에서는 라인 커버리지를 척도로 삼는다.
3) 코드 커버리지 : 프로그램의 소스코드가 얼마나 테스트되었는가를 나타냄.
소스코드의 구문, 조건, 결정 등의 구조 코드 자체의 테스트 정도를 측정.
(1) 구문 커버리지 : 코드 구조내의 모든 구문에 대해 한번 이상 수행.
100% 구문 커버리지 = 모든 구문에 대해 1회 이상 테스트 수행
(2) 조건 커버리지 : 결정 포인트 내의 모든 개별 조건식에 대해 수행
(3) 결정 커버리지 : 결정 포인트 내의 모든 분기문에 대해 수행
(4) 변형 조건/결정 커버리지 : 각 개별 조건식이 다른 개별 조건식에 영향을 받지 않고, 독립적으로 영향을 줌.
11. 테스트 유형
1) 프로그램 실행 여부 :
(1) 정적 테스트 : 소프트웨어의 실행없이 명세 또는 구현, 개발 단계에서 컴포넌트나 시스템 테스트
(2) 동적 테스트 : 컴포넌트나 소프트웨어를 실행하면서 수행하는 테스트. 블랙박스/화이트박스 등
2) 테스트 기법
(1) 블랙박스 테스트 : 적절한 테스트 베이스 (공식 요구사항 문서, 명세서, 유스케이스 등)에 대한 분석을 통해
'구현된 기능'을 위주로 테스트
(2) 화이트박스 테스트 : 프로그램의 내부구조나 구현을 기반으로 테스트 도출.
코드, 아키텍쳐, 워크/데이터플로우 분석
3) 테스트 시각
(1) 검증 : 명세된 요구사항이 충족되었는지를 조사 혹은 객관적인 증거로 확인. 제품의 생산과정 테스트
(2) 확인 : 요구사항이 컴포넌트나 시스템을 의도적으로 사용/활용 충족여부. 정상동작 테스트
4) 테스트 목적
(1) 회복 테스트 : 시스템에 고의로 실패/오류를 유도한 뒤 정상적으로 복귀하는지 여부
(2) 안전 테스트 : 소프트웨어의 보안 결함 테스트
(3) 강도 테스트 : 시스템에 과다 정보량을 부과하여 과부화 시킨 뒤 정상 작동 검증
(4) 성능 테스트 : 응답시간, 업무량, 반응속도 등 테스트
(5) 구조 테스트 : 시스템 내부의 논리 경로, 소스코드의 복잡도 테스트
(6) 회귀 테스트 : 이전에 정상 작동중이던 소프트웨어의 변경/수정에 대해 새로운 결함 발견 여부 테스트
(7) 병행 테스트 : 기존 시스템과 변경된 시스템에 동일한 테스트 케이스를 이용하여 비교
5) 테스트 종류
(1) 명세 기반 테스트 : 명세를 바탕으로 테스트 케이스를 도출. TC를 통해 결함없음 보장. 블랙박스 테스트
(2) 구조 기반 테스트 : 소프트웨어나 시스템의 구조, 논리 흐름에 따라 테스트 케이스 작성. 화이트박스 테스트
(3) 경험 기반 테스트 : 유사 애플리케이션이나 기술에서의 경험,직관,테스터의 기술 능력으로부터 TC 추출
12. 애플리케이션 성능 지표
1) 처리량 : 주어진 시간에 처리 가능한 트랜젝션의 수 / 시간당 페이지 수
2) 응답 시간 : 입력이 끝난 후 애플리케이션의 응답 출력까지의 시간
3) 경과 시간 : 요구를 입력한 시점부터 결과 출력시까지의 시간
4) 자원 사용률 : CPU/메모리 사용량 등
13. 사용자 중심 모듈 패키징 순서
1) 기능 식별
2) 모듈화
3) 빌드 진행
4) 사용자 환경 분석
5) 패키징 적용 시험
6) 패키징 변경 개선
14. 제품 릴리즈 노트 작성 수행 순서
1) 모듈 식별
2) 릴리즈 정보 확인
3) 릴리즈 노트 개요 작성
4) 영향도 체크
5) 정식 릴리즈 노트 작성
6) 추가 개선 항목 식별
15. 패키징 도구를 활용한 설치 및 배포 수행 순서
1) 빌드 내용 식별
2) 패키징 도구 식별
3) 패키징 수행
4) 패키징 도구 설치
5) 배포 작업
6) 정상 배포 확인
'프로그래밍 > 기타' 카테고리의 다른 글
필기노트 P-001 : OS 이론 1 (0) | 2021.07.20 |
---|---|
git hooks 사용 (0) | 2021.01.19 |
정보처리기사 2020 실기 속성 요약 (4) (0) | 2020.05.24 |
정보처리기사 2020 실기 속성 요약 (2) (0) | 2020.05.22 |
정보처리기사 2020 실기 속성 요약 (1) (0) | 2020.05.22 |