* 정렬 알고리즘
- 삽입 정렬
- 선택 정렬
- 버블 정렬
* 블랙박스 테스트 (Black Box Test)
- 소프트웨어가 수행할 특정 기능을 알기 위해서 각 기능이 완전히 작동되는 것을 입증하는 테스트로, 기능 테스트라고 함
- 프로그램의 구조를 고려하지 않기 때문에 테스트 케이스는 프로그램 또는 모듈의 요구나 명세를 기초로 결정
- 소프트웨어 인터페이스에서 실시되는 테스트
- 부정확하거나 누락된 기능, 인터페이스 오류, 자료 구조나 외부 데이터베이스 접근에 따른 오류, 행위나 성능 오류, 초기화와 종류 오류 등을 발견하기 위해 사용되며, 테스트 과정의 후반부에 적용됨
- 종류
. 동치 분할 검사(Equivalence Partitioning Testing) : 입력 자료에 초점을 맞춰 테스트 케이스를 만들고 검사하는 방법으로 동등 분할 기법이라고도 함
. 경계값 분석(Boundary Value Analysis) : 입력 자료에만 치중한 동치 분할 기법을 보완하기 위한 기법
. 원인-효과 그래프 검사(Cause-Effect Graphing Testing) : 입력 데이터 간의 관계에 출력에 영향을 미치는 상황을 체계적으로 분석한 다음 효용성이 높은 테스트 케이스를 선정하여 검사하는 기법
. 오류 예측 검사(Error Guessing) : 과거의 경험이나 확인자의 감각으로 테스트하는 기법
. 비교 검사(Comparison Testing) : 여러 버전의 프로그램에 동일한 테스트 자료를 제공하여 동일한 결과가 출력되는지 테스트하는 기법
* 화이트박스 테스트(White Box Test)
- 모듈의 원시 코드를 오픈시킨 상태에서 원시 코드의 논리적인 모든 경로를 테스트하여 테스트 케이스를 설계하는 방법
- 설계된 절차에 초점을 둔 구조적 테스트로 프로시저 설계의 제어 구조를 사용하여 테스트 케이스를 설계하며, 테스트 과정의 초기에 적용됨
- 모듈 안의 작동을 직접 관찰함
- 원시 코드(모듈)의 모든 문장을 한 번 이상 실행함으로써 수행됨
- 프로그램의 제어 구조에 따라 선택, 반복 등의 분기점 부분들을 수행함으로써 논리적 경로를 제어함
- 종류
. 기초 경로 검사
.. 대표적인 화이트박스 테스트 기법
.. 테스트 케이스 설계자가 절차적 설계의 논리적 복합성을 측정할 수 있게 해주는 테스트 기법으로, 테스트 측정 결과는 실행 경로의 기초를 정의하는 데 지침으로 사용됨
. 제어 구조 검사
.. 조건 검사(Condition Testing) : 프로그램 모듈 내에 있는 논리적 조건을 테스트하는 테스트 케이스 설계 기법
.. 루프 검사(Loop Testing) : 프로그램의 반복(Loop) 구조에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
.. 데이터 흐름 검사(Data Flow Testing) : 프로그램에서 변수의 정의와 변수 사용의 위치에 초점을 맞춰 실시하는 테스트 케이스 설계 기법
* 소프트웨어 재공학 (Software Reengineering)
- 새로운 요구에 맞도록 기존 시스템을 이용하여 보다 나은 시스템을 구축하고 새로운 기능을 추가하여 소프트웨어 성능을 향상시키는 것
- 소프트웨어의 수명이 연장되고, 소프트웨어 기술이 향상될 뿐만 아니라 소프트웨어의 개발 기간도 단축됨
- 소프트웨어에서 발생할 수 있는 오류가 줄어들고, 비용이 절감됨
- 주요 활동
. 분석(Analysis)
.. 기존 소프트웨어의 명세서를 확인하여 소프트웨어의 동작을 이해하고, 재공학할 대상을 선정하는 활동
. 재구성(Restructuring)
.. 기존 소프트웨어의 구조를 향상시키기 위하여 코드를 재구성하는 활동
.. 소프트웨어의 기능과 외적인 동작은 바뀌지 않음
. 역공학(Reverse Engineering)
.. 기존 소프트웨어를 분석하여 소프트웨어 개발 과정과 데이터 처리 과정을 설명하는 분석 및 설계 정보를 재발견하거나 다시 만들어 내는 활동
.. 일반적인 개발 단계와는 반대 방향으로 기존 코드를 복구하거나, 기존 소프트웨어의 구성 요소와 그 단계를 파악하여 설계도를 추출함
. 이식(Migration)
.. 기존 소프트웨어를 다른 운영체제나 하드웨어 환경에서 사용할 수 있도록 반환하는 활동
* 자료구조 분류
- 선형 구조(Linear Structure) : 배열(Array), 선형 리스트(Linear List), 스택(Stack), 큐(Queue), 데크(Deque)
- 비선형 구조(Non-Linear Structure) : 트리(Tree), 그래프(Gragh)
* 데이터 포맷
- 인터페이스 간의 통신을 위해 이용됨
- JSON(JavaScript Object Notation)
. 속성-값 쌍(Attribute-Value Pairs)으로 이루어진 데이터 객체를 전달하기 위해서 사람이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
. 비동기 처리에 사용되는 AJAX에서 XML을 대체하여 사용되고 있음
- XML(eXtensible Markup Language)
. 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
. 웹 페이지의 기본 형식인 HTML의 문법이 각 웹 브라우저에서 상호 호환적이지 못하다는 문제와 SGML의 복잡함을 해결하기 위하여 개발됨
- YAML(YAML Ain't Markup Language)
. XML, C, Python 등에서 정의된 이메일 양식에서 개념을 얻어 만들어진 사람이 쉽게 읽을 수 있는 데이터 포맷
. XML과 문법적으로 유사하지만, 태그를 사용하지 않고 공백 위주로 데이터를 구분함
. 이해하기 쉽고 가독성이 좋아 설정 파일을 작성할 때 주로 사용됨
* 인터페이스 구현 검증 도구
- xUnit : Java(Junit), C++(Cppunit), .Net(Nunit), Http(HttpUnit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
- STAF : 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
- FitNesse : 웹 기반 테스트케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
- NTAF : FitNesse의 장점인 협업 기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
- Selenium : 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
- watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크
'기타' 카테고리의 다른 글
[정보처리기사] 4과목 프로그래밍언어활용 헷갈리는 부분 정리 (0) | 2023.05.06 |
---|---|
[정보처리기사] 3과목 데이터베이스구축 헷갈리는 부분 정리 (0) | 2023.05.06 |
[정보처리기사] 1과목 소프트웨어설계 헷갈리는 부분 정리 (1) | 2023.05.06 |
[Eclipse] 특정 프로젝트 인코딩 방식 변경하기 (1) | 2023.04.08 |
[Programming Language] 컴파일(compile)언어 vs 스크립트(script) 언어 (0) | 2023.04.08 |