애플리케이션 테스트
정적 테스트
- 프로그램 실행 없이 명세서나 소스 코드를 대상으로 분석하는 테스트
- 📌 자료 흐름이나 논리 흐름을 분석하여 비정상적인 패턴을 찾을 수 있다.
- 📌 하드웨어 뿐만이 아니라 소프트웨어를 이용할 수도 있다.
- 워크스루, 인스펙션, 코드 검사
동적 테스트
- 프로그램을 실행하여 오류를 찾는 테스트, 소프트웨어 개발의 모든 단계에서 테스트를 수행
- 블랙박스 테스트, 화이트박스 테스트
화이트박스 테스트
데이터 흐름 검사, 루프 검사
- 화이트박스 테스트의 이해를 위해 논리흐름도(Logic-Flow Diagram)를 이용할 수 있다.
- 테스트 데이터를 이용해 실제 프로그램을 실행함으로써 오류를 찾는 동적 테스트(Dynamic Test)에 해당한다.
- 테스트 데이터를 선택하기 위하여 검증기준(Test Coverage)을 정한다.
검증과 확인
- 소프트웨어 테스트에서 검증과 확인을 구별하면 찾고자 하는 결함 유형을 명확하게 하는 데 도움이 된다.
검증
- 📌 기능을 제대로 수행하고 명세서에 맞게 만들었는지 개발자 입장에서 검증
- 소프트웨어 개발 과정을 테스트하는 것
- 작업 제품이 요구 명세의 기능, 비기능 요구사항을 얼마나 잘 준수하는지 측정하는 작업이다.
확인
- 개발된 소프트웨어가 요구사항을 만족시키는지 사용자 입장에서 확인
- 소프트웨어 결과를 테스트 것
소프트웨어 모듈화
- 오류의 파급 효과를 최소화
- 모듈의 재사용 가능으로 개발과 유지보수가 용이하다
- 프로그램의 효율적인 관리가 가능하다
소프트웨어 프로젝트 관리
- 주어진 기간 내에 최소의 비용으로 사용자를 만족시키는 시스템을 개발
ISO/IEC 25000
- 소프트웨어 품질 평가를 위한 소프트웨어 품질평가 통합모델 표준이다.
- System and Software Quality Requirements and Evaluation으로 줄여서 SQuaRE라고도 한다.
- 📌 ISO/IEC 2501n에서는 품질 모델 분야는 시스템 및 소프트웨어 제품의 사용품질 및 데이터에 대한 상세한 품질모델을 설명한다.
- 기존 소프트웨어 품질 평가 모델과 소프트웨어 평가 절차모델인 ISO/IEC 9126과 ISO/IEC 14598을 통합하였다.
정형 기술 검토(FTR)
- 📌 의제를 제한한다.
- 📌 논쟁과 반박을 제한한다.
- 문제 영역을 명확히 표현한다.
- 📌 참가자의 수를 제한한다.
Migration
- 소프트웨어 재공학의 주요 활동 중 기존 소프트웨어 시스템을 새로운 기술 또는 하드웨어 환경에서 사용할 수 있도록 변환하는 작업
코드 인스펙션
- 프로그램을 수행시켜보는 것 대신에 읽어보고 눈으로 확인하는 방법으로 볼 수 있다.
- 코드 품질 향상 기법 중 하나이다.
트리구조
이진검색 트리
- 📌 사향트리가 되는 경우 나쁜 트리 구조가 된다. (한 줄 짜리)
- AVL 트리는 이런 사향트리가 되는 것을 막는다.
이진 트리 운행법
- 전위: Root - Left - Right
- 📌 중위: Left - Root - Right
- 후위: Left - Right - Root
깊이우선탐색(DFS)
통합테스트
시스템을 구성하는 모듈의 인터페이스와 결합을 테스트하는 것이다.
상향식 통합테스트
하향식 통합테스트
- 넓이 우선(Breath First) 방식으로 테스트할 모듈을 선택할 수 있다.
- 모듈 간 인터페이스와 시스템의 동작이 정상적으로 잘 되는지를 파악하고자 할 때
개발 단계에 따른 테스트
단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트
단위 테스트
- 구현 단계에서 각 모듈의 개발을 완료한 후 개발자가 명세서의 내용대로 정확히 구현되었는지 테스트한다.
- 테스트할 모듈을 호출하는 모듈도 있고, 테스트할 모듈이 호출하는 모듈도 있다.
- 모듈 내부의 구조를 구체적으로 볼 수 있는 구조적 테스트를 주로 시행한다.
- 📌 테스트 도구: JUnit, NUnit, JMockit, EMMA, PHPUnit, CppUnit, IgpUnit
시스템 테스트
- 개발된 소프트웨어가 해당 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트이다.
테스트 하네스 구성요소
테스트 드라이버
- 상위 모듈, 상향식 테스트
- 📌 필요 데이터를 인자를 통해 넘겨주고, 테스트 완료 후 그 결과값을 받는 역할을 하는 가상의 모듈
- 📌 테스트 대상이 되는 하위 모듈을 호출하고, 파라미터를 전달하는 가상의 모듈로 상향식 테스트에 필요한 것
- 시험대상 모듈을 호출하는 간이 소프트웨어이다.
테스트 스텁
- 하위 모듈
- 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구로, 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈
- 테스트할 모듈이 호출할 때 인자를 통해 받은 값을 가지고 수행한 후 그 결과를 테스트할 모듈에 넘겨주는 역할을 한다
테스트 슈트
- 테스트 유닛의 집합
테스트 스크립트
- 자동화된 테스트 실행 절차에 대한 명세서
테스트 케이스
- 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목의 명세서
목 오브젝트
- 사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체
요구사항 검증 방법
동료검토
워크스루
- 검토 회의 전에 요구사항 명세서를 배포하여 사전 검토한 후에 짧은 결함을 발견
- 사용사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다.
- 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이나 동작을 이해하려고 할 때 유용하다.
- 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다.
인스펙션
- 📌 요구사항 명세서 작성자를 제외한 다른 검토 전문가들이 요구사항 명세서를 확인하면서 결함을 발견
인스펙션의 과정
- 계획(Planning) - 사전교육(Overview) - 사전검토/준비(Preparation) - 인스펙션 회의(Meeting) - 수정(Re-Work) - 후속 조치(Following)
형상관리
- 소프트웨어의 개발과정에서 소프트웨어의 변경사항을 관리하기 위해 개발된 일련의 활동을 뜻하는 것
RCS(Revision Control System)
- 동시에 소스를 수정하는 것을 방지하며 다른 방향으로 진행된 개발 결과를 합치거나 변경 내용을 추적할 수 있는 소프트웨어 버전 관리 도구
테스트 케이스
- 📌 테스트의 목표 및 테스트 방법을 결정하고 나서 테스트 케이스를 작성해야 한다.
- 프로그램에 결함이 있더라도 입력에 대해 정상적인 결과를 낼 수 있기 때문에 결함을 검사할 수 있는 테스트 케이스를 찾는 것이 중요하다.
- 개발된 서비스가 정의된 요구 사항을 준수하는지 확인하기 위한 입력 값과 실행 조건, 예상 결과의 집합으로 볼 수 있다.
테스트 오라클(Test Oracle)
- 테스트 케이스 실행이 통과되었는지 실패하였는지 판단하기 위한 기준
테스트 케이스 자동 생성 도구
입력 도메인 분석, 랜덤 테스트. 자료 흐름도
- 📌 스터브와 드라이버는 테스트 모듈이지 자동 생성 도구가 아니다.
DRM(Digital Rights Management)
- 디지털 콘텐츠와 디바이스의 사용을 제한하기 위해 하드웨어 제조업자, 저작권자, 출판업자 등이 사용할 수 있는 접근 제어 기술을 의미한다.
- 디지털 미디어의 생명 주기 동안 발생하는 사용 권한 관리, 과금, 유통 단계를 관리하는 기술로도 볼 수 있다.
클리어링 하우스
- 사용자에게 콘텐츠 라이센스를 발급하고 권한을 부여해주는 시스템을 말한다.
알고리즘
선형검색
- 검색 수행 전 데이터가 정렬되어 있을 필요는 없다.
버블검색
- PASS 1의 결과 찾기
Tree 구조에 대하여 후위 순회(Postorder)
- 맨 마지막이 lead가 되도록 하는 순회방법
- 📌 왼쪽 자식 노드부터 오른쪽 자식 노드를 거쳐 부모 노드로 가는 방식이다.
퀵 정렬(Quick Sort)
- 📌 분할 정복(Divide and Conquer)에 기반한 알고리즘으로 피벗(pivot)을 사용하며 최악의 경우 n(n-1)/2 회의 비교를 수행해야 하는 정렬(Sort)
클린코드
- 추상화: 상위 클래스/메소드/함수를 통해 애플리케이션의 특성을 간략하게 나타내고, 하위 내용은 상위 클래스/메소드/함수에서 구현
- 의존성: 📌 다른 모듈에 미치는 영향을 최소화하도록 작성
- 가독성: 누구든지 읽기 쉽게 코드를 작성
- 중복성: 중복을 최소화할 수 있도록 코드를 작성
자료구조
큐
- FIFO
- 순서 리스트의 뒤(Rear)에서 노드가 삽입되며, 앞(Front)에서 노드가 제거된다.
스택
- 📌 선형 리스트의 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이다.
- 나중에 넣은 데이터가 먼저 나온다
- 인터럽트 처리, 서브루틴 호출 작업 등에 응용된다.
- 📌📌 연산수행시 자료 출력순서
If Top=0 Then
Underflow
Else {
remove S(Top)
Top=Top-1
}
- Underflow: 스택 저장공간에 데이터가 없는데 데이터를 꺼내려고 할 경우
소프트웨어 패키징
- 📌 개발이 완료된 제품 소프트웨어를 고객에게 전달하기 위한 형태로 패키징
- 신규 및 변경 개발 소스를 식별하고, 이를 모듈화하여 상용제품으로 패키징 한다.
기타 용어정리
Alien Code
- 아주 오래되거나 참고문서 또는 개발자가 없어 유지보수 작업이 아주 어려운 프로그램
Risk Analysis
- 프로젝트에 내재된 위험 요소를 인식하고 그 영향을 분석하여 이를 관리하는 활동으로서, 프로젝트를 성공시키기 위하여 위험 요소를 사전에 예측, 대비하는 모든 기술과 활동을 포함하는 것
Critical Path Method
- 프로젝트를 끝내는 데 필요한 작업을 파악할 수 있는 기술입니다. 프로젝트 관리에서 크리티컬 패스는 가장 경로(Path)가 긴 일련의 활동으로, 프로젝트 전체를 끝내기 위해 반드시 기한 내에 완료되어야 하는 활동입니다.
Fault
- 📌 소프트웨어 개발 활동을 수행함에 있어서 시스템이 고장(Failure)을 일으키게 하며, 오류(Error)가 있는 경우 발생하는 것
Portability
- 소프트웨어 품질 목표 중 하나 이상의 하드웨어 환경에서 운용되기 위해 쉽게 수정될 수 있는 시스템 능력을 의미하는 것
NS(Nassi-Schneiderman) Chart
- 모듈 명세서 대체
- 논리의 기술에 중점을 두고 도형을 이용한 표현 방법이다.
- 이해하기 쉽고 코드 변환이 용이하다.
- 📌 GOTO 구조가 어렵다 - 임의의 제어 이동이 어렵다
- 연속, 선택, 반복 등의 제어 논리 구조를 표현한다.
인터페이스 간의 통신을 위해 이용되는 데이터 포맷
JSON, XML, YAML
- YAML: 구성 파일 작성에 사용되는 데이터 직렬화 언어이며 데이터 표현 양식(config.yml)
'자격증' 카테고리의 다른 글
[정보처리기사 필기] 소프트웨어 설계 (0) | 2023.02.20 |
---|---|
[정보처리기사 필기] 프로그래밍 언어 활용 (0) | 2023.02.20 |
[정보처리기사 필기] 데이터베이스 구축 (1) | 2023.02.20 |
[정보처리기사 필기] 정보시스템 구축관리 (1) | 2023.02.20 |
[정보처리기사] 시험범위 마지막 복습 (0) | 2022.05.09 |
댓글
최근에 올라온 글
TAG
- 기술블로그
- 북클럽
- 노마드코더
- gradle
- intellij
- filezila
- 호스팅영역
- 배포
- LifecycleException
- 정보처리기사
- 노개북
- spring
- 정보처리기사 실기
- jdbc
- git연동
- 독서후기
- AWS
- EC2
- JIRA
- ubuntu
- 웹페이지만들기
- 개발도서
- 실용주의프로그래머
- 정보처리기사 필기
- gradle build
- IT 5분 잡학사전
- putty
- 오늘의코딩
- java
- SQLD
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함