KR102594638B1 - Devs 내에서 원자 모델을 테스트하기 위한 방법 - Google Patents

Devs 내에서 원자 모델을 테스트하기 위한 방법 Download PDF

Info

Publication number
KR102594638B1
KR102594638B1 KR1020230030276A KR20230030276A KR102594638B1 KR 102594638 B1 KR102594638 B1 KR 102594638B1 KR 1020230030276 A KR1020230030276 A KR 1020230030276A KR 20230030276 A KR20230030276 A KR 20230030276A KR 102594638 B1 KR102594638 B1 KR 102594638B1
Authority
KR
South Korea
Prior art keywords
test
test template
atomic model
keyword
testing
Prior art date
Application number
KR1020230030276A
Other languages
English (en)
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 KR1020230030276A priority Critical patent/KR102594638B1/ko
Application granted granted Critical
Publication of KR102594638B1 publication Critical patent/KR102594638B1/ko

Links

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
    • G06F11/3696Methods or tools to render software testable
    • 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
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • 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/3684Test management for test design, e.g. generating new test cases
    • 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
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • G06F40/186Templates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

본 개시의 몇몇 실시예에 따른, 적어도 하나의 프로세서를 포함하는 서버에 의해 수행되는 원자 모델을 테스트하기 위한 방법이 개시된다. 상기 원자 모델을 테스트하기 위한 방법은 시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델과 관련된 소스 코드를 획득하는 단계; 획득된 상기 소스 코드로부터 적어도 하나의 키워드를 추출하는 단계; 추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계 - 상기 테스트 템플릿은 사용자의 정답 입력을 요청하는 제 1 텍스트 메시지를 포함함 -; 생성된 상기 테스트 템플릿을 출력하는 단계; 상기 제 1 텍스트 메시지에 대한 응답으로, 상기 테스트 템플릿 내에서 사용자로부터 입력된 파라미터를 획득하는 단계; 및 상기 테스트 템플릿에 포함된 테스트 코드 및 상기 소스 코드 각각을 실행한 실행 결과를 이용하여 상기 원자 모델에 대한 테스트를 수행하는 단계를 포함할 수 있다.

Description

DEVS 내에서 원자 모델을 테스트하기 위한 방법{METHOD FOR TESTING ATOMIC MODELS IN THE DISCRETE EVENT SYSTEM SPECIFICATION}
본 개시는 원자 모델을 테스트하기 위한 방법에 관한 것으로, 구체적으로 시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델을 테스트하기 위한 방법에 관한 것이다.
모델링 및 시뮬레이션(Modelling and Simulation, M&S) 방법론은 수집된 데이터를 기반으로 시스템의 검증 성능 분석 예측을 위해 다양한 분야에서 응용되고 있다. 모델링 및 시뮬레이션 방법론은 연속적인 시뮬레이션과 이산 사건 시뮬레이션으로 구분된다. 연속적인 시뮬레이션은 실세계에 가깝고 정확함에도 이산 사건 시뮬레이션보다 판단해야 하는 정보량과 시간 낭비가 크다. 반면에 이산 사건 시뮬레이션은 중요한 사건을 중심으로 시뮬레이션하여 연속 시뮬레이션 대비 처리 시간이 빠르다.
이산 사건 시스템 명세(Discrete Event System Specification, DEVS)는 이산사건 이벤트를 정의하여 복잡한 시스템을 모델링하는데 사용되는 형식론이다. 이산 사건 명세 형식론은 모델을 엄격한 형식론으로 정의하고 모델 간의 구조를 계층적으로 표현한다. 이산 사건 명세 형식론은 시스템의 구조를 표현하는 결합 모델(coupled model)과 행위(behavior)를 표현하는 원자 모델(atomic model)로 구성된다. 그중 원자 모델은 시뮬레이션의 올바른 동작을 위해 집합들과 함수들의 결과를 절차적으로 검증해야만 한다.
그러나, 원자 모델 테스트 환경은 콘솔(console) 창에서의 개발자의 직접 타이핑을 통해 생성될 수 있다. 이에 따라, 모델 검증에 많은 시간이 소요될 수 있다.
(비특허문헌 1) “SES/DEVS 방법론을 이용한 커리큘럼 엔진 연구” Journal of Engineering Education Research Vol. 16, No. 5, pp. 18~23, 2013(2013.10.30)
본 개시는 전술한 배경기술에 대응하여 안출된 것으로, 원자 모델 테스트 환경이 자동으로 구축될 수 있도록 하는 원자 모델을 테스트하기 위한 방법을 제공하고자 한다.
본 개시의 기술적 과제들은 이상에서 언급한 기술적 과제로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
전술한 바와 같은 과제를 해결하기 위한 본 개시의 일 실시예에 따라, 적어도 하나의 프로세서를 포함하는 서버에 의해 수행되는 원자 모델을 테스트하기 위한 방법이 개시된다. 상기 원자 모델을 테스트하기 위한 방법은 시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델과 관련된 소스 코드를 획득하는 단계; 획득된 상기 소스 코드로부터 적어도 하나의 키워드를 추출하는 단계; 추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계 - 상기 테스트 템플릿은 사용자의 정답 입력을 요청하는 제 1 텍스트 메시지를 포함함 -; 생성된 상기 테스트 템플릿을 출력하는 단계; 상기 제 1 텍스트 메시지에 대한 응답으로, 상기 테스트 템플릿 내에서 사용자로부터 입력된 파라미터를 획득하는 단계; 및 상기 테스트 템플릿에 포함된 테스트 코드 및 상기 소스 코드 각각을 실행한 실행 결과를 이용하여 상기 원자 모델에 대한 테스트를 수행하는 단계; 를 포함할 수 있다.
또한, 상기 추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계는, 상기 적어도 하나의 키워드에 제 1 함수와 관련된 제 1 키워드가 포함된 경우, 상기 소스 코드 내에서 상기 제 1 키워드와 관련된 제 1 영역을 결정하는 단계; 상기 제 1 영역 내에서 상기 원자 모델의 입력 포트에 대한 제 1 변수의 개수를 결정하는 단계; 및 상기 제 1 변수의 개수에 기초하여, 상기 제 1 함수와 관련되어 표시되는 제 2 영역의 개수가 결정되도록 상기 테스트 템플릿을 생성하는 단계; 를 포함할 수 있다.
또한, 상기 추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계는, 상기 적어도 하나의 키워드에 제 2 함수와 관련된 제 2 키워드가 포함된 경우, 상기 소스 코드 내에서 상기 제 2 키워드와 관련된 제 3 영역을 결정하는 단계; 상기 제 3 영역 내에서 상기 원자 모델에 포함된 원소의 상태를 나타내는 제 2 변수의 개수를 결정하는 단계; 및 상기 제 2 변수의 개수에 기초하여, 상기 제 2 함수와 관련되어 표시되는 제 4 영역의 개수가 결정되도록 상기 테스트 템플릿을 생성하는 단계; 를 포함할 수 있다.
또한, 상기 제 1 텍스트 메시지는, 미리 정의된 상태 천이의 개수에 기초하여 생성되는 상기 원자 모델에 포함된 원소의 외부 천이에 따른 포트의 상태 및 상기 원소의 체류 시간에 대한 정답 입력을 요청하는 메시지이고, 상기 미리 정의된 상태 천이는, 다음 상태로의 천이를 나타내는 제 1 상태 천이, passive 상태로의 천이를 나타내는 제 2 상태 천이 및 현재 상태의 유지를 나타내는 제 3 상태 천이 중 적어도 하나를 포함할 수 있다.
또한, 추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하기 이전에, 상기 파라미터를 입력받기 위한 테이블을 생성하는 단계 - 상기 테이블은 사용자로부터의 정답 입력이 요구되는 파라미터를 나타내는 정보 메시지를 포함함 - ; 및 생성된 상기 테이블을 출력하는 단계; 를 더 포함할 수 있다.
또한, 상기 테스트 템플릿에 포함된 테스트 코드 및 상기 소스 코드 각각을 실행한 실행 결과를 이용하여 상기 원자 모델에 대한 테스트를 수행하는 단계는, 상기 테스트 코드를 실행한 제 1 실행 결과를 결정하는 단계; 상기 소스 코드를 실행한 제 2 실행 결과를 결정하는 단계; 및 상기 제 1 실행 결과 및 상기 제 2 실행 결과를 비교한 비교 결과를 출력하는 단계; 를 포함할 수 있다.
본 개시에서 얻을 수 있는 기술적 해결 수단은 이상에서 언급한 해결 수단들로 제한되지 않으며, 언급하지 않은 또 다른 해결 수단들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
본 개시의 몇몇 실시예에 따른, 원자 모델 테스트 환경이 편리하게 구축되는 원자 모델을 테스트하기 위한 방법을 제공한다.
본 개시에서 얻을 수 있는 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 본 개시가 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.
다양한 양상들이 이제 도면들을 참조로 기재되며, 여기서 유사한 참조 번호들은 총괄적으로 유사한 구성요소들을 지칭하는데 이용된다. 이하의 실시예에서, 설명 목적을 위해, 다수의 특정 세부사항들이 하나 이상의 양상들의 총체적 이해를 제공하기 위해 제시된다. 그러나, 그러한 양상(들)이 이러한 특정 세부사항들 없이 실시될 수 있음은 명백할 것이다. 다른 예시들에서, 공지의 구조들 및 장치들이 하나 이상의 양상들의 기재를 용이하게 하기 위해 블록도 형태로 도시된다.
도 1은 본 개시의 몇몇 실시예에 따른 원자 모델을 테스트하기 위한 방법을 수행하기 위한 예시적인 시스템을 도시한다.
도 2는 본 개시의 몇몇 실시예에 따른 서버가 원자 모델을 테스트하는 방법의 일례를 설명하기 위한 흐름도이다.
도 3은 본 개시의 몇몇 실시예에 따른 서버가 테스트 템플릿을 생성하는 방법의 일례를 설명하기 위한 흐름도이다.
도 4는 본 개시의 몇몇 실시예에 따른 서버가 테스트 템플릿을 생성하는 방법의 다른 일례를 설명하기 위한 흐름도이다.
도 5는 본 개시의 몇몇 실시예에 따른 원자 모델과 관련된 소스 코드의 일례를 설명하기 위한 도면이다.
도 6은 본 개시의 몇몇 실시예에 따른 테스트 템플릿에 포함된 테스트 코드의 일례를 설명하기 위한 도면이다.
도 7은 본 개시의 몇몇 실시예에 따른 서버가 원자 모델에 대한 테스트를 수행하는 방법의 일례를 설명하기 위한 흐름도이다.
도 8은 본 개시의 몇몇 실시예에 따른 서버가 원자 모델에 대한 테스트를 수행한 결과의 일례를 설명하기 위한 도면이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제 1, 제 2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
본 개시에서, 서버는 시뮬레이션을 수행하기 위한 시스템 구조를 결정할 수 있다. 시스템 구조는 사용자에 의해 사전 구축되어 존재할 수 있다. 서버는 시스템 구조로부터 시스템 구조를 구성하는 원자 모델(atomic model)을 결정할 수 있다. 여기서, 원자 모델은 시뮬레이션을 수행하는 시스템의 행위(behavior)를 표현하는 모델일 수 있다. 원자모델은 시스템의 동적인 특성을 표현할 수 있다. 서버는 원자 모델을 구현하는 소스 코드에 기초하여, 원자 모델을 테스트하기 위한 테스트 템플릿을 생성할 수 있다. 테스트 템플릿은 모델들을 테스트 하기 위한 코드의 적어도 일부가 사전 구축되어 존재할 수 있다. 테스트 템플릿은 적어도 일부가 사전 구축된 코드를 이용하여, 원자 모델을 테스트하기 위한 환경을 빠르게 구축할 수 있다. 또한, 테스트 템플릿은 사용자로부터의 정답 입력이 요구되는 파라미터를 나타내는 정보 메시지를 출력할 수 있다. 이에 따라, 사용자는 자신이 직접 입력해야 하는 파라미터를 쉽게 확인할 수 있다. 이하, 도 1 내지 도 8을 통해 본 개시에 따른 원자 모델을 테스트하기 위한 방법에 대해 설명한다.
도 1은 본 개시의 몇몇 실시예에 따른 원자 모델을 테스트하기 위한 방법을 수행하기 위한 예시적인 시스템을 도시한다.
도 1을 참조하면, 서버(100)는 제어부(110), 출력부(120) 및 저장부(130) 를 포함할 수 있다. 다만, 상술한 구성 요소들은 서버(100)를 구현하는데 있어서 필수적인 것은 아니어서, 서버(100)는 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있다.
서버(100)는 예를 들어, 마이크로프로세서, 메인프레임 컴퓨터, 디지털 프로세서, 휴대용 디바이스 또는 디바이스 제어기 등과 같은 임의의 타입의 컴퓨터 시스템 또는 컴퓨터 디바이스를 포함할 수 있다.
서버(100)는 전형적인 컴퓨터 하드웨어(예컨대, 컴퓨터 프로세서, 메모리, 스토리지, 입력 장치 및 출력 장치, 기타 기존의 컴퓨팅 장치의 구성요소들을 포함할 수 있는 장치; 라우터, 스위치 등과 같은 전자 통신 장치; 네트워크 부착 스토리지(NAS; network-attached storage) 및 스토리지 영역 네트워크(SAN; storage area network)와 같은 전자 정보 스토리지 시스템)와 컴퓨터 소프트웨어(즉, 컴퓨팅 장치로 하여금 특정의 방식으로 기능하게 하는 명령어들)의 조합을 이용하여 원하는 시스템 성능을 달성하는 것일 수 있다.
제어부(110)는 통상적으로 서버(100)의 전반적인 동작을 처리할 수 있다. 제어부(110)는 서버(100)의 구성요소들을 통해 입력 또는 출력되는 신호, 데이터, 정보 등을 처리하거나 저장부(130)에 저장된 응용 프로그램을 구동함으로써, 사용자에게 적절한 정보 또는 기능을 제공 또는 처리할 수 있다.
제어부(110)는 하나 이상의 코어로 구성될 수 있으며, 중앙 처리 장치(CPU: Central Processing Unit), 범용 그래픽 처리 장치(GPGPU: General Purpose Graphics Processing Unit), 텐서 처리 장치(TPU: Tensor Processing Unit) 등의 데이터 분석을 위한 프로세서를 포함할 수 있다.
본 개시에서, 제어부(110)는 원자 모델과 관련된 소스 코드를 획득할 수 있다. 여기서, 원자 모델은 시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 구성 요소일 수 있다. 제어부(110)는 획득된 소스 코드로부터 적어도 하나의 키워드를 추출할 수 있다. 적어도 하나의 키워드는 소스 코드에 포함된 함수와 관련된 키워드일 수 있다. 예를 들어, 적어도 하나의 키워드는 제 1 함수와 관련된 제 1 키워드 또는 제 2 함수와 관련된 제 2 키워드 등을 포함할 수 있다. 제어부(110)는 추출된 적어도 하나의 키워드에 기초하여 원자 모델을 테스트하기 위한 테스트 템플릿을 생성할 수 있다. 이하, 제어부(110)가 테스트 템플릿을 생성하는 방법의 일례는 도 2를 통해 설명한다.
출력부(120)는 제어부(110)를 통해 처리되는 정보(또는 적어도 하나의 컨텐츠)를 표시(출력)할 수 있다. 예를 들어, 출력부(120)는 제어부(110)를 통해 구동되는 응용 프로그램의 실행화면 정보, 또는 이러한 실형화면 정보에 따른 UI(User Interface), GUI(Graphic User Interface) 정보를 표시할 수 있다. 또한, 출력부(120)는 제어부(110)의 제어 하에 테스트 템플릿을 출력할 수 있다.
저장부(130)는 메모리 및/또는 영구저장매체를 포함할 수 있다. 메모리는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory, ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다.
이하에서는 서버(100)가 원자 모델을 테스트하는 방법의 일례에 대해 설명한다.
도 2는 본 개시의 몇몇 실시예에 따른 서버가 원자 모델을 테스트하는 방법의 일례를 설명하기 위한 흐름도이다.
도 2를 참조하면, 서버(100)의 제어부(110)는 시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델과 관련된 소스 코드를 획득할 수 있다(S110). 여기서, 원자 모델(atomic model)은 시뮬레이션의 최소 단위로써, 시뮬레이션의 행위(behavior)를 표현할 수 있다. 원자 모델은 시스템의 입력과 출력, 상태들, 시간 또는 함수를 포함할 수 있다. 원자 모델의 행위는 외부상태천이함수, 내부상태천이함수, 출력함수로 구성되고, 각 함수의 실행 후 원자 모델의 상태 변수는 변경될 수 있다.
시뮬레이션을 수행하기 위한 시스템 구조는 사용자로부터 입력될 수 있다. 또는 제어부(110)는 저장부(130)에 사전 저장된 시스템 구조를 획득할 수 있다. 제어부(110)는 시스템 구조에 포함된 원자 모델로부터 소스 코드를 추출함으로써, 소스 코드를 획득할 수 있다.
제어부(110)는 획득된 소스 코드로부터 적어도 하나의 키워드를 추출할 수 있다(S120).
적어도 하나의 키워드는 제 1 함수와 관련된 제 1 키워드, 제 2 함수와 관련된 제 2 키워드 또는 제 3 함수와 관련된 제 3 키워드 등을 포함할 수 있다.
제 1 함수는 외부상태천이함수()일 수 있다. 외부상태천이함수는 외부에서 입력 사건이 발생된 경우, 내부 상태를 변화시키기 위한 함수일 수 있다. 외부상태천이함수는 externalTransitionFunc으로 나타날 수 있다. 제어부(110)는 소스 코드에 포함된 externalTransitionFunc을 제 1 키워드로 결정하여 추출할 수 있다.
제 2 함수는 내부상태천이함수()일 수 있다. 내부상태천이함수는 일정 시간이 경과한 후 자체적으로 상태 변화가 발생시키기 위한 함수일 수 있다. 내부상태천이함수는 internalTransitionFunc으로 나타날 수 있다. 제어부(110)는 소스 코드에 포함된 internalTransitionFunc을 제 2 키워드로 결정하여 추출할 수 있다.
제 3 함수는 출력함수()일 수 있다. 출력함수는 일정 시간이 경과한 후 상태 천이에 따라 발생되는 출력을 기술하는 데 사용되는 함수일 수 있다. 출력함수는 outputFunc으로 나타날 수 있다. 제어부(110)는 소스 코드에 포함된 outputFunc을 제 3 키워드로 결정하여 추출할 수 있다.
제어부(110)는 추출된 적어도 하나의 키워드에 기초하여 원자 모델을 테스트하기 위한 테스트 템플릿을 생성할 수 있다(S130).
일례로, 제어부(110)는 적어도 하나의 키워드에 제 1 함수와 관련된 제 1 키워드가 포함된 경우, 소스 코드 내에서 제 1 키워드와 관련된 제 1 영역을 결정할 수 있다. 제 1 영역은 소스 코드 내에서 제 1 키워드와 관련된 코드들이 기술되어 있는 영역일 수 있다. 제어부(110)는 제 1 영역 내에 포함된 코드에 기초하여, 테스트 템플릿의 제 2 영역을 생성할 수 있다. 제 2 영역은 소스 코드에 포함된 제 1 함수와 관련되어 표시되는 테스트 템플릿의 테스트 코드 내 영역일 수 있다. 제어부(110)는 제 1 영역 내에 포함된 코드에 기초하여, 제 2 영역의 개수를 결정할 수 있다. 설명의 편의를 위해, 도 5 및 도 6이 참조될 수 있다.
도 5는 본 개시의 몇몇 실시예에 따른 원자 모델과 관련된 소스 코드의 일례를 설명하기 위한 도면이다. 도 6은 본 개시의 몇몇 실시예에 따른 테스트 템플릿에 포함된 테스트 코드의 일례를 설명하기 위한 도면이다.
도 5를 참조하면, 제어부(110)는 소스 코드(200) 내에서 제 1 키워드(210)를 추출할 수 있다. 제어부(110)는 추출된 제 1 키워드(210)와 관련된 제 1 영역(211)을 결정할 수 있다. 도 6을 참조하면, 제어부(110)는 제 1 영역(211) 내에 포함된 코드에 기초하여, 테스트 템플릿의 테스트 코드(300) 내에서 표시될 제 2 영역(310)의 개수를 결정할 수 있다. 제어부(110)는 제 2 영역(310)을 제 2-1 영역(311), 제 2-2 영역(312) 또는 제 2-3 영역(313) 등으로 표현함으로써, 제 2 영역(310)의 개수를 사용자에게 나타낼 수 있다. 일 실시예에 따르면, 제어부(110)는 제 1 영역(211) 내에 포함된 원자 모델의 입력 포트에 대한 제 1 변수의 개수에 기초하여, 테스트 템플릿의 테스트 코드(300) 내에서 표시될 제 2 영역(310)의 개수를 결정할 수 있다. 이하, 제어부(110)가 제 1 키워드에 기초하여 테스트 템플릿을 생성하는 방법의 일례는 도 3을 통해 설명한다.
한편, 제어부(110)는 적어도 하나의 키워드에 제 2 함수와 관련된 제 2 키워드가 포함된 경우, 소스 코드 내에서 제 2 키워드와 관련된 제 3 영역을 결정할 수 있다. 제 3 영역은 소스 코드 내에서 제 2 키워드와 관련된 코드들이 기술되어 있는 영역일 수 있다. 제어부(110)는 제 3 영역 내에 포함된 코드에 기초하여, 테스트 템플릿의 제 4 영역을 생성할 수 있다. 제 4 영역은 소스 코드에 포함된 제 2 함수와 관련되어 표시되는 테스트 템플릿의 테스트 코드 내 영역일 수 있다. 제어부(110)는 제 3 영역 내에 포함된 코드에 기초하여, 제 4 영역의 개수를 결정할 수 있다. 이하, 제어부(110)가 제 2 키워드에 기초하여 테스트 템플릿을 생성하는 방법의 일례는 도 4를 통해 설명한다.
한편, 테스트 템플릿은 사용자의 정답 입력을 요청하는 제 1 텍스트 메시지를 포함할 수 있다.
구체적으로, 테스트 템플릿은 원자 모델을 테스트 하기 위한 테스트 코드의 적어도 일부가 구축될 수 있다. 제어부(110)는 적어도 일부의 코드 외 부분에 대한 사용자로부터 정답 입력을 요청하는 제 1 텍스트 메시지를 생성할 수 있다. 생성된 제 1 텍스트 메시지는 테스트 템플릿의 출력에 따라 사용자에게 출력될 수 있다.
본 개시의 몇몇 실시예에 따르면, 제어부(110)는 테스트 템플릿을 생성하기 이전에, 파라미터를 입력받기 위한 테이블을 생성할 수 있다. 여기서, 파라미터는 사용자로부터의 정답 입력에 의해 결정되는 변수일 수 있다. 제어부(110)는 테스트 템플릿의 생성에 앞서 테이블을 생성하여 출력할 수 있다. 이 경우, 사용자는 테이블을 확인하여 자신이 입력해야 하는 파라미터를 확인할 수 있다.
일 실시예에 따르면, 테이블은 사용자로부터의 정답 입력이 요구되는 파라미터를 나타내는 정보 메시지를 포함할 수 있다.
구체적으로, 테스트 템플릿에 포함된 테스트 코드 내에는 사용자로부터의 정답 입력이 요구되는 파라미터가 존재할 수 있다. 사용자들은 테스트 코드 내에 존재하는 파라미터들에 대한 정답을 입력할 수 있다. 제어부(110)는 사용자로부터 입력된 정답에 기초하여, 파라미터를 획득할 수 있다. 다만, 테스트 코드 내에는 사용자로부터의 정답 입력이 요청되는 복수개의 파라미터가 존재할 수 있다. 그러나, 사용자는 자신이 입력해야 하는 정답을 일일이 확인해야 하는 경우, 파라미터를 찾는데 오랜 시간이 소요될 뿐만 아니라 몇몇 파라미터의 정답 입력을 놓칠 수도 있다. 따라서, 제어부(110)는 사용자로부터의 정답 입력이 요구되는 파라미터를 나타내는 정보 메시지가 포함되도록 테이블을 생성할 수 있다.
예를 들어, 제어부(110)는 “__변수명__"과 같은 텍스트가 포함되도록 테이블을 생성할 수 있다. 여기서, 변수명은 파라미터들을 나타내기 위한 용어로 사용되었으며, 실시예가 변수명으로 한정되는 것은 아니다. 예를 들어, 제어부(110)는 "__value__", "__job_id__” 또는 “__processing_time__”과 같은 텍스트가 포함되도록 테이블을 생성할 수 있다. 상술한 예시들에서, 정보 메시지는 “__”로 이해될 수 있다. 다시 말해, 제어부(110)는 언더스코어(Underscore)를 변수명의 양 옆에 표시함으로써, 사용자에게 정답 입력이 요구되는 파라미터를 나타내기 위한 정보 메시지를 생성할 수 있다. 제어부(110)는 정보 메시지를 포함하여 생성된 테이블을 테스트 템플릿의 생성에 앞서 출력할 수 있다. 또는 제어부(110)는 테스트 템플릿의 출력에 앞서 정보 메시지를 포함하는 테이블을 출력할 수 있다. 이에 따라, 사용자는 테스트 템플릿이 출력되는 경우, 자신이 입력해야 하는 정답 부분을 쉽게 확인할 수 있다.
다시 도 2를 참조하면, 제어부(110)는 생성된 테스트 템플릿을 출력할 수 있다(S140). 제어부(110)는 사용자의 정답 입력을 요청하는 제 1 텍스트 메시지를 포함하는 테스트 템플릿을 출력할 수 있다.
본 개시의 몇몇 실시예에 따르면, 제 1 텍스트 메시지는 포트의 상태 및 원소의 체류 시간에 대한 정답 입력을 요청하는 메시지일 수 있다.
체류 시간은 원자 모델에 포함된 원소의 체류 시간을 나타내는 파라미터일 수 있다.
포트의 상태는 원자 모델에 포함된 원소의 외부 천이에 따라 변동되는 파라미터일 수 있다. 원소의 외부 천이는 미리 정의된 상태 천이의 개수에 기초하여 결정될 수 있다. 미리 정의된 상태 천이는 적어도 하나의 상태 천이를 포함할 수 있다. 일례로, 미리 정의된 상태 천이는 다음 상태로의 천이를 나타내는 제 1 상태 천이, passive 상태로의 천이를 나타내는 제 2 상태 천이 및 현재 상태의 유지를 나타내는 제 3 상태 천이 중 적어도 하나를 포함할 수 있다. 제어부(110)는 제 1 상태 천이 내지 제 3 상태 천이의 개수에 기초하여 생성되는 원소의 외부 천이에 따른 포트의 상태 및 원소의 체류 시간에 대한 정답 입력을 요청하는 제 1 텍스트 메시지를 생성할 수 있다. 그리고, 제어부(110)는 제 1 텍스트 메시지를 포함하는 테스트 템플릿을 출력할 수 있다.
제어부(110)는 제 1 텍스트 메시지에 대한 응답으로, 테스트 템플릿 내에서 사용자로부터 입력된 파라미터를 획득할 수 있다(S150).
일례로, 제 1 텍스트 메시지는 포트의 상태에 대한 정답 입력을 요청하는 메시지를 포함할 수 있다. 제어부(110)는 사용자로부터 입력된 포트의 상태에 대한 정답 입력을 파라미터로 획득할 수 있다. 다른 일례로, 제 1 텍스트 메시지는 원소의 체류 시간에 대한 정답 입력을 요청하는 메시지를 포함할 수 있다. 제어부(110)는 사용자로부터 입력된 원소의 체류 시간에 대한 정답 입력을 파라미터로 획득할 수 있다.
제어부(110)는 테스트 템플릿에 포함된 테스트 코드 및 소스 코드 각각을 실행한 실행 결과를 이용하여 원자 모델에 대한 테스트를 수행할 수 있다(S160).
구체적으로, 제어부(110)는 획득된 파라미터를 이용하여 테스트 템플릿의 테스트 코드를 완성할 수 있다. 실시예에 따라, 테스트 템플릿은 원자 모델을 테스트 하기 위한 테스트 코드의 적어도 일부가 구축될 수 있다. 제어부(110)는 획득된 파라미터를 이용하여 테스트 코드에서 구축되지 않은 부분을 보완함으로써, 테스트 코드를 생성할 수 있다. 일 실시예에 따르면, 제어부(110)는 생성된 테스트 코드를 출력할 수 있다.
제어부(110)는 테스트 코드가 생성된 경우, 생성된 테스트 코드를 실행한 제 1 실행 결과를 결정할 수 있다. 제어부(110)는 원자 모델과 관련된 소스 코드를 실행한 제 2 실행 결과를 결정할 수 있다. 제어부(110)는 제 1 실행 결과 및 제 2 실행 결과를 비교함으로써, 원자 모델에 대한 테스트를 수행할 수 있다. 일 실시예에 따르면, 제어부(110)는 출력부(120)를 통해 제 1 실행 결과 및 제 2 실행 결과를 비교한 비교 결과를 출력할 수 있다. 이하, 제어부(110)가 비교 결과를 출력하는 방법의 일례는 도 7 및 도 8을 통해 설명한다.
상술한 구성에 따르면, 서버(100)는 시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델을 테스트 하기 위한 테스트 템플릿을 생성할 수 있다. 테스트 템플릿은 모델들을 테스트 하기 위한 코드의 적어도 일부가 사전 구축되어 존재할 수 있다. 종래에는 원자 모델을 테스트하기 위한 환경을 개발자가 직접 구축해야 했다. 이에 따라, 모델 검증에 많은 시간이 소요될 수 있었다. 반면, 본 개시에 따르면, 서버(100)는 원자 모델과 관련된 소스 코드에 기초하여, 원자 모델을 테스트 하기 위한 테스트 템플릿을 생성할 수 있다. 이에 따라, 원자 모델을 검증하기 위한 환경을 구축하는데 소요되는 시간이 절약될 수 있다.
나아가, 서버(100)는 사용자에게 정답 입력이 요구되는 파라미터를 나타내기 위한 정보 메시지를 테스트 템플릿과 함께 출력할 수 있다. 이에 따라, 사용자는 테스트 템플릿이 출력되는 경우, 자신이 입력해야 하는 정답 부분을 쉽게 확인할 수 있다.
한편, 본 개시의 몇몇 실시예에 따르면, 서버(100)는 소스 코드로부터 추출된 적어도 하나의 키워드에 기초하여 테스트 템플릿을 생성할 수 있다. 이하, 도 3을 통해 본 개시에 따른 서버가 테스트 템플릿을 생성하는 방법의 일례를 설명한다.
도 3은 본 개시의 몇몇 실시예에 따른 서버가 테스트 템플릿을 생성하는 방법의 일례를 설명하기 위한 흐름도이다.
도 3을 참조하면, 서버(100)의 제어부(110)는 적어도 하나의 키워드에 제 1 함수와 관련된 제 1 키워드가 포함된 경우, 소스 코드 내에서 제 1 키워드와 관련된 제 1 영역을 결정할 수 있다(S131). 제어부(110)는 제 1 영역 내에서 원자 모델의 입력 포트에 대한 제 1 변수의 개수를 결정할 수 있다(S132).
제 1 함수는 외부상태천이함수()일 수 있다. 외부상태천이함수는 externalTransitionFunc으로 나타날 수 있다. 제어부(110)는 소스 코드에 포함된 externalTransitionFunc을 제 1 키워드로 결정할 수 있다. 제어부(110)는 적어도 하나의 키워드에 제 1 키워드가 포함된 경우, 소스 코드 내에서 제 1 키워드와 관련된 제 1 영역을 결정할 수 있다. 제 1 영역은 제 1 키워드와 관련된 코드들이 기술된 영역일 수 있다. 설명의 편의를 위해, 도 5가 참조될 수 있다.
도 5는 본 개시의 몇몇 실시예에 따른 원자 모델과 관련된 소스 코드의 일례를 설명하기 위한 도면이다.
도 5를 참조하면, 제어부(110)는 소스 코드(200) 내에서 제 1 키워드(210)를 추출할 수 있다. 제어부(110)는 추출된 제 1 키워드(210)와 관련된 제 1 영역(211)을 결정할 수 있다.
제어부(110)는 제 1 영역(211) 내에서 원자 모델의 입력 포트에 대한 제 1 변수의 개수를 결정할 수 있다
제 1 변수는 원자 모델의 입력 포트와 관련되는 변수일 수 있다. 외부상태천이함수인 제 1 함수와 관련된 제 1 변수는 예를 들어, in 또는 urgent 등을 포함할 수 있다. 제어부(110)는 제 1 영역(211) 내에서 in 또는 urgent 등의 제 1 변수의 개수를 결정할 수 있다.
다시 도 3을 참조하면, 제어부(110)는 제 1 변수의 개수에 기초하여, 제 1 함수와 관련되어 표시되는 제 2 영역의 개수가 결정되도록 테스트 템플릿을 생성할 수 있다(S133).
구체적으로, 제어부(110)는 제 1 변수 중 in 변수와 관련된 소스 코드 내 영역에서 미리 정의된 상태 천이를 결정할 수 있다. 일 실시예에 따라, 미리 정의된 상태 천이는, 다음 상태로의 천이를 나타내는 제 1 상태 천이, passive 상태로의 천이를 나타내는 제 2 상태 천이 및 현재 상태의 유지를 나타내는 제 3 상태 천이 중 적어도 하나를 포함할 수 있다. 제 1 상태 천이와 관련된 함수는 holdIn일 수 있다. 제 2 상태 천이와 관련된 함수는 passivate일 수 있다. 제 3 상태 천이와 관련된 함수는 Continue일 수 있다. 제어부(110)는 in 변수와 관련된 소스 코드 내 영역에서 미리 정의된 상태 천이의 개수를 결정할 수 있다. 제어부(110)는 urgent 변수와 관련된 소스 코드 내 영역에서 미리 정의된 상태 천이의 개수를 결정할 수 있다. 제어부(110)는 in 변수와 관련된 소스 코드 내 영역 및 urgent 변수와 관련된 소스 코드 내 영역에서의 미리 정의된 상태 천이 개수에 대응하도록 제 2 영역의 개수를 결정할 수 있다. 제 2 영역은 테스트 템플릿 내에서 사용자로부터의 정답 입력이 요구되는 파라미터를 포함하는 영역일 수 있다. 설명의 편의를 위해, 도 6이 참조될 수 있다.
도 6은 본 개시의 몇몇 실시예에 따른 테스트 템플릿에 포함된 테스트 코드의 일례를 설명하기 위한 도면이다.
도 6을 참조하면, 제어부(110)는 제 1 변수의 개수에 기초하여, 제 1 함수와 관련되어 표시되는 제 2 영역(310)의 개수가 결정되도록 테스트 템플릿을 생성할 수 있다.
일례로, 제어부(110)는 소스 코드 내에서 in 변수와 관련된 영역 및 urgent 변수와 관련된 영역에서의 제 1 상태 천이 개수를 세 개라고 결정할 수 있다. 제어부(110)는 제 1 상태 천이 개수에 기초하여 제 2 영역(310)의 개수를 세 개로 결정할 수 있다. 제어부(110)는 제 2 영역(310)을 제 2-1 영역(311), 제 2-2 영역(312) 및 제 2-3 영역(313) 등으로 표현함으로써, 제 2 영역(310)의 개수를 사용자에게 나타낼 수 있다.
제 2 영역(310)은 사용자로부터의 정답 입력이 요구되는 영역일 수 있다. 구체적으로, 제 2 영역(310)은 적어도 일부가 구축된 테스트 코드(300) 내에서 사용자로부터의 정답 입력이 요구되는 제 2-1 영역(311), 제 2-2 영역(312) 및 제 2-3 영역(313) 등을 포함할 수 있다. 이에 따라, 사용자는 적어도 일부가 구축된 테스트 코드(300)가 출력되는 경우, 자신이 입력해야 하는 정답 부분을 쉽게 확인할 수 있다.
일 실시예에 따르면, 제어부(110)는 제 2 영역(310) 내에서 사용자로부터의 정답 입력이 요구되는 부분을 "__변수명__"과 같은 텍스트로 표현할 수 있다. 사용자는 테스트 템플릿의 출력에 앞서 기 출력된 테이블을 통해 정답 입력이 요구되는 부분을 인지할 수 있다. 예를 들어, 테이블은 사용자로부터의 정답 입력이 요구되는 파라미터를 나타내는 정보 메시지를 "__변수명__"과 같은 텍스트로 나타낼 수 있다. 사용자는 기 출력된 테이블을 통해 제 2 영역(310) 내에서 정답 입력이 요구되는 부분을 쉽게 인지할 수 있다.
일 실시예에 따르면, 제어부(110)는 사용자로부터 정답이 입력된 경우, 사용자로부터 입력된 파라미터를 이용하여 테스트 템플릿 내 테스트 코드의 구축을 완료할 수 있다. 제어부(110)는 구축된 테스트 코드를 출력할 수 있다.
상술한 구성에 따르면, 서버(100)는 소스 코드(200) 내에서의 제 1 키워드(210)와 관련된 제 1 영역(211)에 기초하여, 테스트 템플릿 내에서의 제 2 영역(310)의 개수가 결정되도록 테스트 템플릿을 생성할 수 있다. 또한, 제 2 영역(310)은 사용자로부터의 정답 입력이 요구되는 부분이 "__변수명__"과 같은 텍스트로 출력될 수 있다. 이에 따라, 사용자는 제 2 영역(310) 내에서 정답 입력이 요구되는 부분을 쉽게 확인할 수 있다.
한편, 본 개시의 몇몇 실시예에 따르면, 서버(100)는 소스 코드 내에서 적어도 하나의 키워드에 제 2 함수와 관련된 제 2 키워드가 포함된 경우, 제 2 키워드와 관련된 제 3 영역을 결정할 수 있다. 제어부(110)는 제 3 영역 내에서의 제 2 변수의 개수에 기초하여, 제 2 함수와 관련되어 표시되는 테스트 템플릿 내 제 4 영역의 개수가 결정되도록 테스트 템플릿을 생성할 수 있다. 이하, 도 4를 통해 본 개시에 따른 서버가 테스트 템플릿을 생성하는 방법의 일례를 설명한다.
도 4는 본 개시의 몇몇 실시예에 따른 서버가 테스트 템플릿을 생성하는 방법의 다른 일례를 설명하기 위한 흐름도이다.
도 4를 참조하면, 서버(100)의 제어부(110)는 적어도 하나의 키워드에 제 2 함수와 관련된 제 2 키워드가 포함된 경우, 소스 코드 내에서 상기 제 2 키워드와 관련된 제 3 영역을 결정할 수 있다(S210). 제어부(110)는 제 3 영역 내에서 원자 모델에 포함된 원소의 상태를 나타내는 제 2 변수의 개수를 결정할 수 있다(S220).
제 2 함수는 내부상태천이함수()일 수 있다. 내부상태천이함수는 internalTransitionFunc으로 나타날 수 있다. 제어부(110)는 소스 코드에 포함된 internalTransitionFunc을 제 2 키워드로 결정할 수 있다. 제어부(110)는 적어도 하나의 키워드에 제 2 키워드가 포함된 경우, 소스 코드 내에서 제 2 키워드와 관련된 제 3 영역을 결정할 수 있다. 제 3 영역은 제 2 키워드와 관련된 코드들이 기술된 영역일 수 있다. 설명의 편의를 위해, 도 5가 참조될 수 있다.
도 5는 본 개시의 몇몇 실시예에 따른 원자 모델과 관련된 소스 코드의 일례를 설명하기 위한 도면이다.
도 5를 참조하면, 제어부(110)는 소스 코드(200) 내에서 제 2 키워드(220)를 추출할 수 있다. 제어부(110)는 추출된 제 2 키워드(220)와 관련된 제 2 영역(221)을 결정할 수 있다.
제어부(110)는 제 2 영역(221) 내에서 원자 모델에 포함된 원소의 상태를 나타내는 제 2 변수의 개수를 결정할 수 있다
제 2 변수는 원소의 상태를 나타내는 변수일 수 있다. 내부상태천이함수인 제 2 함수와 관련된 제 2 변수는 예를 들어, busy 또는 interrupted 등을 포함할 수 있다. 제어부(110)는 제 2 영역(221) 내에서 busy 또는 interrupted 등의 제 2 변수의 개수를 결정할 수 있다.
다시 도 3을 참조하면, 제어부(110)는 제 2 변수의 개수에 기초하여, 제 2 함수와 관련되어 표시되는 제 4 영역의 개수가 결정되도록 테스트 템플릿을 생성할 수 있다(S230).
구체적으로, 제어부(110)는 제 2 변수 중 busy 변수와 관련된 소스 코드 내 영역에서 미리 정의된 상태 천이를 결정할 수 있다. 일 실시예에 따라, 미리 정의된 상태 천이는, 다음 상태로의 천이를 나타내는 제 1 상태 천이, passive 상태로의 천이를 나타내는 제 2 상태 천이 및 현재 상태의 유지를 나타내는 제 3 상태 천이 중 적어도 하나를 포함할 수 있다. 제 1 상태 천이와 관련된 함수는 holdIn일 수 있다. 제 2 상태 천이와 관련된 함수는 passivate일 수 있다. 제 3 상태 천이와 관련된 함수는 Continue일 수 있다. 제어부(110)는 busy 변수와 관련된 소스 코드 내 영역에서 미리 정의된 상태 천이의 개수를 결정할 수 있다. 제어부(110)는 interrupted 변수와 관련된 소스 코드 내 영역에서 미리 정의된 상태 천이의 개수를 결정할 수 있다. 제어부(110)는 busy 변수와 관련된 소스 코드 내 영역 및 interrupted 변수와 관련된 소스 코드 내 영역에서의 미리 정의된 상태 천이 개수에 대응하도록 제 4 영역의 개수를 결정할 수 있다. 제 4 영역은 테스트 템플릿 내에서 사용자로부터의 정답 입력이 요구되는 파라미터를 포함하는 영역일 수 있다. 설명의 편의를 위해, 도 6이 참조될 수 있다.
도 6은 본 개시의 몇몇 실시예에 따른 테스트 템플릿에 포함된 테스트 코드의 일례를 설명하기 위한 도면이다.
도 6을 참조하면, 제어부(110)는 제 2 변수의 개수에 기초하여, 제 2 함수와 관련되어 표시되는 제 4 영역(320)의 개수가 결정되도록 테스트 템플릿을 생성할 수 있다.
일례로, 제어부(110)는 소스 코드 내에서 busy 변수와 관련된 영역에서의 제 1 상태 천이 개수를 한 개라고 결정할 수 있다. 제어부(110)는 소스 코드 내에서 busy 변수와 관련된 영역에서의 제 2 상태 천이 개수를 한 개라고 결정할 수 있다. 제어부(110)는 제 1 상태 천이 개수 및 제 2 상태 천이 개수에 기초하여 제 4 영역(320)의 개수를 두 개로 결정할 수 있다. 제어부(110)는 제 4 영역(320)을 제 4-1 영역(321) 및 제 4-2 영역(322) 등으로 표현함으로써, 제 4 영역(320)의 개수를 사용자에게 나타낼 수 있다.
제 4 영역(320)은 사용자로부터의 정답 입력이 요구되는 영역일 수 있다. 구체적으로, 제 4 영역(320)은 적어도 일부가 구축된 테스트 코드(300) 내에서 사용자로부터의 정답 입력이 요구되는 제 4-1 영역(321) 및 제 4-2 영역(322) 등을 포함할 수 있다. 이에 따라, 사용자는 적어도 일부가 구축된 테스트 코드(300)가 출력되는 경우, 자신이 입력해야 하는 정답 부분을 쉽게 확인할 수 있다.
일 실시예에 따르면, 제어부(110)는 제 4 영역(320) 내에서 사용자로부터의 정답 입력이 요구되는 부분을 "__변수명__"과 같은 텍스트로 표현할 수 있다. 사용자는 테스트 템플릿의 출력에 앞서 기 출력된 테이블을 통해 정답 입력이 요구되는 부분을 인지할 수 있다. 예를 들어, 테이블은 사용자로부터의 정답 입력이 요구되는 파라미터를 나타내는 정보 메시지를 "__변수명__"과 같은 텍스트로 나타낼 수 있다. 사용자는 기 출력된 테이블을 통해 제 4 영역(320) 내에서 정답 입력이 요구되는 부분을 쉽게 인지할 수 있다.
일 실시예에 따르면, 제어부(110)는 사용자로부터 정답이 입력된 경우, 사용자로부터 입력된 파라미터를 이용하여 테스트 템플릿 내 테스트 코드의 구축을 완료할 수 있다. 제어부(110)는 구축된 테스트 코드를 출력할 수 있다.
상술한 구성에 따르면, 서버(100)는 소스 코드(200) 내에서의 제 2 키워드(220)와 관련된 제 2 영역(221)에 기초하여, 테스트 템플릿 내에서의 제 4 영역(320)의 개수가 결정되도록 테스트 템플릿을 생성할 수 있다. 또한, 제 4 영역(320)은 사용자로부터의 정답 입력이 요구되는 부분이 "__변수명__"과 같은 텍스트로 출력될 수 있다. 이에 따라, 사용자는 제 4 영역(320) 내에서 정답 입력이 요구되는 부분을 쉽게 확인할 수 있다.
한편, 본 개시의 몇몇 실시예에 따르면, 서버(100)는 테스트 템플릿에 포함된 테스트 코드 및 원자 모델에 포함된 소스 코드 각각을 실행한 실행 결과를 이용하여 원자 모델에 대한 테스트를 수행할 수 있다. 이하, 도 7 및 도 8을 통해 본 개시에 따른 서버가 원자 모델에 대한 테스트를 수행하는 방법의 일례를 설명한다.
도 7은 본 개시의 몇몇 실시예에 따른 서버가 원자 모델에 대한 테스트를 수행하는 방법의 일례를 설명하기 위한 흐름도이다.
도 7을 참조하면, 서버(100)의 제어부(110)는 테스트 코드를 실행한 제 1 실행 결과를 결정할 수 있다(S161).
구체적으로, 제어부(110)는 제 1 텍스트 메시지에 대한 응답으로 테스트 템플릿 내에서 사용자로부터 입력된 파라미터를 획득할 수 있다. 제어부(110)는 입력된 파라미터를 이용하여 테스트 템플릿 내 테스트 코드의 구축을 완료할 수 있다. 제어부(110)는 구축된 테스트 코드를 실행한 제 1 실행 결과를 결정할 수 있다.
일 실시예에 따르면, 제어부(110)는 테스트 템플릿에 포함된 테스트 코드(300)를 실행하기 위한 순서를 사용자로부터 입력 받을 수도 있다. 예를 들어, 제어부(110)는 제 2-1 영역(311)에 포함된 코드, 제 2-2 영역(312)에 포함된 코드, 제 2-3 영역(313)에 포함된 코드, 제 4-1 영역(321)에 포함된 코드, 제 4-2 영역(322)에 포함된 코드 및 그 외 영역에 포함된 코드를 실행함으로써, 테스트 코드를 실행한 제 1 실행 결과를 결정할 수 있다. 제어부(110)는 적어도 하나의 영역의 순서를 변경함으로써, 테스트 코드가 실행되는 순서가 변동되도록 야기하는 사용자 입력을 사용자로부터 받을 수도 있다.
제어부(110)는 소스 코드를 실행한 제 2 실행 결과를 결정할 수 있다(S162).
구체적으로, 제어부(110)는 원자 모델과 관련된 소스 코드를 실행한 제 2 실행 결과를 결정할 수 있다.
제어부(110)는 제 1 실행 결과 및 제 2 실행 결과를 비교한 비교 결과를 출력할 수 있다(S163).
구체적으로, 제어부(110)는 제 1 실행 결과 및 제 2 실행 결과를 비교할 수 있다. 제어부(110)는 비교 결과에 기초하여, 제 1 실행 결과와 제 2 실행 결과에서 서로 상이한 부분을 결정할 수 있다. 제어부(110)는 서로 상이한 부분을 사용자가 확인할 수 있도록 비교 결과를 출력할 수 있다. 설명의 편의를 위해 도 8이 참조될 수 있다.
도 8은 본 개시의 몇몇 실시예에 따른 서버가 원자 모델에 대한 테스트를 수행한 결과의 일례를 설명하기 위한 도면이다.
도 8을 참조하면, 제어부(110)는 제 1 실행 결과 및 제 2 실행 결과를 비교한 비교 결과(400)를 출력할 수 있다.
구체적으로, 제어부(110)는 제 1 실행 결과와 제 2 실행 결과에서 서로 상이한 부분을 결정할 수 있다. 제어부(110)는 서로 상이한 부분을 사용자가 확인할 수 있도록 비교 결과(410)를 출력할 수 있다.
일 실시예에 따르면, 제어부(110)는 비교 결과(410) 내에서 정답 부분과 오답 부분을 표시할 수 있다. 예를 들어, 제어부(110)는 비교 결과(410) 내에서 정답 부분은 빨간색으로 강조하여 출력할 수 있다. 제어부(110)는 비교 결과(410) 내에서 오답 부분은 초록색으로 강조하여 출력할 수 있다.
상술한 구성에 따르면, 서버(100)는 테스트 템플릿에 포함된 테스트 코드 및 원자 모델과 관련된 소스 코드 각각을 실행한 실행 결과를 이용하여 원자 모델에 대한 테스트를 수행할 수 있다. 원자 모델에 대한 테스트를 수행한 비교 결과는 정답 부분과 오답 부분이 강조되어 출력될 수 있다. 따라서, 사용자는 원자 모델을 구성하는 소스 코드에서 자신이 잘못 구축한 부분을 쉽게 확인할 수 있다.
제시된 실시예들에 대한 설명은 임의의 본 개시의 기술 분야에서 통상의 지식을 가진 자가 본 개시를 이용하거나 또는 실시할 수 있도록 제공된다. 이러한 실시예들에 대한 다양한 변형들은 본 개시의 기술 분야에서 통상의 지식을 가진 자에게 명백할 것이며, 여기에 정의된 일반적인 원리들은 본 개시의 범위를 벗어남이 없이 다른 실시예들에 적용될 수 있다. 그리하여, 본 개시는 여기에 제시된 실시예들로 한정되는 것이 아니라, 여기에 제시된 원리들 및 신규한 특징들과 일관되는 최광의의 범위에서 해석되어야 할 것이다.

Claims (5)

  1. 적어도 하나의 프로세서를 포함하는 서버에 의해 수행되는 원자 모델을 테스트하기 위한 방법으로서,
    시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델과 관련된 소스 코드를 획득하는 단계;
    획득된 상기 소스 코드로부터 적어도 하나의 키워드를 추출하는 단계;
    추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계 - 상기 테스트 템플릿은 사용자의 정답 입력을 요청하는 제 1 텍스트 메시지를 포함함 -;
    생성된 상기 테스트 템플릿을 출력하는 단계;
    상기 제 1 텍스트 메시지에 대한 응답으로, 상기 테스트 템플릿 내에서 사용자로부터 입력된 파라미터를 획득하는 단계; 및
    상기 테스트 템플릿에 포함된 테스트 코드 및 상기 소스 코드 각각을 실행한 실행 결과를 이용하여 상기 원자 모델에 대한 테스트를 수행하는 단계;
    를 포함하고,
    추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하기 이전에, 상기 파라미터를 입력받기 위한 테이블을 생성하는 단계 - 상기 테이블은 사용자로부터의 정답 입력이 요구되는 파라미터를 나타내는 정보 메시지를 포함함 - ; 및
    생성된 상기 테이블을 출력하는 단계;
    를 더 포함하고,
    상기 테스트 템플릿에 포함된 테스트 코드 및 상기 소스 코드 각각을 실행한 실행 결과를 이용하여 상기 원자 모델에 대한 테스트를 수행하는 단계는,
    상기 테스트 코드를 실행한 제 1 실행 결과를 결정하는 단계;
    상기 소스 코드를 실행한 제 2 실행 결과를 결정하는 단계; 및
    상기 제 1 실행 결과 및 상기 제 2 실행 결과를 비교한 비교 결과를 출력하는 단계;
    를 포함하는,
    원자 모델을 테스트하기 위한 방법.
  2. 적어도 하나의 프로세서를 포함하는 서버에 의해 수행되는 원자 모델을 테스트하기 위한 방법으로서,
    시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델과 관련된 소스 코드를 획득하는 단계;
    획득된 상기 소스 코드로부터 적어도 하나의 키워드를 추출하는 단계;
    추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계 - 상기 테스트 템플릿은 사용자의 정답 입력을 요청하는 제 1 텍스트 메시지를 포함함 -;
    생성된 상기 테스트 템플릿을 출력하는 단계;
    상기 제 1 텍스트 메시지에 대한 응답으로, 상기 테스트 템플릿 내에서 사용자로부터 입력된 파라미터를 획득하는 단계; 및
    상기 테스트 템플릿에 포함된 테스트 코드 및 상기 소스 코드 각각을 실행한 실행 결과를 이용하여 상기 원자 모델에 대한 테스트를 수행하는 단계;
    를 포함하고,
    상기 추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계는,
    상기 적어도 하나의 키워드에 제 1 함수와 관련된 제 1 키워드가 포함된 경우, 상기 소스 코드 내에서 상기 제 1 키워드와 관련된 제 1 영역을 결정하는 단계;
    상기 제 1 영역 내에서 상기 원자 모델의 입력 포트에 대한 제 1 변수의 개수를 결정하는 단계; 및
    상기 제 1 변수의 개수에 기초하여, 상기 제 1 함수와 관련되어 표시되는 제 2 영역의 개수가 결정되도록 상기 테스트 템플릿을 생성하는 단계;
    를 포함하는,
    원자 모델을 테스트하기 위한 방법.
  3. 적어도 하나의 프로세서를 포함하는 서버에 의해 수행되는 원자 모델을 테스트하기 위한 방법으로서,
    시뮬레이션을 수행하기 위한 시스템 구조를 구성하는 원자 모델과 관련된 소스 코드를 획득하는 단계;
    획득된 상기 소스 코드로부터 적어도 하나의 키워드를 추출하는 단계;
    추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계 - 상기 테스트 템플릿은 사용자의 정답 입력을 요청하는 제 1 텍스트 메시지를 포함함 -;
    생성된 상기 테스트 템플릿을 출력하는 단계;
    상기 제 1 텍스트 메시지에 대한 응답으로, 상기 테스트 템플릿 내에서 사용자로부터 입력된 파라미터를 획득하는 단계; 및
    상기 테스트 템플릿에 포함된 테스트 코드 및 상기 소스 코드 각각을 실행한 실행 결과를 이용하여 상기 원자 모델에 대한 테스트를 수행하는 단계;
    를 포함하고,
    상기 추출된 상기 적어도 하나의 키워드에 기초하여 상기 원자 모델을 테스트하기 위한 테스트 템플릿을 생성하는 단계는,
    상기 적어도 하나의 키워드에 제 2 함수와 관련된 제 2 키워드가 포함된 경우, 상기 소스 코드 내에서 상기 제 2 키워드와 관련된 제 3 영역을 결정하는 단계;
    상기 제 3 영역 내에서 상기 원자 모델에 포함된 원소의 상태를 나타내는 제 2 변수의 개수를 결정하는 단계; 및
    상기 제 2 변수의 개수에 기초하여, 상기 제 2 함수와 관련되어 표시되는 제 4 영역의 개수가 결정되도록 상기 테스트 템플릿을 생성하는 단계;
    를 포함하는,
    원자 모델을 테스트하기 위한 방법.
  4. 제 1 항 내지 제 3 항 중 어느 한 항에 있어서,
    상기 제 1 텍스트 메시지는,
    미리 정의된 상태 천이의 개수에 기초하여 생성되는 상기 원자 모델에 포함된 원소의 외부 천이에 따른 포트의 상태 및 상기 원소의 체류 시간에 대한 정답 입력을 요청하는 메시지이고,
    상기 미리 정의된 상태 천이는, 다음 상태로의 천이를 나타내는 제 1 상태 천이, passive 상태로의 천이를 나타내는 제 2 상태 천이 및 현재 상태의 유지를 나타내는 제 3 상태 천이 중 적어도 하나를 포함하는,
    원자 모델을 테스트하기 위한 방법.
  5. 삭제
KR1020230030276A 2023-03-08 2023-03-08 Devs 내에서 원자 모델을 테스트하기 위한 방법 KR102594638B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230030276A KR102594638B1 (ko) 2023-03-08 2023-03-08 Devs 내에서 원자 모델을 테스트하기 위한 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230030276A KR102594638B1 (ko) 2023-03-08 2023-03-08 Devs 내에서 원자 모델을 테스트하기 위한 방법

Publications (1)

Publication Number Publication Date
KR102594638B1 true KR102594638B1 (ko) 2023-10-26

Family

ID=88508856

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230030276A KR102594638B1 (ko) 2023-03-08 2023-03-08 Devs 내에서 원자 모델을 테스트하기 위한 방법

Country Status (1)

Country Link
KR (1) KR102594638B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120105901A (ko) * 2011-03-17 2012-09-26 한국과학기술원 계층적 이산 사건 시스템 명세 모델의 이벤트 기반 시뮬레이션 방법, 시스템 및 이를 위한 기록 매체
KR101926110B1 (ko) * 2017-09-26 2018-12-07 대한민국 분산 이산사건시스템 명세 기반 연속 시스템 시뮬레이터, 시뮬레이션 방법, 이를 위한 기록매체, 및 시스템
KR20190059701A (ko) * 2017-11-23 2019-05-31 한국전자통신연구원 Devs 기반 시뮬레이션 모델 및 코드 생성 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120105901A (ko) * 2011-03-17 2012-09-26 한국과학기술원 계층적 이산 사건 시스템 명세 모델의 이벤트 기반 시뮬레이션 방법, 시스템 및 이를 위한 기록 매체
KR101926110B1 (ko) * 2017-09-26 2018-12-07 대한민국 분산 이산사건시스템 명세 기반 연속 시스템 시뮬레이터, 시뮬레이션 방법, 이를 위한 기록매체, 및 시스템
KR20190059701A (ko) * 2017-11-23 2019-05-31 한국전자통신연구원 Devs 기반 시뮬레이션 모델 및 코드 생성 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
(비특허문헌 1) "SES/DEVS 방법론을 이용한 커리큘럼 엔진 연구" Journal of Engineering Education Research Vol. 16, No. 5, pp. 18~23, 2013(2013.10.30)

Similar Documents

Publication Publication Date Title
Campos et al. Model checking interactor specifications
US20170132194A1 (en) Information-processing equipment based on a spreadsheet
US8984488B2 (en) Type and range propagation through data-flow models
US10970449B2 (en) Learning framework for software-hardware model generation and verification
US11941012B2 (en) User action sequence recognition using action models
CN108228455B (zh) 一种软件控制危险分析方法
CN106484389B (zh) 动作流分段管理
CN114282686A (zh) 用于构建机器学习建模过程的方法及系统
US8909579B2 (en) Identifying invariant candidates based on proofs
KR102594638B1 (ko) Devs 내에서 원자 모델을 테스트하기 위한 방법
US11681873B2 (en) Creating an executable process from a text description written in a natural language
CN110928761B (zh) 需求链及其应用的系统和方法
US20200265123A1 (en) Automatic cover point generation based on register transfer level analysis
CN108205608B (zh) 一种模型可配置的仿真装置
US8776015B1 (en) Pattern modeling methods and systems
CN115033436A (zh) 页面测试方法及装置、电子设备、存储介质
CN113126881B (zh) 系统配置方法、装置、设备、可读存储介质及分布式存储系统
CN113867706A (zh) 代码生成方法及装置
CN108960433B (zh) 用于运行机器学习建模过程的方法及系统
Singh et al. Stateflow to tabular expressions
CN115061916B (zh) 自动化生成接口测试用例的方法及其相关设备
US11727204B2 (en) Schema and object extractor
US20230065428A1 (en) Programming support program storage medium, programming support device, and programming support method
US7885800B1 (en) Synchronous models in modeling environments
Cathie The Anti-Curse: Creating an Extension to SAS® Enterprise Miner™ Using PROC ARBORETUM

Legal Events

Date Code Title Description
GRNT Written decision to grant