KR101706425B1 - 코드의 단위 테스트를 위한 장치 및 방법 - Google Patents

코드의 단위 테스트를 위한 장치 및 방법 Download PDF

Info

Publication number
KR101706425B1
KR101706425B1 KR1020140139154A KR20140139154A KR101706425B1 KR 101706425 B1 KR101706425 B1 KR 101706425B1 KR 1020140139154 A KR1020140139154 A KR 1020140139154A KR 20140139154 A KR20140139154 A KR 20140139154A KR 101706425 B1 KR101706425 B1 KR 101706425B1
Authority
KR
South Korea
Prior art keywords
test
unit
code
target code
test case
Prior art date
Application number
KR1020140139154A
Other languages
English (en)
Other versions
KR20160044305A (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 KR1020140139154A priority Critical patent/KR101706425B1/ko
Priority to CN201510666347.4A priority patent/CN105528287A/zh
Publication of KR20160044305A publication Critical patent/KR20160044305A/ko
Application granted granted Critical
Publication of KR101706425B1 publication Critical patent/KR101706425B1/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/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

코드의 단위 테스트를 수행하는 장치 및 방법이 개시된다. 예시적인 실시예에 따르면, 대상 코드를 파싱(parsing)하여 파싱 정보를 생성하는 파싱부; 상기 파싱 정보를 기반으로 상기 대상 코드의 각 테스트 단위의 기본 테스트 케이스(base test case)를 생성하는 테스트 케이스 생성부; 상기 파싱 정보를 기반으로 상기 대상 코드의 외부 함수 호출 부분이 스텁(stub)으로 치환된 피생성 소스를 생성하는 코드 생성부; 및 상기 기본 테스트 케이스에 대하여 설정된 테스트 데이터를 상기 피생성 소스에 적용하여 상기 각 테스트 단위의 테스트를 수행하는 테스트 수행부를 포함하는, 단위 테스트 장치가 제공된다.

Description

코드의 단위 테스트를 위한 장치 및 방법{APPARATUS AND METHOD FOR UNIT TEST OF CODE}
개시되는 실시예들은 코드의 단위 테스트를 위한 장치 및 방법에 관한 것으로서, 더욱 상세하게는 프로그래밍 언어로 작성된 대상 코드의 파싱(parsing) 정보를 이용하여 대상 코드를 특정 단위 별로 테스트하기 위한 기법과 관련된다.
프로그래밍 언어(가령, 자바(Java) 언어)로 코드를 개발하는 과정에서 그 코드의 각 부분을 테스트하는 것은 그 코드에 따른 시스템 동작의 오류를 방지하여 높은 시스템 품질을 보장한다는 측면에서 매우 중요하다. 특히, 복잡한 코드는 통상적으로 각종 테스트 케이스(test case)에 따라 실행하여 테스트되는데, 개발의 효율성을 제고하기 위해서는 이러한 테스트에 소요되는 비용 및 시간을 줄일 필요가 있다.
예를 들어, 종래에는 개발자가 자바 언어로 작성된 코드에서 클래스(class)의 메쏘드(method) 별로 테스트 케이스를 직접 작성하여 원하는 메쏘드 커버리지(method coverage)(즉, 소스 코드 중 테스트된 메쏘드(method)의 비율)을 달성하고자 하였다. 더욱이, 많은 분기가 존재하는 복잡한 로직의 코드에 대해 만족할 만한 분기 커버리지(branch coverage)(즉, 소스 코드 중 테스트된 분기(branch)의 비율)를 달성하기 위해서는, 테스트에 필요한 특정 값만 바뀐 유사한 내용의 테스트 케이스를 분기들의 경우의 수만큼 일일이 작성해야 하는 불편함이 있었다. 따라서, 이러한 단점을 극복하기 위한 새로운 단위 테스트 기법이 필요하다.
개시되는 실시예들은 코드의 단위 테스트를 수행하는 장치 및 방법을 제공한다.
예시적인 실시예에 따르면, 대상 코드를 파싱(parsing)하여 파싱 정보를 생성하는 파싱부; 상기 파싱 정보를 기반으로 상기 대상 코드의 각 테스트 단위의 기본 테스트 케이스(base test case)를 생성하는 테스트 케이스 생성부; 상기 파싱 정보를 기반으로 상기 대상 코드의 외부 함수 호출 부분이 스텁(stub)으로 치환된 피생성 소스를 생성하는 코드 생성부; 및 상기 기본 테스트 케이스에 대하여 설정된 테스트 데이터를 상기 피생성 소스에 적용하여 상기 각 테스트 단위의 테스트를 수행하는 테스트 수행부를 포함하는, 단위 테스트 장치가 제공된다.
상기 대상 코드는 자바(Java) 언어로 작성된 것일 수 있다.
상기 단위 테스트 장치는 상기 기본 테스트 케이스와 연관된 사용자 인터페이스를 제공하고 상기 사용자 인터페이스에서 행해진 사용자 입력에 따라 상기 테스트 데이터를 설정하는 테스트 케이스 편집부를 더 포함할 수 있다.
상기 테스트 케이스 편집부는 또한 상기 파싱 정보를 이용하여 상기 테스트 데이터의 타입을 상기 사용자 인터페이스에 표현할 수 있다.
상기 테스트 데이터는 상기 테스트 단위 내의 변수의 값, 외부 함수의 리턴 값, 분기의 라벨 값 중 적어도 하나를 포함할 수 있다.
다른 예시적인 실시예에 따르면, 대상 코드를 파싱하여 파싱 정보를 생성하는 단계; 상기 파싱 정보를 기반으로 상기 대상 코드의 각 테스트 단위의 기본 테스트 케이스를 생성하는 단계; 상기 파싱 정보를 기반으로 상기 대상 코드의 외부 함수 호출 부분이 스텁으로 치환된 피생성 소스를 생성하는 단계; 및 상기 기본 테스트 케이스에 대하여 설정된 테스트 데이터를 상기 피생성 소스에 적용하여 상기 각 테스트 단위의 테스트를 수행하는 단계를 포함하는, 단위 테스트 방법이 제공된다.
상기 대상 코드는 자바 언어로 작성된 것일 수 있다.
상기 단위 테스트 방법은, 상기 기본 테스트 케이스와 연관된 사용자 인터페이스를 제공하는 단계; 및 상기 사용자 인터페이스에서 행해진 사용자 입력에 따라 상기 테스트 데이터를 설정하는 단계를 더 포함할 수 있다.
상기 단위 테스트 방법은, 상기 파싱 정보를 이용하여 상기 테스트 데이터의 타입을 상기 사용자 인터페이스에 표현하는 단계를 더 포함할 수 있다.
상기 테스트 데이터는 상기 테스트 단위 내의 변수의 값, 외부 함수의 리턴 값, 분기의 라벨 값 중 적어도 하나를 포함할 수 있다.
또 다른 예시적인 실시예에 따르면, 하드웨어와 결합되어, 전술한 단위 테스트 방법을 실행시키기 위하여 저장 매체에 저장된 컴퓨터 프로그램이 제공된다.
소정의 실시예에 따르면, 자바 언어와 같은 프로그래밍 언어로 작성된 대상 코드의 파싱 정보를 이용하여 대상 코드의 특정 단위(가령, 자바 클래스의 메쏘드)의 테스트를 용이하게 하는 단위 테스트 프레임워크가 제공된다.
소정의 실시예에 따르면, 대상 코드의 단위 테스트를 위해 개발자가 별도로 테스트 케이스를 작성할 필요가 없으며, 대상 코드의 테스트 단위 별로 기본 테스트 케이스(base test case)가 자동으로 작성되고 사용자 친화적인 방식으로 단위 테스트에 필요한 값을 설정할 수 있다.
소정의 실시예에 따르면, 원하는 메쏘드 커버리지 및 분기 커버리지를 용이하게 달성할 수 있다.
도 1은 예시적인 실시예에 따라 프로그래밍 언어로 작성된 코드의 파싱 정보를 이용하여 그 코드의 단위 테스트를 수행하는 시스템을 나타낸 도면,
도 2는 예시적인 실시예에 따라 테스트 데이터를 설정하는 데에 적합한 사용자 인터페이스를 도시한 도면,
도 3은 예시적인 실시예에 따라 단위 테스트 프로젝트를 생성하는 것을 설명하기 위한 도면,
도 4는 예시적인 실시예에 따라 코드의 단위 테스트를 수행하는 과정을 도시한 도면.
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 예시적인 실시예에 따라 프로그래밍 언어로 작성된 코드의 파싱 정보를 이용하여 그 코드의 단위 테스트를 수행하는 시스템을 나타낸다.
도 1에 도시된 바와 같이, 예시적인 단위 테스트 시스템(100)은 파싱부(110), 테스트 케이스 생성부(120), 테스트 케이스 편집부(130), 코드 생성부(140) 및 테스트 수행부(150)를 포함한다. 단위 테스트 시스템(100)의 위 모듈들 각각은 하드웨어로 구현될 수 있다. 예를 들어, 단위 테스트 시스템(100)은 컴퓨팅 장치 내에 구현되거나 포함될 수 있다. 이러한 컴퓨팅 장치는 하나 이상의 프로세서 및 그 프로세서에 의해 액세스 가능한 메모리와 같은 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 컴퓨터 판독 가능 저장 매체는 프로세서의 내부 또는 외부에 배치될 수 있고, 잘 알려진 다양한 수단으로 프로세서와 연결될 수 있다. 컴퓨터 판독 가능 저장 매체에는 컴퓨팅 장치를 제어하는 컴퓨터 실행 가능 명령어가 저장되어 있을 수 있다. 프로세서는 컴퓨터 판독 가능 저장 매체에 저장된 명령어를 실행할 수 있다. 그러한 명령어는 프로세서에 의해 실행되는 경우 프로세서로 하여금 예시적인 실시예에 따른 동작을 수행하게 할 수 있다. 또한, 컴퓨팅 장치는 그 컴퓨팅 장치 및 적어도 하나의 외부 장치 간 입/출력 및/또는 통신을 지원하도록 구성된 인터페이스 장치를 더 포함할 수 있는바, 인터페이스 장치를 통해 외부 장치와 연결될 수 있다. 나아가, 컴퓨팅 장치는 다른 다양한 컴포넌트들(가령, 입력 장치 및/또는 출력 장치)을 더 포함할 수 있고, 인터페이스 장치는 그 컴포넌트들을 위한 인터페이스를 제공할 수 있다. 입력 장치의 예들은 마우스와 같은 포인팅 장치, 키보드, 터치 감지 입력 장치, 마이크와 같은 음성 입력 장치를 포함한다. 출력 장치의 예들은 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드를 포함한다. 이에 따라, 상술한 컴퓨팅 장치는 단위 테스트 시스템(100)의 파싱부(110), 테스트 케이스 생성부(120), 테스트 케이스 편집부(130), 코드 생성부(140) 및 테스트 수행부(150)를 구현할 수 있다.
이제 도 1을 참조하여, 단위 테스트 시스템(100)의 각 모듈에 관해 더욱 상세히 설명한다. 설명의 편의를 위해, 단위 테스트 시스템(100)이 자바(Java) 언어로 작성된 소스 코드(이하, "테스트 대상 코드"라고도 지칭됨)(101)의 각 테스트 단위(가령, 클래스의 메쏘드)의 테스트를 수행하기 위한 동작들이 이하에서 언급될 것이다. 다만, 이러한 동작들은 어디까지나 예시일 뿐이다.
도 1에 도시된 파싱부(110)는 자바 소스인 테스트 대상 코드(101)를 파싱(parsing)하도록 구성된다. 파싱부(110)는 파싱 분석을 통해 테스트 대상 코드(101)로부터 다음의 항목들 중 적어도 하나를 수집하여 파싱 정보를 생성할 수 있다.
- 문장(statement)(가령, if 문, while 문, for 문, do 문 등)
- 표현문(expression)(가령, 전위(prefix)/중위(infix)/후위(postfix) 표현문, 대입문(assignment expression) 등)
- 불린(boolean), 수치(numeric) 등과 같은 데이터 타입, 리터럴(literal) 값 및 널(null) 값
- 한정자(modifier)(가령, public, static, final 등)
- 제네릭(generic) 정보
예를 들어, 파싱부(110)는 자바 개발 킷(Java Development Kit: JDK) 및 이클립스(Eclipse)의 파서(parser)를 이용하여 테스트 대상 코드(101)를 분석하도록 구현될 수 있다.
테스트 케이스 생성부(120)는 생성된 파싱 정보를 기반으로 각 테스트 단위의 기본 테스트 케이스(102)를 생성하도록 구성된다. 기본 테스트 케이스(102)는 테스트 대상 코드(101)의 구성요소들을 소정의 구조(가령, 트리 구조)로 나타낼 수 있다.
테스트 케이스 편집부(130)는 사용자로 하여금 기본 테스트 케이스(102)에 대한 테스트 데이터를 설정하게 하도록 구성된다. 일 예로서, 테스트 케이스 편집부(130)는 기본 테스트 케이스(102)를 시각적으로 표현(가령, 테스트 대상 코드(101)의 구성요소들을 트리 구조로 디스플레이)하고 사용자가 테스트 단위의 테스트에 필요한 데이터를 설정하는 데에 적합한 사용자 인터페이스를 제공할 수 있다. 테스트 케이스 편집부(130)는 파싱 정보를 이용하여 그러한 테스트 데이터의 타입이 무엇인지를 식별하여 사용자 인터페이스에 시각적으로 표현할 수 있다. 추가적으로, 테스트 케이스 편집부(130)는 그러한 타입의 테스트 데이터로 선택 가능한 값들을 사용자 인터페이스에 디스플레이할 수 있다. 나아가, 테스트 케이스 편집부(130)는 사용자 인터페이스 상에서 행해진 사용자 입력을 검출하여 기본 테스트 케이스(102)에 대한 테스트 데이터를 설정할 수 있다. 가령, 테스트 케이스 편집부(130)는 도 2에 도시된 사용자 인터페이스(200)를 제공하여 리턴 값이 void 타입인 DynamicStack 메쏘드의 int 타입의 변수의 값을 2로 선택하기 위한 사용자 입력을 검출할 수 있다.
메쏘드 커버리지의 달성을 위해, 테스트 케이스 생성부(120)는 파싱 정보를 이용하여 테스트 대상 코드(101)에 포함된 메쏘드 별로 기본 테스트 케이스를 생성할 수 있다. 테스트 케이스 편집부(130)는 사용자로 하여금 메쏘드의 호출을 위한 변수와 같은 테스트 데이터를 사용자 인터페이스 상에서 설정하게 할 수 있다. 또한, 분기 커버리지의 달성을 위해, 테스트 케이스 생성부(120)는 파싱 정보를 이용하여 메쏘드의 분기 별 라벨 값(가령, 참(True)/거짓(False))에 따라 각 경우의 수의 기본 테스트 케이스를 생성할 수 있다. 테스트 케이스 편집부(130)는 사용자로 하여금 해당 분기의 라벨 값, 해당 분기를 특정 라벨 값으로 설정하는 데에 필요한 변수 값 및/또는 스텁(stub) 값(가령, 테스트 대상 코드(101)에서 호출되는 외부 함수의 리턴 값)을 사용자 인터페이스 상에서 설정하게 할 수 있다.
코드 생성부(140)는 파싱 정보를 기반으로 테스트 대상 코드(101)의 외부 함수 호출 부분을 스텁으로 치환하여 피생성 소스(104)를 생성하도록 구성된다.
테스트 수행부(150)는 테스트 대상 코드(101)의 테스트 단위 별로 테스트를 수행하도록 구성된다. 이를 위해, 테스트 수행부(150)는 기본 테스트 케이스(102)에 대하여 설정된 테스트 데이터를 획득할 수 있고, 획득된 테스트 데이터를 피생성 소스(104)에 적용하여 해당 테스트 단위를 테스트할 수 있다.
예를 들어, 테스트 수행부(150)는 특정 자바 클래스의 특정 메쏘드에 대한 기본 테스트 케이스(가령, 기본 테스트 케이스(102))와 함께 그 기본 테스트 케이스에 대하여 설정된 테스트 데이터(가령, 기본 테스트 케이스에 해당하는 테스트 단위 내의 변수 값, 스텁 값 및/또는 분기 라벨 값)를 로딩할 수 있다. 또한, 테스트 수행부(150)는 그 클래스의 인스턴스화된 객체에 사전조건(precondition)을 적용할 수 있다. 이후, 테스트 수행부(150)는 로딩된 테스트 데이터를 적용하여 위 메쏘드를 호출할 수 있다. 나아가, 테스트 수행부(150)는 이러한 호출에 따른 메쏘드의 리턴 값을 예상 리턴 값과 비교하여 리포트(105)를 생성할 수 있다. 만일 호출된 메쏘드가 외부 함수를 호출하나 해당 스텁 값이 설정되지 않은 경우, 테스트 수행부(150)는 그 외부 함수를 직접 호출할 수도 있다.
도 3은 예시적인 실시예에 따라 단위 테스트 프로젝트를 생성하는 것을 설명하기 위한 도면이다.
예시적인 실시예에 따르면, 도 3에 도시된 바와 같이, 이클립스 통합 개발 환경(Integrated Development Environment: IDE)(300)에서 자바 언어의 소스 코드(330)(가령, *.cta 파일)를 개발하기 위한 개발 프로젝트(310)의 개발 환경 정보(340)를 참조하여 소스 코드(330)의 단위 테스트 프로젝트(312)를 생성할 수 있다. 단위 테스트 프로젝트(312)는 소스 코드(330)(즉, 테스트 대상 코드)의 단위 테스트를 수행하는 데 적합하도록 개발 프로젝트(310)가 수정된 정보로서 이클립스 통합 개발 환경(300)에서 사용될 수 있다. 단위 테스트 프로젝트(312)는 개발 프로젝트(310)와 연관된 라이브러리(320), 소스 코드(330) 및 개발 환경 정보(340)를 그대로 사용할 수 있다. 아울러, 소스 코드(330)의 단위 테스트를 수행하기 위한 모듈은 단위 테스트 드라이버 라이브러리(304) 형태로 단위 테스트 플러그인(302)에 포함되어 이클립스 통합 개발 환경(300)에서 제공될 수 있다. 단위 테스트 프로젝트(312)는 이러한 단위 테스트 드라이버 라이브러리(304)를 사용할 수 있다. 또한, 단위 테스트 프로젝트(312)는 소스 코드(330)의 단위 테스트를 위해 소스 코드(350)의 파싱 정보에 따라 소스 코드(330)로부터 생성된 피생성 소스(332) 및 기본 테스트 케이스(334)를 사용할 수 있다. 앞서 언급된 바와 같이, 피생성 소스(332)는 소스 코드(330)에서 외부 함수를 호출하는 부분을 스텁으로 처리한 것이며, 기본 테스트 케이스(334)에서 단위 별 테스트에 필요한 테스트 데이터는 사용자 인터페이스를 통해 설정될 수 있다. 이에 따라, 이러한 단위 테스트 프로젝트(312) 하에서, 테스트 수행부(150)는 단위 테스트 드라이버 라이브러리(304)에 포함된 러너(runner)를 실행하여 기본 테스트 케이스(334)에 대하여 설정된 테스트 데이터를 로딩할 수 있고, 그러한 테스트 데이터를 피생성 소스(332)에 적용하여 소스 코드(330)의 단위 테스트를 수행할 수 있다.
도 4는 예시적인 실시예에 따라 코드의 단위 테스트를 수행하는 과정을 도시한 도면이다. 예를 들어, 예시적인 단위 테스트 과정(400)은 도 1의 단위 테스트 시스템(100)이 구현된 컴퓨팅 장치에 의해 수행될 수 있다.
시작 동작 후, 과정(400)은 동작(S410)으로 진행된다. 동작(S410)에서, 파싱부(110)는 대상 코드를 파싱(parsing)하여 파싱 정보를 생성한다. 대상 코드는 자바 언어로 작성된 코드일 수 있다.
동작(S420)에서, 테스트 케이스 생성부(120)는 파싱 정보를 기반으로 대상 코드의 테스트 단위 별로 기본 테스트 케이스를 생성한다.
동작(S430)에서, 테스트 케이스 편집부(130)는 기본 테스트 케이스와 연관된 사용자 인터페이스를 제공하고 사용자 인터페이스에서 행해진 사용자 입력에 따라 기본 테스트 케이스에 대하여 테스트 데이터를 설정한다.
동작(S440)에서, 코드 생성부(140)는 파싱 정보를 기반으로 대상 코드에서 외부 함수를 호출하는 부분을 스텁으로 치환하여 피생성 소스를 생성한다.
동작(S450)에서, 테스트 수행부(150)는 기본 테스트 케이스에 대하여 설정된 테스트 데이터를 피생성 소스에 적용하여 대상 코드의 각 테스트 단위의 테스트를 수행한다.
한편, 예시적인 실시예는 본 명세서에서 기술한 과정을 컴퓨터상에서 수행하기 위한 프로그램을 포함하는 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 이러한 컴퓨터 판독 가능 저장 매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 그 컴퓨터 판독 가능 저장 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들일 수 있다. 컴퓨터 판독 가능 저장 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광 기록 매체, 플롭티컬 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상에서 본 발명의 대표적인 실시예들을 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
100: 단위 테스트 시스템
101: 테스트 대상 코드
102: 기본 테스트 케이스
104: 피생성 소스
105: 리포트
110: 파싱부
120: 테스트 케이스 생성부
130: 테스트 케이스 편집부
140: 코드 생성부
150: 테스트 수행부

Claims (11)

  1. 대상 코드를 파싱(parsing)하여 파싱 정보를 생성하는 파싱부;
    상기 파싱 정보를 기반으로 상기 대상 코드의 메쏘드 별 또는 상기 메쏘드의 분기 별 라벨 값에 따른 각 경우의 수의 기본 테스트 케이스(base test case)를 생성하는 테스트 케이스 생성부;
    상기 파싱 정보를 기반으로 상기 대상 코드의 외부 함수 호출 부분이 스텁(stub)으로 치환된 피생성 소스를 생성하는 코드 생성부;
    상기 기본 테스트 케이스와 연관된 사용자 인터페이스를 제공하고 상기 사용자 인터페이스에서 행해진 사용자 입력에 따라 테스트 데이터를 설정하는 테스트 케이스 편집부; 및
    상기 테스트 데이터를 상기 피생성 소스에 적용하여 상기 각 테스트 단위의 테스트를 수행하는 테스트 수행부를 포함하며,
    상기 테스트 케이스 편집부는 상기 파싱 정보를 이용하여 상기 테스트 데이터의 타입을 상기 사용자 인터페이스에 표현하고,
    상기 테스트 데이터는 상기 기본 테스트 케이스에 대하여 설정된 테스트 단위 내 변수 값, 스텁값 및 분기 라벨값 중 하나 이상인, 단위 테스트 장치.
  2. 청구항 1에 있어서,
    상기 대상 코드는 자바(Java) 언어로 작성된, 단위 테스트 장치.
  3. 삭제
  4. 삭제
  5. 삭제
  6. 파싱부에서, 대상 코드를 파싱하여 파싱 정보를 생성하는 단계;
    테스트 케이스 생성부에서, 상기 파싱 정보를 기반으로 상기 대상 코드의 메쏘드 별 또는 상기 메쏘드의 분기 별 라벨 값에 따른 각 경우의 수의 기본 테스트 케이스를 생성하는 단계;
    코드 생성부에서, 상기 파싱 정보를 기반으로 상기 대상 코드의 외부 함수 호출 부분이 스텁으로 치환된 피생성 소스를 생성하는 단계;
    테스트 케이스 편집부에서, 상기 기본 테스트 케이스와 연관된 사용자 인터페이스를 제공하는 단계;
    상기 테스트 케이스 편집부에서, 상기 사용자 인터페이스에서 행해진 사용자 입력에 따라 테스트 데이터를 설정하는 단계;및
    테스트 수행부에서, 상기 테스트 데이터를 상기 피생성 소스에 적용하여 상기 각 테스트 단위의 테스트를 수행하는 단계를 포함하며,
    상기 사용자 인터페이스를 제공하는 단계는, 상기 파싱 정보를 이용하여 상기 테스트 데이터의 타입을 상기 사용자 인터페이스에 표현하는 단계를 포함하고,
    상기 테스트 데이터는 상기 기본 테스트 케이스에 대하여 설정된 테스트 단위 내 변수 값, 스텁값 및 분기 라벨값 중 하나 이상인, 단위 테스트 방법.
  7. 청구항 6에 있어서,
    상기 대상 코드는 자바 언어로 작성된, 단위 테스트 방법.
  8. 삭제
  9. 삭제
  10. 삭제
  11. 하드웨어와 결합되어, 청구항 6 및 7 중 하나에 기재된 방법을 실행시키기 위하여 저장 매체에 저장된 컴퓨터 프로그램.
KR1020140139154A 2014-10-15 2014-10-15 코드의 단위 테스트를 위한 장치 및 방법 KR101706425B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140139154A KR101706425B1 (ko) 2014-10-15 2014-10-15 코드의 단위 테스트를 위한 장치 및 방법
CN201510666347.4A CN105528287A (zh) 2014-10-15 2015-10-15 用于代码的单元测试的装置及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140139154A KR101706425B1 (ko) 2014-10-15 2014-10-15 코드의 단위 테스트를 위한 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20160044305A KR20160044305A (ko) 2016-04-25
KR101706425B1 true KR101706425B1 (ko) 2017-02-13

Family

ID=55770530

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140139154A KR101706425B1 (ko) 2014-10-15 2014-10-15 코드의 단위 테스트를 위한 장치 및 방법

Country Status (2)

Country Link
KR (1) KR101706425B1 (ko)
CN (1) CN105528287A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102470683B1 (ko) * 2021-11-25 2022-11-25 숭실대학교 산학협력단 단위 테스트 케이스 기반의 보안 설계 결함 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101797484B1 (ko) 2016-06-29 2017-12-13 주식회사 티맥스 소프트 리호스팅의 테스트를 수행하기 위한 방법 및 컴퓨팅 디바이스
CN107608873B (zh) * 2016-07-11 2021-05-25 珠海优特电力科技股份有限公司 软件测试方法和系统及测试平台
CN106874202A (zh) * 2017-02-14 2017-06-20 网易无尾熊(杭州)科技有限公司 用于单元测试的方法、装置以及可读存储介质
CN107621965A (zh) * 2017-09-20 2018-01-23 郑州云海信息技术有限公司 提高代码可测试性的方法、系统、可读存储介质及服务器
KR102104295B1 (ko) * 2018-02-20 2020-04-24 주식회사 아이오티큐브 탐색 전략을 자동으로 생성하는 방법 및 자동으로 생성된 탐색 전략을 사용한 콘콜릭 테스팅 수행 방법
CN110928760B (zh) * 2018-09-20 2023-10-20 杭州海康汽车技术有限公司 一种嵌入式系统中的单元测试方法与装置
CN109861960B (zh) * 2018-11-26 2021-12-21 阿里巴巴集团控股有限公司 提供用于验证业务逻辑的验证数据的方法及装置
CN112000566B (zh) * 2019-05-27 2023-11-28 腾讯科技(深圳)有限公司 测试用例的生成方法及装置
CN112286784B (zh) * 2019-07-23 2024-05-10 腾讯科技(深圳)有限公司 一种测试用例生成方法、装置、服务器及存储介质
CN111240970B (zh) * 2020-01-06 2024-06-11 网联清算有限公司 一种测试用例生成方法及装置
CN111679977B (zh) * 2020-05-29 2024-02-27 杭州趣链科技有限公司 一种基于Jest的React项目单元测试方法、设备及存储介质
KR20240035250A (ko) * 2022-09-08 2024-03-15 슈어소프트테크주식회사 단위 테스트 재사용 방법 및 컴퓨터 판독 가능 기록매체

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100808257B1 (ko) * 2005-12-05 2008-02-29 한국전자통신연구원 임베디드 시스템 프로토타입 개발 지원 장치 및 방법
CN100547562C (zh) * 2006-10-18 2009-10-07 国际商业机器公司 自动生成可再现运行时问题的单元测试用例的方法和系统
KR20100041447A (ko) * 2008-10-14 2010-04-22 삼성전자주식회사 테스트 자동화 장치 및 테스트 자동화 방법
CN101847117B (zh) * 2009-03-23 2014-09-10 中兴通讯股份有限公司 一种单元测试方法和装置
KR101266565B1 (ko) * 2011-08-26 2013-05-22 강원대학교산학협력단 요구 인터페이스의 명세 정보를 이용한 소프트웨어 컴포넌트의 테스트 케이스 생성 방법 및 실행 방법
CN103617120A (zh) * 2013-12-05 2014-03-05 北京奇虎科技有限公司 一种单元测试方法和装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102470683B1 (ko) * 2021-11-25 2022-11-25 숭실대학교 산학협력단 단위 테스트 케이스 기반의 보안 설계 결함 탐지 방법, 이를 수행하기 위한 기록 매체 및 장치

Also Published As

Publication number Publication date
CN105528287A (zh) 2016-04-27
KR20160044305A (ko) 2016-04-25

Similar Documents

Publication Publication Date Title
KR101706425B1 (ko) 코드의 단위 테스트를 위한 장치 및 방법
US8225288B2 (en) Model-based testing using branches, decisions, and options
US10089089B2 (en) Data type reassignment
US9792204B2 (en) System and method for coverage-based automated test case augmentation for design models
CN110149800B (zh) 一种用于处理与源程序的源代码相关联的抽象语法树的装置
US9645912B2 (en) In-place function modification
US9262132B1 (en) Incremental local source code analysis
US20180107585A1 (en) Using edit and continue to dynamically set and unset optimizations in source code while debugging
US10133560B2 (en) Link time program optimization in presence of a linker script
US10496379B2 (en) Facilitated production of code for software testing
US10521203B2 (en) Apparatus and method to facilitate extraction of unused symbols in a program source code
KR20160025426A (ko) 소스 코드 분석 장치, 이를 위한 컴퓨터 프로그램, 그 기록매체
US9582397B2 (en) Method and system for obtaining run-time information associated with executing an executable
US7676790B1 (en) Plasma processing system component analysis software and methods and systems for creating the same
US20130111432A1 (en) Validation of a system model including an activity diagram
US9697021B2 (en) Modifiable high-level intermediate representation of source code
US9304743B1 (en) Converting from incorrect program code to correct program code
US9710360B2 (en) Optimizing error parsing in an integrated development environment
Al-Kofahi et al. Escaping AutoHell: a vision for automated analysis and migration of autotools build systems
Ben Charrada et al. An automated hint generation approach for supporting the evolution of requirements specifications
CN113032004B (zh) 在开发环境中管理开发作业的方法、设备和程序产品
US7873949B2 (en) In source code suppression of binary analysis
JP2017167899A (ja) シミュレーションシステム、シミュレーション方法、シミュレーションプログラム
JP2016126700A (ja) プログラム検証装置、プログラム検証方法及びプログラム検証プログラム
US9256406B1 (en) Graphically scoped C-functions inside stateflow

Legal Events

Date Code Title Description
AMND Amendment
E601 Decision to refuse application
AMND Amendment
E902 Notification of reason for refusal
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200121

Year of fee payment: 4