소프트웨어 개발
🥙소프트웨어 테스트
- 화이트박스 테스트는 모듈의 논리적인 구조를 체계적으로 점검할 수 있다.
- 블랙박스 테스트는 프로그램의 구조를 고려하지 않는다.
- 테스트 케이스에는 일반적으로 시험 조건, 테스트 데이터, 예상 결과가 포함되어야 한다.
- 화이트 박스 테스트에서 기본 경로(Basic Path)란 수행 가능한 모든 경로를 의미한다.
🥪소프트웨어 형상 관리(Configuration management)
- 소프트웨어에서 일어나는 수정이나 변경을 알아내고 제어하는 것을 의미한다.
- 소프트웨어 개발의 전체 비용을 줄이고, 개발 과정의 여러 방해 요인이 최소화되도록 보증하는 것을 목적으로 한다.
- 형상 관리의 기능 중 하나는 버전 제어 기술이다.
🌮형상 관리 기능
- 형상 식별 : 형상 관리 대상에 이름과 관리 번호를 부여하고, 계층(Tree)구조로 구분하여 수정 및 추적이 용이하도록 하는 작업
- 버전 제어 : 소프트웨어 업그레이드나 유지 보수 과정에서 생성된 다른 버전의 형상 항목을 관리하고, 이를 위해 특정 절차와 도구(Tool)를 결합시키는 작업
- 형상 통제(변경 관리) : 식별된 형상 항목에 대한 변경 요구를 검토하여 현재이 기준선(Base Line)이 잘 반영될 수 있도록 조정하는 작업
- 형상 감사 : 기준선의 무결성을 평가하기 위해 확인, 검증, 검열 과정을 통해 공식적으로 승인하는 작업
- 형상 기록(상태 보고) : 형상의 식별, 통제, 감사 작업의 결과를 기록 · 관리하고 보고서를 작성하는 작업
🌯트리 후위 순회(Post Traversal)
- 서브 트리를 하나의 노드로 생각 할 수 있도록 서브 트리 단위로 묶는다.
- Postorder는 Left -> Right -> Root 순서
- D B -> E C F -> A 순서
🥫Pareto의 법칙
소프트웨어 테스트에서 오류의 80%는 전체 모듈의 20% 내에서 발견된다는 법칙은 파레토 법칙(Pareto Principle)
🍖테스트 오라클
- 샘플링 오라클(Sampling) : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클
- 참 오라클(True) : 모든 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하는 오라클로, 발생된 모든 오류를 검출할 수 있음
- 추정 오라클(Heuristic) : 샘플링 오라클을 개선한 오라클로, 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고, 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클
- 일관성 검사 오라클 (Consistent) : 애플리케이션의 변경이 있을 때, 테스트 케이스의 수행 전과 후의 결과 값이 동일한지를 확인하는 오라클
🍗IPSec(IP Security)
- 암호화와 복호화가 모두 가능한 양뱡향 암호 방식이다
- ESP는 발신지 인증, 데이터 무결성, 기밀성 모두를 보장한다
- 운영 모드는 Tunnel 모드와 Transport 모드로 분류된다
- AH는 발신지 호스트를 인증하고, IP 패킷의 무결성을 보장한다
🥩스택(STACK) 응용 분야
- 인터럽트의 처리
- 수식의 계산 및 수식 표기법
- 서브루틴의 복귀 번지 저장
- 함수 호출의 순서 제어
- 컴파일러를 이용한 언어 변역
- 부 프로그램 호출 시 복귀주소 저장
🍠Selection 정렬 (선택 정렬)
🔹 선택 정렬은 n개의 레코드 중에서 최소값을 찾아 첫 번째 레코드 위치에 놓고, 나머지 n-1개 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 방식
*인접 비교는 버블 정렬
🥟해싱 함수(Hashing Function) 종류
- 제산법(Division)
- 제곱법(Mid - Square)
- 폴딩법(Folding)
- 기수 변환법(Radix)
- 대수적 코딩법(Algebraic Coding)
- 계수 분석법(Digit Analysis)
- 무작위법(Random)
🥠인터페이스 구현 검증 도구
- xUnit
- STAF
- NTAF
- FitNesse
- watir
🥡정적 분석 도구
- pmd
- ccpcheck
- SonarQube
- checkstyle
- ccm
- cobertura
🍱인수 테스트의 종류
- 알파 테스트 : 개발자의 장소에서 사용자가 개발자 앞에서 행하는 테스트 기법
- 베타 테스트 : 선정된 최종 사용자가 여려 명의 사용자 앞에서 행하는 테스트 기법
🍘테스트 드라이버(Test Driver)에 대한 설명
- 시험 대상 모듈을 호출하는 간이 소프트웨어
- 필요에 따라 매개 변수를 전달하고 모듈을 수행한 후읙 ㅕㄹ과를 보여줄 수 있다.
- 상향식 통합 테스트에서 사용된다.
🍙연결(Linked List)
- 노드의 삽입이나 삭제가 쉽다
- 노드들이 포인터로 연결되어 포인터를 찾아가는 시간이 필요하므로 선형 리스트에 비해 검색 속도가 느리다
- 연결을 해주는 포인터(Pointer)를 위한 추가 공간이 필요하다
- 연결 리스트 중에서 중간 노드 연결이 끊어지면 그 다음 노드를 찾기 힘들다
🍚🍛🍜🦪🍣🍤🍥🥮🍢🧆🥘🍲🍝🥣🥧🍦🍧🍨🍩🍪🎂🍰🧁🍫🍬🍭🍡🍮🍯🥙
🥪🌮🌯🥫🍖🍗🥩🍠🥟🥠🥡🍱🍘🍙🍚🍛🍜🦪🍣🍤🍥🥮🍢🧆🥘🍲🍝🥣🥧🍦🍧🍨🍩🍪🎂🍰🧁🍫🍬🍭🍡🍮🍯🥙
🥪🌮🌯🥫🍖🍗🥩🍠🥟🥠🥡🍱🍘🍙🍚🍛🍜🦪🍣🍤🍥🥮🍢🧆🥘🍲🍝🥣🥧🍦🍧🍨🍩🍪🎂🍰🧁🍫🍬🍭🍡🍮🍯