애플리케이션/이론

[애플리케이션] 소스 검증

노트북 산 김에 공부 2023. 3. 9. 12:01

소스코드 검증도구

검증도구의 용도

 

  • 정적 테스트 도구는 테스트하기 전에 코딩 오류, 성능 저하, 보안 취약점 등의 결함을 조기에 발견할 수 있도록 지원. 개발의 생산성을 향상시키고, 운영환경에서 프로그램의 품질 향상을 제고한다

 

  •  동적 테스트 도구는 테스트 미수행 코드를 확인하고 분기(결정)문 등 특정 유형의 코드 구조가 충분히 테스트 되었는지를 확인하여 추가적인 테스트를 진행하여 애플리케이션의 안정성을 제고한다
검증도구의 구분

     

소스코드 검증도구는 구현된 SW를 실행하지 않고 테스트하는 정적 테스트, 도구와 구현된 SW를 실행하여 동작을 보면서 테스트하는 동적 테스트 도구로 구분한다.

출처 : 세명컴퓨터고등학교 인공지능 학과


동적 테스트 방법 ( 블랙박스 테스트, 화이트박스 테스트) 

블랙박스 테스트

블랙박스 테스트는 소프트웨어의 내부 구조나 작동 원리를 모르는 상태에서 동작을 검사하는 방식입니다.

사용자가 직접 특정 App이나 Device를 가지고 작동시키는 과정이 블랙박스 테스트와 동일합니다.

즉, 내부에 어떤 내용이 있는지 하나도 모른 채, 사용자가 원하는 기능이 예측한데로 정상 동작 하는지를 확인합니다.

  • 동등분할 기법 : 프로그램의 입력 도메인을 테스트 케이스가 산출될 수 있는 데이터 클래스로 분류하는 방법입니다.
  • 경계값분석기법 : 입력 조건의 중간 값보다 경계 값에서 에러가 발생될 확률이 높다는 특징 으로 테스트 케이스를 작성합니다.
  • 오류예측기법 : 놓치기 쉬운 오류들을 감각 및 경험으로 찾아보는 방법입니다.
  • 원인결과 그래프기법 : 입력 데이터 간 관계가 출력에 미치는 영향을 그래프로 표현하여 오류를 발견합니다
  • 의사결정테이블테스팅 : 논리적 조건이나 상황에서 입력 조건과 결과를 참, 거짓으로 표현하여 테스트케이스를 작성합니다.
  • 상태전이테스팅 : 시스템에 반영되는 이전의 상태가 무엇인지, 상태간 전이, 상태를 변화시키는 이벤트와 입력값을 파악합니다.

화이트박스 테스트

화이트박스 테스트는 응용 프로그램의 내부 구조, 동작을 디테일하게 검사하는 테스트 방식입니다.

내부 소스 코드를 테스트 할 수 있기에 사용자가 들여다 볼 수 없는 구간의 코드 단위들을 테스트 할 수 있습니다.

즉, 개발자가 소프트웨어 또는 컴포넌트 등의 로직에 대한 테스트를 수행하기 위해 설계 단계에서 요구 사항을 확인합니다.

  • 문장검증 : 프로그램의 모든 문장이 적어도 한번씩 수행되는 검증 기준
  • 선택검증 : 선택하는 부분만 검증
  • 경로검증 : 수행가능한 모든 경로 검사
  • 조건 검증 : IF문장이나 While문장내에 조건식을 조사하는 기준

코드 인스펙션(Code Inspection)

    코드 인스펙션은 정적 테스트의 가장 일반적인 유형으로, 사전에 정의된 코드 작성 규칙(Rule) 기반으로 소스코드를 점검하여 작성 규칙에 위반되는 소스코드를 추출하는 분석 도구

 

코드 인스펙션 Rule 유형

 

  • 성능개선 : 메모리 낭비 코드 식별 
  • 코드 작성 규칙 : 소스코드의 가독성 향상
  • 에러 발생 가능성 : 에러 발생 가능성이 있는 코드 점검

 

코드 작성 Rule 심각도 구분(예시)

 

  • 필수(Blocker) : 에러 발생 가능성 매우 높음, 메모리 누수 발생, 반드시 수정
  • 권고 상(Critical) : 에러 발생 가능성 높음, 일반적으로 수정
  • 권고 중(Major) : 에러발생 있음, 수정 권고
  • 권고 하(Minor) : 소스코드 가독성, 유지 보수 향상 위해 수정 권고 
  • 정보(Info) : 정보성으로 제공되는 위반 사항으로 개발자가 참고하여 적용 할 수 있음

 

정규 표현식(Regular Expression)

 

특정한 규칙을 가진 문자열의 집합을 표현하는 범용적인 방식. 도구의 코드 작성 규칙은 일반적으로 정규식으로 표현된다

 


테스트 프레임워크(동적 분석 도구)

    테스트 케이스를 별도의 테스트 코드로 작성하고 동작시킬 수 있는 환경을 제공하는 도구

 

테스트 프레임워크의 구성

 

  • 테스트 코드 :  테스트 코드 작성 및 자동화된 운영환경을 구성한다. 
  • 테스트 저장소 : 테스트 코드, 데이터, 관련 테스트 스크립트, 수행결과를 저장, 관리한다

    

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) 2023.03.23
[애플리케이션] 배포  (0) 2023.03.15
[애플리케이션] 빌드  (0) 2023.03.14
[애플리케이션] 배포환경 구성  (0) 2023.03.09