KR20230090264A - 실시간 코드 테스트 방법, 장치 및 프로그램 - Google Patents
실시간 코드 테스트 방법, 장치 및 프로그램 Download PDFInfo
- Publication number
- KR20230090264A KR20230090264A KR1020220173582A KR20220173582A KR20230090264A KR 20230090264 A KR20230090264 A KR 20230090264A KR 1020220173582 A KR1020220173582 A KR 1020220173582A KR 20220173582 A KR20220173582 A KR 20220173582A KR 20230090264 A KR20230090264 A KR 20230090264A
- Authority
- KR
- South Korea
- Prior art keywords
- test
- source
- source code
- real
- recommendation
- Prior art date
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 240
- 238000000034 method Methods 0.000 title claims description 44
- 230000005540 biological transmission Effects 0.000 claims abstract description 44
- 238000011161 development Methods 0.000 claims description 67
- 238000007726 management method Methods 0.000 claims description 38
- 230000008859 change Effects 0.000 claims description 23
- 230000006870 function Effects 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 12
- 238000010998 test method Methods 0.000 claims description 12
- 238000004458 analytical method Methods 0.000 claims description 11
- 238000013135 deep learning Methods 0.000 claims description 11
- 238000010801 machine learning Methods 0.000 claims description 11
- 238000012432 intermediate storage Methods 0.000 claims description 10
- 230000010365 information processing Effects 0.000 claims description 8
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 3
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 238000012549 training Methods 0.000 claims description 3
- 238000011144 upstream manufacturing Methods 0.000 claims description 3
- 230000008569 process Effects 0.000 description 22
- 238000010586 diagram Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 230000000694 effects Effects 0.000 description 7
- 238000007689 inspection Methods 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 238000007630 basic procedure Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012544 monitoring process Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000004044 response Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000036632 reaction speed Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0633—Workflow analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0637—Strategic management or analysis, e.g. setting a goal or target of an organisation; Planning actions based on goals; Analysis or evaluation of effectiveness of goals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0639—Performance analysis of employees; Performance analysis of enterprise or organisation operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/103—Workflow collaboration or project management
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Quality & Reliability (AREA)
- Economics (AREA)
- General Engineering & Computer Science (AREA)
- Educational Administration (AREA)
- Operations Research (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Computer Hardware Design (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Game Theory and Decision Science (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Biophysics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Health & Medical Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Debugging And Monitoring (AREA)
Abstract
개발자 단말에서 개발 중인 프로그램의 소스코드 중 변경된 파일 또는 변경된 최소단위 소스코드나 관련 데이터가 포함되어 이루어지는 테스트용 데이터가 테스트 실행 엔진에 전송되는 소스코드 전송단계; 상기 테스트 실행 엔진에서 미리 정해진 테스트 룰에 따라 상기 테스트용 데이터가 테스트되어 테스트 결과가 생성되는 테스트 단계; 및 상기 테스트 실행 엔진에서 상기 테스트 결과가 상기 개발자 단말에 전송되는 결과 전송단계;가 포함되어 이루어짐을 특징으로 하는, 실시간 코드 테스트 방법이 제공된다.
Description
본 발명은, 실시간 코드 테스트 방법, 장치 및 프로그램에 관한 것으로서, 더욱 상세히는, 바람직하게는 고유ID로 관리되는 최소단위 소스코드를 대상으로 실시간 테스트하여 네트워크 부하 감소 및 빠른 응답성을 발현하고, 룰에 벗어나는 부분에 대해서는 수정 후보를 추천하는 기능을 가지는, 실시간 코드 테스트 방법, 장치 및 프로그램에 관한 것이다.
일반적으로 프로그래밍이나 UI개발 등의 프로젝트에 있어서는 지켜야 할 규칙들이 존재하고, 오류 없는 작동하기 위해서는 필수적으로 연결되는 부분들에 대한 검증이 필요하다. 이러한 프로젝트의 작업은 양적으로 방대하고, 많은 개발자들이 투입되어 개인차가 클 수 있기 때문에, 균일한 품질로 개발 결과를 얻기 매우 어렵다.
그리고 개발 중간중간 검토하기보다는 개발 결과물이 어느 정도 이상 집성된 후 테스트 단계에서 한꺼번에 검토하기 때문에, 같은 문제가 이곳저곳에서 누적 발생할 우려가 많다.
하기 특허문헌의 기술은 가상 개발 플랫폼을 구비하고, 개발자 단말에서 프로그램을 개발한 후 이를 업로드하면, 위탁자 서버에서 실행 프로그램을 생성하고, 위탁자 단말에서 프로그램 테스트를 수행하고 테스트 결과를 개발 허브 포탈 서버에 등록하는 구성이다.
상기 특허문헌의 기술은, '프로그램'을 생성한 후에 비로소 테스트를 수행하므로, 완성을 전제로 한 테스트 기술임을 의미한다. 따라서, 개발되어 업로드된 소스코드에 문제가 있는 경우에는 다시 개발자에게 피드백 된 후에 수정, 업로드, 프로그램 생성, 테스트의 과정을 거치는, 매우 비효율적인 프로세스가 반복되어야 한다. 또한, 개발 프로젝트 내의 모든 개발자의 소스코드에 대해 이러한 과정이 동일하게 요청되며, 서로 연관되어 영향을 주는 모듈들에 대해서는, 어느 곳에서 문제를 수정해야 하는지의 판단이 곤란하고, 또한 양쪽 모듈을 둘 다 수정하면 다시 또다른 문제를 발생시키는 경우도 생기기 때문에, 개발 프로세스가 난해해지고 시간 소모적인 낭비가 초래된다.
본 발명은 상기 문제를 해소하기 위한 것으로서, 개발 과정에서 문제가 되는 점을 개발자에게 미리 알려주어, 개발자가 개발과정에서 문제를 미연에 회피할 수 있도록 하는, 실시간 코드 테스트 방법, 장치 및 프로그램을 제공하고자 하는 것이다.
또한, 개발자의 업로드에 의해 테스트 수행이 시작되는 것이 아니라, 개발 중인 소스코드의 변화를 실시간 감시 감지하여 변화 발생시 자동으로 실시간 테스트 요청이 이루어지는, 실시간 코드 테스트 방법, 장치 및 프로그램을 제공하고자 하는 것이다.
또한, 개발 중인 소스코드가 전체로 업로드되지 않고, 소스코드 중 변화가 발생된 부분, 즉 수정부분 중 최소단위 소스코드만 업로드되어 테스트가 이루어지는, 실시간 코드 테스트 방법, 장치 및 프로그램을 제공하고자 하는 것이다.
또한, 수정부분마다 고유ID를 부여하여, 업로드 및 저장, 테스트, 결과 피드백 등의 일련의 프로세스에 있어서 다른 부분과 혼동 없이 정확한 처리를 신속하게 수행할 수 있는, 실시간 코드 테스트 방법, 장치 및 프로그램을 제공하고자 하는 것이다.
또한, 문제의 지적 뿐아니라 해결을 위한 후보의 추천에 의해 더 좋은 코드 아이디어를 알려줘서 품질과 개발 생산성을 높일 수 있는 협력형 품질향상 플랫폼이 되도록 하는, 실시간 코드 테스트 방법, 장치 및 프로그램을 제공하고자 하는 것이다.
상기 과제를 달성하기 위한 본 발명의 방법은, 개발자 단말에서 개발 중인 프로그램의 소스코드 중 변경된 파일 또는 변경된 최소단위 소스코드나 관련 데이터가 포함되어 이루어지는 테스트용 데이터가 테스트 실행 엔진에 전송되는 소스코드 전송단계; 상기 테스트 실행 엔진에서 미리 정해진 테스트 룰에 따라 상기 테스트용 데이터가 테스트되어 테스트 결과가 생성되는 테스트 단계; 상기 테스트 실행 엔진에서 상기 테스트 결과가 상기 개발자 단말에 전송되는 결과 전송단계; 및 상기 개발자 단말이 상기 테스트 결과를 개발자에게 표시하는 결과 표시단계;가 포함되어 이루어짐을 특징으로 하는, 실시간 코드 테스트 방법이다.
여기서, 상기 소스코드 전송단계에 있어서의 전송은, (1) 파일 단위의 변경이나 파일 내의 상기 최소단위 소스코드의 변경에 대한 상기 개발자 단말에 설치된 에이전트의 트리거깅에 의해 개시되거나, (2) 미리 정해진 주기마다 수행되는 상기 테스트 실행 엔진의 폴링에 의해 개시될 수 있다.
또한, 상기 테스트 단계에 있어서, 상기 변경된 파일은, 소스 데이터베이스에 미리 저장되어 있는 원본 파일과 교체된 후 테스트에 사용되고, 상기 변경된 최소단위 소스코드는, 소스 데이터베이스에 미리 저장되어 있는 원본 소스코드의 대응 부분에 교체 결합되어 개발자 단말의 소스코드와 동일하게 싱크된 후 테스트에 사용되도록 이루어질 수 있다.
또한, 상기 테스트 결과에 대응하여 미리 생성된 추천 룰에 따라 추천 데이터가 결정되는 추천데이터 결정단계;가 더 구비되고, 상기 결과 전송단계에 있어서, 상기 테스트 실행 엔진으로부터 상기 추천 데이터가 상기 개발자 단말에 전송될 수 있다.
또한, 상기 테스트용 데이터 및 테스트 결과가 머신러닝이나 딥러닝에 적합한 형태로 변환되는 형태 변환단계; 변환된 데이터를 이용하여 추천 룰과 추천 데이터를 생성시키도록 상기 머신러닝이나 딥러닝 엔진을 학습시키는 학습단계; 및 생성된 추천 룰과 추천 데이터를 저장하는 추천정보 저장단계;가 포함되어 이루어질 수 있다.
또한, 상기 테스트 실행 엔진의 상류에 소스 데이터베이스에 파일단위 저장, 파일의 분석, 추출, 변환 정보의 저장, 테스트 실행 엔진에 대한 테스트 실행 요청, 테스트 결과의 개발자 단말에 대한 전달, 추천 데이터의 전달 중 적어도 하나의 기능을 수행하는 개발 소스 관리 서버가 더 구비될 수 있다.
이때, 상기 소스코드 전송단계에 있어서의 전송은, 미리 정해진 주기마다 수행되는 상기 개발 소스 관리 서버의 폴링에 의해 개시될 수 있다.
또한, 상기 개발자 단말의 하류에 데이터를 임시 저장하는 중간 저장 서버가 더 구비될 수 있다.
이때, 상기 소스코드 전송단계에 있어서의 전송은, 파일 단위의 변경이나 파일 내의 상기 최소단위 소스코드의 변경에 대한 상기 중간 저장 서버에 설치된 에이전트의 트리거깅에 의해 개시될 수 있다.
또한, 상기 최소단위 소스코드에 고유ID가 부여되어 있는데 검사하고, 고유ID가 부여되어 있지 않은 경우에는 유일성을 가지는 고유ID를 부여할 수 있다.
한편, 상기 과제를 달성하기 위한 본 발명의 장치는, 개발자 단말에서 개발 중인 프로그램의 소스코드 중 변경된 파일 또는 변경된 최소단위 소스코드나 관련 데이터가 포함되어 이루어지는 테스트용 데이터가 테스트 실행 엔진에 전송되는 소스코드 전송모듈; 상기 테스트 실행 엔진에서 미리 정해진 테스트 룰에 따라 상기 테스트용 데이터가 테스트되어 테스트 결과가 생성되는 테스트 모듈; 및 상기 테스트 실행 엔진에서 상기 테스트 결과가 상기 개발자 단말에 전송되는 결과 전송모듈;이 포함되어 이루어짐을 특징으로 한다.
한편, 상기 과제를 달성하기 위한 본 발명의 프로그램은, 정보처리기기에 청구항 1에 기재된 방법의 각 단계를 실행시키기 위한 프로그램을 기록한, 정보처리기기로 읽을 수 있는 저장매체에 기록된 프로그램이다.
본 발명에 의하면, 개발 과정에서 문제가 되는 점을 개발자에게 미리 알려주어, 개발자가 개발과정에서 문제를 미연에 회피할 수 있도록 하는, 실시간 코드 테스트 방법, 장치 및 프로그램이 제공된다.
또한, 개발자의 업로드에 의해 테스트 수행이 시작되는 것이 아니라, 개발 중인 소스코드의 변화를 실시간 감시 감지하여 변화 발생시 자동으로 실시간 테스트 요청이 이루어지는, 실시간 코드 테스트 방법, 장치 및 프로그램이 제공된다.
또한, 개발 중인 소스코드가 전체로 업로드되지 않고, 소스코드 중 변화가 발생된 부분, 즉 수정부분 중 최소단위 소스코드만 업로드되어 테스트가 이루어지는, 실시간 코드 테스트 방법, 장치 및 프로그램이 제공된다.
또한, 수정부분마다 고유ID를 부여하여, 업로드 및 저장, 테스트, 결과 피드백 등의 일련의 프로세스에 있어서 다른 부분과 혼동 없이 정확한 처리를 신속하게 수행할 수 있는, 실시간 코드 테스트 방법, 장치 및 프로그램이 제공된다.
또한, 문제의 지적 뿐아니라 해결을 위한 후보의 추천에 의해 더 좋은 코드 아이디어를 알려줘서 품질과 개발 생산성을 높일 수 있는 협력형 품질향상 플랫폼이 되도록 하는, 실시간 코드 테스트 방법, 장치 및 프로그램이 제공된다.
도 1은, 본 발명의 일실시예에 따른 방법이 구현되는 제1 실시예 하드웨어 블럭도이다.
도 2는, 본 발명의 일실시예에 따른 방법이 구현되는 제2 실시예 하드웨어 블럭도이다.
도 3은, 본 발명의 일실시예에 따른 방법이 구현되는 제3 실시예 하드웨어 블럭도이다.
도 4는, 최소단위 소스코드 변경시의 실시간 테스트 및 추천의 절차를 나타내는 타임차트이다.
도 5는, 파일 변경시의 실시간 테스트 및 추천의 절차를 나타내는 타임차트이다.
도 6은, 머신러닝이나 딥러닝 학습에 의한 추천 룰 및 추천 데이터 생성 절차를 나타내는 타임차트이다.
도 7은, HTML의 엘리먼트에 고유ID가 부여되지 않은 예를 나타내는 화면예시도이다.
도 8은, 엘리먼트에 수동으로 고유ID를 부여한 예를 나타내는 화면예시도이다.
도 9는, 에디터에 의해 자동으로 부여된 고유ID를 가지는 예를 나타내는 화면예시도이다.
도 10은, 화면 UI 프로그램의 테스트 실행 엔진에서 사용될 테스트 룰(규칙)의 예를 나타내는 표이다.
도 11은, 화면 UI 프로그램의 입력칸에 대응하는 출력항목이 빠진 경우의 에러메시지의 예를 나타내는 화면예시도이다.
도 12는, 상기 경우의 소스코드의 예를 나타내는 화면예시도이다.
도 13은, 가장 연관성이 높은 항목을 추천하는 화면예시도이다.
도 14는, 입력칸에 대응하는 출력항목을 새로 삽입한 경우의 화면예시도이다.
도 15는, 상기 경우의 소스코드의 예를 나타내는 화면예시도이다.
도 16은, 항목이 새로 삽입된 경우에 테스트를 요청하는 데이터의 예시도이다.
도 17은, 소스 데이터베이스에 저장되어 있던 원본 소스코드의 대응 부분의 소스코드의 예를 나타내는 화면예시도이다.
도 18은, 원본 소스코드의 대응 부분에 새로 삽입된 출력항목을 부가하여 결합한 소스코드의 예를 나타내는 화면예시도이다.
도 19는, 결합된 소스코드에 의해 테스트를 수행한 테스트 결과 및 추천 항목의 데이터의 예시도이다.
도 20은, 테스트 결과 및 추천 데이터가 개발자 단말에 표시된 화면예시도이다.
도 21은, 추천 데이터 중 하나를 선택한 경우의 화면예시도이다.
도 22는, 상기 경우의 소스코드의 예를 나타내는 화면예시도이다.
도 23은, 항목이 변경된 경우에 테스트를 요청하는 데이터의 예시도이다.
도 24는, 원본 소스코드의 대응 부분에 변경된 출력항목을 부가하여 결합한 소스코드의 예를 나타내는 화면예시도이다.
도 25는, 결합된 소스코드에 의해 테스트를 수행한 테스트 결과 데이터의 예시도이다.
도 2는, 본 발명의 일실시예에 따른 방법이 구현되는 제2 실시예 하드웨어 블럭도이다.
도 3은, 본 발명의 일실시예에 따른 방법이 구현되는 제3 실시예 하드웨어 블럭도이다.
도 4는, 최소단위 소스코드 변경시의 실시간 테스트 및 추천의 절차를 나타내는 타임차트이다.
도 5는, 파일 변경시의 실시간 테스트 및 추천의 절차를 나타내는 타임차트이다.
도 6은, 머신러닝이나 딥러닝 학습에 의한 추천 룰 및 추천 데이터 생성 절차를 나타내는 타임차트이다.
도 7은, HTML의 엘리먼트에 고유ID가 부여되지 않은 예를 나타내는 화면예시도이다.
도 8은, 엘리먼트에 수동으로 고유ID를 부여한 예를 나타내는 화면예시도이다.
도 9는, 에디터에 의해 자동으로 부여된 고유ID를 가지는 예를 나타내는 화면예시도이다.
도 10은, 화면 UI 프로그램의 테스트 실행 엔진에서 사용될 테스트 룰(규칙)의 예를 나타내는 표이다.
도 11은, 화면 UI 프로그램의 입력칸에 대응하는 출력항목이 빠진 경우의 에러메시지의 예를 나타내는 화면예시도이다.
도 12는, 상기 경우의 소스코드의 예를 나타내는 화면예시도이다.
도 13은, 가장 연관성이 높은 항목을 추천하는 화면예시도이다.
도 14는, 입력칸에 대응하는 출력항목을 새로 삽입한 경우의 화면예시도이다.
도 15는, 상기 경우의 소스코드의 예를 나타내는 화면예시도이다.
도 16은, 항목이 새로 삽입된 경우에 테스트를 요청하는 데이터의 예시도이다.
도 17은, 소스 데이터베이스에 저장되어 있던 원본 소스코드의 대응 부분의 소스코드의 예를 나타내는 화면예시도이다.
도 18은, 원본 소스코드의 대응 부분에 새로 삽입된 출력항목을 부가하여 결합한 소스코드의 예를 나타내는 화면예시도이다.
도 19는, 결합된 소스코드에 의해 테스트를 수행한 테스트 결과 및 추천 항목의 데이터의 예시도이다.
도 20은, 테스트 결과 및 추천 데이터가 개발자 단말에 표시된 화면예시도이다.
도 21은, 추천 데이터 중 하나를 선택한 경우의 화면예시도이다.
도 22는, 상기 경우의 소스코드의 예를 나타내는 화면예시도이다.
도 23은, 항목이 변경된 경우에 테스트를 요청하는 데이터의 예시도이다.
도 24는, 원본 소스코드의 대응 부분에 변경된 출력항목을 부가하여 결합한 소스코드의 예를 나타내는 화면예시도이다.
도 25는, 결합된 소스코드에 의해 테스트를 수행한 테스트 결과 데이터의 예시도이다.
이하, 첨부도면을 참조하면서 본 발명에 대해 상세히 설명한다. 다만, 동일구성에 의해 동일기능을 가지는 부재에 대해서는, 도면이 달라지더라도 동일부호를 유지함으로써, 그 상세한 설명을 생략하는 경우가 있다.
또한, 어떤 부재의 전후, 좌우, 상하에 다른 부재가 배치되거나 연결되는 관계는, 그 중간에 별도 부재가 삽입되는 경우를 포함한다. 반대로, 어떤 부재가 다른 부재의 '바로' 전후, 좌우, 상하에 있다고 할 때에는, 중간에 별도 부재가 없는 것을 뜻한다. 그리고 어떤 부분이 다른 구성요소를 '포함'한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 다른 구성요소를 제외하는 것이 아니라, 다른 구성요소를 더 포함할 수 있는 것을 의미한다.
그리고 구성의 명칭을 제1, 제2 등으로 구분한 것은, 그 구성이 동일한 관계로 이를 구분하기 위한 것으로, 반드시 그 순서에 한정되는 것은 아니다. 또한, 명세서에 기재된 '유닛', '수단', '부', '부재' 등의 용어는, 적어도 하나의 기능이나 동작을 하는 포괄적인 구성의 단위를 의미한다. 그리고 명세서에 기재된 단말, 서버 등의 정보처리기기는, 특정한 기능이나 동작이 구현된 하드웨어를 의미하는 하드 와이어링을 기본적으로 의미하지만, 특정한 하드웨어에 한정되도록 해석되어서는 안되고, 일반 범용 하드웨어 상에 그 특정한 기능이나 동작이 구현되도록 하기 위해 구동되는 소프트웨어로 이루어지는 소프트 와이어링을 배제하는 것이 아니다. 즉, 단말 또는 서버는, 어떤 장치가 될 수도 있고, 앱과 같이, 어떤 기기에 설치되는 소프트웨어가 될 수도 있다.
또한, 연결된 정보처리기기 중에서 주로 기능을 제공하는 쪽을 서버, 주로 기능을 이용하는 쪽을 단말이라고 표기하지만, 경우에 따라서 정보처리기기 중에서는 일방 기능을 제공하면서 타방 기능을 이용하는 기기도 존재하고, 병렬처리 등에 있어서는 이러한 기능이 번갈아서 수행되는 경우도 있으며, 데이터의 수수는 API 등에 의해 서버끼리나 단말끼리도 가능하므로, 서버나 단말 등의 용어에 불구하고 정의된 기능에 따라 성격이 정해진다.
그리고 도면에 나타난 각 구성의 크기 및 두께는, 설명의 편의를 위해 임의로 나타내었으므로, 본 발명이 반드시 도면에 도시된 바에 한정되지 않으며, 층 및 영역 등의 여러 부분 및 영역을 명확하게 표현하기 위해 두께 등은 과장하여 확대 또는 축소하여 나타낸 경우가 있다.
본 발명의 기술은, 개인 개발자 단말(PC)의 에이전트(Agent), 개발 소스 관리 서버, 테스트 실행 엔진, 추천 분석 엔진, 소스 데이터베이스(DB), 룰(Rule) 데이터베이스, 및 테스트결과 데이터베이스를 포함하여 이루어진 플랫폼이다.
본 발명의 플랫폼은, 파일 처리, 최소단위 소스코드 처리, 및 추천학습 과정의 3가지 프로세스로 처리될 수 있다:
여기서, 파일단위 처리는 수동모드나 능동모드로 구성 가능하고, 최소단위 소스코드 처리도 마찬가지이다.
본 발명의 특히 강조되는 부분은,
(1) 실시간 처리
(2) 최소단위 소스코드 처리: 빠른 응답 및 추천까지: 네트워크 부하 감소, 최소단위 테스트
(3) 고유ID에 의한 관리
를 들 수 있다.
본 발명의 테스트 및 추천의 대상이 되는 소스코드는, 일반적인 모든 종류의 프로그램 소스코드가 될 수 있지만, 바람직하게는, 프로그래밍의 설계대로 진행되어야 하는 필요성이 상대적으로 높은 UI 개발의 소스코드가 적합하다.
<기본구성 - 방법>
본 발명의 실시간 코드 테스트 방법은, 소스코드 전송단계; 결과 전송단계; 및 결과 표시단계;가 포함되어 이루어짐을 특징으로 한다.
상기 소스코드 전송단계는, 개발자 단말(10)에서 개발 중인 프로그램의 소스코드 중 변경된 파일 또는 변경된 최소단위 소스코드나 관련 데이터가 포함되어 이루어지는 테스트용 데이터가 테스트 실행 엔진(30)에 전송되는 단계이다.
여기서, 최소단위 소스코드는, HTML, XML의 경우 엘리먼트(element), JavaScript, JAVA의 경우 함수(function)로 부르고, 기타 개발언어에서도 버튼, 텍스트박스, 레이블, 스크롤바 등 개별단위로 작동되는 기능을 가지는 컨트롤 등의 구성요소를 말한다. 본 발명에서는 이러한 최소단위 소스코드의 변경에 대해서 테스트를 수행할 수 있다는 점에 큰 특징이 있다.
특히, 최소단위로 전송된 부분과 관련된 테스트만 진행해서 서버의 부담을 줄이고 반응속도를 높이는 효과가 있다는 점이 특장점이 된다.
상기 테스트 단계는, 상기 테스트 실행 엔진(30)에서 미리 정해진 테스트 룰에 따라 상기 테스트용 데이터가 테스트되어 테스트 결과가 생성되는 단계이다.
상기 테스트용 데이터는 전체 프로그램 데이터가 아닌, 최소단위 소스코드에 대응되는 데이터이므로, 네트워크 부하 감소, 빠른 응답이 가능하고, 개발자의 개발행위(코딩)에 실시간으로 대응하여 반응되는 효과가 있다.
상기 결과 전송단계는, 상기 테스트 실행 엔진(30)에서 상기 테스트 결과가 상기 개발자 단말(10)에 전송되는 단계이다.
상기 테스트 결과는 테스트 룰에 부합하지 않는 사항을 지적하는 내용이고, 개발자가 미처 생각하지 못했던 오류를 실시간으로 나타내어 불필요한 오류검색 시간낭비를 줄일 수 있는 효과가 있다.
상기 결과 표시단계;는, 상기 개발자 단말이 상기 테스트 결과를 개발자에게 표시하는 단계이다.
테스트 결과는 예컨대 개발자 단말의 디스플레이에 메시지 형태로 나타날 수 있고, 후술되는 바와 같이 추천 후보가 함께 출력되어도 좋다. 이로써, 개발자는 사전에 명확하게 설정된 기준에 따라 제시되는 테스트 결과를 참조하여, 올바른 제품의 개발을 도모할 수 있게 된다.
<효과>
본 발명에 의하면, 변경된 최소단위 소스코드만 전송되므로 네트워크 자원절감과 처리속도 향상, 서버부담 저하 등의 효과가 있다.
또한, 파일 또는 소스코드의 변화를 감지하여 자동으로 전송하고, 전송받은 즉시 메모리에 로드되어 있던 룰을 적용하여 테스트를 하고, 테스트 결과를 추천 데이터와 함께 반환하는 과정을 모두 실시간으로 처리함으로써, 개발자의 업무 향상에 크게 도움이 될 수 있다.
또한, 본 발명은 플랫폼을 통해 프로그램의 개발을 다수의 개발자들에게 배분하여 개발과정을 진행하는 협업 개발 플랫폼의 일부분에 편입되어, 다수의 개발자들에 대해 각자 개발된 부분에 대해 파일이나 최소단위 소스코드의 변경을 감지하여, 실시간 테스트 및 결과 피드백을 수행하는 구성으로 적용될 수도 있다.
<전송 개시 방식>
여기서, 상기 소스코드 전송단계에 있어서의 전송은, (1) 파일 단위의 변경이나 파일 내의 상기 최소단위 소스코드의 변경에 대한 상기 개발자 단말(10)에 설치된 에이전트(11)의 트리거깅에 의해 개시되거나, (2) 미리 정해진 주기마다 수행되는 상기 테스트 실행 엔진(30)의 폴링에 의해 개시될 수 있다.
개발자 단말(10)의 에이전트(11)는, 파일 단위의 변경이나 파일 내의 상기 최소단위 소스코드의 변경을 감시하다가 그러한 변경이 발생되는 사실(이벤트)을 트리거로 하여 전송 동작을 작동한다. 이로써 개발자의 개발행동을 그대로 따라가면서 누락 없이 데이터의 전송을 수행할 수 있다.
한편, 에이전트(11)의 설치가 곤란한 개발자 단말(10)의 경우에는, 반대로 테스트 실행 엔진(30) 측에서 폴링에 의해 데이터를 가져갈 수 있다. 이 구성에 의하면 부담되는 에이전트를 개발자 단말에 설치할 필요가 없고, 테스트 실행 엔진(30)의 가용 자원의 범위 내에서 무리 없이 데이터를 취득하여 처리할 수 있다.
<테스트용 프로그램의 동적 생성>
그리고, 상기 테스트 단계에 있어서, 상기 변경된 파일은, 소스 데이터베이스(60)에 미리 저장되어 있는 원본 파일과 교체된 후 테스트에 사용되고, 상기 변경된 최소단위 소스코드는, 소스 데이터베이스(60)에 미리 저장되어 있는 원본 소스코드의 대응 부분에 교체 결합되어 개발자 단말(10)의 소스코드와 동일하게 싱크된 후 테스트에 사용되도록 이루어질 수 있다.
소스 데이터베이스(60)는, 원본 소스파일 및 파일 이력을 저장할 수 있고, 최소단위 소스코드를 분석하여 추출 및 변환한 정보를 이력과 함께 저장할 수 있다. 따라서, 최초에는 파일의 전송에 의해 소스 데이터베이스(60)에 파일이 등록될 필요가 있지만, 그 후에는 변경된 최소단위 소스코드의 전송만 이루어지면 이미 저장되어 있는 원본 소스파일의 내용과 변경된 내용을 결합하여 테스트할 수 있게 됨으로써, 네트워크 자원절약 및 속도 개선, 연산부하 개선 등의 효과가 있다.
<추천 기능>
그리고, 상기 테스트 결과에 대응하여 미리 생성된 추천 룰(규칙)에 따라 추천 데이터가 결정되는 추천데이터 결정단계;가 더 구비되고, 상기 결과 전송단계에 있어서, 상기 테스트 실행 엔진(30)으로부터 상기 추천 데이터가 상기 개발자 단말(10)에 전송될 수 있다.
이러한 추천데이터는 미리 생성되어 있다. 추천 데이터의 생성을 위해, 상기 테스트용 데이터 및 테스트 결과가 머신러닝이나 딥러닝에 적합한 형태로 변환되는 형태 변환단계; 변환된 데이터를 이용하여 추천 룰과 추천 데이터를 생성시키도록 상기 머신러닝이나 딥러닝 엔진을 학습시키는 학습단계; 생성된 추천 룰과 추천 데이터를 저장하는 추천정보 저장단계;가 포함되어 이루어질 수 있다. 추천 룰과 추천 데이터는 룰 데이터베이스(70)에 저장되어 있을 수 있다.
<소스 관리>
그리고 도 1 내지 도 3과 같이, 상기 테스트 실행 엔진(30)의 상류에 소스 데이터베이스(60)에 파일단위 저장, 파일의 분석, 추출, 변환 정보의 저장, 테스트 실행 엔진(30)에 대한 테스트 실행 요청, 테스트 결과의 개발자 단말(10)에 대한 전달, 추천 데이터의 전달 중 적어도 하나의 기능을 수행하는 개발 소스 관리 서버(20)가 더 구비될 수 있다. 이 경우에, 상기 소스코드 전송단계에 있어서의 전송은, 미리 정해진 주기마다 수행되는 상기 개발 소스 관리 서버(20)의 폴링에 의해 개시될 수 있다.
<중간 서버>
그리고 도 2 및 도 3과 같이, 상기 개발자 단말(10)의 하류에 데이터를 임시 저장하는 중간 저장 서버(15)가 더 구비될 수 있다. 이 경우에, 상기 소스코드 전송단계에 있어서의 전송은, 파일 단위의 변경이나 파일 내의 상기 최소단위 소스코드의 변경에 대한 상기 중간 저장 서버(15)에 설치된 에이전트(16)의 트리거깅에 의해 개시될 수 있다.
<고유ID>
그리고 상기 최소단위 소스코드에 고유ID가 부여되어 있는데 검사하고, 고유ID가 부여되어 있지 않은 경우에는 유일성을 가지는 고유ID를 부여할 수 있다.
이러한 고유ID가 없는 경우에는, 몇 번째 아이템의 몇 번째 줄 등과 같이 주변 아이템과의 상대적 관계를 이용하여 객체를 특정하게 되므로, 불편함은 물론 중간에 다른 객체가 추가, 변경, 삭제되면 이러한 상대적 관계가 틀려지므로 부정확할 수 있다. 본 발명의 이러한 고유ID는, 유일성을 가지므로, 테스트의 의뢰, 및 결과의 리턴 시에 유용하게 객체를 특정할 수 있다.
<구체적 구성예>
이하, 도 1 내지 도 3을 참조하여, 각 구성요소에 대해 구성 및 역할을 설명한다.
[1] 개발자 단말(개인 PC)(10) 에이전트(Agent)(11)
파일 단위의 생성/저장/삭제 등의 변경을 감지해서, 파일과 함께 변경사항을 개발 소스 관리 서버(20)에 전달한다.
현재 개발자가 에디터에서 작업 중인 소스의 최소단위의 코드(HTML, XML의 경우 엘리먼트(element), JavaScript, JAVA의 경우 함수(function))들이 완성되거나 변경/삭제되는지를 감시하고, 완성/변경/삭제 시 최소단위 소스코드와 함께 변경사항을 개발 소스 관리 서버(20)에 전달한다.
현재 개발자가 에디터에서 작업 중인 소스의 엘리먼트별 고유ID를 부여한다.
개발 소스 관리 서버(20)로부터 전달받은 실시간 테스트 결과와 추천 사항을 실시간으로 에디터 및 OS를 통해 알려준다.
[2] 개발 소스 관리 서버(20)
(1) 파일 단위 처리, 수동모드(실시간 테스트 개념도. 도 1, 도 2)
개발자 단말(10)의 에이전트(11)(혹은 중간 저장 서버(15)의 에이전트(16))로부터 파일을 전달받아 소스 데이터베이스(60)에 저장한다.
전달받은 파일을 분석/추출/변환해서 정보를 만들고, 그 정보를 소스 데이터베이스(60)에 저장한다.
상기 분석/추출/변환한 정보와 함께 테스트 실행 엔진(30)에 실시간 테스트를 요청한다.
테스트 실행 엔진(30)으로부터의 테스트 결과를 개발자 단말(10)의 에이전트(11)(중간 저장 서버(15)의 에이전트(16)에는 보내지 않는다)로 전달한다.
(2) 파일 단위 처리, 능동모드(실시간 테스트 개념도. 도 3)
개발자 단말(10)의 에이전트(11)나 중간 저장 서버(15)의 에이전트(16)를 설치할 수 없거나 작동할 수 없는 상황에서 주기적으로 소스 관리 서버(20)(VCS, Version Control Server)에 접속해 파일들을 가져온다.
이전과 비교해 변경된 파일을 가려 소스 데이터베이스(60)에 저장한다.
변경된 파일을 분석/추출/변환해서 정보를 만들고, 그 정보를 소스 데이터베이스(60)에 저장한다.
상기 분석/추출/변환한 정보와 함께 테스트 실행 엔진(30)에 실시간 테스트를 요청한다.
(3) 최소단위 소스코드 처리(실시간 테스트 개념도. 도 1)
개발자 단말(10)의 에이전트(11)로부터 최소단위 소스코드를 전달받아, 기존의 코드와 통합해서, 개발 중인 소스와 동일하게 만들어, 소스 데이터베이스(60)에 저장한다.
최소단위 소스코드를 분석/추출/변환하여 정보를 생성하고, 전단계에서 이미 분석/추출/변환했던 정보에 추가하여, 테스트 실행 엔진(30)에 실시간 테스트를 요청한다.
테스트 실행 엔진(30)으로부터의 테스트 결과와 추천 사항을 개발자 단말(10)의 에이전트(11)로 전달한다.
[3] 테스트 실행 엔진(30)
테스트 룰(규칙)과 추천 룰(규칙)을 메모리 올려 놓고 있다.
테스트 요청이 있으면 실시간으로 테스트를 수행하고, 추천 규칙에 의해 추천사항을 생성한다.
테스트 결과와 추천사항을 개발 소스 관리 서버(20)를 통해 개발자 단말(10)의 에이전트(11)에 전달되도록 한다.
테스트 결과를 테스트 결과 데이터베이스(80)에 저장한다.
[4] 테스트 서비스(40)
테스트 결과를 소스단위, 최소단위 소스코드 등으로 과거 이력과 함께 조회할 수 있게 한다.
테스트 통계를 조회할 수 있다.
규칙을 추가/삭제/수정하는 등 관리할 수 있다.
동료나 팀장 혹은 품질관리자들에 의한 소스코드 검수 결과를 입력할 수 있다.
[5] 추천 분석 엔진(50)
원본 소스와 분석/추출/변환된 정보, 그리고 검수 결과를 소스 데이터베이스(60)에서 가져온다.
원본 소스와 분석/추출/변환된 정보를 머신러닝/딥러닝에 적합한 형태로 변환한다.
준비된 데이터를 이용해서 머신러닝/딥러닝을 수행하고, 추천 룰(Rule)과 그에 따른 추천 데이터를 생성한다.
추천 룰(Rule)과 추천 데이터를 룰 데이터베이스(70)에 등록한다.
[6] 소스 데이터베이스(60)
소스 원본을 파일단위로 이력과 함께 저장한다.
최소단위 소스코드를 분석/추출/변환한 정보를 이력과 함께 저장한다.
[7] 룰 데이터베이스(70)
테스트에 적용할 규칙을 저장하고 있다.
추천 규칙과 추천 데이터를 저장하고 있다.
[8] 테스트 결과 데이터베이스(80)
테스트 결과를 이력과 함께 저장하고 있다.
<프로세스 설명>
이하, 타임차트를 이용하여 실시간 테스트 및 추천, 그리고 추천을 위한 학습의 프로세스를 설명한다.
[1] 소스코드의 최소단위별 실시간 테스트 및 추천의 기본 절차(실시간 테스트 및 추천. 도 4)는
1. 서버가 실행되면 테스트 실행 엔진(30)이 정의된 규칙과 학습된 추천 모델들을 요청한다
2. 룰 데이터베이스(70)는 해당 프로젝트와 관련된 상기 요청 규칙과 모델들을 반환한다.
3. 테스트 실행 엔진(30)은 테스트 룰(규칙)과 추천 모델(추천 룰과 추천 데이터)을 메모리에 로딩해 놓아, 실시간 처리가 가능하도록 한다.
4. 한편, 개발자 단말(PC)(10)에 설치된 에이전트(11)는, 개발자가 소스를 코딩하는 동안 최소단위의 코드(HTML, XML: 엘리먼트(element), JavaScript, JAVA: 함수(function))들이 완성되거나 변경/삭제되는지를 감시한다.
5. 엘리먼트의 경우, 고유번호가 없는 경우에는 별도의 고유ID(예시에서는 _id_)를 부여하여, 향후 테스트 및 결과 반환 등의 고유ID로 활용한다.
6. 상기 4에서 에이전트(11)는 소스코드의 최소단위 완성/변경/삭제가 일어난 것을 감지해서, 소스코드 최소단위와 위치를 개발 소스 관리 서버(20)에 전송한다. 이때, 고유ID는 소스에 포함되어 있어 별도 전송하지 않는다.
7~8. 개발 소스 관리 서버(20)는, 메모리에 현재 소스가 없다면 소스 데이터베이스(60)에 기존(원본) 소스를 요청하여 메모리에 로딩한다.
9. 개발 소스 관리 서버(20)는, 변경된 최소단위 소스코드와 기존의 소스를 통합하고, 변경된 최소단위 소스코드에 대한 분석과 관련있는 소스들의 영향받는 부분이 있는지를 분석하여, 규칙 준수 여부를 판단할 수 있는데 필요한 정보들을 추출/변환한다.
10. 개발 소스 관리 서버(20)는, 상기 9에서 추출/변환한 정보와 함께 테스트 실행 엔진(30)에 변경된 최소단위 소스코드가 규칙에 부합되는지 테스트하도록 실행을 요청한다.
11. 개발 소스 관리 서버(20)는, 상기 9에서 통합한 새로운 소스와 추출/변환한 정보를 소스 데이터베이스(60)에 전송해서 저장한다.
12. 테스트 실행 엔진(30)은, 상기 3에서 로딩한 테스트 룰(규칙)에 의해 변경된 최소단위 소스코드가 규칙에 부합되는지 여부를 테스트하고 결과를 만든다.
13. 테스트 실행 엔진(30)은 상기 3에서 로딩한 추천 모델(추천 룰과 추천 데이터)에 의해 변경된 최소단위 소스코드와 관련있는 추천 사항이 있는지 확인한다.
14. 테스트 실행 엔진(30)은, 상기 12, 13에서 생성한 테스트 결과와 추천 사항을 개발 소스 관리 서버(20)에 전달한다.
15. 테스트 실행 엔진(30)은, 상기 12, 13에서 생성한 테스트 결과와 추천 사항을 테스트 결과 데이터베이스(80)에 저장한다.
16. 개발 소스 관리 서버(20)는, 최소단위 소스코드 안에 포함되어 있는 고유ID와 함께 상기 14에서 전달받은 테스트 결과와 추천 사항을 json 형태로 변경해 개발자 단말(10) 에이전트(11)에 전달한다.
17. 개발자 단말(10) 에이전트(11)는, 상기 16에서 전달받은 테스트 결과와 추천 사항을 고유ID와 연결하여 개발자의 에디터에서 실시간으로 보여주고, 감시 활동을 지속한다.
[2] 소스코드의 최소단위가 몇 개 묶인 상태이거나 파일단위의 복사 등에 의한 경우(문서 단위 실시간 테스트. 도 5)에도 상기 기본 절차(아래 기본절차)와 유사하게 작동하나, 파일단위로 소스코드의 최소단위 몇 개를 묶어 처리한다는 점에서 몇 가지 차이가 있다
1~3. 기본절차 1~3과 동일
4. 개발자 단말(10) 에이전트(11)는 파일을 복사하거나 소스코드의 최소단위 몇 개를 묶어 복사하는 경우(이하, 파일 수준 변경)를 감지해서, 고유ID가 존재하지 않는 최소단위 소스코드는 없는지, 고유ID가 중복되지 않는지를 확인해서, 고유ID가 고유하게 존재하도록 부여한다.
5~6. 개발자 단말(10) 에이전트(11)는 파일 수준 변경을 감지해서, 소스 전체를 개발 소스 관리 서버(20)로 전송한다.
7. 개발 소스 관리 서버(20)는 전송받은 소스를 소스 데이터베이스(60)에 저장하고 이력관리한다.
8. 개발 소스 관리 서버(20)는 소스를 분석하여 규칙 준수 여부를 판단할 수 있는데 필요한 정보들을 추출/변환한다.
9. 개발 소스 관리 서버(20)는 상기 8에서 추출/변환한 정보와 함께 테스트 실행 엔진(30)에 소스가 규칙에 부합되는지 테스트하도록 실행을 요청한다.
10. 개발 소스 관리 서버(20)는 상기 8에서 추출/변환한 정보를 소스 데이터베이스(60)에 저장하고 이력관리한다.
11. 테스트 실행 엔진(30)은 상기 3에서 로딩한 테스트 룰(규칙)에 의해 전송된 소스코드가 규칙에 부합되는지 여부를 테스트하고 결과를 만든다.
12. 테스트 실행 엔진(30)은 상기 11에서 생성한 테스트 결과를 개발 소스 관리 서버(20)에 전달한다.
13. 테스트 실행 엔진(30)은 상기 11에서 생성한 테스트 결과를 테스트 결과 데이터베이스(80)에 저장한다.
14. 개발 소스 관리 서버(20)는 고유ID들과 함께 상기 12에서 전달받은 테스트 결과를 json 형태로 변경해 개발자 단말(10) 에이전트(11)에 전달한다.
15. 개발자 단말(10) 에이전트(11)는 상기 14에서 전달받은 테스트 결과를 고유ID와 연결하여 개발자의 에디터에서 실시간으로 보여주고, 감시 활동을 지속한다.
[3] 추천을 위한 학습과정(추천을 위한 학습과정. 도 6)은 데이터를 모으는 과정에서부터 시작된다.
1. 개발자들이 개발하는 과정에서 원본 소스와 분석/추출/변환된 정보가 소스 데이터베이스(60)에 저장된다.
2. 한편, 개발완료된 소스코드들은 동료나 팀장 혹은 품질관리자들에 의해 검수 과정을 거치게 되는데, 검수 완료가 되었다는 사실을 테스트 서비스(40)를 통해 소스 데이터베이스(60)에 저장하게 된다.
3. 추천 분석 엔진(50)은, 상기 1~2 과정에서 입력된 원본 소스와 분석/추출/변환된 정보, 그리고 검수 결과를 소스 데이터베이스(60)에서 가져온다.
4. 추천 분석 엔진(50)은, 상기 3에서 가져온 원본 소스와 분석/추출/변환된 정보를 머신러닝/딥러닝에 적합한 형태로 다시 변환하는 과정을 거친다. 이때, 불필요한 요소들을 제거하고 동일한 구조로 변환한다. 검수 결과는 원본 소스와 분석/추출/변환된 정보와 매칭시켜 '0' 또는 '1'의 값을 갖도록 한다.
5~7. 추천 분석 엔진(50)은, 상기 4에서 준비한 데이터를 이용해서 머신러닝/딥러닝을 수행하고, 추천 룰(Rule)과 그에 따른 추천 데이터를 생성한다.
8. 추천 분석 엔진(50)은, 상기 4~7을 통해 생성한 추천 룰(Rule)과 추천 데이터를 룰 데이터베이스(70)에 등록해서, 실시간 추천에 활용될 수 있게 한다.
<예시에 의한 설명>
[1] 고유ID 부여
고유ID를 엘리먼트마다 부여하면 개발 소스 관리 서버(20)에서 소스를 분석/추출/변환하여 저장하고 테스트 결과를 관리하고 개발자 단말(10) 에이전트(11)에 돌려 줄 때 정확하고 편리하다.
HTML 문서를 생성했을 때에는 고유ID가 존재하지 않지만, 개발자 단말(10) 에이전트(11)가 문서를 분석해서 엘리먼트에 고유ID(예제에서는 '_id_')를 부여한다.(실시간 테스트 개념도. 도 7, 8)
에디터에서 자동으로 고유ID를 생성하는 경우, 부여된 값(예제에서는 'std:sid')(도 9)을 그대로 사용해도 된다. 다만, 고유ID가 서버 고유하게 존재하는지는 확인하고, 고유하지 않으면 고유하게 만들고, 값이 누락된 엘리먼트는 추가한다.
[2] 최소단위 소스코드 실시간 테스트 예제(실시간 테스트 개념도. 도 10~도25)
도 10: 테스트 엔진 실행 규칙(예시)
output 엘리먼트는 디폴트로 생성된 value값 'Output'이면 안되고(CHK001), Null도 안되는 상태(CHK002)다.
input 엘리먼트는 주변에 설명하는 output 엘리먼트가 있어야 한다(CHK003).
등등으로 이루어져 있다
도 11: input 엘리먼트를 만들어져 있는데 규칙(예에서는 CHK003)에 의해 설명하는 output 엘리먼트가 없는 것을 개발자 단말(10) 에이전트(11)가 알려준다.
도 12: 소스를 확인하면 '이름', '급여' output만 존재하는 것을 확인할 수 있다.
도 13: 개발자는 output 엘리먼트를 생성하려고 한다.
도 14: '이름', '급여' output 사이에 'Output'이라는 output 엘리먼트가 생성되었다.
도 15: 소스를 확인하면 '이름', '급여' output 사이에 value="Output"인 output 엘리먼트가 추가된 것을 확인할 수 있다.
도 16: 개발자 단말(10) 에이전트(11)는 value='Output'인 output 엘리먼트가 추가된 것을 실시간으로 감지한다.
해당 엘리먼트의 위치값인 xpath와 새로 생성된 것임을 알리는 'INSERT', 그리고 고유ID(_id_)가 포함된 최소단위 소스코드(elements)를 개발 소스 관리 서버(20)에 전송한다
도 17: 개발 소스 관리 서버(20)가 가지고 있는(혹은 소스 데이터베이스(60)에서 가져온) 통합 이전의 소스를 확인할 수 있다.
도 18: 개발 소스 관리 서버(20)는 개발자 단말(10) 에이전트(11)가 전송해 온 정보를 바탕으로 개발자가 작업 중인 소스와 동일하게 만든다.
실시간 테스트 요청하고 받는 과정은 상기 프로세스(도 4, 5)를 참고한다.
도 19: 개발 소스 관리 서버(20)는 테스트 실행 엔진(30)이 보내온 정보를 json 형식으로 바꿔 개발자 단말(10) 에이전트(11)에 전송한다.
테스트 실행 엔진(30)이 보내온 정보에는 해당 엘리먼트의 테스트 규칙들에 의한 결과와 보여줄 메시지, 그리고 추천사항이 같이 들어 있다.
도 20: 개발자 단말(10) 에이전트(11)는 전송받은 메시지와 선택할 수 있는 추천 사항을 확률과 같이 보여줘서, 개발자가 추천 사항 중 선택해서 입력할 수 있도록 한다.
도 21: 개발자가 '부서' 항목을 선택하거나 직접 입력하여, 결과가 바뀌었다.
도 22: 소스를 확인하면 value="부서"로 바뀐 것을 확인할 수 있다.
도 23: 개발자 단말(10) 에이전트(11)는 value="부서'로 output 엘리먼트가 수정된 것을 실시간으로 감지한다.
해당 엘리먼트의 위치값인 xpath와 수정된 것임을 알리는 'UPDATE', 그리고 고유ID(_id_)가 포함된 최소단위 소스코드(elements)를 개발 소스 관리 서버(20)에 전송한다.
도 24: 개발 소스 관리 서버(20)는 개발자 단말(10) 에이전트(11)가 전송해 온 정보를 바탕으로 개발자가 작업 중인 소스와 동일하게 만들고, 실시간 테스트를 요청해서 결과를 받는다.
도 25: 개발 소스 관리 서버(20)는 테스트 실행 엔진(30)이 보내온 정보를 json 형식으로 바꿔 개발자 단말(10) 에이전트(11)에 전송한다.
더 이상 규칙이 위반된 사항이 없음을 확인할 수 있다.
<장치>
본 발명의 실시간 코드 테스트 장치는, 소스코드 전송모듈; 테스트 모듈; 및 결과 전송모듈;이 포함되어 이루어짐을 특징으로 한다.
상기 소스코드 전송모듈은, 개발자 단말(10)에서 개발 중인 프로그램의 소스코드 중 변경된 파일 또는 변경된 최소단위 소스코드나 관련 데이터가 포함되어 이루어지는 테스트용 데이터가 테스트 실행 엔진(30)에 전송되는 모듈이다.
상기 테스트 모듈은, 상기 테스트 실행 엔진(30)에서 미리 정해진 테스트 룰에 따라 상기 테스트용 데이터가 테스트되어 테스트 결과가 생성되는 모듈이다.
상기 결과 전송모듈은, 상기 테스트 실행 엔진(30)에서 상기 테스트 결과가 상기 개발자 단말(10)에 전송되는 모듈이다.
<프로그램>
본 발명의 프로그램은, 정보처리기기에 청구항 1에 기재된 방법의 각 단계를 실행시키기 위한 프로그램이다. 상기 프로그램은, 정보처리기기로 읽을 수 있는 저장매체에 기록되어 있을 수 있다.
이상 본 발명의 바람직한 실시예에 대해 설명했지만, 본 발명은, 상기 개시되는 실시예들에 한정되는 것이 아니라, 특허청구범위와 발명의 상세한 설명 및 첨부 도면의 범위 안에서 서로 다른 다양한 형태로 변형하여 구현 실시될 수 있고, 균등한 타 실시예가 가능하며, 이 또한 본 발명의 범위에 속하는 것은 당해 분야에서 통상적 지식을 가진 자에게 당연하며, 단지 실시예들은, 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은, 청구항의 범주에 의해 정의될 뿐이다.
본 발명은, 실시간 코드 테스트 방법, 장치 및 프로그램의 산업에 이용될 수 있다.
10: 개발자 단말
11: 에이전트
15: 중간 저장 서버
16: 에이전트
20: 개발 소스 관리 서버
30: 테스트 실행 엔진
40: 테스트 서비스 서버
50: 추천 분석 엔진
60: 소스 데이터베이스
70: 룰 데이터베이스
80: 테스트 결과 데이터베이스
11: 에이전트
15: 중간 저장 서버
16: 에이전트
20: 개발 소스 관리 서버
30: 테스트 실행 엔진
40: 테스트 서비스 서버
50: 추천 분석 엔진
60: 소스 데이터베이스
70: 룰 데이터베이스
80: 테스트 결과 데이터베이스
Claims (12)
- 개발자 단말에서 개발 중인 프로그램의 소스코드 중 변경된 파일 또는 변경된 최소단위 소스코드나 관련 데이터가 포함되어 이루어지는 테스트용 데이터가 테스트 실행 엔진에 전송되는 소스코드 전송단계;
상기 테스트 실행 엔진에서 미리 정해진 테스트 룰에 따라 상기 테스트용 데이터가 테스트되어 테스트 결과가 생성되는 테스트 단계;
상기 테스트 실행 엔진에서 상기 테스트 결과가 상기 개발자 단말에 전송되는 결과 전송단계; 및
상기 개발자 단말이 상기 테스트 결과를 개발자에게 표시하는 결과 표시단계;
가 포함되어 이루어짐을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 1에 있어서,
상기 소스코드 전송단계에 있어서의 전송은,
(1) 파일 단위의 변경이나 파일 내의 상기 최소단위 소스코드의 변경에 대한 상기 개발자 단말에 설치된 에이전트의 트리거깅에 의해 개시되거나,
(2) 미리 정해진 주기마다 수행되는 상기 테스트 실행 엔진의 폴링에 의해 개시됨
을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 1에 있어서,
상기 테스트 단계에 있어서,
상기 변경된 파일은, 소스 데이터베이스에 미리 저장되어 있는 원본 파일과 교체된 후 테스트에 사용되고,
상기 변경된 최소단위 소스코드는, 소스 데이터베이스에 미리 저장되어 있는 원본 소스코드의 대응 부분에 교체 결합되어 개발자 단말의 소스코드와 동일하게 싱크된 후 테스트에 사용되도록 이루어짐
을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 1에 있어서,
상기 테스트 결과에 대응하여 미리 생성된 추천 룰에 따라 추천 데이터가 결정되는 추천데이터 결정단계;가 더 구비되고,
상기 결과 전송단계에 있어서, 상기 테스트 실행 엔진으로부터 상기 추천 데이터가 상기 개발자 단말에 전송됨
을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 4에 있어서,
상기 테스트용 데이터 및 테스트 결과가 머신러닝이나 딥러닝에 적합한 형태로 변환되는 형태 변환단계;
변환된 데이터를 이용하여 추천 룰과 추천 데이터를 생성시키도록 상기 머신러닝이나 딥러닝 엔진을 학습시키는 학습단계; 및
생성된 추천 룰과 추천 데이터를 저장하는 추천정보 저장단계;
가 포함되어 이루어짐을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 1에 있어서,
상기 테스트 실행 엔진의 상류에 소스 데이터베이스에 파일단위 저장, 파일의 분석, 추출, 변환 정보의 저장, 테스트 실행 엔진에 대한 테스트 실행 요청, 테스트 결과의 개발자 단말에 대한 전달, 추천 데이터의 전달 중 적어도 하나의 기능을 수행하는 개발 소스 관리 서버가 더 구비됨
을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 6에 있어서,
상기 소스코드 전송단계에 있어서의 전송은, 미리 정해진 주기마다 수행되는 상기 개발 소스 관리 서버의 폴링에 의해 개시됨
을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 1에 있어서,
상기 개발자 단말의 하류에 데이터를 임시 저장하는 중간 저장 서버가 더 구비됨
을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 8에 있어서,
상기 소스코드 전송단계에 있어서의 전송은, 파일 단위의 변경이나 파일 내의 상기 최소단위 소스코드의 변경에 대한 상기 중간 저장 서버에 설치된 에이전트의 트리거깅에 의해 개시됨
을 특징으로 하는, 실시간 코드 테스트 방법. - 청구항 1에 있어서,
상기 최소단위 소스코드에 고유ID가 부여되어 있는데 검사하고, 고유ID가 부여되어 있지 않은 경우에는 유일성을 가지는 고유ID를 부여함
을 특징으로 하는, 실시간 코드 테스트 방법. - 개발자 단말에서 개발 중인 프로그램의 소스코드 중 변경된 파일 또는 변경된 최소단위 소스코드나 관련 데이터가 포함되어 이루어지는 테스트용 데이터가 테스트 실행 엔진에 전송되는 소스코드 전송모듈;
상기 테스트 실행 엔진에서 미리 정해진 테스트 룰에 따라 상기 테스트용 데이터가 테스트되어 테스트 결과가 생성되는 테스트 모듈; 및
상기 테스트 실행 엔진에서 상기 테스트 결과가 상기 개발자 단말에 전송되는 결과 전송모듈;
이 포함되어 이루어짐을 특징으로 하는, 실시간 코드 테스트 장치. - 정보처리기기에 청구항 1에 기재된 방법의 각 단계를 실행시키기 위한 프로그램을 기록한, 정보처리기기로 읽을 수 있는 저장매체에 기록된 프로그램.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020210177535 | 2021-12-13 | ||
KR20210177535 | 2021-12-13 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230090264A true KR20230090264A (ko) | 2023-06-21 |
Family
ID=86989690
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020220173582A KR20230090264A (ko) | 2021-12-13 | 2022-12-13 | 실시간 코드 테스트 방법, 장치 및 프로그램 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20230090264A (ko) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110097618A (ko) | 2011-01-18 | 2011-08-31 | 방인성 | 클라이언트의 가상 개발 환경을 이용하여 프로그램의 개발 계약 및 개발을 중개하는 원격 프로그램 개발 중개 시스템 및 원격 프로그램 개발 중개 방법 |
-
2022
- 2022-12-13 KR KR1020220173582A patent/KR20230090264A/ko unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20110097618A (ko) | 2011-01-18 | 2011-08-31 | 방인성 | 클라이언트의 가상 개발 환경을 이용하여 프로그램의 개발 계약 및 개발을 중개하는 원격 프로그램 개발 중개 시스템 및 원격 프로그램 개발 중개 방법 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11023358B2 (en) | Review process for evaluating changes to target code for a software-based product | |
US11487539B2 (en) | Systems and methods for automating and monitoring software development operations | |
CN108845940B (zh) | 一种企业级信息系统自动化功能测试方法和系统 | |
CN108959059B (zh) | 一种测试方法以及测试平台 | |
CN109976801B (zh) | 一种代码开发方法、系统及计算机可读存储介质 | |
CN110837356B (zh) | 一种数据处理方法和装置 | |
CN109977012B (zh) | 系统的联调测试方法、装置、设备及计算机可读存储介质 | |
CN107145438A (zh) | 代码测试方法、代码测试装置及代码测试系统 | |
CN112685312B (zh) | 一种未覆盖代码的测试用例推荐方法及装置 | |
CN109299124B (zh) | 用于更新模型的方法和装置 | |
CN111966665A (zh) | 数据迁移测试方法及装置 | |
CN111143228A (zh) | 基于决策表法的测试代码生成方法及装置 | |
CN111523676B (zh) | 辅助机器学习模型上线的方法及装置 | |
JP5989194B1 (ja) | テスト管理システムおよびプログラム | |
CN112988576B (zh) | 一种软件项目研发进程确定方法及装置 | |
Fagerström et al. | Verdict machinery: On the need to automatically make sense of test results | |
CN111506305A (zh) | 工具包生成方法、装置、计算机设备及可读存储介质 | |
CN116737535A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
KR20230090264A (ko) | 실시간 코드 테스트 방법, 장치 및 프로그램 | |
CN111159988B (zh) | 一种模型处理方法、装置、计算机设备及存储介质 | |
CN113282504A (zh) | 一种增量代码覆盖率检测方法及业务开发方法、装置 | |
CN107784448A (zh) | 一种瀑布模型下的任务管理方法及系统 | |
US12008362B2 (en) | Software development environment | |
US12131153B2 (en) | Systems and methods for automating and monitoring software development operations | |
CN113127036B (zh) | 软件开发系统、代码的持续集成方法、装置和介质 |