KR100501412B1 - 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법 - Google Patents

엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법 Download PDF

Info

Publication number
KR100501412B1
KR100501412B1 KR10-2002-0078307A KR20020078307A KR100501412B1 KR 100501412 B1 KR100501412 B1 KR 100501412B1 KR 20020078307 A KR20020078307 A KR 20020078307A KR 100501412 B1 KR100501412 B1 KR 100501412B1
Authority
KR
South Korea
Prior art keywords
test
class
testing
xml
data
Prior art date
Application number
KR10-2002-0078307A
Other languages
English (en)
Other versions
KR20040050463A (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 KR10-2002-0078307A priority Critical patent/KR100501412B1/ko
Publication of KR20040050463A publication Critical patent/KR20040050463A/ko
Application granted granted Critical
Publication of KR100501412B1 publication Critical patent/KR100501412B1/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/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/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/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (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)
  • Debugging And Monitoring (AREA)

Abstract

본 발명은 인터넷을 통하여 서버측에 설치되어 있는 엔터프라이즈 자바 빈즈 컴포넌트를 위한 그레이박스(Grey Box) 소프트웨어 테스팅장치 및 그 방법에 관한 것이다.
엔터프라이즈 자바 빈 컴포넌트의 클래스 파일을 입력받아 테스트하는 테스팅 장치에 있어서, 입력된 클래스에 대하여 자바에서 지원하는 리플렉션(Reflection) API를 이용하여 입력된 클래스를 분석하고 그 클래스에 대한 정보를 추출하는 클래스 분석모듈; 클래스 분석모듈에서 추출된 클래스에 대한 정보를 저장하기 위한 정보 저장소; 상기 정보 저장소에 저장되어 있는 정보를 입력받아 상기 입력된 클래스에 대한 클래스의 테스트 케이스를 XML파일 형태로 생성하는 XML로더모듈; 상기 XML로더모듈에서 생성된 XML문서를 이용하여 테스트 클라이언트를 생성하는 테스트 클라이언트 생성모듈; 상기 XML로더모듈에서 생성된 XML문서를 이용하여 테스트 데이터를 생성하는 테스트 데이터 생성모듈; 및 상기 테스트 클라이언트와 상기 테스트 데이터를 자바 리플렉션 API를 이용하여 동적으로 XML문서와 상기 테스트 클라이언트를 인스턴스화시켜 테스팅하는 테스팅 서버모듈;을 포함하는 것을 특징으로 한다.

Description

엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법{ Appratus and Method for Enterprise JavaBean Component Testing}
본 발명은 인터넷을 통하여 서버측에 설치되어 있는 엔터프라이즈 자바 빈즈 컴포넌트를 위한 그레이 박스(Grey Box) 소프트웨어 테스팅 장치 및 그 방법에 관한 것으로, 상세하게는 대상이 되는 컴포넌트를 실제 운용하고자 하는 서버측에 설치된 상태에서 테스팅을 시행하고, 대상 컴포넌트를 시험하기 위해 테스트 케이스와 테스트 데이터를 자동 생성하는 것으로, 이를 쉽게 테스팅하기 위한 테스트 클라이언트와 테스팅 서버장치에 관한 것이다.
소프트웨어 테스팅은 프로그램내의 에러나 결함을 발견하기 위해 주어진 요구사항에 맞게 구현이 되었는지 검증하는 것으로, 소프트웨어를 테스팅하기 위한 일반적인 구조는 먼저 테스팅하고자 하는 대상 언어를 선정하고, 선정된 언어를 위한 파서를 구현한 후 이로부터 분석정보를 추출하게 되며, 추출된 분석정보는 테스팅에 필요한 테스트 케이스와 테스트 데이터를 생성하는데 주로 사용된다.
그러나 간단한 프로그램 내에서도 수많은 경로가 있을 수 있고 프로그램의 크기가 커지게 되면 기하 급수적으로 증가하게 된다. 따라서 실제로는 완벽한 소프트웨어를 구현하는 것은 거의 불가능하기 때문에 어느 정도의 테스팅 한계와 효율을 감안하여 소프트웨어 테스팅이 이루어져야 한다.
소프트웨어 테스팅은 일반적으로 추상화 수준에 따라 단위 테스팅(Unit Testing), 통합 테스팅(Integration Testing), 시스템 테스팅(System Testing) 및 인증 테스팅(Acceptance Testing)으로 나눌 수 있다.
단위 테스팅은 모듈 테스팅이라고 하며 타 모듈과 관계없이 단지 대상이 되는 모듈만 독립적으로 시험하는 것으로, 이를 위해서는 테스트 하네스(harness)가 필요하다.
통합 테스팅은 모듈 사이의 결합 관계와 상호 작용을 시험한다. 시스템 테스팅은 전체 시스템에 요구되는 모듈이 완전하게 갖추어진 상태에서 그 시스템 소프트웨어를 시험하는 것이고 마지막 인정 테스팅은 완료 된 소프트웨어 시스템을 사용자 관점에서 고객의 만족 여부를 확인하는 것이다.
소프트웨어 테스팅 기법 측면에서 보면 크게 블랙박스(Black-box)와 화이트 박스(White-box)로 나눌 수 있다.
상기 블랙박스 테스팅은 소프트웨어의 내부 동작에 대한 고려는 하지 않고 단지 소프트웨어의 상세 명세서나 요구사항 분석 명세서를 이용하여 입출력 데이터를 중심으로 이루어지는 것으로, 행동 테스팅(behavioral testing)이라고 한다.
그리고 블랙박스 테스팅에는 소프트웨어의 기능을 테스팅하는 기능 테스팅과 경계 값을 이용한 바운드리 밸류(Boundary-value) 테스팅을 들 수 있다.
상기 화이트박스 테스팅은 다른 용어로 구조적 테스팅(Structural Testing)이라고 하며 소프트웨어 내부가 만족스럽게 수행되는지 시험하는 것이다. 화이트박스 테스팅에는 제어흐름 중심테스팅(Control-flow driven testing), 데이터흐름 중심테스팅(Data-flow driven testing), 변이 테스팅(Mutation Testing), 영역 테스팅(Domain Testing)등이 있다.
그레이박스(Grey-box)테스팅은 블랙박스 테스팅과 화이트박스 테스팅의 중간 형태를 취하고 있다.
그레이박스 테스팅은 소프트웨어 테스팅 추상화 수준에서 통합 테스팅에 적용되는 소프트웨어 테스팅기법이다. 그 기법은 컴포넌트간의 상호 관계를 컴포넌트 인터페이스를 기반으로 테스팅을 하는 것이다. 즉 컴포넌트 자체는 블랙박스이지만 각각의 입출력 인터페이스는 이미 공개적으로 알려져 있기 때문에 이 인터페이스를 이용하여 테스팅을 하게 된다.
다수의 클라이언트에게 웹을 통하여 서비스를 하기 위한 서비스 컴포넌트는 서버측에 설치되어 있다. 그리고 그 컴포넌트는 원격지의 데이터 베이스를 엑세스할 수도 있고 다른 서버의 컴포넌트와 상호 작용을 할 수도 있다. 예를 들어 썬(Sun)에서는 엔터프라이즈 자바 빈(Enterprise JavaBean)으로 컴포넌트 기반의 소프트웨어 개발을 위해 J2EE라고 하는 웹 어플리케이션 서버에 대한 표준 스펙을 발표한 바 있다.
개발된 컴포넌트는 서버측에 설치 및 운용이 되고 이들 컴포넌트는 독립적으로 실행될 수도 있지만, 주로 데이터 베이스나 다른 컴포넌트들과 상호 정보를 교환하여 운용되기도 한다. 이럴 경우에 개발된 서버 컴포넌트의 명확한 인터페이스 테스팅을 위해서는 서버측에 설치 및 운용 상태에서 테스팅이 이루어져야 한다.
본 발명과 관련된 기술로는 객체지향 소프트웨어 테스팅에 관련된 기술들을 들 수 있다. 소프트웨어 테스팅에 관련된 기술로 화이트박스 테스팅기법을 적용한 것으로 이전 테스팅에 사용된 프로그램 영역은 다시 테스팅하지 않도록 하기 위한 자동 테스팅기법(미국 특허 5758061), 객체지향 소프트웨어 테스트를 위하여 테스트 드라이브와 테스트 케이스를 포함하고 있는 소프트웨어 테스트 프레임을 이용하여 테스팅하는 기법(미국 특허, 6353897)이 있다. 그리고 자바 클래스나 자바 빈(Java Bean)을 동적으로 생성시켜 파일로 분리되어 있는 메타 데이터를 바인딩하는 방법(미국 특허, 6427228)등이 본 기술과 유사하다.
이러한 선행 기술들은 테스팅 대상이 되는 프로그램과 테스팅 프로그램이 같은 머신에서만 초점을 맞추고 서버측에서 이루어지는 소프트웨어 대한 기술을 포함하고 있지 않다. 서버측의 다른 컴포넌트나 자원, 즉 데이터베이스와 같은 자원들과 관련을 가지는 컴포넌트일 경우에 컴포넌트가 제대로 동작하는지를 시험하기는 매우 힘들 뿐만 아니라 많은 수작업과 노력이 요구된다.
따라서 서버측에서 운용되고 있는 컴포넌트를 보다 쉽게 테스팅할 수 있는 자동화된 테스팅방법이 필요하고, 만약 같은 컴포넌트를 재 시험할 경우에 기존 테스트 케이스를 재사용하여 보다 빠르게 테스팅할 수 있는 방법이 요구된다.
본 발명은 상기한 문제점을 해결하기 위한 것으로, 상세하게는 개발자가 서버측 컴포넌트를 개발했을 경우, 구현된 소프트웨어 컴포넌트가 제대로 요구사항을 만족하는지 자동으로 검증하고, 재차 반복되는 테스팅 과정을 재사용을 통해 줄일 수 있는 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법을 제공하는데 목적이 있다.
상기 목적은 본 발명의 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치는 소프트웨어 테스팅에서 통합 테스팅을 위한 그레이 박스 테스팅장치를 제공함으로써 달성할 수 있는 것으로, 본 발명은 엔터프라이즈 자바 빈 컴포넌트의 클래스 파일을 입력받아 테스트하는 테스팅 장치에 있어서, 입력된 클래스에 대하여 자바 리플렉션(Reflection) API를 이용하여 분석하고 상기 입력된 클래스에 대한 정보를 추출하는 클래스 분석모듈; 상기 클래스 분석모듈에서 추출된 상기 정보를 저장하기 위한 정보 저장소; 상기 정보 저장소에 저장되어 있는 상기 정보를 이용하여 상기 입력된 클래스에 대한 클래스의 테스트 케이스를 XML파일 형태로 생성하는 XML로더모듈; 상기 XML로더모듈에서 생성된 XML문서를 이용하여 테스트 클라이언트를 생성하는 테스트 클라이언트 생성모듈; 상기 XML로더모듈에서 생성된 XML문서를 이용하여 테스트 데이터를 생성하는 테스트 데이터 생성모듈; 및 상기 테스트 클라이언트와 상기 테스트 데이터를 자바 리플렉션 API를 이용하여 동적으로 XML문서와 상기 테스트 클라이언트를 인스턴스화시켜 테스팅하는 테스팅 서버모듈;을 포함하는 것을 특징으로 한다.
이하, 본 발명의 바람직한 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 엔터프라이즈 자바 빈 컴포넌트를 테스팅하기 위한 시스템 구성도를 도시하고 있다. 도 1은 본 발명에 따른 테스팅 서버(200)가 운용되는 전체 시스템의 환경 예를 설명한 것으로, 사용자는 프로그램을 구현하고 실행하기 위해 컴파일을 하게 된다.
예를 들어 객체 지향 언어인 자바 언어를 컴파일하게 되면 클래스 파일이 생성된다. 만약 엔터프라이즈 자바 빈의 경우에는 빈 클래스, 홈 인터페이스, 원격 인터페이스 및 기타 클래스들로 구성이 된다. 이러한 클래스(100)들은 소스코드를 제외한 바이너리 형태로 서버머신(120)에 설치되며, 테스팅 서버(200)는 서버머신(120)에 설치된 엔터프라이즈 빈을 네트워크를 통하여 다른 모듈과 잘 동작하는지를 검증하게 된다.
도 2는 본 발명의 테스팅 서버(200)를 구체적으로 도시한 상세 구성도로서 테스팅하고자 하는 클래스의 정보를 추출하여 자동으로 테스팅하는 흐름을 보이고 있다.
도면을 참조하면, 본 발명의 테스팅 서버(200)는 클래스 분석모듈(210), XML 로더모듈(220), 정보저장소(230), 테스트 클라이언트 생성모듈(240), 테스트 데이터 생성모듈(250) 및 테스팅 서버모듈(270)을 포함한다.
본 발명의 클래스 분석모듈(210)은 사용자가 시험하기 위한 서버 컴포넌트, 즉 컴포넌트의 컴파일 된 형태인 클래스 파일을 클래스 분석모듈(210)에 입력하게 되면, 자바에서 지원하는 리플렉션(Reflection) API를 이용하여 입력된 클래스를 분석하고 그 클래스에 대한 정보를 추출한 후 다른 모듈에서 이용할 수 있도록 정보 저장소(230)에 저장하게 된다.
상기 XML로더모듈(220)은 정보 저장소(230)에 저장되어 있는 클래스 정보를 입력받아 테스트하려고 하는 클래스의 테스트 케이스를 XML파일 형태로 자동 생성한 후 최종적으로 생성된 XML문서를 테스트 클라이언트(260)를 생성하기 위해 테스트 클라이언트 생성모듈(240)과 테스트 데이터를 자동 생성하기 위한 테스트 데이터 생성모듈(250)에 전달하게 된다.
상기 XML로더모듈(220)에서 생성된 XML문서는 계층적 구조를 가지는 데이터들을 효과적으로 표현할 수 있고 다른 형태의 문서로 변환하기 쉽다. 그리고 일반 사용자가 그 문서를 쉽게 이해하고 수정할 수 있다는 장점을 가지고 있다.
본 발명에서 테스트 케이스는 각 클래스의 공개(Public)로 설정되어진 메소드나 인터페이스들로 정의한다. 그리고 테스트 데이터는 각 테스트 클래스에서 요구되는 입출력 데이터를 지칭한다.
상기 테스트 클라이언트 생성모듈(240)은 XML로더모듈(220)로부터 입력 받은 XML문서를 이용하여 테스트 클라이언트(260)를 생성한다. 테스트 클라이언트(260)는 테스팅에 필요한 모든 테스트 케이스를 포함하고 있으며 쓰레드 기반으로 이루어져 있다.
한편, 상기 테스트 데이터 생성모듈(250)은 XML로더모듈(220)로부터 입력 받은 XML문서를 이용하여 테스트 데이터를 자동 입력하게 되는데, 이때 테스트 데이터는 무작위(Random)형태로 이루어지며 경계 값(Boundary-value) 시험을 하기 위해 사전에 무작위 데이터 패턴을 정의하여 사용할 수도 있다.
상기 테스팅 서버모듈(270)은 테스트 데이터 생성모듈(250)에서 인가된 테스트 데이터와 테스트 클라이언트 생성모듈(240)로부터 생성된 테스트 클라이언트(260)를 입력받아 자바 클래스를 테스팅하게 된다.
상기 테스팅 서버모듈(270)은 자바 리플렉션(Reflection)기능을 이용하여 동적으로 테스트 클라이언트(260) 객체를 인스턴스화 시키고, 여기서 인스턴스화된 테스트 클라이언트(260) 객체는 테스팅 서버에 있는 데이터 바인딩을 이용하여 테스트 데이터를 전달하고 테스트 클라이언트(260)의 쓰레드를 실행한다.
그리고, 상기 테스팅 서버모듈(270)은 테스팅이 종료된 테스트 클라이언트로부터 테스팅 결과 값을 인계받아 다시 XML형태의 문서로 정보저장소(230)로 저장함으로써 동일한 인터페이스를 가지는 컴포넌트를 테스팅할 경우에 재사용할 수 있도록 하고 있다.
도 3은 본 발명의 테스팅 서버모듈을 구체적으로 보인 상세도이다. 도면을 참조하면, 본 발명의 테스팅 서버모듈(270)은 상기 테스트 클라이언트 생성모듈(240)에서 생성된 테스트 클라이언트와 테스트 데이터 생성모듈(250)에서 생성된 테스트 데이터를 정의한 XML문서를 테스팅하게 된다.
즉, 상기 테스팅 서버모듈(270)은 테스트 데이터 생성모듈(250)에서 생성된 XML문서로부터 XML 언마셜링(271)을 통해 데이터 객체로 전달할 데이터를 추출해 낸다. 상기 XML 언마셜링(271)에서 추출된 정보는 데이터 객체 호출부(271)를 통해 자바 리플렉션 기능을 이용하여 추출된 데이터 객체를 인스턴스화시키고, 여기서 인스턴스화된 데이터 객체는 데이터 바인딩부(274)를 통해 객체 내의 값을 설정하게 된다.
상기 데이터 바인딩부(274)를 통해 설정된 객체 값은 테스트 클라이언트 호출부(275)를 통해 테스트 클라이언트를 인스턴스화할 때 생성자의 파라미터로 하여 테스트 클라이언트(260)로 그 데이터를 전달하게 되며, 전달되는 테스트 데이터의 변경은 각기 다른 테스트 클라이언트를 생성하게 된다.
그리고, 각기 다른 테스트 클라이언트를 쓰레드를 이용하여 실행한 후 각 테스트 클라이언트로부터 테스트 결과를 리턴 받고, 그들 정보를 종합하여 테스트 데이터 결과를 XML마셜링(272)으로 보내면 XML마셜링(272)에서 XML문서로 변환시켜 정보저장소(230)로 저장시켜 동일한 인터페이스를 가지는 컴포넌트를 테스팅할 경우에 재사용할 수 있도록 한다.
도 4는 본 발명의 XML 로더모듈의 알고리즘을 보인 순서도이다. 도면을 참조하면, 본 발명의 XML 로더모듈(220)은 클래스 분석모듈(210)에서 분석되어 정보 저장소(230)에 저장된 정보를 입력으로 하고, 상기 XML 로더모듈(220)로 입력된 정보는 테스트 케이스 검색(S410)을 통하여 접근 할 수 있는 테스트 케이스와 후보 인터페이스를 찾게 된다. 예를 들어 엔터프라이즈 자바 빈의 경우에는 빈 클래스에 직접 접근할 수 없으므로 홈 인터페이스나 원격 인터페이스를 이용하여 접근할 수 있고, 그들 인터페이스에 공개(Public) 선언이 된 메소드만 선택할 수 있다.
만약, 임의의 테스트 케이스가 선택이 되었다면 테스트 케이스에 대한 입력 파라미터와 출력 타입에 대한 정보를 분석(S420)한 후 테스트 케이스의 입력이나 출력이 일반적인 클래스가 아닌 사용자 정의 클래스가 포함되어 있는지를 검사(S430)하게 된다.
단계 430에서 테스트 케이스에 사용자 정의 클래스가 포함이 되어 있지 않을 경우에는 식별된 정보를 XML파일에 추가(S460)시키고, 반대로, 테스트 케이스에 사용자 정의 클래스가 포함되어 있다면 그 클래스가 직렬화 가능(Serializable)한가를 체크(S440)한다.
단계 440에서 판단한 결과 테스트 케이스에 사용자 정의 클래스가 포함된 상태에서 직렬화(Serializable)가 가능하다면 사용자 정의 클래스에 대한 정보를 추출(S450)해 낸다. 여기서 사용자 정의 클래스는 내부 클래스를 가질 수 있으며 재귀적(Recursive)으로 내부 클래스가 없을 때까지 계속 반복하고, 반대로, 사용자 정의 클래스가 직렬화 가능하지 않는다면 테스팅을 종료한다.
마지막으로 단계 460에서, 사용자 정의 클래스가 포함되어 식별된 정보를 XML파일에 추가한 후 더 이상의 테스트 케이스가 존재하지 않으면 다음 테스트 데이터 생성모듈이나 테스트 클라이언트 생성모듈 과정으로 진행하고 추가 테스트 케이스가 존재한다면 단계 410으로 귀환하여 이전의 과정을 반복하게 된다.(S470)
이하, 본 발명을 도 5 내지 도 8을 참조하여 구체적으로 설명한다. 도 5는 도 4의 XML파일 쓰기 단계(S460)에 의해 생성된 XML파일의 일예를 보인 것이다.
도면을 참조하면, 도면중 부호 500은 테스트 케이스 집합이고, 510은 테스트 케이스, 520은 메소드 태그, 530은 파라미터 태그, 540은 리턴태그를 표시한 것이다. 본 발명에 따른 테스트 케이스 집합(500)은 테스팅 가능한 테스트 케이스 리스트를 표시한 것이고, 상기 테스트 케이스 집합(500)에는 다수 개의 테스트 케이스(510)가 존재한다.
상기 테스트 케이스(510)는 테스팅하고자 하는 테스트 케이스가 속해 있는 클래스 명이 된다. 여기서 상기 테스트 케이스(510)는 도 4와 같이 엔터프라이즈 자바 빈의 경우에 홈 인터페이스나 원격 인터페이스가 될 수 있다.
테스트 케이스(510)에는 테스팅을 위한 메소드에 대한 정보를 표현하고 있다. 메소드 태그(520)는 테스트 메소드가 되고, 파라미터 태그(530)는 파라미터의 이름과 타입을 보여준다.
만약, 사용자가 정의한 클래스일 경우에는 패키지 이름과 클래스 이름으로 표현이 된다. 다음 리턴 태그(540)는 메소드의 리턴 정보를 표현 해 준다. 만약 보이드형(void type)일 경우에는 타입이 void로 표현되며 리턴객체가 사용자 정의객체라고 한다면 이 또한 재귀적(Recursive)으로 표현이 될 수 있다.
도 6은 본 발명의 테스트 데이터 생성모듈(250)에 의해 생성된 XML파일의 일예를 보인 것이다. 이 XML파일은 테스트 클라이언트를 각기 다른 입력을 주어 다양한 입력 테스트를 할 수 있도록 데이터를 정의한 파일이다.
여기서, 클래스 태그(600)는 도 5와 같이 테스트 케이스의 클래스 명이 되고 파라미터 태그(610)는 입력으로 들어 갈 데이터를 설정한 것이다. 테스트 데이터 생성모듈(250)은 XML로드 모듈(220)로 생성된 도 4의 내용을 분석하여 테스트 데이터 부분을 확장하여 입력 데이터를 무작위(Random)으로 자동 설정해 준다.
도 7은 본 발명의 테스트 클라이언트(260)에 대한 예제 프로그램을 설명하는 것이다.
도면을 참조하면, 본 발명은 테스트 클라이언트 소스에서 테스트 클라이언트 명(700)을 설정하고 쓰레드 형태로 동작하기 위해 쓰레드 가능한(Runnable) 인터페이스를 상속받게 된다. 테스트 클라이언트는 테스팅 서버모듈(270)에 의해 동적으로 객체가 생성 될 경우에 생성자 파라미터(710)로 데이터 바인딩이 이루어진 테스트 데이터 객체를 인계받게 된다. 클라이언트 클래스에서 필수로 요구되는 메소드는 run()과 getResult() 메소드이다. run()메소드는 쓰레드 가능한(Runnable) 인터페이스를 상속받았기 때문에 구현을 해 주어야 한다.
본 발명에서는 그 메소드의 상세 구현 코드(720)를 테스트 클라이언트 생성 모듈에서 자동으로 생성해 준다. run()메소드에는 각 테스트 케이스들의 메소드 이름(740)을 이용하여 실행된다. 그리고 run()메소드가 호출되어 발생되는 모든 결과는 해쉬 테이블 result를 통하여 저장되고 최종적으로 테스팅 서버모듈(270)에서 요구하면 테스트 결과 값을 getResult() 메소드(730)를 이용하여 리턴해 주게 된다.
도 8은 도 3의 테스팅 서버모듈(270)의 입력 테스트 데이터와 출력 결과를 XML문서로 표현한 예제파일이다.
전체 구조는 도 6과 거의 유사하며 출력 부분의 데이터가 추가되어 있음을 알 수 있다. 테스트 결과(800, 810)의 경우는 각기 다른 테스트 데이터로부터 처리된 결과를 보여주고 오류 테스트 결과(820)는 null형태로 보여 주고 있다.
이상에서 설명한 바와 같이 본 발명은 객체 지향언어로 구현된 서버 컴포넌트를 테스팅 하고자 하는 경우에 다양한 테스트 케이스와 데이터를 자동 생성해 주고, 이를 XML문서로 생성하게 된다. 생성된 XML문서는 사용자가 쉽게 변경 할 수 있으며 동적으로 테스트 클라이언트에 데이터를 전달수단으로 사용되어, 서버측 컴포넌트 테스팅을 보다 유연하고 편리하게 테스팅할 수 있을 뿐만 아니라 테스팅한 XML문서를 저장함으로써 동일한 인터페이스를 가지는 컴포넌트를 테스팅할 경우에 XML문서를 재사용할 수 있는 장점이 있다.
이상에서 설명한 것은 본 발명의 엔터프라이즈 자바 빈 컴포넌트를 테스팅 장치 및 방법을 설명한 하나의 실시 예에 불과한 것으로써, 본 발명은 상기한 실시 예에 한정되지 않고, 이하의 특허 청구의 범위에서 청구하는 본 발명의 요지를 벗어남이 없이 당해 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양한 변경 실시가 가능한 범위까지 본 발명의 기술적 사상이 미친다고 할 것이다.
도 1은 본 발명의 엔터프라이즈 자바 빈 컴포넌트를 테스팅하기 위한 시스
템 구성도,
도 2는 본 발명의 테스팅 서버의 상세 구성도,
도 3은 본 발명의 XML 로더모듈의 알고리즘 순서도,
도 4는 본 발명의 XML로더모듈에 의해 생성된 XML파일의 예를 보인 도면,
도 5는 본 발명의 테스트 데이터 생성모듈에 의해 생성 된 XML 예제 파일,
도 6은 본 발명의 테스트 클라이언트 생성모듈에 의해 생성 된 테스트 클라
이언트 예제파일,
도 7은 본 발명의 테스팅 서버모듈의 상세 흐름도,
도 8은 본 발명의 테스팅 서버모듈의 입력 테스트 데이터와 출력 결과를
XML문서로 표현한 예제파일,
* 도면의 주요부분에 대한 부호의 설명 *
200;테스팅서버 210;클래스분석모듈
220;XML로더모듈 240;테스트클라이언트 생성모듈
250;테스트테이터 생성모듈 270;테스팅 서버모듈

Claims (8)

  1. 엔터프라이즈 자바 빈 컴포넌트의 클래스 파일을 입력받아 테스트하는 테스팅 장치에 있어서,
    입력된 클래스에 대하여 자바 리플렉션(Reflection) API를 이용해 분석하고 상기 입력된 클래스에 대한 정보를 추출하는 클래스 분석모듈;
    상기 클래스 분석모듈에서 추출된 상기 정보를 저장하기 위한 정보 저장소;
    상기 정보 저장소에 저장된 상기 정보를 이용하여 상기 입력된 클래스에 대한 클래스의 테스트 케이스를 XML파일 형태로 생성하는 XML로더모듈;
    상기 XML로더모듈에서 생성된 XML문서를 이용하여 테스트 클라이언트를 생성하는 테스트 클라이언트 생성모듈;
    상기 XML로더모듈에서 생성된 XML문서를 이용하여 테스트 데이터를 생성하는 테스트 데이터 생성모듈; 및
    상기 테스트 클라이언트와 상기 테스트 데이터를 자바 리플렉션 API를 이용하여 동적으로 XML문서와 상기 테스트 클라이언트를 인스턴스화시켜 테스팅하는 테스팅 서버모듈;
    을 포함하는 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치.
  2. 제 1항에 있어서, 상기 테스팅 서버모듈은,
    상기 테스트 데이터 생성모듈에서 생성된 XML문서에 대해 데이터 객체로 전달하기 위한 데이터를 추출해 내는 XML 언마셜링;
    상기 XML 언마셜링을 통해 추출된 데이터에 대해 자바 리플렉션 기능을 이용하여 데이터 객체를 인스턴스화시키는 데이터 객체 호출부;
    상기 인스턴스화된 데이터 객체로부터 객체 내의 값을 설정하여 객체를 생성하는 데이터 바인딩부;
    상기 데이터 바인딩부에서 생성된 객체에 대해 생성자의 파라미터로 하여 테스트 데이터를 변경한 후 상기 테스트 클라이언트로 전달하고 테스트 결과를 리턴받는 테스트 클라이언트 호출부; 및
    상기 테스트 클라이언트 호출부를 통해 리턴받은 테스트 결과를 XML문서로 변환시켜 상기 정보저장소에 저장시키는 XML마셜링;
    으로 이루어진 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치.
  3. 제 1항에 있어서, 상기 테스트 데이터 생성모듈에 의해 생성되는 테스트 데이터는 무작위(Random)형태로 이루어지며 경계 값(Boundary-value) 시험을 하기 위해 사전에 무작위 데이터 패턴을 정의하여 사용하는 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치.
  4. 제 1항에 있어서, 상기 테스트 클라이언트는 테스팅에 필요한 테스트 케이스를 포함하며, 쓰레드 기반으로 이루어진 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치.
  5. 엔터프라이즈 자바 빈 컴포넌트의 클래스 파일을 입력받아 테스트하는 테스팅 방법에 있어서,
    자바 리플렉션(Reflection) API를 이용하여 입력된 클래스를 분석하고 상기 입력된 클래스에 대한 정보를 추출하여 저장하는 단계;
    상기 저장된 클래스 정보를 이용하여 상기 입력된 클래스의 테스트 케이스를 XML파일 형태로 생성하는 단계;
    상기 생성된 XML파일을 이용하여 테스트 클라이언트와 테스트 데이터를 생성하는 단계; 및
    자바 리플렉션 API를 이용하여 동적으로 상기 XML파일과 상기 테스트 클라이언트를 인스턴스화시키는 단계;를 포함하는 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 방법.
  6. 제 5항에 있어서, 상기 클래스 테스트 케이스를 XML문서로 생성하는 단계는,
    추출된 컴포넌트 클래스 정보에 대해 테스트 케이스를 검색하고, 테스트 케이스에 대한 입력 파라미터와 출력타입에 대한 정보를 분석하는 단계;
    상기 테스트 케이스의 입력이나 출력타입에 대한 정보에 사용자가 정의한 클래스가 포함되어 있는지 판단하고, 만약 사용자가 정의한 클래스가 포함되어 있을 경우 XML파일에 추가하는 단계; 및
    상기 클래스 정보에 사용자가 정의한 클래스에 대해 테스트 케이스가 존재하지 않을 때까지 반복하여 검색하는 단계;로 이루어진 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 방법.
  7. 제 6항에 있어서, 상기 테스트 케이스의 입력이나 출력타입에 대한 정보에 사용자가 정의한 클래스가 포함되어 있지 않을 경우 직렬화가 가능한지를 판단하고, 만약 직렬화가 가능할 경우 클래스 인터페이스를 분석하여 XML 파일에 추가하는 단계를 포함하는 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 방법.
  8. 제 5항에 있어서, 상기 테스트 클라이언트는 테스팅 서버모듈로부터 생성자 파라미터로 하여 데이터를 전달받고, getResult() 메소드를 통해 데이터를 다시 반환하는 것을 특징으로 하는 엔터프라이즈 자바 빈 컴포넌트 테스팅 방법.
KR10-2002-0078307A 2002-12-10 2002-12-10 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법 KR100501412B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2002-0078307A KR100501412B1 (ko) 2002-12-10 2002-12-10 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2002-0078307A KR100501412B1 (ko) 2002-12-10 2002-12-10 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20040050463A KR20040050463A (ko) 2004-06-16
KR100501412B1 true KR100501412B1 (ko) 2005-07-18

Family

ID=37344655

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2002-0078307A KR100501412B1 (ko) 2002-12-10 2002-12-10 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR100501412B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102289574B1 (ko) * 2020-05-14 2021-08-13 한국과학기술원 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7895575B2 (en) 2005-08-19 2011-02-22 Electronics And Telecommunications Research Institute Apparatus and method for generating test driver
KR100777103B1 (ko) * 2005-08-19 2007-11-19 한국전자통신연구원 테스트 드라이버 생성 장치 및 방법
KR102258241B1 (ko) * 2019-11-18 2021-06-01 주식회사 오픈드래프트 개발과 유지보수를 지원하기 위한 서버 사이드 데이터 컴포넌트 및 데이터 컴포넌트의 실행 방법
CN112256455A (zh) * 2020-10-30 2021-01-22 中国建设银行股份有限公司 一种优化交易远程过程调用的方法、介质和电子设备
KR102305845B1 (ko) * 2020-12-21 2021-09-29 쿠팡 주식회사 코드의 검증을 위한 전자 장치 및 그 방법
CN112732240A (zh) * 2021-01-08 2021-04-30 京东方科技集团股份有限公司 一种Java组件的生成方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19990065477A (ko) * 1998-01-14 1999-08-05 이계철 자바 컴포넌트 프로그램 품질인증을 위한 기능 검증 방법
US6209125B1 (en) * 1997-06-03 2001-03-27 Sun Microsystems, Inc. Method and apparatus for software component analysis
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6385739B1 (en) * 1999-07-19 2002-05-07 Tivo Inc. Self-test electronic assembly and test system
KR20030055850A (ko) * 2001-12-27 2003-07-04 한국전자통신연구원 엔터프라이즈 자바 빈즈 컴포넌트의 인터페이스 시험 장치및 방법

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6209125B1 (en) * 1997-06-03 2001-03-27 Sun Microsystems, Inc. Method and apparatus for software component analysis
KR19990065477A (ko) * 1998-01-14 1999-08-05 이계철 자바 컴포넌트 프로그램 품질인증을 위한 기능 검증 방법
US6237135B1 (en) * 1998-06-18 2001-05-22 Borland Software Corporation Development system with visual design tools for creating and maintaining Java Beans components
US6385739B1 (en) * 1999-07-19 2002-05-07 Tivo Inc. Self-test electronic assembly and test system
KR20030055850A (ko) * 2001-12-27 2003-07-04 한국전자통신연구원 엔터프라이즈 자바 빈즈 컴포넌트의 인터페이스 시험 장치및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
The software reuse [paper appendix] in which the component reuse person uses XML and component generation system as the component generation system which automatically produces the component which is suitable than its own purpose and environment. 컴포넌트 재사용자가 자신의 목적과 환경에 보다 적합한 컴포넌트를 자동 생성할 수 있도록 해주는 컴포넌트 생성시스템으로 XML과 컴포넌트 생성 시스템을 이용한 소프트웨어 재사용[논문 첨부] *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102289574B1 (ko) * 2020-05-14 2021-08-13 한국과학기술원 거리 기반 피트니스 함수를 사용한 그레이 박스 퍼징 방법 및 장치

Also Published As

Publication number Publication date
KR20040050463A (ko) 2004-06-16

Similar Documents

Publication Publication Date Title
US11789715B2 (en) Systems and methods for transformation of reporting schema
US8898627B2 (en) Systems and methods for applying rules to transform objects of an application
US7210066B2 (en) Method and system for determining computer software test coverage
Horton et al. Dockerizeme: Automatic inference of environment dependencies for python code snippets
US20110283270A1 (en) Systems and methods for analyzing changes in application code from a previous instance of the application code
US7305659B2 (en) Handling parameters in test scripts for computer program applications
US7707553B2 (en) Computer method and system for automatically creating tests for checking software
US11062022B1 (en) Container packaging device
US20170192758A1 (en) Method and apparatus for migration of application source code
US8108456B2 (en) Method and apparatus for migrating the system environment on which the applications depend
US7124401B2 (en) Testing versions of applications
CN108845940B (zh) 一种企业级信息系统自动化功能测试方法和系统
KR100692172B1 (ko) 종합 문자열 분석기 및 그 분석 방법
US8285662B2 (en) Framework for delta analysis during automated builds
US20080052685A1 (en) Apparatus and method for implementing components, and apparatus and method for verifying components
Binkley et al. Tree-oriented vs. line-oriented observation-based slicing
US7805711B2 (en) Redirection interface system and method for CIM object manager provider
KR100501412B1 (ko) 엔터프라이즈 자바 빈 컴포넌트 테스팅 장치 및 그 방법
Brada et al. Practical verification of component substitutability using subtype relation
CN115544518A (zh) 漏洞扫描引擎实现方法、装置、漏洞扫描方法及电子设备
CN113031964B (zh) 一种大数据应用的管理方法、装置、设备及存储介质
Kienle et al. Leveraging program analysis for web site reverse engineering
Paradkar SALT-an integrated environment to automate generation of function tests for APIs
WO2011041246A1 (en) Systems and methods for analyzing and transforming an application from a source installation to a target installation
Opdebeeck et al. Infrastructure-as-Code Ecosystems

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20080701

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee