소스코드 검증도구
1. 검증도구의 구분
소스코드 검증도구는 구현된 SW를 실행하지 않고 테스트하는 정적 테스트 도구와 구현된 SW를 실행하여 동작을 보면서 테스트하는 동적 테스트 도구로 구분한다.
2. 소스코드 검정도구의 용도
1) 정적 테스트 도구 사용 목적
정적 테스트 도구는 테스트하기 전에 코딩 오류, 성능 저하, 보안 취약점 등의 결함을 조기에 발견할 수 있도록 지원한다. 이렇게 함으로써 개발의 생산성을 향상시키고, 운영환경에서 프로그램의 품질 향상을 제고하며, 정량적인 품질 관리시스템을 구축하게 한다.
2) 동적 테스트 도구 사용 목적
테스트 미수행 코드를 확인하고 분기문 등 특정 유형의 코드 구조가 충분히 테스트 되었는지를 확인하여 추가적인 테스트를 진행함으로써 애플리케이션의 안정성을 제고하고, 소스 품질 관리(통제) 활동을 할 수 있는 정량적인 품질 관리시스템을 구축 할 수 있게 한다.
코드 인스펙션(Code Inspection)
코드 인스펙션은 정적 테스트의 가장 일반적인 유형으로, 사전에 정의된 코드 작성 규칙 기반으로 소스코드를 점검하여 작성 규칙에 위반되는 소스코드를 추출하는 분석 도구로 애플리케이션 개발 시 대부분 사용되며, 빌드 도구와 연계하여 빌드 배포 수행시 자동적으로 점검할 수 있다.
1. 코드 인스펙션 Rule 유형
1) 성능 개선
애플리케이션의 성능에 영향을 미칠 수 있는 코드를 점검하는 Rule이다. 메모리 누수, 미사용 변수, 메소드 여부 등을 확인하여 메모리를 낭비하는 코드를 식별한다.
2) 코드 작성 규칙
개발언어에서 사전에 정의된 작성 규칙 또는 프로젝트 내에서 정의된 프로그램 명명 규칙의 준수 여부를 점검하는 Rule이다. 작성 규칙을 미준수한 코드 내역을 추출하여 소스코드의 가독성을 향상시킨다.
3) 에러 발생 가능성
애플리케이션 동작 중 에러 발생 가능성이 있는 코드를 점검하는 Rule이다.
2. 코드 작성 Rule 심각도 구분(예시)
1) 필수, Blocker
에러 발생 가능성이 매우 높거나 메모리 누수가 발생되는 코드로, 반드시 수정되어야 하는 위반 사항을 말한다.
2) 권고 상, Critical
에러 발생 가능성이 높거나 일반적으로 수정되어야 하는 심각한 위반 사항을 말한다.
3) 권고 중, Major
에러 발생이 있거나 수정을 권고하는 중요 위반 사항을 말한다.
4) 권고 하, Mino
소스코드의 가독성, 유지 보수성 향상을 위해 수정을 권고하는 위반사항을 말한다.
5) 정보, Info
정보성으로 제공되는 위반 사항으로 개발자가 참고하여 적용할 수 있다.
3. 정규 표현식(Regular Expression)
정규 표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 범용적인 방식을 말한다. 코드 인스펙션 도구의 코드 작성 규칙은 일반적으로 정규식으로 표현되며, 정규식의 내용을 수정해서 점검 Rule의 내용을 수정할 수 있다.
메타 문자 | 의미 | 설명 |
. | 문자 | 1개의 문자와 일치한다. 단일행 모드에서는 새줄 문자를 제외한다. |
[] | 문자 클래스 | "["과 "]" 사이의 문자 중 하나를 선택한다. "|" 를 여러 개 쓴 것과 같은 의미이다. 예를 들면 [abc]d는 ad, bd, cd,를 뜻한다. 또한 "-" 기호와 함께 쓰면 범위를 지정할 수 있다. "[a-z]"는 a부터 z까지 중 하나를 의미하고, "[1-9]"는 1부터 9까지 중의 하나를 의미한다. |
[^] | 부정 | 클래스 안의 문자를 제외한 나머지를 선택한다. 예를 들면 [^abc]d는 ad, bd, cd는 포함하지 않고 ed, fd 등을 포함한다. [^a-z]는 알파벳 소문자로 시작하지 않는 모든 문자를 의미한다. |
^ | 처음 | 문자열이나 행의 처음을 의미한다. |
$ | 끝 | 문자열이나 행의 끝을 의미한다. |
() | 하위식 | 여러 식을 하나로 묶을 수 있다. "abc|dc" 와 "a(b|)c" 는 같은 의미를 가진다. |
\n | 일치하는 n번째 패턴 | 일치하는 패턴들 중 n번째를 선택하며, 여기에서 n은 1에서 9중 하나가 올 수 있다. |
* | 0회 이상 | 0개 이상의 문자를 포함한다. "a*b"는 "b", "ab", "aab", "aaab"를 포함한다. |
{m, n} | m회 이상 n회 이하 |
"{1,3}b" 는 "ab", "aab", "aaab"를 포함하지만, "b"나 "aaaab"는 포함하지 않는다. |
테스트 프레임워크(동적 분석 도구)의 구성
테스트 프레임워크는 테스트 케이스를 별도의 테스트 코드로 작성하고 동작시킬 수 있는 환경을 제공하는 도구로, 개발자의 반복적이고 시간이 많이 소요되는 테스트 작업을 자동화하여 테스트에 소요되는 시간과 노력을 절감할 수 있게 한다.
1. 테스트 프레임워크의 구성
1) 테스트 코드
테스트 코드 작성 및 자동화된 운영환경을 구성한다. 빌드 도구와 연계하여 빌드 수행 시 테스트 코드를 동작시켜 자동화된 테스트 환경을 제공한다.
2) 테스트 저장소
테스트 수행을 위한 테스트 코드, 테스트 데이터, 관련 테스트 스크립트, 테스트 수행 결과를 저장, 관리한다.
2. Junit 테스트 프레임워크
Java, 오픈소스 기반의 테스트 프레임워크로 Java 개발환경의 범용적인 표준으로 사용되며(Eclipse 개발 도구에 기본 내장 기능), 다음과 같이 테스트 가능한 Assert 함수를 제공한다.
assertArrayEquals(a,b) - 배열 a와 b가 일치함을 확인.
assertEquals(a,b) - 객체 a와 b가 일치함을 확인.
assertSame(a,b) - 객체 a와 b가 같은 객체임을 확인.
assertTrue(a) - a값이 참인지 확인.
assertNotNull(a) - 객체 a가 null이 아님을 확인.
'정보처리산업기사 필기 공부 > 애플리케이션배포' 카테고리의 다른 글
애플리케이션 배포(애플리케이션배포) (0) | 2020.04.20 |
---|---|
애플리케이션 빌드(애플리케이션배포) (0) | 2020.04.20 |
애플리케이션 배포환경 구성(애플리케이션배포) (0) | 2020.04.20 |