상세 컨텐츠

본문 제목

🏷️ 2025 정보처리기사 필기 요점정리 2과목 소프트웨어개발(3)

자격정보

by best2253 2025. 8. 11. 18:26

본문

 

🏷️ 정보처리기사 필기 요점정리

2과목 소프트웨어개발

 

정처기 필기 수업 요약본

 

📢 애플리케이션 테스트

잠재되어있는 결함을 찾아내는 일련의 행위 또는 절차

확인(Validation) : 사용자입장에서 개발된 소프트웨어가 고객의 요구사항을 만족시키는지 확인

검증(Verification) : 소프트웨어가 기능을 정확히 수행하는지 확인. 개발자입장에서 개발한 소프트웨어가 명세서에

맞게 만들어졌는지 점검하는 것

 

📢 애플리케이션 테스트의 기본 원리

결함 존재 증명의 원리

테스트는 결함이 없음을 증명하는 것이 아니라, 결함을 찾는 활동이다.

완전한 테스트 불가능의 원리

모든 가능한 입력과 경로를 테스트하는 것은 현실적으로 불가능하다.

조기 테스트 원리

테스트는 개발 초기에 시작할수록 비용과 시간을 절약할 수 있다.

예: 요구사항, 설계 단계부터 테스트 가능

결함 집중의 원리 (파레토 법칙)

대부분의 결함은 일부 기능(20%)에 집중되어 있다.

살충제 패러독스

같은 테스트 케이스 반복은 더 이상 새로운 결함을 찾지 못한다.

⇒ 테스트 케이스의 주기적 변경필요

테스트는 정황(문맥) 의존의 원리

테스트 방식은 애플리케이션의 성격에 따라 달라져야 한다. (예: 금융 시스템 vs 게임 앱)

오류-부재의 궤변

결함이 없더라도, 요구사항과 다르면 실패한 소프트웨어이다.

브룩스(Brooks) 법칙

개발 말기에 인원을 추가하면 소프트웨어개발이 더욱 지연된다

(새로 투입된 인원이 개발 전반에 대해 이해하고 작업해야 하는 시간 등이 추가되기때문)

 

📢 애플리케이션 테스트의 분류

① 프로그램 실행 여부에 따른 테스트

정적
프로그램 실행 없이 명세서나 소스코드 분석
개발초기 결함발견-개발비용을 낮출수 있음
종류 : 워크스루, 인스펙션, 코드검사 등
동적
프로그램 실행-개발의 모든 단계에서 테스트
종류 : 블랙박스테스트, 화이트박스테스트

 

② 테스트 기반에 따른 테스트

명세기반 : 사용자 요구사항에 대한 명세를 확인 (종류 : 동등분할 ,경계값 분석

구조기반 : 소프트웨어 논리흐름에 따라 케이스를 작성,확인 (종류 : 구문기반, 결정기반, 조건기반 등

경험기반 : 유사소프트웨어 기술등에 대한 테스트 경험을 기반. 사용자 요구사항에 대한 명세가 불충분하거나 테스트 시간에

대한 제약이 있는 경우에 효과적 ( 종류 : 에러추정, 체크 리스트, 탐색전 테스팅

 

③ 시각에 따른 테스트(누구를 기준)

검증 : 개발자시각, 확인 : 사용자시각

④ 목적에 따른 테스트(무엇을 목적으로)

회복(Recovery), 안전(Security), 성능(Performance), 구조(Structure), 회귀(Regression), 병행(Parallel),

강도(Stress) : 과도한 정보량이나 빈도 등을 부과하여 과부하시에 소프트웨어가 정상적으로 실행되는지를 확인하는 테스트

 

📢 테스트기법에 따른 애플리케이션 테스트

▣ 화이트박스 테스트

개발자나 테스트 엔지니어입장

모듈의 원시 코드를 오픈시킨상태에서 원시 코드의 논리적인 모든 경로를 테스트하여테스트 케이스를 설계하는 방법

기초경로 검사
(Base Path)
소스 코드의 복잡도를 기반으로 논리적 경로를 테스트하는 기법
제어구조검사
(Contrl
Structure)
조건검사 : 모듈내의 논리적 조건을 테스트
루프검사 : 반복구조 테스트
데이터 흐름 검사 : 변수정의, 사용위치에 초점을 맞춰 실시하는 테스트

 

▣ 블랙박스 테스트

동치분할 검사
(Equivalence)
유효한 값과 무효한 값을 그룹을 나눠서 테스트
경계값분석
(BoundaryValue)
입력 조건의 경계값에서오류가 발생될 확률이 높다는 점을 이용
원인-효과 그래프검사
(Cause-effect)
입력 데이터간의 관계와 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
오류 예측 검사
(Error Guessing)
과거의 경험이나 확인자의감각으로 테스트. 데이터 확인 검사

 

 

📢 개발 단계에 따른 애플리케이션 테스트

① 단위 테스트(Unit Test)

코딩직후 소프트웨어 설계의 최소 단위인 모듈이나 컴포넌트에 초점을 맞춰 테스트 하는것

② 통합 테스트 : 단위테스트가 완료된 모듈들을 결합하여 하나의 시스템으로 완성시키는 과정에서의 테스트

③ 시스템 테스트 : 개발소프트웨어가 해당 컴환경에서 완벽하게 수행되는가를 점검하는 테스트

④ 인수 테스트 : 사용자의 요구사항을 충족하는지에 중점을 두고 테스트하는 방법

-알파테스트 : 개발자장소. 사용자와 함께 테스트

-베타테스트 : 개발자없이 고객의 사용환경에서 테스트

 

 

 

📢 통합테스트

구분
하향식 통합 테스트
상향식 통합 테스트
시작점
상위 모듈부터
하위 모듈부터
임시 모듈
Stub 사용
Driver 사용
장점
시스템 전체 흐름 확인 용이
세부 기능 먼저 안정화 가능
단점
세부 기능이 늦게 검증됨
전체 흐름 파악이 느림

 

📢 테스트 오라클

테스트 결과가 올바른지 판단하기 위해 사전에 정의된 참 값을 대입하여 비교하는 기법 및 활동

참(True)오라클
모든 입력값에대한 정확한 결과 알고 있음- 모든 오류 검출 가능
샘플링(Sampling)
일부 대표 입력값에대해서만 예상 결과 제공
추정(Heurisic)
샘플링 오라클을 개선. 특정 테스트 케이스의 입력 값에 대해 기대하는
결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리
일관성(Consistent)검사
시스템 변경 전후 결과가 동일한지 비교하여 판단

 

테스트 자동화 도구

테스트 도구를 활용하여 반복적인 테스트 작업을 스크립트 형태로 구현함으로써 테스트 시간 단축과 인력 투입 비용을 최소화하며, 쉽고 효율적인 테스트를 수행할 수 있는 방법

 
테스트 자동화 도구
정적 분석 도구
(Static Analysis Tools)
프로그램을 실행하지 않고 분석하는 도구. 남은 결함 발견하기 위해 사용.
테스트 실행 도구
(Test Execution Tools)
테스트 데이터와 테스트 수행 방법 등이 포함된 스크립트를 작성후실행
성능 테스트 도구
(Performance Test Tools)
여러가지 가상의 사용자를 만들어 테스트를 수행함으로써 성능의 목표 달
성 여부를 확인
테스트 통제 도구
(Test Control Tools)
테스트 계획 및 관리. 테스트 수행, 결함 관리 등을 수행하는 도구로, 종류
에는 형상 관리 도구, 결함 추적/관리 도구 등이 있음

 

📢 복잡도

시스템이나 시스템 구성 요소 또는 소프트웨어의 복잡한 정도를 나타나는 말로, 시스템 또는 소프트웨어를

어느 정도의 수준까지 테스트해야 하는지 또는 개발하는데 어느 정도의 자원이 소요되는지 예측하는데 사용됨

 

-복잡도 측정 방법 : LOC, 순환 복잡도 등

-시스템이 고장을 일으키게 하며, 오류(Error)가 있는 경우 발생하는 것 : Fault

 

▣ 시간 복잡도

알고리즘을 수행하기 위해 프로세스가 수행하는 연산 횟수를 수치화한 것

시간복잡도가 낮을수록 : 실행시간이 짧고

시간복잡도가 높을수록 : 실행시간이 길어짐

-접근 표기법의 종류

빅오표기법 : 실행시간이 최악일 때의 표기법

세타표기법 : 알고리즘의 실행시간이 평균일 때 표기법

오메가표기법 : 실행시간이 최상일 때

-빅오표기법(Big-O)

O(1)
입력(n)에 관계 없이 일정하게 문제 해결에 하나의 단계만 거친다 (예) 스택의 삽입, 삭제
O(log2n)
문제 해결에 필요한 단계가 입력값(n) 또는 조건에 의해 감소 (예) 이진트리, 이진 검색
O(n)
문제 해결에 필요한 단계가 입력값(n)가 1:1의 관계
(예) for문
O(nlog2n)
문제 해결에 필요한 단계가 만큼 수행
(예) 힙정렬, 2-way합병 정렬
O(n²)
문제 해결에 필요한 단계가 2의 입력값(n) 제곱만큼 수행 (예) 삽입정렬, 쉘 정렬, 선택 정렬, 버블 정렬, 퀵정렬

 

-순환 복잡도(맥케이브 순환도)

출처 : 시나공 정보처리기사 교재

 

▣ 소스코드 최적화

-클린코드(Clean Code)

누구나 쉽게 이해하고 수정 및 추가할 수 있는 단순, 명료한 코드. 즉, 잘 작성된 코드를 의미

-외계인 코드(Alien Code)

아주 오래되거나 참고문서 또는 개발자가 없어 유지 보수 작업이 어려운 코드를 의미

-소스 코드 품질 분석 도구 – 정적 분석 도구

-작성한 소스 코드를 실행하지 않고 코딩 표준이나 코딩 스타일, 결함 등을 확인한다
-하드웨어적인방법 또는 소프트웨어적인방법으로 코드를 분석
-종류 : pmd, checkstyle, cppcheck등

 

 


📢 인터페이스 구현

 

모듈 연계를 위한 인터페이스 기능 식별

EAI의 구축 유형

-Point-to-Point : 애플리케이션을 1:1로 연결

-Hub & Spoke : 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중식 방식

-Message Bus(ESB) : 애플리케이션 사이에 미들웨어를 두어 처리하는 방식

-Hybrid : Hub & Spoke와 Message Bus의 혼합방식

 

 

 

2. 인터페이스 구현 기술

구분
설 명
JSON
“속성-값”으로 이루어진 데이터 객체를 전달하기 위해 사람이 읽은 수 있는 텍스트를 사용하는 개방형 표준포맷. 비동기 처리에 사용되는 AJAX에서 XML을 대체해서 사용
XML
웹페이지의기본 형식인 HTML의 문법이 각 웹 브라우저에서 상호 호환적이지못하다
문제와 SGML의 복잡함을 해결하기 위해 개발
AJAX
자바스크립트를 사용한 비동기 통신기술로 클라이언트와 서버 간에 XML 데이터를 주고 받는 기술

 

📢 인터페이스 보안

시스템 모듈 간 통신 및 정보 교환을 위한 통로로 사용되므로 충분히 보안을 갖추어야 함

① 인터페이스 보안 기능 적용

네트워크 영역
인터페이스 송수신간스니핑등을 이용한 데이터 탈취 및 변조 위협을 방지하기 위해 네트워크 트래픽에 대한 암호화를 설정
암호화 인터페이스 아키텍처에 따라 IPSec, SSL, S-HTTP 등적용
애플리케이션 영역
소프트웨어 개발 보안 가이드를 참조
데이터베이스 영역
데이터베이스 동작 객체의 보안 취약점에 보안 기능 적용
개인정보나 업무상 민감한 데이터 : 데이터의 암호화나 익명화

 

② IPSec(IP Security)

-네트워크 계층에서 IP패킷 단위의 데이터 변조 방지 및 은닉 기능을 제공하는 프로토콜

-암호화와 복호화가 모두 가능한 양방향 암호 방식

 

③ 데이터무결성 검사 도구

-시스템 파일의 변경 유무를 확인하고, 파일이 변경되었을 경우 이를 관리자에게 알려주는 도구

-크래커 등이 시스템에 침입하면 백도어를 만들어 놓거나 시스템 파일을 변경하여 자신의 흔적을 감추는데, 무결성 검사 도구를 이용하여 감지

-종류 : Tripwire, Samhain, AIDE 등

 

📢 인터페이스 구현 검증 도구

-xUnit : java(Junit), C++(Cppunit), .Net(Nunit) 등 다양한언어를 지원하는 단위 테스트 프레임워크

-STAF : 서비스 호출, 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크

-FitNesse : 웹 기반 테스트 케이스 설계/실행/결과 확인 등을 지원하는 테스트 프레임워크

-NTAF : FitNesse와 STAF의 장점을 결합하여 개발된 테스트 자동화 프레임워크(Naver)

-Selenium : 다양한 브라우저 지원 및 개발언어를지원하는 웹 애플리케이션 테스트 프레임워크

-watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크

모두 모두 응원합니다.

 

반응형

관련글 더보기