KR102374287B1 - 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체 - Google Patents

테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체 Download PDF

Info

Publication number
KR102374287B1
KR102374287B1 KR1020200083568A KR20200083568A KR102374287B1 KR 102374287 B1 KR102374287 B1 KR 102374287B1 KR 1020200083568 A KR1020200083568 A KR 1020200083568A KR 20200083568 A KR20200083568 A KR 20200083568A KR 102374287 B1 KR102374287 B1 KR 102374287B1
Authority
KR
South Korea
Prior art keywords
test data
rule
level
generated
value
Prior art date
Application number
KR1020200083568A
Other languages
English (en)
Other versions
KR20220005872A (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 KR1020200083568A priority Critical patent/KR102374287B1/ko
Publication of KR20220005872A publication Critical patent/KR20220005872A/ko
Application granted granted Critical
Publication of KR102374287B1 publication Critical patent/KR102374287B1/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
    • 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/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • 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/3636Software debugging by tracing the execution of the program
    • 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/366Software debugging using diagnostics
    • 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

Abstract

본 개시는, 테스트 데이터 생성 방법, 장치, 및 컴퓨터로 판독 가능한 기록 매체로, 화면 소스를 기초로, 화면 이름을 획득하는 화면 소스 분석 단계, 상기 화면 이름을 기초로, 규칙을 생성하는 규칙 생성 단계, 및 상기 생성된 규칙을 기초로, 테스트 데이터를 생성하는 테스트 데이터 생성 단계를 포함할 수 있다.

Description

테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체 {METHOD FOR GENERATING TEST DATA, APPARATUS FOR THE SAME, COMPUTER PROGRAM FOR THE SAME, AND RECORDING MEDIUM STORING COMPUTER PROGRAM THEREOF}
본 개시는 소스 코드와 화면 소스를 분석하여 정보를 수집하고 수집한 정보를 기초로 규칙을 생성하고, 규칙을 기초로 테스트 데이터를 생성하는 방법, 장치, 컴퓨터 프로그램 및 그 기록 매체에 대한 것이다.
테스트 데이터는, 개발한 시스템의 오류를 검출하고 요구 사항에 맞게 동작하는지를 검증하는 테스트에 입력되는 데이터이다.
상기 테스트 데이터를 생성하는 방법은, 테스트 설계자가 각 필드(또는 파라미터)마다 알고리즘을 할당해야 하고, 각 필드 별로 디폴트 값도 설정해야 하며, 테스트 데이터 생성에 있어서 별도 규칙이 있는 경우, 해당 조건을 직접 입력해야 하므로, 상당한 시간과 노력이 소요되며, 정확도 역시 떨어지는 문제가 있었다.
또한, 각 테스트마다 요구하는 테스트의 수준이 다른 경우, 각 테스트마다 해당 수준에 맞게 테스트 데이터를 만들어야 하는 문제가 있었다.
이에 본 개시에서는 테스트 데이터를 요구 사항에 맞게 간편하고 자동적으로 생성할 수 있는 방안을 제시함으로써, 테스트 데이터 생성에 드는 시간 및 비용이 획기적으로 감소되며, 테스트 데이터의 정확도도 향상될 수 있도록 하는 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체를 제공하고자 한다.
또한, 생성되는 테스트 데이터가 얼마나 실제 데이터와 유사한지를 결정하여, 규칙 설정 시간과 생성되는 데이터 품질간 균형을 테스트 설계자가 선택 가능한 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체를 제공하고자 한다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체는, 화면 소스를 기초로, 화면 이름을 획득하는 화면 소스 분석 단계, 상기 화면 이름을 기초로, 규칙을 생성하는 규칙 생성 단계, 및 상기 생성된 규칙을 기초로, 테스트 데이터를 생성하는 테스트 데이터 생성 단계를 포함할 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체는, 소스 코드를 기초로, 파라미터 정보를 획득하는 소스 코드 분석 단계, 상기 파라미터 정보를 기초로, 데이터 베이스로부터 메타 정보를 획득하는 메타 정보 수집 단계를 더 포함하고, 상기 규칙 생성은, 상기 파라미터 정보 또는 상기 메타 정보 중 적어도 하나에 더 기초하여 수행될 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 규칙 생성은, 기-정의된 테이블에 더 기초하여 수행될 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 규칙 생성은, 컬럼 매핑 정보 또는 타입 정보 중 적어도 하나에 더 기초하여 수행되고, 상기 컬럼 매핑 정보는, 상기 파라미터 정보와 상기 화면 이름을 매핑(mapping)시키는 정보를 포함하고, 상기 타입 정보는, 상기 파라미터 정보 또는 상기 컬럼 매핑 정보 중 적어도 하나를 기초로 획득되는 정보를 포함할 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 매핑은, 기-정의된 매핑 테이블에 기초하여 수행될 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 규칙은, 상기 규칙을 구분하는 기본 키 파라미터를 포함하여 생성되고, 상기 기본 키 파라미터는, 상기 화면 이름 및 상기 데이터 베이스의 기본 키 필드와 매핑될 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 규칙은, 상기 테스트 데이터를 생성하는 알고리즘을 포함하여 생성되고, 상기 알고리즘은, 상기 기본 키 필드를 기초로, 기-정의된 하나 이상의 알고리즘 후보들 중 선택된 적어도 하나의 알고리즘을 포함할 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 방법 및 컴퓨터로 판독 가능한 기록 매체에 있어서, 상기 규칙 생성은, 상기 테스트 데이터의 수준(level)에 더 기초하여 수행되고, 상기 알고리즘 후보들의 개수는, 상기 테스트 데이터의 수준에 따라 달라질 수 있다.
본 개시의 일 실시예에 따른 테스트 데이터 생성 장치는, 화면 소스를 기초로, 화면 이름을 획득하는 화면 소스 분석부, 상기 화면 이름을 기초로, 규칙을 생성하는 규칙 생성부, 및 상기 생성된 규칙을 기초로, 테스트 데이터를 생성하는 테스트 데이터 생성부를 포함할 수 있다.
테스트 설계자가 테스트 목적에 맞게 별도로 알고리즘 할당, 디폴트 값 설정, 및 테스트 규칙 등록 등을 할 필요가 없이 자동적으로 테스트 목적에 맞게 테스트 데이터 값이 생성되므로, 테스트 데이터 생성에 드는 시간 및 비용이 획기적으로 감소되며, 테스트의 정확도도 향상된다.
또한, 테스트 데이터의 수준(레벨)을 선택하여 적응적으로 테스트 데이터 생성 등의 처리 시간과 테스트 데이터의 품질을 조절 가능하다.
도 1은 테스트 데이터 생성 방법을 나타내는 도면이다.
도 2는 테스트 데이터 생성 방법에 대한 규칙 생성 알고리즘의 일 예를 나타내는 도면이다.
도 3은 고객 관리 화면의 예를 나타내는 도면이다.
도 4는 테스트 데이터 생성 장치를 나타내는 도면이다.
도 5는 소스 코드의 일부를 도시한 도면이다.
이하에서는 첨부한 도면을 참고로 하여 본 개시의 실시예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나, 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다.
본 개시의 실시예를 설명함에 있어서 공지 구성 또는 기능에 대한 구체적인 설명이 본 개시의 요지를 흐릴 수 있다고 판단되는 경우에는 그에 대한 상세한 설명은 생략한다. 그리고, 도면에서 본 개시에 대한 설명과 관계없는 부분은 생략하였으며, 유사한 부분에 대해서는 유사한 도면 부호를 붙인다.
본 개시에 있어서, 어떤 구성요소가 다른 구성요소와 "연결", "결합" 또는 "접속"되어 있다고 할 때, 이는 직접적인 연결관계 뿐만 아니라, 그 중간에 또 다른 구성요소가 존재하는 간접적인 연결관계도 포함할 수 있다. 또한 어떤 구성요소가 다른 구성요소를 "포함한다" 또는 "가진다"고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 배제하는 것이 아니라 또 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
본 개시에 있어서, 제1, 제2 등의 용어는 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용되며, 특별히 언급되지 않는 한 구성요소들 간의 순서 또는 중요도 등을 한정하지 않는다. 따라서, 본 개시의 범위 내에서 일 실시예에서의 제1 구성요소는 다른 실시예에서 제2 구성요소라고 칭할 수도 있고, 마찬가지로 일 실시예에서의 제2 구성요소를 다른 실시예에서 제1 구성요소라고 칭할 수도 있다.
본 개시에 있어서, 서로 구별되는 구성요소들은 각각의 특징을 명확하게 설명하기 위한 것이며, 구성요소들이 반드시 분리되는 것을 의미하지는 않는다. 즉, 복수의 구성요소가 통합되어 하나의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있고, 하나의 구성요소가 분산되어 복수의 하드웨어 또는 소프트웨어 단위로 이루어질 수도 있다. 따라서, 별도로 언급하지 않더라도 이와 같이 통합된 또는 분산된 실시예도 본 개시의 범위에 포함된다.
본 개시에 있어서, 다양한 실시예에서 설명하는 구성요소들이 반드시 필수적인 구성요소들은 의미하는 것은 아니며, 일부는 선택적인 구성요소일 수 있다. 따라서, 일 실시예에서 설명하는 구성요소들의 부분집합으로 구성되는 실시예도 본 개시의 범위에 포함된다. 또한, 다양한 실시예에서 설명하는 구성요소들에 추가적으로 다른 구성요소를 포함하는 실시예도 본 개시의 범위에 포함된다.
1. 용어에 대한 정의
본 개시에서 사용하는 용어에 대한 정의는 다음과 같다.
표 1은, 본 개시의 알고리즘의 일 실시예이다.
RandomString(bool isNormal, int length, String type)
RandomInt(bool isNormal, int N, int min, int max)
RandomDouble(bool isNormal, String type, int numInteger, int numFraction, int min, int max)
typeDefinedString(bool isNormal, int maxlength, int type, bool range, char[] delimiters, int N, int[] lengths)
specificString(bool isNormal, int type, int length)
dbReferenceNumber(bool isNormal, int maxIndex)
randomDate(bool isNormal, int i18n, String format)
본 개시의 알고리즘은, 테스트 데이터 생성을 위한 일련의 절차나 방법을 공식화한 형태로 표현한 것으로, 컴퓨터 등과 같이 프로그램 언어를 사용하는 장치에서는 테스트 데이터 생성을 위한 함수를 나타낼 수 있다. 본 개시의 랜덤 테스트 데이터 생성을 위한 알고리즘은 N개로 구성될 수 있다. 여기서, N은 1이상의 자연수(1, 2, 3, 4. 5, 6, 7, 8 등)로 구성된다. N은 기-고정된 값이거나, 적응적으로 결정되는 값일 수 있다. 예를 들면, 해당 분야에서 주로 사용하는 알고리즘의 통계를 이용해서 적응적으로 N 값을 결정할 수 있다. 이외에 알고리즘이 저장되는 매체, 테스트 데이터의 레벨(level, 또는 수준), 전체 프로세서의 처리 속도 등을 고려하여 적응적으로 결정할 수도 있다.
일 예로, 알고리즘이 N개로 구성된 경우, 테스트 데이터 레벨에 따라 사용되는 알고리즘의 개수(m, m=N, N-1, N-2 등)가 달라질 수 있다. 이와 관련하여, 용도 또는 환경에 따라, 테스트 데이터의 레벨이 고정되는 경우 또는 테스트 데이터의 레벨이 제한되는 경우, 알고리즘이 N개가 아닌 m개로 구성될 수 있다. 예를 들어, N은 적용가능한 알고리즘의 후보의 개수에 해당하고, m은 실제로 사용되는 알고리즘의 개수에 해당할 수 있다. 즉, 처음부터 실제로 사용되는 알고리즘만으로 구성될 수 있다.
표 1을 참조하면, 표 1은 RandomString, RandomInt, RandomDouble, typeDefinedString, specificString, specificString, dbReferenceNumber, randomDate로 7개의 알고리즘의 예를 보여주고 있다.
RandomString 알고리즘을 살펴보면, isNormal, length, type은 알고리즘의 입력값이자 파라미터(또는 형식 파라미터)라 할 수 있다. 또한, 파라미터 isNormal, length, type에 실제 입력되는 값은 본 개시에서 파라미터 값(또는 실질 파라미터)라 할 수 있다.
본 개시에서 데이터베이스(Database, DB)는 관계형 데이터베이스일 수 있다.
아래 표 2는 데이터베이스에 저장된 테이블의 일 예이다.
컬럼 이름 한글 이름 컬럼 타입 길이(길이
또는 정수부)
길이(실수부) Check Constraint
EMP_NAME 이름 char 50
EMP_NO 사번 int 8 10000000<사번<99999999
EMP_RATE 등급 number 2 1
EMP_DATE 생일 Date 10 YYYY-MM-DD
EMP_SNO 주민번호 char 14
EMP_ENO 사건번호 char 14 YYYY-구분-NNNN
EMP_IDX 말뭉치 int 6 100,000>EMP_IDX>0
여기서, 컬럼 이름, 한글 이름, 컬럼 타입, 길이 등은 속성(또는 필드)이라고 할 수 있다.
또한, 상기 테이블의 속성 들 중 '컬럼 이름'(또는 '한글 이름') 속성은, 이를 이용하여 테이블의 하나의 튜플(또는 행)에 포함된 정보들을 구분 지을 수 있고, 같은 튜플(또는 행)의 다른 컬럼(속성 또는 필드)를 조회할 수 있으므로, 식별자 또는 기본 키 필드가 될 수 있다.
또한, 기본 키 필드 값(또는 기본 키 필드 데이터)은, 기본 키 필드에 포함된 하나 하나의 데이터 값이 될 수 있다. 예를 들어, '컬럼 이름'이 표 2의 테이블의 식별자 또는 기본 키 필드인 경우, 상기 표 2의 EMP_NAME, EMP_NO, EMP_RATE, EMP_DATE, EMP_SNO, EMP_ENO, 및 EMP_IDX는 기본 키 필드 값(또는 기본 키 필드 데이터)이 될 수 있다. 본 개시에서, EMP는 EMPLOYEE를 의미할 수 있다. '한글 이름'이 표 2의 테이블의 식별자 또는 기본 키 필드인 경우, 상기 표 2의 이름, 사번, 등급, 생일, 주민번호, 사건번호, 및 말뭉치는 기본 키 필드 값(또는 기본 키 필드 데이터)이 될 수 있다.
표 3은 표 2의 테이블의 하나의 행을 발췌한 내용이다.
EMP_NO 사번 int 8
상기 EMP_NO는 표 2의 기본 키 필드인 '컬럼 이름'의 데이터 중 하나인 기본 키 필드 값(또는 기본 키 필드 데이터)일 수 있다. 여기서, 메타 정보는 상기 EMP_NO에 대한 정보를 나타낼 수 있다. 구체적으로, EMP_NO에 대한 메타 정보는 '사번, int, 8'이 될 수 있다. 또한, 메타 정보는 속성 값을 포함하여 '한글 이름:사번, 컬럼 타입:int, 길이:8'이 될 수도 있다.
2. 알고리즘의 종류
2.1 랜덤 문자열 생성 알고리즘
입력 데이터를 기준으로 랜덤하게 문자열을 생성하는 알고리즘이다.
일 예로, 입력 데이터는 정상 값 플래그, 문자열 길이, 또는 타입 중 적어도 하나를 포함할 수 있다.
문자열 길이는 생성되는 문자열의 고정된 길이 또는 생성되는 문자열의 최대 길이를 나타낼 수 있다. 전자의 경우 생성되는 문자열은 항상 일정 길이를 유지하나, 후자의 경우 생성되는 문자열은 최대 길이를 벗어나지 않는 범위 내 다양한 길이를 가질 수 있다. 문자열의 길이가 3인 예를 들면, 전자의 경우 생성되는 문자열의 길이는 항상 3이나, 후자의 경우 생성되는 문자열의 길이는 1, 2, 3 중 어느 하나 일 수 있다.
타입은, 생성되는 문자열에 포함되어야 하는 문자 종류(언어, 숫자, 특수 문자 등) 또는 생성되는 문자열에 포함될 수 있는 문자의 종류를 나타낼 수 있다. 전자의 경우, 생성되는 문자열은 타입에 의해 결정된 문자의 종류를 모두 포함해야 한다. 후자의 경우, 타입에 의해 결정된 문자의 종류 중 일부 또는 전부를 포함할 수 있다.
일 예로, 타입은 0 또는 1 로 구성된 m개의 자리수로 구성될 수 있다. 여기서, m은 기-고정된 값이거나, 적응적으로 결정되는 값일 수 있다. 여기서, m개의 자리수 각각은 영소문자, 영대문자, 숫자, 특수문자, 한글, 일본어, 중국어 등이 문자의 종류를 나타낼 수 있다.
구체적 예로서, ⅰ) 타입은 후자의 경우를 나타내며, ⅱ) 6자리(m=6)로 구성되고, ⅲ) 각각의 자리수가 순서대로 영소문자, 영대문자, 숫자, 특수문자, 한글, 일본어의 문자의 종류를 나타낸다 가정한다.
상기 가정하에 타입이 111111인 경우, 해당 문자열의 문자 종류에는 영소문자, 영대문자, 숫자, 특수문자, 한글, 및 일본어가 모두 포함될 수 있다. 이와 달리, 타입이 111000인 경우, 해당 문자열의 문자의 종류에는 영소문자, 영대문자, 및 숫자는 포함될 수 있으나, 특수문자, 한글, 및 일본어는 포함될 수 없다.
정상 값 플래그는, 정상 값을 생성하는지 여부를 나타낼 수 있다. 일 예로, 상기 플래그 값이 1(true)인 경우 정상 값을 생성하나, 0(false)인 경우 비정상 값을 생성할 수 있다. 여기서, 정상 값이란 주어진 규칙(길이, 타입, 포맷 등)을 따르는 출력 값을 의미한다. 이와 달리, 비정상 값이란 주어진 규칙을 따르지 않는 출력 값을 의미한다.
예를 들면, 본 알고리즘에서 문자열 길이 및 타입이 입력된 경우, 정상 값의 문자열은, 입력된 문자열의 길이와 같은 길이(또는 작은 길이)를 가지고, 타입에 의해 결정된 문자의 종류들로 구성될 수 있다. 이와 달리, 비정상 값은, 입력된 문자열의 길이보다 길거나, 타입에 의해 결정된 문자의 종류 이외의 문자를 포함하여 구성될 수 있다.
랜덤 문자열 생성 알고리즘은, 아래와 같은 구문의 예를 통해, 파라미터들을 입력 받아 문자열을 출력하는 알고리즘을 호출할 수 있다.
<구문> RandomString (bool isNormal, int length, String type)
여기서, isNormal은 정상 값 플래그, length는 문자열 길이, type은 타입을 나타낼 수 있다.
2.2 랜덤 정수 생성 알고리즘
입력 데이터를 기준으로 랜덤하게 정수를 생성하는 알고리즘이다.
일 예로, 입력 데이터는 정상 값 플래그, 정수의 길이, 최소값, 또는 최대값 중 적어도 하나를 포함할 수 있다.
정수의 길이는 생성되는 정수의 고정된 길이 또는 생성되는 정수의 최대 길이를 나타낼 수 있다. 전자의 경우 생성되는 정수는 항상 일정 길이를 유지하나, 후자의 경우 생성되는 정수는 최대 길이를 벗어나지 않는 범위 내 다양한 길이를 가질 수 있다. 예를 들면, 정수의 길이가 10인 경우, 전자의 경우 생성되는 정수는 항상 길이 10을 가지나, 후자의 경우 생성되는 정수의 길이는 7, 8, 9, 10 등을 가질 수 있다.
최소값은 생성되는 정수가 가질 수 있는 최소값을 나타낼 수 있고, 최대값은 생성되는 정수가 가질 수 있는 최대값을 나타낼 수 있다.
정상 값 플래그는, 정상 값을 생성하는지 여부를 나타낼 수 있다. 일 예로, 상기 플래그 값이 1(true)인 경우 정상 값을 생성하나, 0(false)인 경우 비정상 값을 생성할 수 있다. 여기서, 정상 값이란 주어진 규칙에 따르는 출력 값을 의미한다. 이와 달리, 비정상 값이란 주어진 규칙을 따르지 않는 출력 값을 의미한다.
예를 들면, 정수의 길이, 최소값, 및 최대값이 입력된 경우, 정상 값의 정수는, 입력된 정수의 길이와 같은 길이(또는 작은 길이)를 가지고, 최소값 및 최대값의 범위 내의 정수로 구성될 수 있다. 이와 달리, 비정상 값은, 입력된 정수의 길이보다 길거나, 최소값보다 작은 정수이거나, 최대값보다 큰 정수로 구성될 수 있다.
랜덤 정수 생성 알고리즘은, 아래와 같은 구문의 예를 통해, 파라미터들을 입력 받아 정수를 출력하는 알고리즘을 호출할 수 있다.
<구문> RandomInt(bool isNormal, int N, int min, int max)
여기서, isNormal은 정상 값 플래그, N은 정수의 길이, min은 최소값, max는 최대값을 나타낼 수 있다.
2.3 랜덤 실수 생성 알고리즘
입력 데이터를 기준으로 랜덤하게 실수를 생성하는 알고리즘이다.
일 예로, 입력 데이터는 정상 값 플래그, 타입, 정수부 자리수, 소수부 자리수, 최소값, 또는 최대값 중 적어도 하나를 포함할 수 있다.
정수부 자리수는 생성되는 실수의 정수부의 자리수를 나타내고, 소수부 자리수는 생성되는 소수의 자리수를 나타낼 수 있다. 또는, 정수부 자리수는 생성되는 실수의 정수부의 최대 자리수를 나타내고, 소수부 자리수는 생성되는 소수의 최대 자리수를 나타낼 수 있다.
최소값은 생성되는 실수가 가질 수 있는 최소값을 나타낼 수 있고, 최대값은 생성되는 실수가 가질 수 있는 최대값을 나타낼 수 있다.
타입은, 실수의 범위 지정(타입 1), 실수의 길이 지정(타입 2), 또는 실수의 범위 및 길이 지정(타입 3) 중 하나를 나타낼 수 있다. 실수의 범위 지정의 경우(타입 1), 최소값 또는 최대값 중 적어도 하나를 이용하여 실수의 범위를 제한할 수 있으나, 실수의 길이에 대한 제한은 없을 수 있다. 실수의 길이 지정의 경우(타입 2), 정수부 자리수 또는 소수부 자리수 중 적어도 하나를 이용하여 실수의 길이를 제한할 수 있으나, 실수의 범위에 대한 제안은 없을 수 있다. 실수의 범위 및 길이 지정의 경우(타입 3), 최소값 또는 최대값 중 적어도 하나를 이용하여 실수의 범위를 제한할 수 있고, 정수부 자리수 또는 소수부 자리수 중 적어도 하나를 이용하여 실수의 길이를 제한할 수 있다.
정상 값 플래그는, 정상 값을 생성하는지 여부를 나타낼 수 있다. 일 예로, 상기 플래그 값이 1(true)인 경우 정상 값을 생성하나, 0(false)인 경우 비정상 값을 생성할 수 있다. 여기서, 정상 값이란 주어진 규칙에 따르는 출력 값을 의미한다. 이와 달리, 비정상 값이란 주어진 규칙을 따르지 않는 출력 값을 의미한다.
예를 들면, 정수의 길이, 최소값, 및 최대값이 입력된 경우, 정상 값의 정수는, 입력된 정수의 길이와 같은 길이(또는 작은 길이)를 가지고, 최소값 및 최대값의 범위 내의 정수로 구성될 수 있다. 이와 달리, 비정상 값은, 입력된 정수의 길이보다 길거나, 최소값보다 작은 정수이거나, 최대값보다 큰 정수로 구성될 수 있다.
예를 들면, 타입, 정수부 자리수, 소수부 자리수, 최소값, 및 최대값이 입력되었다고 가정해 보자.
타입이 1이면, 실수의 정수부 자리수가 입력된 정수부의 자리수와 같은(또는 작은) 경우, 또는 실수의 소수부 자리수가 입력된 정수부의 자리수와 같은(또는 큰) 경우, 생성되는 실수는 정상값을 가지나, 그렇지 않은 경우 비정상 값을 가진다.
타입이 2이면, 실수가 최소값보다 크고 최대값보다 작은 경우, 생성되는 실수는 정상 값을 가지나, 그렇지 않은 경우 비정상 값을 가진다.
타입이 3이면, 타입 1과 타입 2일때의 조건을 모두 만족하는 경우 정상 값을 가지나, 그렇지 않은 경우 비정상 값을 가진다.
랜덤 실수 생성 알고리즘은, 아래와 같은 구문의 예를 통해, 파라미터들을 입력 받아 실수를 출력하는 알고리즘을 호출할 수 있다.
<구문> RandomDouble(bool isNormal, String type, int numInteger, int numFraction, int min, int max)
여기서, isNormal은 정상 값 플래그, type은 타입, numInteger은 정수부 자리수, numFraction은 소수부 자리수, min은 최소값, max는 최대값을 나타낼 수 있다.
2.4 타입정의 문자열 생성 알고리즘
입력 데이터를 기준으로 랜덤하게 타입이 정의된 문자열을 생성하는 알고리즘이다.
일 예로, 입력 데이터는 정상 값 플래그, 최대 길이, 타입, 범위, 구분자 배열, 최대값, 또는 구분의 자리수 중 적어도 하나를 포함할 수 있다.
최대 길이는, 문자열의 최대 길이를 나타낼 수 있다.
타입은, 생성되는 문자열의 포함되야 하는 문자 종류(언어, 숫자, 특수 문자 등) 또는 생성되는 문자열에 포함될 수 있는 문자의 종류를 나타낼 수 있다. 전자의 경우, 생성되는 문자열은 타입에 의해 결정된 문자의 종류를 모두 포함해야 한다. 후자의 경우, 타입에 의해 결정된 문자의 종류 중 일부 또는 전부를 포함할 수 있다. 구체적인 예는 랜덤 문자열 생성 알고리즘의 타입의 예와 동일한 바, 생략한다.
구분자 배열은, 문자열을 나누는 구분자의 배열을 나타낼 수 있다. 일 예로, 000-0000-000의 경우, 2개의 구분자(-)가 문자열을 3개로 나누고 있으므로, 구분자 배열은 [-,-]로 나타낼 수 있다. 다른 예로, 000000-000000의 경우, 구분자 배열은 [-]로 나타낼 수 있다.
범위는, 각 구분자에 의해 구분되는 문자열의 부분의 길이를 랜덤하게 설정할 것인지, 지정할 것인지를 나타낼 수 있다. 일 예로, 후자의 경우, 후술하는 구분의 자리수에 의해서, 각 구분자에 의해 구분되는 문자열의 부분의 길이가 정해지게 될 수 있다. 일 예로, 전자의 경우, 각 구분자에 의해 구분되는 문자열의 부분 중 전부 또는 일부의 자리수가 랜덤으로 정해질 수 있다.
일 예로, ⅰ) 문자열의 최대 길이는 8이고, ⅱ) 1개의 구분자 [-]가 있고, ⅲ) 구분자에 의해 구분되는 문자열의 부분 모두의 자리수가 랜덤으로 정해지는 경우, 0-000, 00-0000, 000-000, 0000-0000 등이 가능 할 수 있다.
일 예로, ⅰ) 문자열의 최대 길이는 11이고, ⅱ) 2개의 구분자 [-,-]가 있고, ⅲ) 구분자에 의해 구분되는 문자열의 부분 중 세번째 부분은 4로 고정되어 있고, 첫번째 및 두번째 부분은 랜덤으로 정해지는 경우, 000-0000-0000, 000-000-0000, 00-0000-0000, 00-000-0000 등이 가능할 수 있다.
구분의 자리수는, 구분자에 의해 구분된 각 부분의 자리수를 나타낼 수 있다. 일 예로, 000-0000-0000으로 2개의 구분자에 의해 문자열이 나누어 지는 경우, 구분자에 의해 구분된 각 부분의 길이가 각각 3, 4, 4 이므로 구분의 자리수는 [3,4,4]를 나타낼 수 있다.
최대값은, 문자열이 숫자인 경우 최대값을 나타낼 수 있다. 최대값은, 각 구분자에 의해 구분된 각각의 부분에 대한 최대값의 배열로 나타낼 수 있다. 이와 달리, 구분자에 의해 구분된 부분과 관계없이, 전체 문자열에 대한 하나의 최대값을 나타낼 수 있다. 전자의 경우, 문자열은 숫자로 구성된 000-0000-0000이고 각각의 부분에 대한 최대값은 999, 9999, 9999이라면, 최대값은 [999, 9999, 9999]를 나타낼 수 있다. 후자의 경우, 문자열은 숫자로 구성된 $0,000,000이고 전체에 대한 최대값은 $9,999,9999이라면, 최대값은 99999999을 나타낼 수 있다.
정상 값 플래그는, 정상 값을 생성하는지 여부를 나타낼 수 있다. 일 예로, 상기 플래그 값이 1(true)인 경우 정상 값을 생성하나, 0(false)인 경우 비정상 값을 생성할 수 있다. 여기서, 정상 값이란 주어진 규칙에 따르는 출력 값을 의미한다. 이와 달리, 비정상 값이란 주어진 규칙을 따르지 않는 출력 값을 의미한다.
예를 들면, 최대 길이, 타입, 범위, 구분자 배열, 최대값, 또는 구분의 자리수가 입력된 경우, 비정상 값의 문자열은, 문자열이 길이가 최대 길이를 넘는 경우, 문자열의 문자가 타입에 의해 정의된 문자의 종류 외의 문자를 포함하는 경우, 구분자가 구분자 배열과 다른 경우, 구분의 자리수가 입력된 자리수와 다른 경우 등을 포함할 수 있다.
타입정의 문자열 생성 알고리즘은, 아래와 같은 구문의 예를 통해, 파라미터들을 입력 받아 타입이 정의된 문자열을 출력하는 알고리즘을 호출할 수 있다.
<구문> typeDefinedString(bool isNormal, int maxlength, int type, bool range, char[] delimiters, int N, int[] lengths)
여기서, isNormal은 정상 값 플래그, maxlength는 최대 길이, type은 타입, range는 범위 delimiters는 구분자, N은 최대값, lengths는 각 구분의 자리수를 나타낼 수 있다.
2.5 특수 형식 문자열 생성 알고리즘
입력 데이터를 기준으로 랜덤하게 특수형태의 문자열을 생성하는 알고리즘이다.
일 예로, 입력 데이터는 정상 값 플래그, 타입, 또는 길이 중 적어도 하나를 포함할 수 있다.
길이는, 생성되는 문자열의 길이를 나타낼 수 있다.
타입은, 기-정의된 문자열의 종류 중 하나를 나타낼 수 있다. 일 예로, 기-정의된 문자열은 1-사건번호, 2-지번주소, 3-도로명주소, 4-한글스트링, 5-이메일 등 일 수 있다.
기-정의된 문자열에 할당된 인덱스 값은 고정적일 수도 있으나, 적응적으로 사용 횟수에 따라서 변할 수 있다. 예를 들면, 더 높은 사용 횟수를 가지는 문자열의 형식에 더 작은 수의 값이 할당될 수 있다. 일 예로, 이메일이 주로 사용되는 경우, 상기 예와 달리 이메일은 1-이메일로 정의될 수 있다.
또한, 상기 예에서는 5개의 형식만 정의했으나, 정의된 형식과 다른 형식의 문자열이 반복적으로 입력되는 경우, 6-새로운형식1, 7-새로운형식2 등으로 적응적으로 추가 정의될 수 있다. 상기 추가 정의는 새로운 형식이 일정 횟수(문턱 값) 이상 사용되는 경우 자동으로 추가되는 것을 포함할 수 있다.
정상 값 플래그는, 정상 값을 생성하는지 여부를 나타낼 수 있다. 일 예로, 상기 플래그 값이 1(true)인 경우 정상 값을 생성하나, 0(false)인 경우 비정상 값을 생성할 수 있다. 여기서, 정상 값이란 주어진 규칙에 따르는 출력 값을 의미한다. 이와 달리, 비정상 값이란 주어진 규칙을 따르지 않는 출력 값을 의미한다.
예를 들면, 비정상 값을 가지는 경우는, 결정된 타입의 형식과 다른 형식을 가지는 문자열이 출력되는 경우, 문자열의 길이가 입력된 길이와 다른 경우(입력된 길이보다 길거나 짧은 경우) 등을 포함할 수 있다.
특수 형식 문자열 생성 알고리즘은, 아래와 같은 구문의 예를 통해, 파라미터들을 입력 받아 특수형식의 문자열을 출력하는 알고리즘을 호출할 수 있다.
<구문> specificString(bool isNormal, int type, int length)
여기서, isNormal은 정상 값 플래그, type은 타입, length는 길이를 나타낼 수 있다.
2.6 랜덤 인덱스 생성 알고리즘
입력 데이터를 기준으로 랜덤하게 정수를 생성하는 알고리즘이다.
일 예로, 입력 데이터는 정상 값 플래그 또는 최대 양의 정수 중 적어도 하나를 포함할 수 있다.
최대 양의 정수는, 생성되는 정수의 최대 양의 정수 값을 나타낼 수 있다.
정상 값 플래그는, 정상 값을 생성하는지 여부를 나타낼 수 있다. 일 예로, 상기 플래그 값이 1(true)인 경우 정상 값을 생성하나, 0(false)인 경우 비정상 값을 생성할 수 있다. 여기서, 정상 값이란 주어진 규칙에 따르는 출력 값을 의미한다. 이와 달리, 비정상 값이란 주어진 규칙을 따르지 않는 출력 값을 의미한다.
예를 들면, 비정상 값을 가지는 경우는, 최대 양의 정수보다 큰 값을 가진 정수가 생성되거나, 0 보다 작은 정수가 생성되는 경우 등을 포함할 수 있다.
랜덤 인덱스 생성 알고리즘은, 아래와 같은 구문의 예를 통해, 파라미터들을 입력 받아 랜덤 인덱스를 출력하는 알고리즘을 호출할 수 있다.
<구문> dbReferenceNumber(bool isNormal, int maxIndex)
여기서, isNormal은 정상 값 플래그, maxIndex는 인덱스의 경우 최대 양의 정수를 나타낼 수 있다.
2.7 랜덤 날짜 생성 알고리즘
<구문> randomDate(bool isNormal, int i18n, String format)
입력 데이터를 기준으로 랜덤하게 날자 및 시간을 생성하는 알고리즘이다.
일 예로, 입력 데이터는 정상 값 플래그, i18n, 또는 포맷 중 적어도 하나를 포함할 수 있다.
I18n은, 국가별 또는 언어별로 날짜를 나타내는 포맷을 나타낼 수 있다. 예를 들면, 1인 경우, 한글의 날짜 포맷을 나타낼 수 있다. 또한, 값이 입력되지 않은 경우, 기-정의된 한글 날짜 포맷으로 결정될 수 있다.
포맷은, y,M,d,E,H,h,m,s,S,a의 조합으로 나타낼 수 있다. 일 예로, 연월일의 형식으로 yyyy-MM-dd가 사용될 수 있고, 연월일 시간(시, 분, 초)의 형식으로 yyyy-MM-dd hh:mm:ss가 사용될 수 있다.
정상 값 플래그는, 정상 값을 생성하는지 여부를 나타낼 수 있다. 일 예로, 상기 플래그 값이 1(true)인 경우 정상 값을 생성하나, 0(false)인 경우 비정상 값을 생성할 수 있다. 여기서, 정상 값이란 주어진 규칙에 따르는 출력 값을 의미한다. 이와 달리, 비정상 값이란 주어진 규칙을 따르지 않는 출력 값을 의미한다.
예를 들면, 비정상 값을 가지는 경우는, 입력된 포맷에 맞지 않는 포맷을 가진 날짜 및 시간이 생성되는 경우 등을 포함할 수 있다.
3. 테스트 데이터 생성 방법
도 1은 테스트 데이터 생성 방법을 나타내는 도면이다. 도 1을 참조하면, 테스트 데이터 생성 방법은, 정보 획득 단계(S101), 규칙 생성 단계(S102), 또는 테스트 데이터 생성 단계(S103) 중 적어도 하나를 포함할 수 있다. 정보 획득 단계 또는 규칙 생성 단계 중 적어도 하나는 후술할 테스트 데이터 레벨(level)에 따라 생략될 수도 있다.
도 2는 테스트 데이터 생성 방법에 대한 규칙 생성 알고리즘의 일 예를 나타내는 도면이다.
3.1 정보 획득 단계
정보 획득 단계(S101)는, 소스 코드 분석 단계, 메타 정보 수집 단계, 화면 소스 분석 단계, 또는 타입 정보 수집 단계 중 적어도 하나를 포함할 수 있다. 각 단계는 병렬적으로 수행될 수 있으나, 순서를 가지고 수행될 수 있다. 일 예로, 소스 코드 분석 단계가 수행된 후 메타 정보 수집 단계 또는 타입 정보 수집 단계가 수행될 수 있다. 다만, 이는 일 예에 불과하므로 본 개시는 이에 한정되지 않는다.
3.1.1 소스 코드 분석 단계
소스 코드 분석 단계는, 입력된 소스 코드를 분석하여 파라미터 정보와 SQL(Structured Query Language)문을 수집하여 출력하는 단계일 수 있다. 여기서, 파라미터 정보는 파라미터(형식 파라미터), 파라미터의 초기 값(실질 파라미터), 파라미터의 데이터 타입, 파라미터가 문자열을 나타내는 경우 길이 정보 등을 포함할 수 있다. 여기서, SQL문은 메타 정보가 저장된 데이터베이스에서 메타 정보 검색 및 관리 등을 하기 위한 프로그램 언어일 수 있다. 따라서, 수집된 SQL문은 후술할 메타 정보 수집 단계에서 이용될 수 있다.
도 5는 소스 코드의 일부를 도시한 도면이다. empNo, empRate, empDate 등은 파라미터이고, SELECT TO_DATE… 문은 SQL문을 나타낼 수 있다.
3.1.2 메타 정보 수집 단계
메타 정보 수집 단계는, 입력된 SQL문을 이용하여 데이터베이스의 메타 정보를 수집하는 단계를 나타낼 수 있다. 이때, 메타 정보를 수집하기 위해 소스 코드 분석 단계에서 얻은 파라미터 정보(파라미터)를 이용할 수 있다.
데이터베이스로부터 데이터를 추출하는 방법은 다양한 함수에 의해 수행될 수 있으나, 도 5에서는 일 예로 SELECT 함수를 개시하고 있다. 도 5를 참조하면, 파라미터 TO_DATE에는, EMP TABLE로부터, 컬럼 이름:EMP_DATE 및 제한: YYYY-MM-DD인 메타데이터가 선택될 수 있다. 이외에도, 데이터베이스 테이블의 기본 키 필드를 조건문에 활용하여 관련된 메타 정보 전부 또는 일부를 수집할 수 있다. 여기서, 테이블의 기본 키 필드는 하나의 필드(또는 속성) 또는 기본 키 역할을 하지 못하는 필드들의 조합(여기서, 조합은 기본 키의 역할을 함) 등이 될 수 있다.
3.1.3 화면 소스 분석 단계
화면 소스 분석 단계는, 입력된 화면 소스를 분석하여 화면에서 사용된 화면 이름 등을 수집하여 출력할 수 있다. 여기서, 화면 이름은 화면에 표시되는 한글 또는 영문 이름 중 적어도 하나를 나타낼 수 있다. 또한, 화면 이름을 컬럼 이름(또는 인덱스 번호 등)과 매핑(mapping)하여 화면 이름 대신 컬럼 이름(또는 인덱스 번호 등)을 출력할 수도 있다. 아래 표 4는 한글 이름 및 영문 이름이 컬럼 이름과 매핑되는 것을 보여주는 예이다.
한글 이름 영문 이름 컬럼 이름
사번 empNo EMP_NO
이름 empName EMP_NAME
이율 empRate EMP_RATE
생일 empDate EMP_DATE
주민번호 empSno EMP_SNO
사건번호 empEno EMP_ENO
말뭉치 empIdx EMP_IDX
도 3은 고객 관리 화면의 예를 나타내는 도면이다. 도 3을 참조하면, 본 단계에서는, 한글 이름으로는 사번, 이름, 이율, 생일 등이 추출되고, 영문 이름으로는 empNo, empName, empRate, empDate 등이 추출될 수 있다. 또한, 추출된 한글 이름 또는 영문 이름 중 적어도 하나가 본 단계에서 출력될 수 있다. 이와 달리, 본 단계에서는, 한글 이름 또는 영문 이름 중 적어도 하나를 컬럼 이름 또는 인덱스 번호와 매핑시켜 매핑된 값을 출력할 수도 있다. 예를 들면, 사번의 인덱스 번호가 1인 경우, 사번, empNo, EMP_NO 또는 인덱스 번호 1 중 어느 하나가 본 단계에서 출력될 수 있다.
3.1.5 타입 정보 수집 단계
타입 정보 수집 단계는, 파라미터 정보 또는 컬럼 매핑 정보 중 적어도 하나를 이용하여 타입 정보를 수집할 수 있다.
컬럼 매핑 정보는 화면 이름(한글 이름, 영문 이름), 컬럼 이름, 인덱스 번호 중 어느 하나가 파라미터와 매핑되는 정보를 나타낼 수 있다.
파라미터 정보 및 컬럼 매핑 정보를 이용하여 타입 정보를 수집하는 경우의 예를 살펴보자. 만약, 파라미터가 empEno인 경우, 타입은 1-사건번호, 2-지번주소, 3-도로명주소, 4-한글스트링, 5-이메일 중 어느 하나 일 수 있다. 이 경우, 컬럼 매핑 정보로써, 컬럼 이름인 EMP_ENO, 한글 이름인 사건번호, 또는 영문 이름인 empEno 중 적어도 하나가 제공되므로, 상기 컬럼 매핑 정보를 이용하여 타입 정보로 1-사건번호가 선택될 수 있다.
이와 달리, 파라미터 정보만을 이용하여 타입 정보를 수집하는 경우도 있을 수 있다. 일 예로, 파라미터가 empEno이고 상기 타입의 기본값이 1-사건번호인 경우, 컬럼 매핑 정보가 제공되지 않았더라도 empEno 파라미터의 타입 정보는 기본값인 1-사건번호로 선택될 수 있다. 다른 예로, 파리미터가 문자열을 나타내며 파라미터의 데이터 타입에 의해 문자열의 최대 길이가 정해진 경우, 상기 최대 길이에 맞는 타입 정보가 선택될 수 있다.
3.2 규칙 생성 단계
규칙 생성 단계(S102)는, 입력된 규칙 정보들을 기초로 규칙을 생성하여 출력하는 단계일 수 있다.
규칙 정보는, 정보 획득 단계에서 획득한 파라미터 정보, 메타 정보, 컬럼 매핑 정보와 같은 정보들, 기-정의된 테이블 정보, 또는 테스트 데이터 레벨 중 적어도 하나를 포함할 수 있다.
기-정의된 테이블은 많이 사용하는 포맷 형태 등을 규칙 테이블로 미리 정의해둔 것 일 수 있다. 기-정의된 테이블은 빠른 접근을 위해 파라미터나 컬럼 이름이 아닌 화면 이름(한글 이름 또는 영문 이름)으로 구분되어 정의될 수 있다.
기-정의된 테이블 정보는, 기-정의된 테이블로부터 얻는 정보를 나타낼 수 있다. 즉, 컬럼 매핑 정보를 이용하여 파라미터 정보를 컬럼 이름 등과 매핑시켜 메타 정보 등을 얻는 것이 아니라, 화면 소스 분석으로부터 얻은 화면 이름을 기-정의된 테이블의 화면 이름과 매핑시켜 기-정의된 테이블에 포함된 정보를 얻는 것을 나타낼 수 있다. 여기서, 화면 소스 분석으로부터 얻은 화면 이름과 기-정의된 테이블의 화면 이름이 같은 경우 별도의 매핑 정보가 필요하지 않으나, 다른 경우 별도의 매핑 정보가 필요할 수 있다.
한글 이름 영문 이름 형식
주민번호 sno yyyyMMdd-snnnnnn
S: 1-남, 2-여
전화번호 telno nnn-[nnn|nnnn]-nnnn|는 OR를 의미
핸드폰번호 handphone 0nn-nnnn-nnnn
... ... ...
규칙은, 기본 키 필드(또는 상기 필드와 매핑되는 파라미터(이하, 기본 키 파라미터라 함)), 알고리즘, 기본 키 필드(또는 기본 키 파라미터)에 대한 메타 정보(또는 기-정의된 테이블 정보) 또는 테스트 데이터 레벨 중 적어도 하나로 구성될 수 있다. 이하, 기본 키 필드에 관한 내용은 기본 키 파라미터에도 그대로 적용될 수 있다.상기 규칙의 요소들(기본 키 필드, 알고리즘, 메타 정보 등)은 독립적으로 생성될 수 있으나, 종속적으로 생성될 수 있다. 일 예로, 기본 키 필드가 결정되면, 상기 필드를 참조하여 알고리즘을 결정할 수 있다. 또한, 상기 알고리즘이 결정되면, 상기 알고리즘을 참조하여 메타 정보, 레벨 등을 결정할 수 있다. 이하, 상기 규칙의 요소들이 종속적으로 생성되는 예를 기준으로 설명하나, 본 개시는 이에 한정되지 않는다.
규칙은, 기본 키 필드(또는 기본 키 파라미터) 별로 생성될 수 있다. 본 개시의 일 실시예에서는 EMP_NO, EMP_NAME, EMP_RATE와 같은 컬럼 이름 필드(속성)이 기본 키 필드를 나타낼 수 있고, EMP_NO와 매핑되는 empNo, EMP_NAME과 매핑되는 empName, EMP_RATE와 매핑되는 empRate와 같은 파라미터가 기본 키 파라미터를 나타낼 수 있다.
또한, 기본 키 필드는, 데이터 베이스의 기본 키 역할을 하는 필드는 물론 기-정의된 테이블을 참조하는 경우 기-정의된 테이블의 기본 키 역할을 하는 필드를 포함할 수 있다.
규칙 생성에 있어서, 기본 키 필드(또는 기본 키 파라미터)가 결정되면, 상기 필드에 적용되는 알고리즘 또는 메타 정보(또는 기-정의된 테이블 정보) 중 적어도 하나가 결정될 수 있다.
기본 키 필드, 알고리즘, 메타 정보, 및 레벨 각각의 관계는 일대일, 일대다, 다대일, 또는 다대다일 수 있다. 일 예로, 하나의 알고리즘을 여러 기본 키 필드에서 사용할 수 있고, 하나의 필드에 복수개의 알고리즘이 사용될 수 있으며, 복수개의 메타 정보가 사용될 수 있다.
알고리즘은 표 1과 같은 형태를 가질 수 있으며, 기본 키 필드를 기초로, 기-정의된 N개의 알고리즘 중 전부 또는 일부가 선택될 수 있다. 이때, 레벨을 추가로 고려할 수 있다.
레벨은 L개로 나누어 질 수 있다. L은 기-정의된 고정된 값이거나 적응적으로 변하는 값일 수 있다. L은 1, 2, 3, 4 등과 같은 1이상의 자연수 일 수 있다.
레벨은 사용자의 편의를 위해 즉 규칙 정보 입력을 하지 않고 랜덤하게 규칙을 생성하는 것에서부터 규칙 정보를 입력하여 생성하는 방식으로 Level을 구별할 수 있다. 이는, 필요에 따라, 레벨을 설정하여 규칙을 생성함으로써 작업 시간을 단축할 수 있다는 장점을 가질 수 있다.
레벨이 높아질수록 해당 규칙에 의해 생성되는 데이터는 실제 데이터와 유사하게 된다. 즉, 규칙 생성 시간과 생성되는 데이터 품질간 균형(Trade-off)을 사용자(테스터)가 선택할 수 있도록 한 것이다.
레벨이 달라짐에 따라, 이용되는 알고리즘, 메타 정보의 개수 및 종류 등이 달라 질 수 있다.
레벨을 나눈 일 예를 살펴보면,
레벨1은, 데이터가 숫자 또는 문자로만 이루어져 있고, 기본 값을 이용하여 추가 입력 또는 추가 정보 등이 필요하지 않을 수 있다. 이 경우, 알고리즘은 RandomString, RandomInt, RandomDouble, 및 RandomDate만 사용할 수 있다.
레벨2는, 데이터가 범위가 정해진 숫자 또는 형식이 있는 문자열로 구성될 수 있어서, 레벨2의 데이터는 실제와 어느정도 비슷한 형태의 값으로 생성될 수 있다. 이 경우, 전술한 7개의 알고리즘을 모두 사용할 수 있다.
레벨3은, 데이터가 특정 조건이 주어진 문자열로도 구성될 수 있어서, 레벨3의 데이터는 실제와 거의 동일한 형태의 값으로 생성될 수 있다. 이 경우에도, 레벨2와 마찬가지로, 전술한 7개의 알고리즘을 모두 사용할 수 있다.
다만, 레벨2와의 차이점은 해당 알고리즘 내 파라미터 또는 조건 등이 추가로 더 입력되어야 한다. 예를 들면, 생성되는 데이터가 30대 여성의 주민등록번호인 경우, 일반 주민등록번호와 달리 년도(앞번호 중 맨 앞 2개의 숫자) 및 성별을 나타내는 숫자(뒷번호 중 맨 앞 1개의 숫자)가 각각 년도는 범위로, 성별은 2의 배수로 설정될 수 있다.
알고리즘이 선택되면, 그에 대한 입력 데이터(파라미터)가 결정되기에 그에 맞는 메타 정보의 개수 및 종류 등도 결정될 수 있다.
알고리즘의 입력 데이터가 입력되지 않는 경우, 기-설정된 기본 값이 할당될 수 있다. 예를 들면, 알고리즘으로 SpecificString이 선택되었으나 입력 데이터인 type에 관한 정보가 입력되지 않은 경우, type은 기-설정된 기본값인 1이 되어 1-사건번호를 나타낼 수 있다.
일 예로, 알고리즘의 입력 데이터로 포맷 정보(파라미터)가 메타 정보에 의해 입력되지 않은 경우, 상기 포맷 정보는 기본 값으로 정의된 포맷 형태를 가질 수 있다. 이와 달리, 기본 키 파라미터 정보, SQL문 등 메타 정보가 아닌 다른 정보로부터 상기 포맷 정보를 알 수 있으면, 해당 정보에 의해 결정된 포맷 형태가 상기 포맷 정보가 될 수 있다.
규칙 생성에 있어서, 기본 키 필드가 결정되면 기본 키 필드를 참조하여 레벨을 결정할 수 있다. 상기 결정된 레벨은 전술한 바와 같이 알고리즘 및 메타 정보의 개수 및 종류 결정에 이용될 수 있다.
규칙 생성에 있어서, 레벨은 생략될 수 있다. 생략되는 경우는, ⅰ) 레벨이 이미 알고리즘 및 메타 정보의 개수 및 종류에 반영되어 별도로 규칙에 포함할 필요 없는 경우, ⅱ) 기본 키 필드에 할당될 수 있는 레벨이 1개 밖에 없는 경우를 포함할 수 있다.
또한, 레벨에 관한 정보가 입력되지 않은 경우, 레벨은 기-설정된 기본 값을 가질 수 있다.
이하, 표 4는 생성된 규칙의 일 예이다. 표 4에는 레벨은 이미 알고리즘 및 메타 정보에 반영되어 생략되었다. 여기서, 상기 레벨의 예(레벨이 1,2,3으로 나눠진 경우)를 기준으로 2이상일 수 있다.
기본 키 필드
(기본 키 파라미터)
알고리즘 메타 정보(파라미터)
EMP_NAME RandomString isNormal:true, length:50, type:1110000
EMP_NO RandomInt isNormal:true, N:8, min:10000000max:99999999
EMP_RATE RandomDouble isNormal:true, type:1, numInteger:2, numFraction:1, min:0.0, max:99.9
EMP_DATE RandomDouble isNormal:true, i18n:0, format:yyyy-MM-dd
EMP_SNO typeDefinedString isNormal:true, maxlength:14, type:0010000, range:0, delimiters: ['-'], N:999999-9999999, lengths:[6,7]
EMP_ENO specificString isNormal:true, type:1, length:14
EMP_IDX dbReferneceNumber isNormal:true, maxlength:100000
3.3 테스트 데이터 생성 단계
테스트 데이터 생성 단계(S103)는, 입력된 규칙을 기초로 테스트 데이터를 생성 및 출력하는 단계일 수 있다. 구체적으로, 입력된 규칙의 알고리즘을 입력된 규칙의 메타 정보(파라미터) 값을 이용하여 실행하여 테스트 데이터 값을 생성하여 출력할 수 있다.
본 개시의 테스트 데이터 생성 방법은, 종래 방법과 달리, N개의 알고리즘을 기-정의하여 관리하고, 기본 키 필드마다 알고리즘을 자동적으로 할당하며, 각 메타 정보(또는 파라미터) 별로 기본 값이 기-설정되어 있어 입력되지 않은 부분도 자동으로 채워주고, 테스트 데이터 생성의 규칙을 레벨에 따라 적응적으로 생성하며, 상기 규칙이 자동적으로 생성되므로, ⅰ) 시간 절약의 측면에서 현저한 효과가 있으며, ⅱ) 생성되는 데이터의 품질도 높으며, ⅲ) 레벨에 따라 시간과 데이터 품질 간의 균형도 조절할 수 있는 장점이 있다.
4. 테스트 데이터 생성 장치
도 4는 테스트 데이터 생성 장치를 나타내는 도면이다.
테스트 데이터 생성 장치(40)는, 정보 획득부(401), 규칙 생성부(402), 또는 테스트 데이터 생성부(403) 중 적어도 하나를 포함할 수 있다.
4.1 정보 획득부
정보 획득부(401)는, 소스 코드 분석부(4011), 메타 정보 수집부(4012), 화면 소스 분석부(4013), 또는 타입 정보 수집부(4014) 중 적어도 하나를 포함할 수 있다. 각 부분은 병렬적인 관계일 수 있으나, 순서를 가지고 차례대로 수행될 수 있다. 일 예로, 소스 코드 분석부가 수행된 후 메타 정보 수집부 또는 타입 정보 수집부가 수행될 수 있다. 이는 일 예에 불과하므로 본 개시는 이에 한정되지 않는다.
소스 코드 분석부(4011)는, 입력된 소스 코드를 분석하여 파라미터 정보와 SQL문을 수집하여 출력할 수 있다. 소스 코드 분석부에서는, 전술한 소스 코드 분석 단계가 수행되므로, 구체적 설명은 생략한다.
메타 정보 수집부(4012)는, 입력된 SQL문을 이용하여 데이터베이스의 메타 정보를 수집하여 출력할 수 있다. 이때, 메타 정보를 수집하기 위해 소스 코드 분석 단계에서 얻은 파라미터 정보(파라미터)를 이용할 수 있다. 메타 정보 수집부에서는, 전술한 메타 정보 수집 단계가 수행되므로, 구체적 설명은 생략한다.
화면 소스 분석부(4013)는, 입력된 화면 소스를 분석하여 화면에서 사용된 화면 이름을 수집하여 출력할 수 있다. 여기서, 화면 이름은 화면에 표시되는 한글 또는 영문 이름 중 적어도 하나를 나타낼 수 있다. 화면 소스 분석부에서는, 전술한 화면 소스 분석 단계가 수행되므로, 구체적 설명은 생략한다.
타입 정보 수집부(4014)는, 파라미터 정보 또는 컬럼 매핑 정보 중 적어도 하나를 이용하여 타입 정보를 수집할 수 있다. 타입 정보 수집부는, 전술한 타입 정보 수집 단계가 수행되므로, 구체적 설명은 생략한다.
4.2 규칙 생성부
규칙 생성부(402)는, 입력된 규칙 정보 또는 타입 정보 중 적어도 하나를 기초로 규칙을 생성하여 출력할 수 있다. 규칙 생성부에서는, 전술한 규칙 생성 단계가 수행되므로, 구체적 설명은 생략한다.
4.3 테스트 데이터 생성부
테스트 데이터 생성부(403)는, 입력된 규칙을 기초로 테스트 데이터를 생성 및 출력할 수 있다.
테스트 데이터 생성부는, 알고리즘 관리부를 포함할 수 있다. 알고리즘 관리부는, 테스트 데이터 생성에 필요한 알고리즘을 저장 및 관리할 수 있다.
즉, 테스트 데이터 생성부는, 규칙에 의해 결정되는 알고리즘을 알고리즘 관리부로부터 입력 받고(또는 호출하고), 메타 정보(파라미터) 값을 상기 알고리즘에 적용하여 테스트 데이터를 생성할 수 있다.
5. 컴퓨터 판독 가능 기록 매체
본 개시의 실시예에 따른 테스트 데이터 생성 방법은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램 명령을 포함하는 컴퓨터 판독가능 기록 매체로 구현될 수 있다. 상기 컴퓨터 판독 가능 기록 매체는 프로그램 명령, 로컬 데이터 파일, 로컬 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 기록 매체는 본 개시의 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함할 수 있다.
이상의 설명은 본 개시의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 개시의 본질적인 특성에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 또한, 본 개시에 개시된 실시예들은 본 개시의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 개시의 기술 사상의 범위가 한정되는 것은 아니다. 따라서, 본 개시의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 개시의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (10)

  1. 테스트 데이터를 생성하는 방법에 있어서,
    화면 소스를 기초로, 화면에 표시되는 이름을 획득하는 화면 소스 분석 단계;
    상기 이름을 기초로, 규칙을 생성하는 규칙 생성 단계; 및
    상기 생성된 규칙을 기초로, 테스트 데이터를 생성하는 테스트 데이터 생성 단계를 포함하되,
    상기 이름은, 소스 코드를 분석하여 획득된 복수개의 파라미터 중 어느 하나와 연결되고, 여기서, 상기 연결된 하나의 파라미터는 기본 키 파라미터임,
    상기 규칙은, 상기 규칙을 구분하는 상기 기본 키 파라미터, 기-정의된 복수개의 알고리즘 후보들 중 상기 기본 키 파라미터에 의해 특정되는 적어도 하나의 알고리즘, 상기 기본 키 파라미터에 의해 데이터베이스로부터 획득되는 메타 정보를 포함하고,
    상기 규칙은, 테스트 데이터 레벨(level)을 더 고려하여 생성되고,
    상기 복수개의 알고리즘 후보들의 개수는, 상기 테스트 데이터 레벨에 따라 달라지고,
    상기 테스트 데이터 레벨이 제2 레벨인 경우, 상기 메타 정보의 데이터 값은, 소정의 범위 또는 형식을 기초로 생성되고,
    상기 테스트 데이터 레벨이 제3 레벨인 경우, 상기 메타 정보의 데이터 값은, 상기 소정의 범위 또는 형식, 및 상기 소정의 범위 또는 형식에 대한 추가적인 제한을 기초로 생성되고,
    상기 테스트 데이터 레벨이 제1 레벨인 경우, 상기 메타 정보의 데이터 값은, 상기 소정의 범위 또는 형식, 및 상기 소정의 범위 또는 형식에 대한 추가적인 제한에 관계없이 생성되는, 테스트 데이터 생성 방법.
  2. 삭제
  3. 삭제
  4. 제1항에 있어서,
    상기 규칙 생성은, 타입 정보를 더 고려하여 수행되고,
    상기 타입 정보는, 상기 기본 키 파라미터를 기초로 획득되고,
    상기 타입 정보에 따라, 상기 데이터베이스로부터 획득되는 메타 정보가 달라지는, 테스트 데이터 생성 방법.
  5. 제4항에 있어서,
    상기 타입 정보와 상기 기본 키 파라미터는 컬럼 매핑 정보에 의해 매핑(mapping)되고,
    상기 매핑은, 기-정의된 매핑 테이블에 기초하여 수행되는, 테스트 데이터 생성 방법.
  6. 삭제
  7. 삭제
  8. 삭제
  9. 테스트 데이터를 생성하는 장치에 있어서,
    화면 소스를 기초로, 화면에 표시되는 이름을 획득하는 화면 소스 분석부;
    상기 이름을 기초로, 규칙을 생성하는 규칙 생성부; 및
    상기 생성된 규칙을 기초로, 테스트 데이터를 생성하는 테스트 데이터 생성부를 포함하되,
    상기 이름은, 소스 코드를 분석하여 획득된 복수개의 파라미터 중 어느 하나와 연결되고, 여기서, 상기 연결된 하나의 파라미터는 기본 키 파라미터임,
    상기 규칙은, 상기 규칙을 구분하는 상기 기본 키 파라미터, 기-정의된 복수개의 알고리즘 후보들 중 상기 기본 키 파라미터에 의해 특정되는 적어도 하나의 알고리즘, 상기 기본 키 파라미터에 의해 데이터베이스로부터 획득되는 메타 정보를 포함하고,
    상기 규칙은, 테스트 데이터 레벨(level)을 더 고려하여 생성되고,
    상기 복수개의 알고리즘 후보들의 개수는, 상기 테스트 데이터 레벨에 따라 달라지고,
    상기 테스트 데이터 레벨이 제2 레벨인 경우, 상기 메타 정보의 데이터 값은, 소정의 범위 또는 형식을 기초로 생성되고,
    상기 테스트 데이터 레벨이 제3 레벨인 경우, 상기 메타 정보의 데이터 값은, 상기 소정의 범위 또는 형식, 및 상기 소정의 범위 또는 형식에 대한 추가적인 제한을 기초로 생성되고,
    상기 테스트 데이터 레벨이 제1 레벨인 경우, 상기 메타 정보의 데이터 값은, 상기 소정의 범위 또는 형식, 및 상기 소정의 범위 또는 형식에 대한 추가적인 제한에 관계없이 생성되는, 테스트 데이터 생성 장치.
  10. 제 1 항, 제 4 항 또는 제 5 항 중의 어느 한 항에 따른 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체.
KR1020200083568A 2020-07-07 2020-07-07 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체 KR102374287B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200083568A KR102374287B1 (ko) 2020-07-07 2020-07-07 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200083568A KR102374287B1 (ko) 2020-07-07 2020-07-07 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체

Publications (2)

Publication Number Publication Date
KR20220005872A KR20220005872A (ko) 2022-01-14
KR102374287B1 true KR102374287B1 (ko) 2022-03-15

Family

ID=79343009

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200083568A KR102374287B1 (ko) 2020-07-07 2020-07-07 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체

Country Status (1)

Country Link
KR (1) KR102374287B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007293830A (ja) * 2006-03-30 2007-11-08 Japan Research Institute Ltd テストデータ生成システム、そのプログラム、その記録媒体、及びテストデータ生成方法
JP2011076498A (ja) * 2009-09-30 2011-04-14 Fujitsu Ltd 検証用データ作成方法,及び、検証用データ作成プログラム
JP2011209944A (ja) * 2010-03-29 2011-10-20 Hitachi Solutions Ltd テスト用マスキングデータ生成装置及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05197591A (ja) * 1992-01-22 1993-08-06 Hitachi Ltd テストデータの作成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007293830A (ja) * 2006-03-30 2007-11-08 Japan Research Institute Ltd テストデータ生成システム、そのプログラム、その記録媒体、及びテストデータ生成方法
JP2011076498A (ja) * 2009-09-30 2011-04-14 Fujitsu Ltd 検証用データ作成方法,及び、検証用データ作成プログラム
JP2011209944A (ja) * 2010-03-29 2011-10-20 Hitachi Solutions Ltd テスト用マスキングデータ生成装置及びプログラム

Also Published As

Publication number Publication date
KR20220005872A (ko) 2022-01-14

Similar Documents

Publication Publication Date Title
CA2701043C (en) Method and system for associating data records in multiple languages
US11188537B2 (en) Data processing
US8185509B2 (en) Association of semantic objects with linguistic entity categories
US6859805B1 (en) Method and apparatus for generating page-level security in a computer generated report
US8140517B2 (en) Database query optimization using weight mapping to qualify an index
KR960706138A (ko) 관계형 데이타베이스 스키마를 생성하기 위한 의미 객체 모델링 시스템(semantic object modeling system for creating relational database schemas)
US9104784B2 (en) Detecting multi-column composite key column sets
Woodall et al. A classification of data quality assessment and improvement methods
US20180144061A1 (en) Edge store designs for graph databases
US10031839B2 (en) Constraint extraction from natural language text for test data generation
US6772156B1 (en) Method and apparatus for creating and displaying a table of content for a computer-generated report having page-level security
US10445370B2 (en) Compound indexes for graph databases
CN110555035A (zh) 一种对查询语句进行优化的方法、装置
US20210390101A1 (en) Query generation from a natural language input
KR102374287B1 (ko) 테스트 데이터 생성 방법, 장치, 컴퓨터 프로그램 및 기록 매체
CN115936017B (zh) 一种支持界面多语言和数据多语言的主数据管理方法
US20180144060A1 (en) Processing deleted edges in graph databases
CN112148735A (zh) 一种用于结构化表格数据知识图谱的构建方法
CN115062049B (zh) 一种数据血缘分析方法及装置
US8793271B2 (en) Searching documents using a dynamically defined ignore string
CN114327607A (zh) 一种bs代码自动生成方法
CN113760888B (zh) 一种生成数据表的方法、装置和存储介质
CN114610791A (zh) 数据血缘关系的分析方法、装置、计算机设备及存储介质
CN116126918A (zh) 数据生成方法、信息筛选方法、设备以及介质
CN113779955A (zh) 一种差异脚本的生成方法、装置和存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant