상향식 통합 테스트(Bottom UP Intergration Test)
- 프로그램의 하위 모듈에서 상위 모듈 방향으로 통합(클러스터 결합, 드라이버 테스트)
- 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터 필요
하향식 통합 테스트(Top Down Intergration Test)
- 상위 모듈에서 하위 모듈방향으로 통합(하위 컴포넌트 개발이 완료되지 않으면 스텁(Stub)이용
- 깊이 우선 통합법, 넓이 우선 통합법 사용
- 초기부터 사용자에게 시스템 구조를 보여줌.
* 드라이버 : 검사 자료 입출력 제어 프로그램.
* 스텁 : 임시 제공되는 가짜 모듈.
이진 탐색 동작 방식(Binary Search) : low,middle,High값을 사용. 데이터목록은 반드시 오름차순(전제조건)
> 배열의 중간값 > 중간값과 검색값 비교(같으면 끝, 중간값이 크다면 오른쪽 탐색, 중간값이 작으면 왼쪽 탐색) > 반복
Exam)
Low : 0, High : 14, Middle : (0+14)/2=7
arr[middle] = arr[7] = 8
8<14 : Low값 변경
Low : 8 High : 14 Middle : (8+14)/2=11
arr[11]=12
12<14 :Low값 변경
Low : 12 High: 14 Middle : (12+14)/2=13
arr[13]=14
14==41
요구사항 검토 방법
- 동료검토 : 2~3명이 진행하는 리뷰형태로 작성자가 설명, 이해관계자들이 결함을 발견
- 워크스루 : 검토 회의 전 명세서를 미리 배포, 사전검토 후 짧은 회의를 통해 오류 조기 검출
- 인스펙션 : 명세서 작성자를 제외한 다른 검토 전문가들이 확인하면서 결함 발견
형상 관리 도구
- 소프트웨어 생명 주기 동안 발생하는 변경사항을 체계적으로 관리하여 소프트웨어의 품질 보증을 향상시키는 관리적 활동, 개발과정의 변경사항 관리
- 프로젝트 요구 분석서, 소스코드, 운영 및 설치 지침서가 관리항목
- 유지보수 뿐만 아니라 개발단계 사용(CVS, SVN, Git)
테스트 케이스 : 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력값, 실행조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서를 의미.(테스트 목표 및 테스트 방법을 결정하고 테스트 케이스 작성)
위험 회피 : 위험 관리에 대한 최상의 전략
위험 감시 : 위험 요소 징후들에 대해 계속적으로 인지하는 것
위험 관리 및 비상 계획 수립 : 위험 회피 전략이 실패할 경우 위험에 대해 관리하고 대비책과 비상 계획을 세운다.
@ 제품 소프트웨어의 버전 관리 도구
# 공유 폴더 방식 : 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
- RCS : 소스 파일의 수정을 한사람만 제한하는 파일 잠금 방식으로 관리
# 클라이언트/서버 방식 : 중앙에 버전 관리 시스템을 항시 동작시킴
- CVS(Concurrent Versions System) : 서버와 클라이언트로 구성되어 다수의 인원이 동시 접근 가능
- SVN (Subversion) : 하나의 서버에 소스를 쉽고 유용하게 관리
- Clear Case : 복수 서버와 복수 클라이언트로 구성되어 서버가 부족할 때 확장 가능
# 분산 저장소 방식
- Git : 작업 폴더가 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하는 완전한 형태의 저장소
- Bitkeeper : SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 낼수 있음.
단위 모듈 테스트의 종류
# 화이트박스 테스트 (구조 기반 테스트)
- 내부 소스를 보면서 수행하는 테스트(조건검사, 루프검사,데이터흐름검사)
> 모듈의 원시코드를 오픈하여 논리적인 모든경로를 실행
> 테스트 초기에 진행, 설계된 절차에 초점을 둔 구조적 테스트, 모듈 안의 동작을 직접 관찰.
-메서드 기반 : 메서드에 서로 다른 파라미터 값을 호출하며 테스트
- 화면 기반 : 화면이 있는 경우, 각각의 화면단위로 단위 모듈을 개발 후 하면서 직접 데이터를 입력하여 테스트 수행, 사용자 시나리오에 기반한 테스트
# 블랙박스 테스트 (명세 기반 테스트)
- 외부 사용자의 요구사항 명세서를 보면서 수행하는 테스트(입력 자료에 초점을 맞춰 테스트케이스)
> 소프트웨어가 수행할 특정 기능을 알기 위해 기능이 완전히 작동하는 것을 입증하는 기능 테스트
> 테스트 과정의 후반부에 진행, 사용자의 명세를 보며 구현 기능 테스트, 소프트웨어 인터페이스에서 실시
알고리즘 : 주어진 작업을 수행하는 컴퓨터 명령어를 순서대로 나열한 것
- 검색 : 컴퓨터를 이용하여 기억공간에 보관중인 특정 레코드를 찾아내는 작업
- 선형검색 : 순서화 되어 있지 않은 파일에서 순차적으로 검색하는 방식.
- 제어검색 : 반드시 순서화 된 파일. 한번의 비교동작이 끝난 후 비교 대상이 된 레코드를 선택하는 기준으로 이용하여 검색하는 방식 (이진검색, 파보나치 검색, 보간검색, 블록검색, 이진트리 검색)
- 정렬 : 흩어져 있는 데이터를 Key값을 이용하여 순서대로 열거하는 알고리즘
# 버블정렬 : 첫 위치에서 부터 서로 인접한 두 레코드를 비교하여 레코드 위치를 교환하는 정렬방식
1회차:96 == 69735
2회차:97 == 67935
3회차:93 == 67395
4회차:95 == 67359
# 선택정렬 : N개의 레코드 중 최소값을 첫번째 레코드 위치에 놓고, 나머지 (N-1)개 중 다시 최소값을 찾는 반복 정렬
# 삽입정렬 : 두번째 키와 첫번째 키를 비교해 나열(1회전), 이어서 세번째 키를 첫번째, 두번째키와 비교해 나열(2회전), N번째 키를 앞의 N-1개와 비교하여 알맞은 순서에 삽입하는 정렬
요구사항 검토 방법(동료검토, 워크스루, 인스펙션)
- 인스펙션 : 명세서 작성자를 제외한 다른 검토 전문가들이 확인하면서 결함 발견
[계획>사전교육>준비>인스펙션 회의>수정>후속조치]
Refactoring : 코드의 구조 재조정
Architecting : 설계 관련
Specification : 명세서
Renewal : 유지보수
@ 개발단계에 따른 애플리케이션 테스트 : 개발 단계(단위 테스트, 통합 테스트, 시스템 테스트, 인수 테스트) 레벨
# 단위 테스트 :
- 코딩 직후 모듈이나 컴포넌트에 초점
- 인터페이스, 외부적 I/O, 자료구조, 독립적 기초경로, 오류 처리 경로, 경계 조건등
- 사용자의 요구사항을 기반으로 한 기능성 테스트를 최우선으로 수행
- 구조 기반 테스트와 명세 기반 테스트로 나뉘지만 주로 구조 기반 테스트를 시행
> 구조기반 테스트 : 프로그램 내부 구조 및 복잡도를 검증하는 화이트박스 테스트 시행(제어 흐름과 조건결정)
> 명세기반 테스트 : 목적 및 실행 코드 기반의 블랙박스 테스트 시행(동등 분할, 경계 값 분석)
# 통합 테스트 :
- 단위 테스트가 완료된 모듈을 결합하여 하나의 시스템으로 완성시키는 과정
- 모듈 간 통합된 컴포넌트 간의 상호 작용 오류를 검사
# 시스템 테스트 :
- 개발된 소프트 웨어가 해당 컴퓨터 시스템에서 완벽하게 수행하는가를 점검하는 테스트
- 환경적인 장애 리스크를최소하기 위해 실제 사용 환경과 유사하게 만든 테스트 환경에서 수행
- 시스템 테스트는 기능적 요구사항과 비기능적 요구사항으로 구분하여 각각을 만족하는지 테스트
> 기능적 요구사항 : 명세서 기반의 블랙박스 테스트
> 비기능적 요구사항 : 구조적 요소에 대한 화이트박스 시행
# 인수 테스트 :
- SW가 사용자의 요구사항을 충족하는지 중점을 두고 테스트
- 인수 테스트는 개발한 소프트웨어를 사용자가 직접 테스트(6가지 : 사용자, 운영, 계약, 규정, 알파, 베타)
> 사용자 : 사용자가 시스템 사용의 적절성 여부 확인
> 운영 : 시스템 관리자가 시스템 인수시 수행하는 테스트 기법(백업,정기점검, 배포 등)
> 계약 : 계약 상의 인수/검수 조건을 준수하는지에 여부
> 규정 : 소프트웨어 정부 지침, 법규 등 규정에 맞게 개발된지 확인
> 알파 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법.
> 베타 : 선정된 최종 사용자가 여러명의 사용자 앞에서 행하는 테스트
전위(PreOrder) = Root > Left > Right | a-b-d-c-e-g-h-f
중위(InOrder) = Left > Root > Right | d-b-a-g-e-c-f-h
후위(PostOrder) = Left > Right > Root | d-b-g-h-e-f-c
@ 인터페이스 기능 구현 기술
# JSON(Javascript Object Notation)
- 속성-값(Attribute-Value pair) 쌍 또는 키-값 쌍 으로 이루어진 데이터
- 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용한 개방형 표준 포맷
- AJAX(Asynchronous Javascript and XML) 에서 많이 사용되고 XML을 대체하는 주요 데이터 포맷
- 자료형(숫자, 문자열, 배열, 객체), 언어 독립형 데이터 포맷으로 다양하게 활용.
# XML(eXtensible Markup Language)
- HTML의 단점을 보완한 인터넷언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 *마크업 언어
- 트리구조로 구성되어 있어 상위 태그는 여러개의 하위 태그를 가질 수 있음.
- 모든 태그는 종료 태그를 가져야 하고, 시작 태그와 종료 태그의 요소명칭은 동일해야함.
- 속성값은 큰따음표 " " 로 묶어줘야 하고 대 소 문자를 구분해주어야한다.
*마크업언어 = 메모리->프로그래밍언어X, 양식 관련 표출 HTML,YAML
@자료구조
#스택(Stack) : 쌓다.
- LIFO(Last In First Out) 후입 선출의 구조.
- 같은 구조와 크기의 자료를 정해진 방향으로만 쌓을수 있고, Top으로 정한 곳을 통해서만 접근
- 새로 삽입되는 자료는 TOP이 가리키는 가장 맨위에 쌓이며, 자료를 삭제할 때도 TOP을 통해 삭제
# 큐(Queue) : 줄(Line)
- FIFO(First In First Out) 선입 선출의 구조
- 한쪽 끝에서 삽입 작업이 반대쪽 끝에서 삭제 작업이 양쪽으로 이루어진다.
- 삭제 연산만 수행되는 곳을 프론트(Front), 삽입 연산만 이루어지는 곳(Rear)로 연산작업 수행
- 큐의 rear에서 이루어 지는 삽입연산을 인큐(enQueue)
- 프론트에서 이루어 지는 삭제 연산을 디큐(dnQueue)
#인터페이스 구현 검증 도구 종류 (xUnit, STAF, FitNesse, NTAF, Selenium, watir)
- xUnit : Java(junit), C++(Cppunit), Net(Nunit)
- STAF : 서비스 호출 및 컴포넌트 재사용등 다양한 환경을 지원하는 프레임워크(데몬사용)
- FitNesse : 웹기반 테스트케이스(설계, 실행, 결과 확인등을 지원하는 프레임워크)
- NTAF : Fitnesse의 장점인 협업과 STAP의 장점인 재사용 및 확장성을 통합한 NHN의 자동화 프레임워크
- Selenium : 다양한 브라우저 및 개발 언어를 지원하는 웹 어플리케이션 프레임워크
- Watir : Ruby를 사용하는 테스트 프레임워크
'잡담 > 정처기' 카테고리의 다른 글
정보처리기사 22년 03년 05월 기출 (1과목 : 소프트웨어 설계) (0) | 2023.05.13 |
---|---|
정보처리기사 필기 2022년 04월 24일 기출(4과목 : 프로그래밍 언어 활용) (0) | 2023.05.12 |
정보처리기사 필기 2022년 04월 24일 기출(5과목 : 데이터베이스 구축) (0) | 2023.05.11 |
정보처리기사 필기 2022년 04월 24일 기출(3과목 : 데이터베이스 구축) (1) | 2023.05.11 |
정보처리기사 필기 2022년 04월 24일 기출(1과목 : 소프트웨어 설계) (1) | 2023.05.09 |