• 제목/요약/키워드: 코드 커버리지

검색결과 28건 처리시간 0.021초

코드 커버리지를 높이기 위한 상태 머신 변환 방법 (Transformation Method for a State Machine to Increase Code Coverage)

  • 윤영동;최현재;채흥석
    • 정보과학회 논문지
    • /
    • 제43권9호
    • /
    • pp.953-962
    • /
    • 2016
  • 모델 기반 테스팅은 시스템의 행위를 표현하는 모델을 시스템 명세로 활용하여 테스트를 수행하는 기술이다. 자동차, 국방/항공, 의료, 철도, 원자력과 같은 산업 도메인에서는 소프트웨어의 품질 향상을 위해 모델 기반 테스팅과 코드 커버리지 기반 테스팅을 요구하고 있다. 모델 기반 테스팅과 코드 커버리지 기반 테스팅이 모두 요구됨에도 모델과 소스 코드 간의 추상화 수준 차이로 인해 모델 기반 테스팅만으로 높은 코드 커버리지를 달성하는 것이 어려워 모델 기반 테스팅과 코드 커버리지 기반 테스팅이 별도로 수행되어져 왔다. 본 연구에서는 기존의 모델 기반 테스팅의 한계점을 개선하기 위하여 모델 기반 테스팅에서 테스트 모델로서 이용되는 대표적인 모델링 방법 중 하나인 프로토콜 상태 머신을 테스트 모델로서 이용하여 효과적으로 코드 커버리지를 향상시키는 상태 머신 변환 방법을 제안한다. 또한 본 연구에서는 두 시스템을 대상으로 한 사례 연구를 수행하여 제안 방법의 효과성을 분석하였다.

최적화 컴파일된 자바스크립트 함수에 대한 최적화 해제 회피를 이용하는 런타임 가드 커버리지 유도 퍼저 (Runtime-Guard Coverage Guided Fuzzer Avoiding Deoptimization for Optimized Javascript Functions)

  • 김홍교;문종섭
    • 정보보호학회논문지
    • /
    • 제30권3호
    • /
    • pp.443-454
    • /
    • 2020
  • 자바스크립트 엔진은 주로 웹 브라우저에 적재되어 웹 페이지를 표시하는 여러 기능 중 자바스크립트 코드를 입력으로 받아 처리하는 모듈이다. 자바스크립트 엔진 내 취약점은 종단 사용자의 시스템 보안을 위협할 수 있어 많은 퍼징 테스트 연구가 수행되었다. 그중 일부 연구는 자바스크립트 엔진 내 테스트 커버리지를 유도하는 방식으로 퍼징 효율을 높였으나, 최적화되어 동적으로 생성된 기계어 코드에 대한 커버리지 유도 퍼징은 시도되지 않았다. 최적화된 자바스크립트 코드는 예외적인 흐름 발생 시 코드를 해제하는 런타임 가드의 기능으로 인해 퍼징을 통한 충분한 반복 테스트가 어렵다. 본 논문은 이러한 문제점을 해결하기 위해 최적화 해제를 회피하여 최적화된 기계어 코드에 대해 퍼징 테스트를 수행하는 방법을 제안한다. 또한, 동적 바이너리 계측 방식으로 수행된 런타임 가드의 커버리지를 계측하고 커버리지 증가를 유도하는 방식을 제안한다. 실험을 통해, 본 연구가 제안하는 방식이 런타임 가드 커버리지, 시간당 테스트 횟수의 두가지 척도에서 기존의 방식보다 뛰어남을 보인다.

구성가능한 소프트웨어 제품라인 시험에서 코드 커버리지 측정 (Code Coverage Measurement in Configurable Software Product Line Testing)

  • 한수빈;이지현;고서연
    • 정보처리학회논문지:소프트웨어 및 데이터공학
    • /
    • 제11권7호
    • /
    • pp.273-282
    • /
    • 2022
  • 구성가능한 소프트웨어 제품라인 시험은 모든 멤버제품들에 포함되는 공통 부분과 일부 또는 단일 제품에 포함되는 가변 부분을 고려해야 하기 때문에 단일 제품 시험 방법들을 그대로 적용하기 어렵다. 소프트웨어 시스템 시험에서 시험 커버리지는 수행된 시험의 적절성을 측정하는 척도이다. 구성가능한 소프트웨어 제품라인으로부터 생성될 수 있는 멤버제품들은 수백 개에 이를 수 있기 때문에 시험 커버리지 측정은 소프트웨어 제품라인 수준에서 시험의 적절성을 평가하기 위해 중요하다. 이 논문은 구성가능한 소프트웨어 제품라인 시험에서 제품라인 수준의 코드 커버리지 측정 방법을 제안한다. 제안한 방법은 피처 집합의 포함 관계를 기준으로 제품들을 계층화한 후 제품라인의 멤버제품들을 시험하고, 시험으로부터 얻어진 각 제품의 시험 커버리지들을 종합하여 SPL 시험 커버리지를 정량화한다. 제안한 방법을 11개의 구성가능한 소프트웨어 제품라인 사례에 적용하여 검증한 결과, 제안한 방법은 SPL 시험이 얼마나 철저하게 수행되었는지를 정량적으로 기술하여 SPL 시험의 적정성을 확인할 수 있도록 도왔다. 또한, 새로 추가된 SPL 멤버제품의 시험이 이전 멤버제품 시험 대비 커버리지를 증가시키는 방향인지 확인할 수 있어 새로운 시험케이스들이 멤버제품들 간의 차이를 커버하는 방향으로 시험이 이루어지고 있는지 확인할 수 있었다.

라이브러리 퍼징의 커버리지 향상 방법 연구 (A Study of Coverage Improvement for Library Fuzzing)

  • 김서영;조민기;김종신;권태경
    • 정보보호학회논문지
    • /
    • 제30권6호
    • /
    • pp.1079-1085
    • /
    • 2020
  • 라이브러리 구현의 결함을 발견하기 위해 동적 분석 방법인 퍼징(fuzzing)이 사용되고 있다. 라이브러리 대상 퍼징은 구현된 함수만 테스트를 할 수 있으므로 더 높은 코드 커버리지를 달성하기 위해서는 구현되지 않은 함수들을 추가로 구현해주어야 한다. 하지만 라이브러리 함수들의 호출 관계를 고려하지 않고 함수를 추가하면 이미 테스트를 수행한 함수가 추가되는 문제가 발생할 수 있다. 본 논문에서는 라이브러리 퍼징의 코드 커버리지 성능을 향상시키기 위한 개선 방법을 제안한다. 먼저, 라이브러리 퍼징의 대상 함수를 효율적으로 추가하기 위해 라이브러리의 함수 호출 그래프 분석하고 구현되지 않은 라이브러리 함수를 추가 구현한다. 그리고 라이브러리의 해결하기 어려운 제약조건을 가진 분기를 탐색하는 방법으로 하이브리드 퍼징을 적용한다. OpenSSL, mbedTLS, Crypto++을 대상으로 실험한 결과, 제안한 방법이 코드 커버리지를 증가에 효과적인 것을 확인하였다.

테스트 프레임워크를 활용한 라이브러리 퍼징 환경 구축 자동화 (Automated Building Fuzzing Environment Using Test Framework)

  • 류민수;김동영;전상훈;김휘강
    • 정보보호학회논문지
    • /
    • 제31권4호
    • /
    • pp.587-604
    • /
    • 2021
  • 라이브러리는 독립적으로 실행되지 않고 많은 응용 프로그램에서 사용되므로, 라이브러리의 취약점을 사전에 탐지하는 것은 중요하다. 라이브러리 취약점을 탐지하기 위해 동적 분석 방법인 퍼징이 사용되고 있다. 퍼징 기술은 코드 커버리지 및 크래시 발생 횟수 측면에서 개선된 결과를 보여주지만, 그 효과를 라이브러리 퍼징에 적용하기는 쉽지 않다. 특히, 라이브러리의 다양한 상태를 재현하려면 특정 함수 시퀀스를 호출하고 퍼저의 입력을 전달하여 라이브러리 코드를 실행하는 퍼징 대상 파일과 시드 코퍼스가 필요하다. 그러나 퍼징 환경(시드 코퍼스, 퍼징 대상 파일)을 준비하는 것은 라이브러리에 대한 이해와 퍼징에 대한 이해가 동시에 필요한 어려운 일이다. 이에, 본 논문에서는 테스트 프레임워크를 활용하여 라이브러리 퍼징의 용이성을 확보하고, 코드 커버리지와 크래시 탐지 성능을 향상하기 위한 개선 방법을 제안한다. 본 논문에서 제안한 시스템은 9개의 오픈 소스 라이브러리에 적용하여 기존 연구들과 비교를 통한 개선 효과를 검증하였다. 실험 결과 코드 커버리지 31.2%, 크래시 탐지 기준 58.7%의 개선효과를 확인하였고, 3개의 알려지지 않는 취약점을 탐지하였다.

실행가능 목적 코드를 기반으로 하는 자동 테스트 데이터 생성 (Automated Test Data Generation based on Executable Object Codes)

  • 정인상
    • 한국인터넷방송통신학회논문지
    • /
    • 제12권2호
    • /
    • pp.189-197
    • /
    • 2012
  • 고수준의 명세나 고수준의 프로그래밍 언어로 작성된 원시 코드를 이용하여 테스트 데이터를 생성하는 것이 일반적이다. 그러나 어떤 상황에서는 이러한 테스트 데이터 생성 정보가 항상 이용가능하지 않을 수 있다. 이 논문에서는 실행가능 목적코드를 바탕으로 테스트 데이터를 생성하는 방법을 제안한다. 제안된 방법은 정교한 목적 코드 분석을 필요로 하지 않은 매우 간단한 함수 최소화 기법을 사용하여 동적으로 테스트 데이터를 생성한다. 삼각형 분류 프로그램에 대한 실험을 통하여 분기 커버리지를 매우 효과적으로 달성함을 보인다.

FPGA기반 원전용 제어기 코드커버리지 개선 (Improving Code Coverage for the FPGA Based Nuclear Power Plant Controller)

  • 허형석;오승록;김규철
    • 전기전자학회논문지
    • /
    • 제18권3호
    • /
    • pp.305-312
    • /
    • 2014
  • 기존의 Verilog테스트벤치로 원전용 안정등급 제어기기와 같이 복잡하고 높은 신뢰도를 요구하는 모듈의 테스트는 수작업으로만 수행된 결과를 가지고 RTL단계의 검증을 마무리하기에는 현실적으로 많은 시간과 노력이 필요하다. UVM은 기존의 테스트벤치의 한계점을 보완하는 계층적 테스트벤치의 구조를 갖고 있어 DUT의 검증을 위한 테스트개선에 대해 테스트벤치의 수정을 간편하게 할 수 있다. 비록 구축과정이 다소 복잡하긴 하지만 테스트 벤치의 컴포넌트들인 driver나 sequence 등을 사용함으로 constraint random test를 가능하게 하여 test vector 작성을 편리하게 한다. 본 논문에서는 기존의 테스트벤치와 계층적 테스트벤치인 UVM테스트벤치를 사용하여 실제 시뮬레이션 하고 커버리지를 분석하여 코드커버리지를 간편하게 향상 할 수 있음을 보였다.

사물 인터넷 환경을 위한 BitTorrent 알고리즘 기반의 테스트 커버리지 측정기법 (A Method of Test Coverage Measurement Based on BitTorrent for Internet of Things Environment)

  • 류호동;이우진
    • 정보처리학회논문지:컴퓨터 및 통신 시스템
    • /
    • 제3권10호
    • /
    • pp.365-370
    • /
    • 2014
  • 사물 인터넷(Internet of Things : IoT) 환경이 이미 네트워크기반의 서비스 분야에서 가장 대표적인 패러다임이 되었음에도 불구하고, 인간과 사물 및 환경이 서로 제약 없이 연결되는 특성으로 인하여 해당 환경에 특화된 테스트 기법은 여전히 많은 연구가 필요한 상황이다. 에뮬레이터 기반에서 테스트 대상 장치를 구동하는 대부분의 기존 방식은 IoT와 같이 그 연결이 다양해지고 장치의 구분이 불분명해질수록 실제 환경과의 격차가 커져 결론적으로 부정확한 테스트 결과가 산출될 가능성이 높다. 본 논문에서는 이러한 문제를 개선하고자 각각의 장치들의 오버헤드를 최소화함과 동시에 대상 코드의 특정 부분이 중복적으로 테스트되지 않는 특징을 가진 BitTorrent기반의 테스트 커버리지 측정 기법을 제안한다.

TDD를 위한 개선된 테스트 프레임워크 설계 (A Design of Improved Test-Framework for TDD)

  • 손병길;류호연;박재흥
    • 한국정보과학회:학술대회논문집
    • /
    • 한국정보과학회 2004년도 봄 학술발표논문집 Vol.31 No.1 (B)
    • /
    • pp.469-471
    • /
    • 2004
  • TDD는 테스트를 기반으로 하는 점진적인 소프트웨어 개발 방법으로, 리팩토링 과정을 통해 정제된 디자인을 얻을 수 있다. TDD에서는 개발에 사용되는 프로그램 언어를 지원하는 테스트 프레임워크를 사용하며 리팩토링 브라우저, 테스트 테스터, 테스트 커버리지 등의 도구들이 개발에 사용된다 본 논문에서 제안하는 pytodo는 Too의 to-do list틀 트리구조인 to-do tree로 작성하고, 이를 테스트 코드 관리 테스트 코드에 대한 테스트에 활용하는 것을 목적으로 한다.

  • PDF

ZeusBot의 네트워크 발현율 향상을 위한 가상네트워크 활용 방안 (Utilization of a virtual network for increasing network activities of ZeusBot)

  • 김광준;김연경;이만희
    • 한국정보처리학회:학술대회논문집
    • /
    • 한국정보처리학회 2016년도 춘계학술발표대회
    • /
    • pp.311-314
    • /
    • 2016
  • 본 논문에서는 가상네트워크를 활용하여 네트워크를 통해 악성행위를 하는 악성코드에 대한 동적 분석 결과 중 네트워크 발현율을 보다 향상시키고자 한다. 제우스 봇(Zeus Bot)의 특징과 네트워크 행위에 대하여 이해하고 봇(Bot)이 원하는 응답패킷(Response Packet)을 가상네트워크를 통해 제공함으로써 일반 동적 분석시 발현되지 않는 악성 행위를 발현시키고 네트워크 발현율을 보다 향상시킨다. 최종적으로 코드 커버리지(Code Coverage)를 넓혀 악성코드 유무를 판단, 예방 및 치료 대책을 마련에 기여한다.