KR102496332B1 - 고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법 - Google Patents

고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법 Download PDF

Info

Publication number
KR102496332B1
KR102496332B1 KR1020200175126A KR20200175126A KR102496332B1 KR 102496332 B1 KR102496332 B1 KR 102496332B1 KR 1020200175126 A KR1020200175126 A KR 1020200175126A KR 20200175126 A KR20200175126 A KR 20200175126A KR 102496332 B1 KR102496332 B1 KR 102496332B1
Authority
KR
South Korea
Prior art keywords
mutations
order
primary
suspicion
scores
Prior art date
Application number
KR1020200175126A
Other languages
English (en)
Other versions
KR20220085228A (ko
Inventor
백종문
장종인
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020200175126A priority Critical patent/KR102496332B1/ko
Publication of KR20220085228A publication Critical patent/KR20220085228A/ko
Application granted granted Critical
Publication of KR102496332B1 publication Critical patent/KR102496332B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

다양한 실시예들은 고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법에 관한 것으로, 대상 소프트웨어에 대해 복수의 일차 돌연변이들을 생성하고, 일차 돌연변이들을 기반으로, 일차 돌연변이들 보다 적은 수의 고차 돌연변이들을 생성하고, 고차 돌연변이들을 이용하여, 대상 소프트웨어 내의 결함 위치를 추정하도록 구성될 수 있다.

Description

고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법{COMPUTER SYSTEM FOR HIGHER-ORDER MUTANT-BASED FAULT LOCALIZATION AND METHOD THEREOF}
다양한 실시예들은 고차 돌연변이(higher-order mutant)를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법에 관한 것이다.
소프트웨어 결함 위치 추정은 소프트웨어를 디버깅하는 과정에서 소프트웨어 내의 결함의 구체적인 위치를 추정하여 개발자가 적은 비용으로 그 결함을 제거하고 소프트웨어의 품질을 높일 수 있도록 하는 중요한 기술이다. 소프트웨어 내의 결함의 위치를 추정하기 위한 기술들 중 돌연변이 기반 결함 위치 추정(mutation-based fault localization, 이하 MBFL) 기술은 기존에 널리 연구되고 사용된 스펙트럼 기반 결함 위치 추정(spectrum-based fault localization) 기술보다 더 세밀하고 정확한 위치 추정을 할 수 있다. 이러한 MBFL 기술의 높은 효과성에도 불구하고 소프트웨어 돌연변이 분석에 소모되는 높은 비용으로 인해 MBFL 기술이 실제 소프트웨어 개발 시장에서 활발히 사용되는 데에는 어려움이 있다.
다양한 실시예들은, 고차 돌연변이(higher-order mutant; HOM) 분석의 개념을 MBFL 기술에 적용하여 기술의 높은 비용을 절감한다. HOM 분석은 최근 활발히 연구되고 있는 돌연변이 분석 비용 절감 방법이다.
다양한 실시예들에 따른 컴퓨터 시스템에 의한 방법은, 대상 소프트웨어에 대해 복수의 일차(first-order) 돌연변이(mutant)들을 생성하는 단계, 상기 복수의 일차 돌연변이들을 기반으로, 상기 복수의 일차 돌연변이들 보다 적은 수의 고차(higher-order) 돌연변이들을 생성하는 단계, 및 상기 고차 돌연변이들을 이용하여, 상기 대상 소프트웨어 내의 결함 위치를 추정하는 단계를 포함할 수 있다.
다양한 실시예들에 따른 컴퓨터 시스템은, 메모리, 및 상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서를 포함하고, 상기 프로세서는, 대상 소프트웨어에 대해 복수의 일차 돌연변이들을 생성하고, 상기 복수의 일차 돌연변이들을 기반으로, 상기 복수의 일차 돌연변이들 보다 적은 수의 고차 돌연변이들을 생성하고, 상기 고차 돌연변이들을 이용하여, 상기 대상 소프트웨어 내의 결함 위치를 추정하도록 구성
다양한 실시예들에 따른 비-일시적인 컴퓨터-판독 가능 저장 매체는, 대상 소프트웨어에 대해 복수의 일차 돌연변이들을 생성하는 단계, 상기 복수의 일차 돌연변이들을 기반으로, 상기 복수의 일차 돌연변이들 보다 적은 수의 고차 돌연변이들을 생성하는 단계, 및 상기 고차 돌연변이들을 이용하여, 상기 대상 소프트웨어 내의 결함 위치를 추정하는 단계를 실행하기 위한 하나 이상의 프로그램들을 저장할 수 있다.
다양한 실시예들에 따르면, 테스트 대상 소프트웨어의 많은 수의 돌연변이들을 적은 수의 고차 돌연변이로 결합하여 MBFL 기술에 소모되는 비용을 절감한다. 비용 절감의 수준은 기존 MBFL 기술의 소모 비용 대비 2차 돌연변이를 사용했을 때 절반, 3차 돌연변이를 사용했을 때 3분의 1 등, n차 돌연변이를 사용했을 때 n분의 1의 비용만 필요로 한다. 다양한 실시예들은 기존에 존재하던 MBFL 기술의 비용 절감 기법들에 비해 다음의 세 가지 주요 이점을 가진다. 첫 번째로, 전체 돌연변이 연산자 집합을 사용하여 생성된 돌연변이의 다양성을 유지하고, 두 번째로, 비용 절감을 위해 위치 추정 정확도의 하락을 야기할 수 있는 돌연변이 무작위 폐기를 수행하지 않으며, 세 번째로, 동등한 돌연변이(equivalent mutant)가 생성되는 비율을 크게 감소시킨다.
도 1은 다양한 실시예들에 따른 컴퓨터 시스템을 도시하는 도면이다.
도 2는 도 1의 프로세서의 세부 구성을 설명하기 위한 도면이다.
도 3 다양한 실시예들에 따른 컴퓨터 시스템에 의한 방법을 도시하는 도면이다.
도 4는 도 3의 고차 돌연변이들을 생성하는 단계를 보다 상세하게 도시하는 도면이다.
도 5는 도 3의 결함 위치를 추정하는 단계를 보다 상세하게 도시하는 도면이다.
도 6 및 도 7은 다양한 실시예들에 따른 컴퓨터 시스템의 동작 특징을 예시적으로 설명하기 위한 도면들이다.
이하, 본 문서의 다양한 실시예들이 첨부된 도면을 참조하여 설명된다.
다양한 실시예들에 따르면, 돌연변이(mutant)는 대상 프로그램의 스테이트먼트들에 특정한 변화(mutation)을 가함으로써 생성되며, 인위적으로 결함이 삽입된 결과물을 나타낼 수 있다. 일차 돌연변이는 각 스테이트먼트에 하나의 변화가 가해진 결과물을 나타낼 수 있다. 고차(n차) 돌연변이는 복수(n 개)의 스테이트먼트들에 복수(n 개)의 변화들이 가해진 결과물을 나타낼 수 있다. 2차 돌연변이는 두 개의 스테이트먼트들에 두 개의 변화들이 가해진 결과물을 나타내고, 이는 두 개의 일차 돌연변이들의 스테이트먼트들에 그들의 변화들이 가해진 결과물을 나타낼 것이다. 3차 돌연변이는 세 개의 스테이트먼트들에 세 개의 변화들이 가해진 결과물을 나타내고, 이는 세 개의 일차 돌연변이들의 스테이트먼트들에 그들의 변화들이 가해진 결과물, 또는 하나의 이차 돌연변이와 하나의 일차 돌연변이의 스테이트먼트들에 그들의 변화들이 가해진 결과물을 나타낼 수 있다. 이러한 방식으로, n차 돌연변이는 n 개의 일차 돌연변이들의 스테이트먼트들에 그들의 n 개의 변화들이 가해진 결과물, 또는 하나의 (n-1)차 돌연변이와 하나의 일차 돌연변이의 스테이트먼트들에 그들의 n 개의 변화들이 가해진 결과물을 나타낼 수 있다.
도 1은 다양한 실시예들에 따른 컴퓨터 시스템(100)을 도시하는 도면이다. 도 2는 도 1의 프로세서(130)의 세부 구성을 설명하기 위한 도면이다.
도 1을 참조하면, 다양한 실시예들에 따른 컴퓨터 시스템(100)은 인터페이스 모듈(110), 메모리(120), 또는 프로세서(130) 중 적어도 하나를 포함할 수 있다. 어떤 실시예들에서, 컴퓨터 시스템(100)의 구성 요소들 중 적어도 어느 하나가 생략될 수 있으며, 적어도 하나의 다른 구성 요소가 추가될 수 있다. 어떤 실시예들에서, 컴퓨터 시스템(100)의 구성 요소들 중 적어도 어느 두 개가 하나의 통합된 회로로 구현될 수 있다.
인터페이스 모듈(110)은 컴퓨터 시스템(100)을 위한 인터페이스를 제공할 수 있다. 일 실시예에 따르면, 인터페이스 모듈(110)은 통신 모듈을 포함하며, 통신 모듈은 외부 장치와 통신을 수행할 수 있다. 통신 모듈은 컴퓨터 시스템(100)과 외부 장치 간 통신 채널을 수립하고, 통신 채널을 통해 외부 장치와 통신을 수행할 수 있다. 통신 모듈은 유선 통신 모듈 또는 무선 통신 모듈 중 적어도 하나를 포함할 수 있다. 유선 통신 모듈은 외부 장치와 유선으로 연결되어, 유선으로 통신할 수 있다. 무선 통신 모듈은 근거리 통신 모듈 또는 원거리 통신 모듈 중 적어도 어느 하나를 포함할 수 있다. 근거리 통신 모듈은 외부 장치와 근거리 통신 방식으로 통신할 수 있다. 원거리 통신 모듈은 외부 장치와 원거리 통신 방식으로 통신할 수 있다. 여기서, 원거리 통신 모듈은 무선 네트워크를 통해 외부 장치와 통신할 수 있다. 다른 실시예에 따르면, 인터페이스 모듈(110)은 입력 모듈 또는 출력 모듈 중 적어도 하나를 포함할 수 있다. 입력 모듈은 컴퓨터 시스템(100)의 적어도 하나의 구성 요소에 사용될 신호를 입력할 수 있다. 입력 모듈은, 사용자가 컴퓨터 시스템(100)에 직접적으로 신호를 입력하도록 구성되는 입력 장치, 주변 환경을 감지하여 신호를 발생하도록 구성되는 센서 장치, 또는 영상을 촬영하여, 영상 데이터를 생성하도록 구성되는 카메라 모듈 중 적어도 어느 하나를 포함할 수 있다. 출력 모듈은 정보를 시각적으로 표시하기 위한 표시 모듈 또는 정보를 오디오 신호로 출력하기 위한 오디오 모듈 중 적어도 하나를 포함할 수 있다.
메모리(120)는 컴퓨터 시스템(100)의 적어도 하나의 구성 요소에 의해 사용되는 다양한 데이터를 저장할 수 있다. 예를 들면, 메모리(120)는 휘발성 메모리 또는 비휘발성 메모리 중 적어도 어느 하나를 포함할 수 있다. 데이터는 적어도 하나의 프로그램 및 이와 관련된 입력 데이터 또는 출력 데이터를 포함할 수 있다. 프로그램은 메모리(120)에 적어도 하나의 명령을 포함하는 소프트웨어로서 저장될 수 있다.
프로세서(130)는 메모리(120)의 프로그램을 실행하여, 컴퓨터 시스템(100)의 적어도 하나의 구성 요소를 제어할 수 있다. 이를 통해, 프로세서(130)는 데이터 처리 또는 연산을 수행할 수 있다. 이 때, 프로세서(130)는 메모리(120)에 저장된 명령을 실행할 수 있다. 어떤 실시예들에서, 프로세서(130)는, 도 2에 도시된 바와 같이 일차 생성부(131), 고차 생성부(133), 킬(kill) 구성부(135), 제 1 의심 계산부(137) 및 제 2 의심 계산부(139)를 포함할 수 있다.
일차 생성부(131)는 대상 소프트웨어(200)에 대해 복수의 일차 돌연변이(210)들을 생성할 수 있다. 고차 생성부(133)는 일차 돌연변이(210)들을 기반으로, 고차(n차) 돌연변이(220)들을 생성할 수 있다. 이를 통해, 고차 돌연변이(220)들의 개수가 일차 돌연변이(210)들의 개수 보다 적을 수 있다. 예를 들면, 고차 생성부(133)는 두 개의 일차 돌연변이(210)들을 결합함으로써, 이차 돌연변이들을 생성하고, 이러한 방식으로, 고차 돌연변이(220)들을 생성할 수 있다. 즉 고차 돌연변이(220)들의 각각은 복수(n 개)의 스테이트먼트들에 복수(n 개)의 변화들이 가해진 결과물을 나타낼 수 있다. n차 돌연변이는 n 개의 일차 돌연변이들의 스테이트먼트들에 그들의 n 개의 변화들이 가해진 결과물, 또는 하나의 (n-1)차 돌연변이와 하나의 일차 돌연변이의 스테이트먼트들에 그들의 n 개의 변화들이 가해진 결과물을 나타낼 수 있다. 여기서, 이차 돌연변이들의 개수는 일차 돌연변이(210)들의 개수의 1/2이고, 삼차 돌연변이들의 개수는 일차 돌연변이(210)들의 개수의 1/3이며, 이러한 방식으로, 고차 돌연변이(220)들의 개수는 일차 돌연변이(210)들의 개수의 1/n일 수 있다.
프로세서(130)는 고차 돌연변이(220)들을 이용하여, 대상 소프트웨어(200) 내의 결함 위치(260)를 추정할 수 있다. 킬 구성부(135)는 미리 정해진 테스트 케이스(test case)의 대상 소프트웨어(200)에 대한 실행 결과와 고차 돌연변이(220)들의 각각에 대한 실행 결과를 기반으로, 고차 돌연변이(220)들의 킬 매트릭스(230)를 구성할 수 있다. 킬 구성부(135)는 대상 소프트웨어(200)에 대한 실행 결과와 고차 돌연변이(220)들의 각각에 대한 실행 결과의 동일 여부에 따라, 킬 매트릭스(230)를 구성할 수 있다. 제 1 의심 계산부(137)는 킬 매트릭스(230)를 이용하여, 고차 돌연변이(220)들에 대한 제 1 의심 점수(suspiciousness score)(240)들을 각각 계산할 수 있다. 제 2 의심 계산부(139)는 제 1 의심 점수(240)들을 기반으로, 대상 소프트웨어(200)의 스테이트먼트(statement)들에 대한 제 2 의심 점수(250)들을 각각 계산할 수 있다. 이를 통해, 프로세서(130)는 제 2 의심 점수(250)들을 기반으로, 가장 높은 제 2 의심 점수(250)를 갖는 스테이트먼트를 결함 위치(260)로 추정할 수 있다.
도 3 다양한 실시예들에 따른 컴퓨터 시스템(100)에 의한 방법을 도시하는 도면이다. 도 6 및 도 7은 다양한 실시예들에 따른 컴퓨터 시스템(100)의 동작 특징을 예시적으로 설명하기 위한 도면들이다.
도 3을 참조하면, 컴퓨터 시스템(100)은 310 단계에서 대상 소프트웨어(200)에 대해 복수의 일차 돌연변이(210)들을 생성할 수 있다. 이 때 대상 소프트웨어(200)는 복수의 스테이트먼트들을 포함할 수 있다. 여기서, 대상 소프트웨어(200) 내에서 스테이트먼트들 중 적어도 하나에 결함이 발생될 수 있다. 이러한 경우, 대상 소프트웨어(200)의 스테이트먼트들로부터 결함 위치를 검출하기 위해, 프로세서(130)는 스테이트먼트들의 각각에 변화(mutation)을 가하여, 일차 돌연변이(210)들을 생성할 수 있다.
예를 들면, 대상 소프트웨어(200)는, 도 6에 도시된 바와 같이 6 개의 스테이트먼트들(s1, s2, s3, s4, s5, s6)을 포함하고, 스테이트먼트들(s1, s2, s3, s4, s5, s6) 중 적어도 하나에 결함이 발생되면, 다수의 테스트 케이스들(TC1, TC2, TC3, TC4, TC5) 중 적어도 하나가 실패될 수 있다. 이러한 경우, 프로세서(130)는, 도 7에 도시된 바와 같이 12 개의 일차 돌연변이(210)들(F1.1, F1.2, F2.1, F2.2, F3.1, F3.2, F4.1, F4.2, F5.1, F5.2, F6.1, F6.2)을 생성할 수 있다.
컴퓨터 시스템(100)은 320 단계에서 일차 돌연변이(210)들을 기반으로, 고차(n차) 돌연변이(220)들을 생성할 수 있다. 프로세서(130)는 일차 돌연변이(210)들을 결합하여, 고차 돌연변이(220)들을 생성할 수 있다. 이를 통해, 고차 돌연변이(220)들의 개수가 일차 돌연변이(210)들의 개수 보다 적을 수 있다. 이에 대해, 도 4를 참조하여, 보다 상세하게 후술될 것이다.
도 4는 도 3의 고차 돌연변이들을 생성하는 단계(320 단계)를 보다 상세하게 도시하는 도면이다.
도 4를 참조하면, 컴퓨터 시스템(100)은 421 단계에서 현재 차수(n)를 결정할 수 있다. 즉, 일차 돌연변이(210)들이 생성된 후에, 프로세서(130)는 현재 차수(n)를 결정할 수 있다.
다음으로, 컴퓨터 시스템(100)은 423 단계에서 일차 돌연변이들을 결합하여, 현재 차수(n)의 돌연변이들을 생성할 수 있다. 이 때 프로세서(130)는 n 개의 일차 돌연변이들을 결합하여, 각 n차 돌연변이를 생성할 수 있다. 또는, 프로세서(130)는 하나의 (n-1)차 돌연변이에 하나의 일차 돌연변이를 결합하여, 각 n차 돌연변이를 생성할 수 있다. 여기서, 현재 차수(n)가 2이면, 프로세서(130)는 두 개의 일차 돌연변이(210)들을 결합하여, 각 이차 돌연변이를 생성할 수 있다. 한편, 현재 차수(n)가 5이면, 프로세서(130)는 다섯 개의 일차 돌연변이(210)들을 결합하거나, 하나의 사차 돌연변이에 하나의 일차 돌연변이(210)을 겹합하여, 각 5차 돌연변이를 생성할 수 있다. 여기서, 이차 돌연변이들의 개수는 일차 돌연변이(210)들의 개수의 1/2이고, 삼차 돌연변이들의 개수는 일차 돌연변이(210)들의 개수의 1/3이며, 이러한 방식으로, 고차 돌연변이(220)들의 개수는 일차 돌연변이(210)들의 개수의 1/n일 수 있다.
예를 들면, 12 개의 일차 돌연변이(210)들(F1.1, F1.2, F2.1, F2.2, F3.1, F3.2, F4.1, F4.2, F5.1, F5.2, F6.1, F6.2)을 기반으로, 프로세서(130)는, 도 7에 도시된 바와 같이 6 개의 고차 돌연변이(220)들(H1, H2, H3, H4, H5, H6)을 생성할 수 있다. 이 때 각 고차 돌연변이(220)(H1, H2, H3, H4, H5, H6)는 두 개의 일차 돌연변이(210)들(F1.1 + F6.2, F1.2 + F5.2, F2.1 + F6.1, F2.2 + F5.1, F3.1 + F4.2, F3.2 + F4.1)로부터 생성되며, 일차 돌연변이(210)들(F1.1, F1.2, F2.1, F2.2, F3.1, F3.2, F4.1, F4.2, F5.1, F5.2, F6.1, F6.2)의 각각은 대상 소프트웨어(200)의 스테이트먼트들(s1, s2, s3, s4, s5, s6)의 각각으로부터 생성된 것일 수 있다.
다시 도 3을 참조하면, 컴퓨터 시스템(100)은 330 단계에서 고차 돌연변이(220)들을 이용하여, 대상 소프트웨어(200) 내의 결함 위치(260)를 추정할 수 있다. 프로세서(130)는 대상 소프트웨어(20) 내에서 스테이트먼트들 중 적어도 하나를 결합 위치(260)로 추정할 수 있다. 이에 대해, 도 5를 참조하여, 보다 상세하게 후술될 것이다.
도 5는 도 3의 결함 위치를 추정하는 단계(330 단계)를 보다 상세하게 도시하는 도면이다.
도 5를 참조하면, 컴퓨터 시스템(100)은 531 단계에서 고차 돌연변이(220)들의 각각에 대한 미리 정해진 테스트 케이스의 실행 결과를 기반으로, 고차 돌연변이(220)들의 킬 매트릭스(230)를 구성할 수 있다. 프로세서(130)는 고차 돌연변이(220)들의 각각에 대해, 다수의 테스트 케이스들을 개별적으로 실행할 수 있다. 그리고, 프로세서(130)는 대상 소프트웨어(200)에 대한 테스트 케이스들의 실행 결과와 고차 돌연변이(220)들의 각각에 대한 테스트 케이스들의 실행 결과의 동일 여부에 따라, 킬 매트릭스(230)를 구성할 수 있다. 이 때 고차 돌연변이(220)들 중 어느 하나에 대해 실행 결과들이 상이하면, 프로세서(130)는 킬 매트릭스(230)에서 해당 고차 돌연변이(220)에 대해 킬(kill)을 결정할 수 있다. 한편, 고차 돌연변이(220)들 중 어느 하나에 대해 실행 결과들이 동일하면, 프로세서(130)는 킬 매트릭스(230)에서 해당 고차 돌연변이(220)에 대해 얼라이브(alive)를 결정할 수 있다.
예를 들면, 도 6에 도시된 바와 같이 대상 소프트웨어(200)에 대한 테스트 케이스들(TC1, TC2, TC3, TC4, TC5)의 실행 결과가 정의되어 있을 때, 프로세서(130)는 고차 돌연변이(220)들(H1, H2, H3, H4, H5, H6)에 대한 테스트 케이스들(TC1, TC2, TC3, TC4, TC5)의 실행 결과에 따라, 도 7에 도시된 바와 같이 킬 매트릭스(230)를 구성할 수 있다. 이 때 테스트 케이스들(TC1, TC2, TC3, TC4, TC5) 중 하나에 있어서, 대상 소프트웨어(200)에 대한 실행 결과와 고차 돌연변이(220)들(H1, H2, H3, H4, H5, H6) 중 하나에 대한 실행 결과가 상이하면, 프로세서(130)는 해당 테스트 케이스(TC1, TC2, TC3, TC4, TC5)와 해당 고차 돌연변이(220)(H1, H2, H3, H4, H5, H6) 에 대응하여, 킬(kill)을 결정할 수 있다. 한편, 테스트 케이스들(TC1, TC2, TC3, TC4, TC5) 중 하나에 있어서, 대상 소프트웨어(200)에 대한 실행 결과와 고차 돌연변이(220)들(H1, H2, H3, H4, H5, H6) 중 하나에 대한 실행 결과가 동일하면, 프로세서(130)는 해당 테스트 케이스(TC1, TC2, TC3, TC4, TC5)와 해당 고차 돌연변이(220)(H1, H2, H3, H4, H5, H6) 에 대응하여, 얼라이브(alive)를 결정할 수 있다.
컴퓨터 시스템(100)은 533 단계에서 킬 매트릭스(230)를 이용하여, 고차 돌연변이(220)들에 대한 제 1 의심 점수(240)들을 각각 계산할 수 있다. 프로세서(130)는 미리 정해진 수학식을 기반으로, 킬 매트릭스(230)를 이용하여, 고차 돌연변이(220)들에 대한 제 1 의심 점수(240)들을 각각 계산할 수 있다. 예를 들면, 프로세서(130)는 하기 [수학식 1], [수학식 2], [수학식 3], [수학식 4], [수학식 5] 또는 [수학식 6] 중 하나를 이용하여, 킬 매트릭스(230)를 이용하여, 고차 돌연변이(220)들에 대한 제 1 의심 점수(240)들을 각각 계산할 수 있다.
Figure 112020135955408-pat00001
Figure 112020135955408-pat00002
Figure 112020135955408-pat00003
Figure 112020135955408-pat00004
Figure 112020135955408-pat00005
Figure 112020135955408-pat00006
여기서, m은 각 고차 돌연변이(220)를 나타내고, Suspciousness(m)는 해당 고차 돌연변이(220)에 대한 제 1 의심 점수(230)를 나타내고, totalfailed는 대상 소프트웨어(200)에 대한 총 실패 수를 나타내고, failed(m)는 해당 고차 돌연변이(220)에 대한 킬 수를 나타내고, f2p는 대상 소프트웨어(200)에 대해 실패에서 고차 돌연변이(220)들의 각각에 대해 성공으로 변경되는 모든 경우의 수를 나타내고, total passed는 대상 소프트웨어(200)에 대한 총 성공 수를 나타내고, passed(m)은 해당 고차 돌연변이(220)에 대한 얼라이브 수를 나타내고, p2f는 대상 소프트웨어(200)에 대해 성공에서 고차 돌연변이(220)들의 각각에 대해 실패로 변경되는 모든 경우의 수를 나타낼 수 있다.
컴퓨터 시스템(100)은 535 단계에서 제 1 의심 점수(240)들을 기반으로, 대상 소프트웨어(200)의 스테이트먼트들에 대한 제 2 의심 점수(250)들을 각각 계산할 수 있다. 프로세서(130)는 제 1 의심 점수(240)들을 기반으로, 각 고차 돌연변이(220)를 구성하는 일차 돌연변이(210)들과 관련된 스테이트먼트들에 동일한 점수를 부여하여, 제 2 의심 점수(250)들을 각각 계산할 수 있다. 이 때 프로세서(130)는 각 스테이트먼트에 대해 부여되는 점수들의 평균을, 해당 스테이트먼트의 제 2 의심 점수(250)로 계산할 수 있다.
예를 들면, 도 7에 도시된 바와 같이 고차 돌연변이(220)들(H1, H2, H3, H4, H5, H6)에 대한 제 1 의심 점수(240)들이 계산되면, 프로세서(130)는 두 개의 고차 돌연변이(220)들((H1, H2), (H3, H4), (H5, H6), (H6, H5), (H4, H2), (H3, H1))에 대한 제 1 의심 점수(240)들의 평균을 계산할 수 있다. 그리고, 프로세서(130)는 두 개의 고차 돌연변이(220)들((H1, H2), (H3, H4), (H5, H6), (H6, H5), (H4, H2), (H3, H1))의 각각을 구성하는 일차 돌연변이(210)들(F1.1, F1.2, F2.1, F2.2, F3.1, F3.2, F4.1, F4.2, F5.1, F5.2, F6.1, F6.2)과 관련된 스테이트먼트들(s1, s2, s3, s4, s5, s6)에 해당 평균을 부여하여, 각 스테이트먼트(s1, s2, s3, s4, s5, s6)에 대해 제 2 의심 점수(250)를 계산할 수 있다.
컴퓨터 시스템(100)은 537 단계에서 제 2 의심 점수(250)들을 기반으로, 가장 높은 제 2 의심 점수(250)를 갖는 스테이트먼트를 결함 위치(260)로 추정할 수 있다. 프로세서(130)는 제 2 의심 점수(250)들을 기반으로, 대상 소프트웨어(200)의 스테이트먼트들에 순위를 부여할 수 있다. 이 때 프로세서(130)는 제 2 의심 점수(250)들이 높은 것에서 낮은 것 순으로, 스테이트먼트들에 순위를 부여할 수 있다. 이를 통해, 프로세서(130)는 가장 높은 제 2 의심 점수(250)를 갖는, 즉 가장 높은 순위의 스테이트먼트를 결함 위치(260)로 추정할 수 있다.
예를 들면, 프로세서(130)는, 도 7에 도시된 바와 같이 대상 소프트웨어(200)의 대상 소프트웨어(200)의 스테이트먼트들(s1, s2, s3, s4, s5, s6)에 순위를 부여할 수 있다. 그리고, 프로세서(130)는 가장 높은 제 2 의심 점수(250)를 갖는, 즉 가장 높은 순위의 스테이트먼트(s1)를 결함 위치(260)로 추정할 수 있다.
다양한 실시예들에 따르면, 테스트 대상 소프트웨어의 많은 수의 돌연변이들을 적은 수의 고차 돌연변이로 결합하여 MBFL 기술에 소모되는 비용을 절감한다. 비용 절감의 수준은 기존 MBFL 기술의 소모 비용 대비 2차 돌연변이를 사용했을 때 절반, 3차 돌연변이를 사용했을 때 3분의 1 등, n차 돌연변이를 사용했을 때 n분의 1의 비용만 필요로 한다. 다양한 실시예들은 기존에 존재하던 MBFL 기술의 비용 절감 기법들에 비해 다음의 세 가지 주요 이점을 가진다. 첫 번째로, 전체 돌연변이 연산자 집합을 사용하여 생성된 돌연변이의 다양성을 유지하고, 두 번째로, 비용 절감을 위해 위치 추정 정확도의 하락을 야기할 수 있는 돌연변이 무작위 폐기를 수행하지 않으며, 세 번째로, 동등한 돌연변이(equivalent mutant)가 생성되는 비율을 크게 감소시킨다.
다양한 실시예들에 따르면, 기존에 결함 위치 추정 기술을 적용하지 않았던 소프트웨어 개발 조직은 소프트웨어 품질 보증에 소모되는 비용을 획기적으로 줄일 수 있다. 가장 널리 연구되고 사용된 결함 위치 추정 기법 중 하나인 스펙트럼 기반 결함 위치 추정 기법을 사용하던 소프트웨어 개발 조직은 본 기술을 사용하여 기존의 블록(block) 단위의 세밀하지 않은 부정확한 결함 위치 추정 결과보다 더 세밀한 스테이트먼트 단위의 정확한 결함 위치 추정 결과를 얻을 수 있게 되어 소프트웨어 품질 보증 과정의 효율성을 높일 수 있다. 이를 통해, 소프트웨어 개발 전반에 소모되는 비용을 줄여 소프트웨어를 통한 투자 비용 대비 이익을 극대화할 수 있을 것으로 기대된다.
다양한 실시예들은 고차 돌연변이를 이용하여 돌연변이 기반 소프트웨어 결함 위치 추정의 비용을 절감하는 기술로 소프트웨어 개발이 포함되는 모든 분야에 적용될 수 있다. 기존의 돌연변이 기반 소프트웨어 결함 위치 추정 기법들이 높은 효과성에도 불구하고 비용 효율성이 낮아 실무에서 많이 활용되지 않은 것에 비해, 다양한 실시예들은 그 비용 효율성을 증대시킬 수 있는 기술로 소프트웨어 개발 실무에서 유용하게 사용될 수 있다. 소프트웨어 개발을 수행하는 모든 분야에서 소프트웨어 내의 결함을 제거하고 품질을 높이는 것은 시장 경쟁력과 고객 만족도 확보를 위해 필수적인 업무로, 해당 업무를 더욱 효율적으로 수행할 수 있도록 하는 본 기술의 적용 및 응용성은 대단히 높다.
현대 산업의 대부분의 시장에서 소프트웨어가 주도적인 역할을 하고 있다. 사용자에게 제공되는 웹 기반 인터페이스, 그 뒤에 존재하는 내부적인 알고리즘, 데이터 수집, 관리 및 활용 등 모든 단계의 서비스 제공에서 소프트웨어의 비중이 대단히 높다. 이에 따라 이들 소프트웨어의 품질을 보증하는 것이 곧 높은 품질의 서비스를 시장에 내놓을 수 있게 하는 원동력이다. 소프트웨어 품질 보증을 위한 가장 대표적인 활동은 소프트웨어 테스팅 및 디버깅이다. 개발자는 테스팅을 통해 소프트웨어 내의 결함의 존재를 확인하고 디버깅 과정을 통해 그 결함을 제거하여 소프트웨어의 품질을 높이게 된다. 소프트웨어 결함 위치 추정 기술은 이 테스팅과 디버깅 사이의 간극을 메우는 기술이다. 테스팅을 통해 존재를 확인한 결함을 디버깅 과정에서 제거하기 위해서는 해당 결함이 실제로 소프트웨어의 어느 위치에 존재하는지 파악하는 것이 필수적인데, 대부분의 상업적 소프트웨어가 십만에서 백만 단위의 줄의 코드로 이루어진 오늘날에는 이 단계가 가장 시간적, 인적 자원을 많이 소모하는 단계이다. 소프트웨어 결함 위치 추정 기술은 개발자가 수많은 코드를 일일히 살펴보는 것이 불가능한 상황에서 자동으로 결함이 있을 법한 소프트웨어의 부분을 추천해주어 살펴보아야 할 코드의 양을 크게 줄여주며, 이에 따라 품질 보증에 소모되는 비용도 줄어든다. 본 발명의 기술은 이러한 소프트웨어 결함 위치 추정 기술들 중 높은 정확도를 가졌지만 사용하는 데 필요한 비용이 너무 커 실무에서 활발하게 사용되지 못한 돌연변이 기반 소프트웨어 결함 위치 추정 기술에 고차 돌연변이 분석 기법을 적용하여 그 정확도는 유지하면서 비용을 크게 절감하는 기술로 시장성이 아주 높다.
다양한 실시예들에 따른 컴퓨터 시스템(100)의 방법은, 대상 소프트웨어(200)에 대해 복수의 일차 돌연변이(210)들을 생성하는 단계, 복수의 일차 돌연변이(210)들을 기반으로, 복수의 일차 돌연변이(210)들 보다 적은 수의 고차 돌연변이(220)들을 생성하는 단계, 및 고차 돌연변이(220)들을 이용하여, 대상 소프트웨어(200) 내의 결함 위치(260)를 추정할 수 있다.
다양한 실시예들에 따르면, 고차 돌연변이(220)들은, n 개의 일차 돌연변이들을 결합함으로써 각각 생성되는 n차 돌연변이들이고, 고차 돌연변이(220)들의 개수는, 복수의 일차 돌연변이(210)들의 개수의 1/n일 수 있다.
다양한 실시예들에 따르면, 고차 돌연변이(220)들은, 하나의 (n-1)차 돌연변이와 하나의 일차 돌연변이를 결합함으로써 각각 생성되는 n차 돌연변이들이고, 고차 돌연변이(220)들의 개수는, 복수의 일차 돌연변이(210)들의 개수의 1/n일 수 있다.
다양한 실시예들에 따르면, 결함 위치(260)를 추정하는 단계는, 미리 정해진 테스트 케이스의 대상 소프트웨어(200)에 대한 실행 결과와 고차 돌연변이(220)들의 각각에 대한 실행 결과를 비교하여, 고차 돌연변이(220)들의 킬 매트릭스(230)를 구성하는 단계, 킬 매트릭스(230)를 이용하여, 고차 돌연변이(220)들에 대한 제 1 의심 점수(240)들을 각각 계산하는 단계, 제 1 의심 점수(240)들을 기반으로, 대상 소프트웨어(200)의 스테이트먼트들에 대한 제 2 의심 점수(240)들을 각각 계산하는 단계, 및 제 2 의심 점수(250)들을 기반으로, 가장 높은 제 2 의심 점수(250)를 갖는 스테이트먼트를 결함 위치(260)로 추정하는 단계를 포함할 수 있다.
다양한 실시예들에 따르면, 제 2 의심 점수(250)들을 계산하는 단계는, 제 1 의심 점수(240)들을 기반으로, 각 고차 돌연변이(220)를 구성하는 일차 돌연변이(210)들과 관련된 스테이트먼트들에 동일한 점수를 부여하여, 제 2 의심 점수(240)들을 각각 계산할 수 있다.
다양한 실시예들에 따른 컴퓨터 시스템(100)은, 메모리(120), 및 메모리(120)와 연결되고, 메모리(120)에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서(130)를 포함할 수 있다.
다양한 실시예들에 따르면, 프로세서(130)는, 대상 소프트웨어(200)에 대해 복수의 일차 돌연변이(210)들을 생성하고, 복수의 일차 돌연변이(210)들을 기반으로, 복수의 일차 돌연변이(210)들 보다 적은 수의 고차 돌연변이(220)들을 생성하고, 고차 돌연변이(220)들을 이용하여, 대상 소프트웨어(200) 내의 결함 위치(260)를 추정하도록 구성될 수 있다.
다양한 실시예들에 따르면, 고차 돌연변이(220)들은, n 개의 일차 돌연변이들을 결합함으로써 각각 생성되는 n차 돌연변이들이고, 고차 돌연변이(220)들의 개수는, 복수의 일차 돌연변이(210)들의 개수의 1/n일 수 있다.
다양한 실시예들에 따르면, 고차 돌연변이(220)들은, 하나의 (n-1)차 돌연변이와 하나의 일차 돌연변이를 결합함으로써 각각 생성되는 n차 돌연변이들이고, 고차 돌연변이(220)들의 개수는, 복수의 일차 돌연변이(210)들의 개수의 1/n일 수 있다.
다양한 실시예들에 따르면, 프로세서(130)는, 미리 정해진 테스트 케이스의 대상 소프트웨어(200)에 대한 실행 결과와 고차 돌연변이(220)들의 각각에 대한 실행 결과를 비교하여, 고차 돌연변이(220)들의 킬 매트릭스(230)를 구성하고, 킬 매트릭스(230)를 이용하여, 고차 돌연변이(220)들에 대한 제 1 의심 점수(240)들을 각각 계산하고, 제 1 의심 점수(240)들을 기반으로, 대상 소프트웨어(200)의 스테이트먼트들에 대한 제 2 의심 점수(250)들을 각각 계산하고, 제 2 의심 점수(250)들을 기반으로, 가장 높은 제 2 의심 점수(250)를 갖는 스테이트먼트를 결함 위치(260)로 추정하도록 구성될 수 있다.
다양한 실시예들에 따르면, 프로세서(130)는, 제 1 의심 점수(240)들을 기반으로, 각 고차 돌연변이(220)를 구성하는 일차 돌연변이(210)들과 관련된 스테이트먼트들에 동일한 점수를 부여하여, 제 2 의심 점수(250)들을 각각 계산하도록 구성될 수 있다.
이상에서 설명된 장치는 하드웨어 구성 요소, 소프트웨어 구성 요소, 및/또는 하드웨어 구성 요소 및 소프트웨어 구성 요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성 요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성 요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
다양한 실시예들에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터-판독 가능 매체에 기록될 수 있다. 이 때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 그리고, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
본 문서의 다양한 실시예들 및 이에 사용된 용어들은 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 해당 실시 예의 다양한 변경, 균등물, 및/또는 대체물을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성 요소에 대해서는 유사한 참조 부호가 사용될 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 본 문서에서, "A 또는 B", "A 및/또는 B 중 적어도 하나", "A, B 또는 C" 또는 "A, B 및/또는 C 중 적어도 하나" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. "제 1", "제 2", "첫째" 또는 "둘째" 등의 표현들은 해당 구성 요소들을, 순서 또는 중요도에 상관없이 수식할 수 있고, 한 구성 요소를 다른 구성 요소와 구분하기 위해 사용될 뿐 해당 구성 요소들을 한정하지 않는다. 어떤(예: 제 1) 구성 요소가 다른(예: 제 2) 구성 요소에 "(기능적으로 또는 통신적으로) 연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 상기 어떤 구성 요소가 상기 다른 구성 요소에 직접적으로 연결되거나, 다른 구성 요소(예: 제 3 구성 요소)를 통하여 연결될 수 있다.
본 문서에서 사용된 용어 "모듈"은 하드웨어, 소프트웨어 또는 펌웨어로 구성된 유닛을 포함하며, 예를 들면, 로직, 논리 블록, 부품, 또는 회로 등의 용어와 상호 호환적으로 사용될 수 있다. 모듈은, 일체로 구성된 부품 또는 하나 또는 그 이상의 기능을 수행하는 최소 단위 또는 그 일부가 될 수 있다. 예를 들면, 모듈은 ASIC(application-specific integrated circuit)으로 구성될 수 있다.
다양한 실시예들에 따르면, 기술한 구성 요소들의 각각의 구성 요소(예: 모듈 또는 프로그램)는 단수 또는 복수의 개체를 포함할 수 있다. 다양한 실시예들에 따르면, 전술한 해당 구성 요소들 중 하나 이상의 구성 요소들 또는 단계들이 생략되거나, 또는 하나 이상의 다른 구성 요소들 또는 단계들이 추가될 수 있다. 대체적으로 또는 추가적으로, 복수의 구성 요소들(예: 모듈 또는 프로그램)은 하나의 구성 요소로 통합될 수 있다. 이런 경우, 통합된 구성 요소는 복수의 구성 요소들 각각의 구성 요소의 하나 이상의 기능들을 통합 이전에 복수의 구성 요소들 중 해당 구성 요소에 의해 수행되는 것과 동일 또는 유사하게 수행할 수 있다. 다양한 실시예들에 따르면, 모듈, 프로그램 또는 다른 구성 요소에 의해 수행되는 단계들은 순차적으로, 병렬적으로, 반복적으로, 또는 휴리스틱하게 실행되거나, 단계들 중 하나 이상이 다른 순서로 실행되거나, 생략되거나, 또는 하나 이상의 다른 단계들이 추가될 수 있다.

Claims (15)

  1. 컴퓨터 시스템의 방법에 있어서,
    대상 소프트웨어에 대해 복수의 일차(first-order) 돌연변이(mutant)들을 생성하는 단계;
    상기 복수의 일차 돌연변이들을 기반으로, 상기 복수의 일차 돌연변이들 보다 적은 수의 고차(higher-order) 돌연변이들을 생성하는 단계; 및
    상기 고차 돌연변이들을 이용하여, 상기 대상 소프트웨어 내의 결함 위치를 추정하는 단계
    를 포함하고,
    현재 차수가 3 이상인 고차 돌연변이는,
    하나의 이전 차수의 고차 돌연변이와 하나의 일차 돌연변이를 결합함으로써 생성되는,
    방법.
  2. 제 1 항에 있어서,
    현재 차수가 2인 고차 돌연변이는,
    두 개의 일차 돌연변이들을 결합함으로써 생성되는,
    방법.
  3. 제 1 항에 있어서,
    상기 고차 돌연변이들의 개수는,
    현재 차수가 n으로 정의될 때, 상기 복수의 일차 돌연변이들의 개수의 1/n인,
    방법.
  4. 제 1 항에 있어서,
    상기 결함 위치를 추정하는 단계는,
    미리 정해진 테스트 케이스의 상기 대상 소프트웨어에 대한 실행 결과와 상기 고차 돌연변이들의 각각에 대한 실행 결과를 비교하여, 상기 고차 돌연변이들의 킬 매트릭스를 구성하는 단계;
    상기 킬 매트릭스를 이용하여, 상기 고차 돌연변이들에 대한 제 1 의심 점수들을 각각 계산하는 단계;
    상기 제 1 의심 점수들을 기반으로, 상기 대상 소프트웨어의 스테이트먼트들에 대한 제 2 의심 점수들을 각각 계산하는 단계; 및
    상기 제 2 의심 점수들을 기반으로, 가장 높은 제 2 의심 점수를 갖는 스테이트먼트를 상기 결함 위치로 추정하는 단계
    를 포함하는, 방법.
  5. 제 4 항에 있어서,
    상기 제 2 의심 점수들을 계산하는 단계는,
    상기 제 1 의심 점수들을 기반으로, 각 고차 돌연변이를 구성하는 일차 돌연변이들과 관련된 스테이트먼트들에 동일한 점수를 부여하여, 상기 제 2 의심 점수들을 각각 계산하는,
    방법.
  6. 컴퓨터 시스템에 있어서,
    메모리; 및
    상기 메모리와 연결되고, 상기 메모리에 저장된 적어도 하나의 명령을 실행하도록 구성된 프로세서를 포함하고,
    상기 프로세서는,
    대상 소프트웨어에 대해 복수의 일차 돌연변이들을 생성하고,
    상기 복수의 일차 돌연변이들을 기반으로, 상기 복수의 일차 돌연변이들 보다 적은 수의 고차 돌연변이들을 생성하고,
    상기 고차 돌연변이들을 이용하여, 상기 대상 소프트웨어 내의 결함 위치를 추정하도록 구성되고,
    현재 차수가 3 이상인 고차 돌연변이는,
    하나의 이전 차수의 고차 돌연변이와 하나의 일차 돌연변이를 결합함으로써 생성되는,
    컴퓨터 시스템.
  7. 제 6 항에 있어서,
    현재 차수가 2인 고차 돌연변이는,
    두 개의 일차 돌연변이들을 결합함으로써 생성되는,
    컴퓨터 시스템.
  8. 제 6 항에 있어서,
    상기 고차 돌연변이들의 개수는,
    현재 차수가 n으로 정의될 때, 상기 복수의 일차 돌연변이들의 개수의 1/n인,
    컴퓨터 시스템.
  9. 제 6 항에 있어서,
    상기 프로세서는,
    미리 정해진 테스트 케이스의 상기 대상 소프트웨어에 대한 실행 결과와 상기 고차 돌연변이들의 각각에 대한 실행 결과를 비교하여, 상기 고차 돌연변이들의 킬 매트릭스를 구성하고,
    상기 킬 매트릭스를 이용하여, 상기 고차 돌연변이들에 대한 제 1 의심 점수들을 각각 계산하고,
    상기 제 1 의심 점수들을 기반으로, 상기 대상 소프트웨어의 스테이트먼트들에 대한 제 2 의심 점수들을 각각 계산하고,
    상기 제 2 의심 점수들을 기반으로, 가장 높은 제 2 의심 점수를 갖는 스테이트먼트를 상기 결함 위치로 추정하도록 구성되는,
    컴퓨터 시스템.
  10. 제 9 항에 있어서,
    상기 프로세서는,
    상기 제 1 의심 점수들을 기반으로, 각 고차 돌연변이를 구성하는 일차 돌연변이들과 관련된 스테이트먼트들에 동일한 점수를 부여하여, 상기 제 2 의심 점수들을 각각 계산하도록 구성되는,
    컴퓨터 시스템.
  11. 컴퓨터 시스템이 방법을 실행하도록 하기 위한 하나 이상의 프로그램들을 저장하는 비-일시적인 컴퓨터-판독 가능 저장 매체에 있어서,
    상기 방법은,
    대상 소프트웨어에 대해 복수의 일차 돌연변이들을 생성하는 단계;
    상기 복수의 일차 돌연변이들을 기반으로, 상기 복수의 일차 돌연변이들 보다 적은 수의 고차 돌연변이들을 생성하는 단계; 및
    상기 고차 돌연변이들을 이용하여, 상기 대상 소프트웨어 내의 결함 위치를 추정하는 단계
    를 포함하고,
    현재 차수가 3 이상인 고차 돌연변이는,
    하나의 이전 차수의 고차 돌연변이와 하나의 일차 돌연변이를 결합함으로써 생성되는,
    컴퓨터-판독 가능 저장 매체.
  12. 제 11 항에 있어서,
    현재 차수가 2인 고차 돌연변이는,
    두 개의 일차 돌연변이들을 결합함으로써 생성되는,
    컴퓨터-판독 가능 저장 매체.
  13. 제 11 항에 있어서,
    상기 고차 돌연변이들의 개수는,
    현재 차수가 n으로 정의될 때, 상기 복수의 일차 돌연변이들의 개수의 1/n인,
    컴퓨터-판독 가능 저장 매체.
  14. 제 11 항에 있어서,
    상기 결함 위치를 추정하는 단계는,
    미리 정해진 테스트 케이스의 상기 대상 소프트웨어에 대한 실행 결과와 상기 고차 돌연변이들의 각각에 대한 실행 결과를 비교하여, 상기 고차 돌연변이들의 킬 매트릭스를 구성하는 단계;
    상기 킬 매트릭스를 이용하여, 상기 고차 돌연변이들에 대한 제 1 의심 점수들을 각각 계산하는 단계;
    상기 제 1 의심 점수들을 기반으로, 상기 대상 소프트웨어의 스테이트먼트들에 대한 제 2 의심 점수들을 각각 계산하는 단계; 및
    상기 제 2 의심 점수들을 기반으로, 가장 높은 제 2 의심 점수를 갖는 스테이트먼트를 상기 결함 위치로 추정하는 단계
    를 더 포함하는,
    컴퓨터-판독 가능 저장 매체.
  15. 제 14 항에 있어서,
    상기 제 2 의심 점수들을 계산하는 단계는,
    상기 제 1 의심 점수들을 기반으로, 각 고차 돌연변이를 구성하는 일차 돌연변이들과 관련된 스테이트먼트들에 동일한 점수를 부여하여, 상기 제 2 의심 점수들을 각각 계산하는,
    컴퓨터-판독 가능 저장 매체.
KR1020200175126A 2020-12-15 2020-12-15 고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법 KR102496332B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200175126A KR102496332B1 (ko) 2020-12-15 2020-12-15 고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200175126A KR102496332B1 (ko) 2020-12-15 2020-12-15 고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법

Publications (2)

Publication Number Publication Date
KR20220085228A KR20220085228A (ko) 2022-06-22
KR102496332B1 true KR102496332B1 (ko) 2023-02-07

Family

ID=82217009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200175126A KR102496332B1 (ko) 2020-12-15 2020-12-15 고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법

Country Status (1)

Country Link
KR (1) KR102496332B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190018753A1 (en) * 2017-07-12 2019-01-17 Fujitsu Limited Software program fault localization

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190018753A1 (en) * 2017-07-12 2019-01-17 Fujitsu Limited Software program fault localization

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Chu-Pan Wong 외 5명, "Efficiently Finding Highter-Order Mutants", ESEC/FSE 2020: Proceedings of the 28th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering,(2020.11.08)*
Mike Papadakis 외 1명, "Metallaxis-FL: mutation-basd fault localization", SOFTWARE TESTING, VERIFICATION AND RELIABILITY, 2005*
Pedro Reales Mateo 외 3명, "Validating Second-Order Mutation at System Level", IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, VOL. 39, NO. 4, APRIL 2013,(2012.06.05)*

Also Published As

Publication number Publication date
KR20220085228A (ko) 2022-06-22

Similar Documents

Publication Publication Date Title
US20070250630A1 (en) Method and a system of generating and evaluating potential resource allocations for an application
US20150332195A1 (en) Facilitating performance monitoring for periodically scheduled workflows
US20140325480A1 (en) Software Regression Testing That Considers Historical Pass/Fail Events
US9645806B2 (en) Method to convey an application's development environment characteristics to the hosting provider to facilitate selection of hosting environment or the selection of an optimized production operation of the application
US10255165B2 (en) Run time automatic workload tuning using customer profiling workload comparison
US20170192771A1 (en) Patching of virtual machines within sequential time windows
US9946629B2 (en) System, method and apparatus for deriving root cause for software test failure
US12021885B2 (en) Aggregating results from multiple anomaly detection engines
JP2022503783A (ja) 予測モデルの改良
US10459826B2 (en) Run time workload threshold alerts for customer profiling visualization
US8881112B2 (en) Quality measure tool for a composite application
US10025624B2 (en) Processing performance analyzer and process manager
US10725894B2 (en) Measuring and improving test coverage
US10346293B2 (en) Testing pre and post system call exits
KR102496332B1 (ko) 고차 돌연변이를 이용한 소프트웨어 결함 위치 추정을 위한 컴퓨터 시스템 및 그의 방법
US10275340B2 (en) Run time test workload customer profiling baselines visualization
JP2006092053A (ja) システム使用率管理装置及びそれに用いるシステム使用率管理方法並びにそのプログラム
US20180067823A1 (en) Using run time and historical customer profiling and analytics to determine customer disaster recovery vs. production differences, and to enhance customer disaster recovery readiness and effectiveness
KR20170062235A (ko) 서비스 처리 시스템 및 방법
US20130282337A1 (en) Performance evaluation device and performance evaluation method
US20160004982A1 (en) Method and system for estimating the progress and completion of a project based on a bayesian network
US20180137039A1 (en) Embedding profile tests into profile driven feedback generated binaries
JP6257373B2 (ja) 障害抽出支援装置
JP7132119B2 (ja) スキルマップ処理装置、スキルマップ処理方法、及びスキルマップ処理プログラム
JP5201068B2 (ja) 危険度判定プログラム、危険度判定装置及び方法

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant