KR102620097B1 - 코드 테스트 지원 방법 및 전자 장치 - Google Patents

코드 테스트 지원 방법 및 전자 장치 Download PDF

Info

Publication number
KR102620097B1
KR102620097B1 KR1020230087007A KR20230087007A KR102620097B1 KR 102620097 B1 KR102620097 B1 KR 102620097B1 KR 1020230087007 A KR1020230087007 A KR 1020230087007A KR 20230087007 A KR20230087007 A KR 20230087007A KR 102620097 B1 KR102620097 B1 KR 102620097B1
Authority
KR
South Korea
Prior art keywords
code
test
target code
reference image
image
Prior art date
Application number
KR1020230087007A
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 KR1020230087007A priority Critical patent/KR102620097B1/ko
Application granted granted Critical
Publication of KR102620097B1 publication Critical patent/KR102620097B1/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/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/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Tests Of Electronic Circuits (AREA)

Abstract

코드 테스트를 지원하는 방법 및 전자 장치가 개시된다. 방법은 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트(pull request)를 확인하는 단계, 코드 테스트에 대한 테스트 케이스 정보를 확인하는 단계, 테스트 케이스 정보에 대응하는 기준 이미지를 확인하는 단계, 대상 코드에 대한 풀 리퀘스트(pull request)를 확인하는 단계, 풀 리퀘스트에 대응하여 테스트 케이스 정보에 따라 대상 코드에 기초하여 생성된 테스트 이미지를 확인하는 단계, 기준 이미지 및 테스트 이미지의 비교 결과를 확인하는 단계, 및 비교 결과를 기반으로 대상 코드를 기준 코드에 병합(merge)할지 여부에 대한 제어 정보를 생성하는 단계를 포함한다.

Description

코드 테스트 지원 방법 및 전자 장치{METHOD AND APPARATUS FOR PROVIDING CODE TEST}
본 명세서의 실시 예는 코드 테스트 지원 방법 및 전자 장치에 관한 것이다. 보다 구체적으로 본 명세서의 실시 예는 코드 테스트에 기초하여 생성된 이미지를 기준 이미지와 비교하여 코드 테스트를 지원하는 방법 및 장치에 관한 것이다.
애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 CI/CD(continuous integration/continuous delivery) 작업 환경 하에서, 복수의 개발자들에 의해 다양한 종류의 코드 테스트가 필요한 상황이 증가하고 있다. 서비스 버전의 업그레이드 방향이 다양화되며 테스트 케이스의 설정에 따라 해당 테스트 케이스의 통과 기준을 만족하는지 여부를 검증하기 위한 방법의 개선이 필요해지고 있으며 복수의 개발자들이 코드를 수정하는 환경에서 테스트 관련 데이터를 효과적으로 생산성 있게 관리할 방법에 대한 필요성이 더욱 증가하고 있다.
관련하여 KR102156931B1 건 및 KR101691929 건 등의 선행문헌들을 참조할 수 있다.
본 개시는 상술한 문제점을 해결하기 위해 제안된 것으로, 코드 테스트 지원 방법 및 전자 장치를 제공하는데 있다.
보다 구체적으로 본 개시는 테스트 케이스 정보를 확인하고, 이에 대응하는 기준 이미지를 확인한 뒤 테스트 대상 코드에 기초하여 생성된 테스트 이미지와 기준 이미지를 비교하여 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 장치를 제공하는 것을 목적으로 한다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
상술한 과제를 달성하기 위한 기술적 수단으로서, 본 개시의 제1측면에 따른 전자 장치에서의 코드 테스트 지원 방법은, 상기 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트(pull request)를 확인하는 단계; 상기 코드 테스트에 대한 테스트 케이스 정보를 확인하는 단계; 상기 테스트 케이스 정보에 대응하는 기준 이미지를 확인하는 단계; 상기 풀 리퀘스트에 대응하여 상기 테스트 케이스 정보에 따라 상기 대상 코드에 기초하여 생성된 테스트 이미지를 확인하는 단계; 상기 기준 이미지 및 상기 테스트 이미지의 비교 결과를 확인하는 단계; 및 상기 비교 결과를 기반으로 상기 대상 코드를 기준 코드에 병합(merge)할지 여부에 대한 제어 정보를 생성하는 단계를 포함할 수 있다.
상기 기준 이미지는, 상기 테스트 케이스 정보에 따라 상기 대상 코드에 기초하여 생성되는 기본 기준 이미지 및 상기 테스트 케이스 정보에 따라 임시 코드에 기초하여 생성되는 임시 기준 이미지를 포함할 수 있다.
전자 장치에서의 코드 테스트 지원 방법은, 상기 대상 코드가 병합된 새로운 기준 코드에 기초하여 생성되는 기본 기준 이미지를 생성하는 단계를 더 포함할 수 있다.
상기 테스트 이미지를 확인하는 단계는, 테스트 서버를 통해 상기 대상 코드를 기준 코드에 병합한 기준 코드에 기초하여 상기 테스트 이미지를 생성(generate)하고, 상기 테스트 이미지를 확인하는 단계를 포함할 수 있다.
상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는, 상기 비교 결과가 동일한 경우, 상기 풀 리퀘스트를 통과시키는 단계 및 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함할 수 있다.
상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는, 상기 비교 결과가 동일하지 않은 경우, 상기 대상 코드에 대한 확인을 작업자 단말에 요청하는 제어 신호를 생성하는 단계 및 상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함할 수 있다.
상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는, 상기 요청에 관한 응답을 수신하는 단계; 상기 기준 이미지와 상기 테스트 이미지 간의 차이가 임계 값 미만인 경우, 상기 풀 리퀘스트를 통과시키는 단계 및 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함할 수 있다.
상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는, 상기 비교 결과가 동일하지 않은 경우, 상기 대상 코드에 대한 확인을 작업자 단말에 요청하는 제어 신호를 생성하는 단계 및 상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함할 수 있다.
상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는, 상기 요청에 관한 응답을 수신하는 단계; 상기 기준 이미지와 상기 테스트 이미지 간의 차이가 임계 값 미만인 경우, 상기 풀 리퀘스트를 통과시키는 단계 및 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함할 수 있다.
상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는, 상기 요청에 관한 응답을 수신하는 단계; 상기 기준 이미지와 상기 생성된 테스트 이미지 간의 차이가 임계 값 이상인 경우, 상기 풀 리퀘스트를 블록(block)시키는 단계; 작업자 단말에 테스트 코드의 수정 요청에 관한 제어 신호를 송신하는 단계; 상기 수정 요청에 대한 응답에 기반하여, 상기 기준 이미지와 수정된 테스트 이미지 간의 차이가 임계 값 미만인 경우 수정된 풀 리퀘스트를 통과시키는 단계 및 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함할 수 있다.
전자 장치에서의 코드 테스트 지원 방법은, 상기 제어 정보에 기초하여 상기 대상 코드를 병합하는 단계 및 상기 기준 이미지에 임시 기준 이미지가 포함된 경우, 상기 기준 이미지에 포함된 상기 임시 기준 이미지를 폐기(drop)하는 단계를 더 포함할 수 있다.
상기 비교 결과를 확인하는 단계는, 상기 기준 이미지에 임시 기준 이미지가 포함되지 않은 경우, 상기 대상 코드에 기초하여 생성되는 기본 기준 이미지와 상기 대상 코드에 기초하여 생성된 테스트 이미지의 비교 결과를 확인하는 단계를 포함할 수 있다.
본 개시의 제2 측면에 따른 코드 테스트를 지원하는 전자 장치는, 트랜시버; 하나 이상의 명령어를 저장하는 스토리지; 및 상기 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트(pull request)를 확인하고, 상기 코드 테스트에 대한 테스트 케이스 정보를 확인하고, 상기 테스트 케이스 정보에 대응하는 기준 이미지를 확인하고, 상기 풀 리퀘스트에 대응하여 상기 테스트 케이스 정보에 따라 상기 대상 코드에 기초하여 생성된 테스트 이미지를 확인하고, 상기 기준 이미지 및 상기 테스트 이미지의 비교 결과를 확인하고, 상기 비교 결과를 기반으로 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 프로세서를 포함할 수 있다.
본 개시의 제3측면에 따른 기록 매체는 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비임시적 기록 매체일 수 있다.
본 명세서의 일 실시 예에 따르면, 전자 장치는 코드 테스트 지원 시에 테스트 케이스 정보를 확인하고, 이에 대응하는 기준 이미지를 확인한 뒤, 풀 리퀘스트를 수신한 대상 코드에 기초하여 생성된 테스트 이미지를 확인하고 기준 이미지와 테스트 이미지를 비교한 뒤 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성할 수 있다. 또한 전자 장치는 대상 코드가 기준 코드에 병합된 이후 기준 이미지에 포함된 임시 기준 이미지를 폐기함을 통해 코드 테스트 지원 시스템을 더욱 경량화 할 수 있다.
발명의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당해 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시 예에 따른 시스템을 나타낸다.
도 2는 일 실시 예에 따른 코드 테스트를 지원하는 방법의 개념을 설명하기 위한 도면이다.
도 3은 일 실시 예에 따른 코드 테스트를 지원하는 방법에서 오류 추적을 수행하는 실시 예를 설명하기 위한 도면이다.
도 4는 일 실시 예에 따른 코드 테스트를 지원하는 방법을 설명하기 위한 흐름도이다.
도 5a 및 도 5b는 일 실시 예에 따른 코드 테스트를 지원하는 시스템을 구체적으로 설명하기 위한 흐름도이다.
도 6은 일 실시 예에 따른 코드 테스트를 지원하는 전자 장치를 도식화한 블록도이다.
실시 예들에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 “포함”한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에 기재된 “...부”, “...모듈” 등의 용어는 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어 또는 소프트웨어로 구현되거나 하드웨어와 소프트웨어의 결합으로 구현될 수 있다.
명세서 전체에서 기재된 “a, b, 및 c 중 적어도 하나”의 표현은, ‘a 단독’, ‘b 단독’, ‘c 단독’, ‘a 및 b’, ‘a 및 c’, ‘b 및 c’, 또는 ‘a,b,c 모두’를 포괄할 수 있다.
이하에서 언급되는 "단말"은 네트워크를 통해 서버나 타 단말에 접속할 수 있는 컴퓨터나 휴대용 단말로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop) 등을 포함하고, 휴대용 단말은 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, IMT(International Mobile Telecommunication), CDMA(Code Division Multiple Access), W-CDMA(W-Code Division Multiple Access), LTE(Long Term Evolution) 등의 통신 기반 단말, 스마트폰, 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
실시 예를 설명함에 있어서 본 발명이 속하는 기술 분야에 익히 알려져 있고 본 발명과 직접적으로 관련이 없는 기술 내용에 대해서는 설명을 생략한다. 이는 불필요한 설명을 생략함으로써 본 발명의 요지를 흐리지 않고 더욱 명확히 전달하기 위함이다.
마찬가지 이유로 첨부 도면에 있어서 일부 구성요소는 과장되거나 생략되거나 개략적으로 도시되었다. 또한, 각 구성요소의 크기는 실제 크기를 전적으로 반영하는 것이 아니다. 각 도면에서 동일한 또는 대응하는 구성요소에는 동일한 참조 번호를 부여하였다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술 되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.
도 1은 일 실시 예에 따른 시스템을 나타낸다.
도 1을 참조하면, 시스템은 전자 장치(100), 작업자 단말(120), 데이터베이스(140) 및 네트워크(160) 중에서 적어도 하나를 포함할 수 있다. 한편, 도 1에 도시된 시스템은 본 실시 예와 관련된 구성요소들만이 도시되어 있다. 따라서, 도 1에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다.
전자 장치(100)는 다양한 정보를 구성하여 제공하는 장치이다. 전자 장치(100)는 구성된 정보를 웹 페이지 또는 애플리케이션 화면 등으로 제공하거나, 제공 받는 단말에서 웹 페이지 또는 애플리케이션 화면 등으로 표시할 수 있는 형태의 정보로 제공할 수 있다.
일 실시 예에 따르면, 전자 장치(100)는 작업자가 확인하고자 하는 로그 데이터를 설정된 타입으로 변환하여 데이터베이스(140)에 저장할 수 있다.
예를 들어, 전자 장치(100)는 작업의 대상이 되는 애플리케이션에 대해 작업자 단말(120)로부터 애플리케이션의 수정을 위한 테스트 대상 코드의 풀 업 리퀘스트를 수신하고, 애플리케이션에 대한 테스트 케이스를 수행하기 위한 테스트 케이스 셋업 정보를 데이터베이스(140)를 통해 획득할 수 있다. 데이터베이스(140)를 통해 획득한 테스트 케이스 셋업 정보는, 전자 장치(100)가 테스트 케이스에 대한 결과를 획득하는 과정에서 이용될 수 있다. 또한 전자 장치(100)는 데이터베이스(140)의 접속에 대한 정보를 포함하는 로그 데이터에 관한 코드에 기초하여 획득된 애플리케이션의 실행에 따른 정보를 포함하는 로그 데이터를 확인하고, 로그 데이터를 포함하는 하나 이상의 로우 데이터를 데이터베이스(140)에 저장할 수 있다. 이후, 전자 장치(100)는 하나 이상의 로우 데이터 중 설정된 식별 정보를 포함하는 적어도 하나의 로우 데이터를 확인하고, 적어도 하나의 로우 데이터에 포함된 적어도 하나의 로그 데이터의 타입을 변환하여 데이터베이스(140)에 저장할 수 있다.
작업자 단말(120)은 작업자들이 사용하는 작업자 단말(120)을 이용하여, 특정 필드에 대응하는 로그 데이터를 보다 편리하게 확인할 수 있다. 예를 들어, 작업자는 확인하고자 하는 로그 데이터에 관한 코드를 작업자 단말(120)을 통해 제공할 수 있다. 또한 작업자는 작업자 단말(120)을 이용하여 데이터베이스(140)에 저장된 로그 데이터를 확인할 수 있다.
데이터베이스(140)는 데이터의 저장, 검색, 삭제, 편집, 또는 추가 등의 기능을 자유롭게 수행할 수 있다. 예를 들어, 데이터베이스(140)는 데이터의 저장, 검색, 삭제, 편집, 또는 추가 등의 기능을 처리하기 위한 필드 또는 구성요소들을 포함할 수 있다. 또한, 데이터베이스(140)는 애플리케이션의 실행에 따른 정보를 포함하는 로그 데이터, 로그 데이터를 포함하는 하나 이상의 로우 데이터 및 설정된 타입으로 변환된 로그 데이터를 저장할 수 있다.
한편, 도 1은 데이터베이스(140)가 전자 장치(100)의 외부에 존재하는 것으로 도시하나, 이는 일 실시 예에 불과하며, 데이터베이스(140)는 전자 장치(100)에 포함될 수 있다. 또한, 데이터베이스(140)는 하나 이상의 서브 데이터베이스를 포함할 수 있으며, 하나 이상의 서브 데이터베이스 각각에는 애플리케이션의 실행에 따른 정보를 포함하는 로그 데이터, 로그 데이터를 포함하는 하나 이상의 로우 데이터 및 설정된 타입으로 변환된 로그 데이터가 저장될 수 있다. 또한 전자 장치(100)와 데이터베이스(140)는 애플리케이션의 실행 및 관리에 필요한 컴퓨팅 리소스와 네트워킹 기능을 제공하는 클라우드 인프라 상에서 논리적으로 구별될 수 있으며, 클라우드 인프라 상에서 네트워킹 프로토콜을 통해 서로 통신 가능하도록 구현될 수 있다.
작업자 단말(120) 및 데이터베이스(140)와 전자 장치(100)는 네트워크(160) 내에서 서로 통신할 수 있다. 네트워크(160)는 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN), 부가가치 통신망(Value Added Network; VAN), 이동 통신망(mobile radio communication network), 위성 통신망 및 이들의 상호 조합을 포함하며, 도 1에 도시된 각 네트워크 구성 주체가 서로 원활하게 통신을 할 수 있도록 하는 포괄적인 의미의 데이터 통신망이며, 유선 인터넷, 무선 인터넷 및 모바일 무선 통신망을 포함할 수 있다. 무선 통신은 예를 들어, 무선 랜(Wi-Fi), 블루투스, 블루투스 저 에너지(Bluetooth low energy), 지그비, WFD(Wi-Fi Direct), UWB(ultra wideband), 적외선 통신(IrDA, infrared Data Association), NFC(Near Field Communication) 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
전자 장치(100) 및 작업자 단말(120) 각각은 트랜시버, 스토리지 및 프로세서를 포함할 수 있다. 또한, 전자 장치(100) 및 작업자 단말(120) 각각은 적어도 하나의 기능이나 동작을 처리하는 단위를 의미하며, 이는 하드웨어나 소프트웨어, 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다. 한편 실시 예 전반에서 전자 장치(100) 및 작업자 단말(120) 각각은 분리된 장치 또는 서버로 언급되나 이는 논리적으로 나누어진 구조일 수 있으며, 이들 중 적어도 일부가 하나의 장치 또는 서버에서 분리된 기능에 의해 구현될 수 있다.
일 실시 예에 따르면, 전자 장치(100) 및 작업자 단말(120)은 네트워크 서버로 구현되는 다수의 컴퓨터 시스템 또는 컴퓨터 소프트웨어를 포함할 수 있다. 예를 들면, 전자 장치(100) 및 작업자 단말(120) 중 적어도 일부는 인트라넷 또는 인터넷과 같은 컴퓨터 네트워크를 통해 다른 네트워크 서버와 통신할 수 있는 하위 장치와 연결되어 작업 수행 요청을 접수하고, 그에 대한 작업을 수행하여 수행 결과를 제공하는 컴퓨터 시스템 및 컴퓨터 소프트웨어를 지칭할 수 있다. 이외에도, 전자 장치(100) 및 작업자 단말(120) 중 적어도 일부는 네트워크 서버 상에서 동작할 수 있는 일련의 응용 프로그램과, 내부 혹은 연결된 다른 노드에 구축되어 있는 각종 데이터베이스를 포함하는 광의의 개념으로 이해될 수 있다. 예컨대, 전자 장치(100) 및 작업자 단말(120) 중 적어도 일부는 도스(DOS), 윈도우(Windows), 리눅스(Linux), 유닉스(UNIX), 또는 맥OS(MacOS) 등의 운영 체제에 따라 다양하게 제공되는 네트워크 서버 프로그램을 이용하여 구현될 수 있다.
전자 장치(100) 및 작업자 단말(120)은 네트워크(160)를 통해서 서로 통신할 수 있다. 네트워크(160)는 근거리 통신망(Local Area Network; LAN), 광역 통신망(Wide Area Network; WAN), 부가가치 통신망(Value Added Network; VAN), 이동 통신망(mobile radio communication network), 위성 통신망 및 이들의 상호 조합을 포함하며, 도 1에 도시된 각 네트워크(160) 구성 주체가 서로 원활하게 통신을 할 수 있도록 하는 포괄적인 의미의 데이터 통신망이며, 유선 인터넷, 무선 인터넷 및 모바일 무선 통신망을 포함할 수 있다. 무선 통신은 예를 들어, 무선 랜(Wi-Fi), 블루투스, 블루투스 저 에너지(Bluetooth low energy), 지그비, WFD(Wi-Fi Direct), UWB(ultra wideband), 적외선 통신(IrDA, infrared Data Association), NFC(Near Field Communication) 등이 있을 수 있으나, 이에 한정되는 것은 아니다.
도 2는 일 실시 예에 따른 코드 테스트를 지원하는 방법의 개념을 설명하기 위한 도면이다.
도 2를 참조하면, 일 실시 예에 따른 코드 테스트를 지원하는 방법을 수행하는 전자 장치(100)는, 코드 테스트를 위한 릴리즈 브랜치(release branch)(202)를 생성(201)할 수 있다. 전자 장치(100)는 작업자 단말(120)에서 새로운 브랜치(new branch)(204)가 생성된 이후, 작업자 단말(120)로부터 테스트의 대상이 될 대상 코드에 대한 풀 리퀘스트(pull request)(205)를 확인할 수 있다. 코드 테스트를 지원하는 전자 장치(100)는, 풀 리퀘스트(205)에 대응하여 코드 테스트의 대상이 되는 애플리케이션에 대응하여 존재하는 테스트 케이스 정보에 따라 대상 코드에 기초하여 생성된 테스트 이미지(new screen shot)(207)를 확인할 수 있다. 일 실시 예에서, 새로운 브랜치(204)의 생성에 따라 릴리즈 브랜치(202)에 코드 체인지(204-1)가 발생할 수 있으며 이에 기초하여 전자 장치(100)는 애플리케이션이 새롭게 업데이트 될 때 마다 해당 애플리케이션에 대한 코드 케이스를 구동하는 동작을 수행할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는, 테스트 케이스 정보에 대응하는 기준 이미지를 확인 할 수 있으며 기준 이미지는 예를 들어 테스트 케이스 정보에 따라 대상 코드에 기초하여 생성되는 기본 기준 이미지를 포함하는 디폴트 베이스라인 이미지들(203) 또는 테스트 케이스 정보에 따라 임시 코드에 기초하여 생성되는 임시 기준 이미지를 포함하는 템프 베이스 라인(206)에 포함된 이미지를 포함할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는, 기준 이미지 및 테스트 이미지(207)의 비교 결과(208)를 확인할 수 있으며, 비교 결과(208)를 기반으로 대상 코드를 기준 코드에 병합(209)할지 여부에 대한 제어 정보를 생성할 수 있다. 예를 들어 기준 이미지는 기준 코드에 기초하여 이미 확인된 원하는 방향의 UI 디스플레이를 확인하기 위한 snapshot 이미지일 수 있다. 전자 장치(100)는 풀 리퀘스트에 대응하여 애플리케이션에 대해 테스트 케이스를 실행한 후, 대상 코드에 기초한 테스트 이미지를 기준 이미지와 비교함으로써 테스트 케이스에 대한 UI 변경 여부를 확인할 수 있다. 예를 들어 테스트 이미지와 기준 이미지의 비교 결과가 동일한 경우 동일한 경우, 전자 장치(100)는 대상 코드를 패스할 수 있으며, 테스트 이미지와 기준 이미지가 동일하지 않은 경우, 테스트 이미지가 코드 테스트의 목적에 맞도록 변경되었는지 여부에 대한 확인을 통해 의도하지 않는 UI 변경을 막을 수 있다. 전자 장치(100)는 오류 추적 시스템(bug tracking system)을 통해 비교 결과(208)를 기반으로 대상 코드를 기준 코드에 병합(209)할지 여부에 대한 제어 정보를 생성할 수 있으며 이에 대해서는 이하에서 자세히 살핀다. 전자 장치(100)는, 대상 코드를 기준 코드에 병합(209)한 후 대상 코드가 병합된 새로운 기준 코드에 기초하여 생성되는 기본 기준 이미지를 생성하고, 이를 차후에 있을 테스트에 이용할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는, 대상 코드를 기준 코드에 병합(209)한 이후 템프 베이스 라인(206)을 폐기(210)할 수 있으며, 병합된 새로운 코드에 따라 복수 회의 코드 체인지(211)가 발생할 수 있다. 이와 같은 단계를 통해 코드 테스트를 지원하는 방법은 대상 코드의 병합 이후 테스트를 위해 생성된 템프 베이스 라인(206)을 폐기(210)함으로써 전체적인 아키텍처를 경량화 하는 효과를 제공할 수 있다.
도 3은 일 실시 예에 따른 코드 테스트를 지원하는 방법에서 오류 추적을 수행하는 실시 예를 설명하기 위한 도면이다.
도 3을 참조하면, 일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는, 테스트 케이스 정보(301)를 확인하고, 테스트 케이스 정보(301)에 대응하는 기준 이미지를 확인할 수 있다. 여기서 기준 이미지는 예를 들어 도 2에서 설명한 바와 같이 테스트 케이스 정보(301)에 따라 대상 코드에 기초하여 생성되는 기본 기준 이미지를 포함하는 디폴트 베이스라인 이미지들(303) 또는 테스트 케이스 정보에 따라 임시 코드에 기초하여 생성되는 임시 기준 이미지를 포함하는 템프 베이스 라인(306)에 포함된 이미지를 포함할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는, 대상 코드에 대한 풀 리퀘스트(305)가 발생할 때마다 이를 확인할 수 있다. 일 실시 예에서 전자 장치(100)는, 도 2에서 설명한 바와 같이 풀 리퀘스트(305)에 대응하여 테스트 케이스 정보(301)에 따라 대상 코드에 기초하여 생성된 테스트 이미지(new screenshots)(307)를 확인할 수 있다. 일 실시 예에서 전자 장치(100)는, 도 2에서 설명한 바와 같이 기준 이미지 및 테스트 이미지(307)의 비교 결과(308)를 확인할 수 있다.
일 실시 예에서 전자 장치(100)는, 기준 이미지 및 테스트 이미지(307)의 비교 결과(308)가 동일한 경우, 풀 리퀘스트(305)를 통과(310)시키고 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하여 대상 코드를 기준 코드에 병합(312)할 수 있다.
일 실시 예에 따른 전자 장치(100)는, 풀 리퀘스트(305)에 기초하여 오류 추적 시스템(309)을 자동 생성(auto create)(305-1)할 수 있다. 또한 일 실시 예에 따른 전자 장치(100)는, 기준 이미지 및 테스트 이미지(307)의 비교 결과(308)가 동일하지 않은 경우, 풀 리퀘스트(305)의 링크에 관한 정보, 타이틀에 관한 정보 및 소유자에 관한 정보를 포함하는 오류 추적 시스템(309)를 통해 풀 리퀘스트(305)를 통과(310)시키거나 풀 리퀘스트(305)를 블록(311)할 수 있다. 일 실시 예에서 전자 장치(100)는, 풀 리퀘스트(305)의 통과(310) 또는 풀 리퀘스트(305)의 블록(311)에 따라 별도의 대상 코드 수정 없이 대상 코드를 병합(312)하거나 대상 코드의 작업자 단말(120)에 대상 코드에 대한 수정을 요청한 이후 수정된 대상 코드를 병합(312)할 수 있다.
일 실시 예에 따른 전자 장치(100)는, 대상 코드의 병합(312)이후 앞서 도 2에서 설명한 바와 같이 테스트를 위해 테스트 케이스 정보에 따라 임시 코드에 기초하여 생성되는 임시 기준 이미지를 폐기(313)할 수 있다. 코 전자 장치(100)는 이후 병합된 새로운 코드에 따라 코드 체인지(314)를 수행할 수 있다.
일 실시 예에 따른 전자 장치(100)는, 코드 체인지(314)의 수행 이후, 새로운 테스트 코드에 기초하여 새로운 기본 기준 이미지들을 생성함을 통해 디폴트 베이스라인 이미지(203)를 새로운 코드에 따라 업데이트 할 수 있다.
도 4는 일 실시 예에 따른 코드 테스트를 지원하는 방법을 설명하기 위한 흐름도이다.
도 4를 참조하면, 일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는 단계(S430)에서 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트를 확인 할 수 있다. 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트를 확인하는 단계는, 앞서 설명한 작업자 단말(120)에서 테스트 중인 코드에 대한 풀 리퀘스트를 통해 코드 리포지토리에 대한 변경 사항을 수신하는 단계를 포함할 수 있다. 이러한 단계는 작업자 단말(120)을 통해 개발자가 프로젝트에 코드를 제공하는 공동 소프트웨어 개발 환경에서 발생할 수 있으며, 대상 코드에 대한 풀 리퀘스트를 확인하는 단계는 작업자 단말(120)을 통해 개발자가 코드 베이스를 변경하고 해당 변경 사항을 검토하고 기본 코드 리포지토리에 통합하기를 원할 때 생성된 풀 리퀘스트를 수신하는 단계를 포함할 수 있다. 풀 리퀘스트에는 수정된 코드가 있는 브랜치, 코드 변경 사항에 대한 설명 및 추가 관련 정보가 포함될 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는 단계(S420)에서 코드 테스트에 대한 테스트 케이스 정보를 확인할 수 있다. 테스트 케이스 정보를 확인하는 단계는, 테스트 케이스 정보를 확인하기 전에 코드 세그먼트 또는 시스템의 단계 또는 기능을 평가하는 특정 시나리오 또는 조건을 정의하는 단계를 포함할 수 있다. 이는 테스트 케이스의 입력, 테스트 케이스의 예상 출력 및 사전 조건 또는 사후 조건을 정의하는 단계를 포함할 수 있다. 테스트 케이스 정보를 확인하는 단계는 테스트 케이스 저장소, 테스트 스위트 또는 테스트 케이스 정보가 포함된 파일의 형식을 통해 테스트 케이스를 저장하고 구성하는 메커니즘을 포함할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는 단계(S430)에서 테스트 케이스 정보에 대응하는 기준 이미지를 확인할 수 있다. 기준 이미지를 확인하는 단계는 예를 들어 스냅샷(snapshot) 이미지를 생성하기 위해 수행해야 하는 특정 단계 또는 작업을 포함하는 테스트를 정의한 이후 예를 들어 예상되는 아이템에 대한 시각적 출력을 생성하는 단계를 포함할 수 있다. 기준 이미지를 확인하는 단계는, 예를 들어 앞서 설명한 테스트 케이스 정보에 따라 생성된 실제 시각적 출력에 관한 기준 이미지를 확인하는 단계를 포함할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는 단계(S440)에서 풀 리퀘스트에 대응하여 테스트 케이스 정보에 따라 대상 코드에 기초하여 생성된 테스트 이미지를 확인할 수 있다. 테스트 이미지를 확인하는 단계는 테스트 서버를 통해 대상 코드를 기준 코드에 병합한 기준 코드에 기초하여 테스트 이미지를 생성(generate)하고, 테스트 이미지를 확인하는 단계를 포함할 수 있다. 테스트 이미지를 확인하는 단계는, 예를 들어 풀 리퀘스트에 도입된 수정 사항을 포함하여 대상 코드를 실행하여 지정된 테스트 사례 조건에서 코드 변경으로 생성된 시각적 출력을 나타내는 테스트 이미지를 생성하고, 이를 확인하는 단계를 포함할 수 있다. 이 단계에서 전자 장치(100)는 생성된 테스트 이미지를 비교하기 위한 참고 자료로서 예상되는 시각적 출력 또는 단계를 포함한 테스트 사례 정보를 획득할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는 단계(S450)에서 기준 이미지 및 테스트 이미지의 비교 결과를 확인할 수 있다. 비교 결과를 확인하는 단계는, 예를 들어 단계(S420)에서 확인된 기준 이미지와 단계(S440)에서 확인된 테스트 이미지를 비교하는 단계를 포함할 수 있다. 기준 이미지는 예를 들어 테스트 케이스 정보에 따라 대상 코드에 기초하여 생성되는 기본 기준 이미지 및 테스트 케이스 정보에 따라 임시 코드에 기초하여 생성되는 임시 기준 이미지를 포함할 수 있다. 일 실시 예에서, 전자 장치(100)는 기준 이미지에 임시 기준 이미지가 포함되지 않은 경우, 대상 코드에 기초하여 생성되는 기본 기준 이미지와 대상 코드에 기초하여 생성된 테스트 이미지의 비교 결과를 확인할 수 있다. 비교 결과를 확인하는 단계는, 예를 들어 픽셀 기반 비교, 히스토그램 비교, SSIM(구조적 유사성 지수), MSE(평균 제곱 오차) 또는 컴퓨터 비전 알고리즘을 사용한 특징 기반 분석을 통해 기준 이미지와 테스트 이미지의 비교 결과를 확인하는 단계를 포함할 수 있다. 비교 결과를 확인하는 단계는, 비교 기술을 적용하여 기준 이미지와 테스트 이미지 간의 유사성 또는 차이점을 정량적 또는 정성적으로 평가하는 단계를 포함할 수 있다. 비교 결과를 확인하는 단계는 예를 들어 테스트와 관련한 수석 개발자 또는 프로젝트 리더와 같은 다른 팀 구성원에게 변경 사항을 검토하라는 검토 프로세스에 대한 요청 신호를 생성하고, 코드 품질, 코딩 표준 준수 및 프로젝트 목표와의 호환성을 보장하기 위한 응답을 수신하는 과정을 통해 비교 결과를 확인하는 단계를 포함할 수 있다.
일 실시 예에 따른 코드 테스트를 지원하는 전자 장치(100)는 단계(S460)에서 비교 결과를 기반으로 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성할 수 있다. 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는 앞서 언급한 기준 이미지와 테스트 이미지의 비교 결과에 따라 비교 결과가 동일한 경우 풀 리퀘스트를 통과시키고 대상 코드를 기준 코드에 병합한다는 제어 정보를 생성하는 단계를 포함할 수 있다. 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는 비교 결과가 동일하지 않은 경우, 대상 코드에 대한 확인을 작업자 단말(120)에 요청하는 제어 신호를 생성하고, 작업자 단말(120)로부터 요청에 관한 응답을 수신하고, 기준 이미지와 테스트 이미지 간의 차이가 임계 값 미만인 경우, 풀 리퀘스트를 통과시키고 대상 코드를 기준 코드에 병합한다는 제어 정보를 생성하는 단계를 포함할 수 있다. 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는 비교 결과가 동일하지 않은 경우, 대상 코드에 대한 확인을 작업자 단말(120)에 요청하는 제어 신호를 생성하고, 작업자 단말(120)로부터 요청에 관한 응답을 수신하고, 기준 이미지와 테스트 이미지 간의 차이가 임계 값 이상인 경우, 작업자 단말(120)에 테스트 코드의 수정 요청에 관한 제어 신호를 송신하고, 수정 요청에 대한 응답에 기반하여, 기준 이미지와 수정된 테스트 이미지 간의 차이가 임계 값 미만인 경우 수정된 코드에 관한 풀 리퀘스트를 통과시키고 대상 코드를 기준 코드에 병합한다는 제어 정보를 생성하는 단계를 포함할 수 있다.
도 5a 및 도 5b는 일 실시 예에 따른 코드 테스트를 지원하는 시스템을 구체적으로 설명하기 위한 흐름도이다.
도 5a 및 도 5b를 참조하면, 다양한 실시 예에 따른 코드 테스트를 지원하는 시스템은 다양한 종류의 장치들에 의해 구현될 수 있다. 예를 들어, 코드 테스트를 지원하는 시스템은 전자 장치(100), 작업자 단말(120) 데이터베이스(140)를 포함할 수 있다. 데이터베이스(140)는 전자 장치(100) 내의 스토리지일 수도 있고, 전자 장치(100) 외부의 스토리지일 수 있으나 이에 한정되는 것은 아니다. 또한, 데이터 스토리지는 레디스(Remote Dictionary Server)로 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템일 수 있다.
도 5a를 참조하면, 단계 S510에서, 작업자 단말(120)은 전자 장치(100)에 대상 코드에 대한 풀 리퀘스트를 송신할 수 있고, 이에 따라 전자 장치(100)는 작업자 단말(120)로부터 대상 코드에 대한 풀 리퀘스트를 수신할 수 있다.
단계 S520에서 데이터베이스(140)는 테스트 케이스 정보를 전자 장치(100)에 송신할 수 있고, 전자 장치(100)는 이를 데이터베이스(140)로부터 수신할 수 있다. 테스트 케이스 정보를 수신함에 따라, 전자 장치(100)는 코드 테스트를 실시하는데 필요한 정보를 확인할 수 있다. 예를 들어 데이터베이스(140)는 git-hub를 기반으로 하는 저장소를 포함할 수 있고, 테스트 케이스 정보를 송신하는 단계를 수행할 수 있다.
단계 S530에서, 전자 장치(100)는 풀 리퀘스트에 대응하여 테스트 케이스 정보에 따라 대상 코드에 기초하여 생성된 테스트 이미지를 확인할 수 있다.
단계 S540에서, 전자 장치(100)는 기준 이미지 및 테스트 이미지의 비교 결과를 확인할 수 있다. 기준 이미지 및 테스트 이미지의 비교 결과를 확인하는 단계는, 앞서 살핀 것과 같이 픽셀 기반 비교, 히스토그램 비교, SSIM(구조적 유사성 지수), MSE(평균 제곱 오차) 또는 컴퓨터 비전 알고리즘을 사용한 특징 기반 분석등의 다양한 분석 기술을 통해 수행될 수 있다.
단계 S545에서, 전자 장치(100)는 기준 이미지 및 테스트 이미지의 비교 결과가 동일한지 여부를 판단할 수 있고, 기준 이미지 및 테스트 이미지의 비교 결과가 동일한 경우 단계 S560에서 대상 코드에 대한 풀 리퀘스트를 패스할 수 있다. 전자 장치(100)는 기준 이미지 및 테스트 이미지의 비교 결과가 동일하지 않은 경우, 단계 S550에서 대상 코드에 대한 확인을 요청하는 제어 신호를 생성하여 작업자 단말(120)에 송신할 수 있다. 단계 S555에서 작업자 단말(120)은 확인 요청에 대한 응답을 송신할 수 있고, 이후 전자 장치(100)는 단계 S560에서 대상 코드에 대한 풀 리퀘스트를 패스할 수 있다. 확인 요청 및 이에 대한 응답이 이루어지는 과정에 대해서는 이하 도 5b에서 구체적으로 살핀다.
단계 S570에서, 전자 장치(100)는 대상 코드를 기준 코드에 병합할 수 있다. 전자 장치(100)는 대상 코드를 기준 코드에 병합한 이후 새로운 기준 코드에 기초하여 추가적인 코드 테스트를 진행할 수 있다. 예를 들어 테스트의 검토자는 풀 리퀘스트 된 대상 코드의 변경 사항을 검토, 개선 및 테스트한 후 대상 코드가 전체 프로젝트의 품질 표준을 충족하고 개발 목표와 일치하는 경우 대상 코드를 기존 코드 리포지토리에 병합한다는 결정을 내리고, 전자 장치(100)는 이러한 병합을 수행할 수 있다.
단계 S580에서, 전자 장치(100)는 작업자 단말(120)에 대상 코드 병합 알림을 송신할 수 있다. 예를 들어, 작업자 단말(120)은 전자 장치(100)로부터 대상 코드 병합 알림을 수신하고, 이후의 추가적인 코드 테스트를 진행하는 경우 이전에 병합된 대상 코드에 기초하여 추가적인 코드 테스트를 진행할 수 있다.
단계 S590에서 전자 장치(100)는 임시 기준 이미지 폐기 요청을 송신할 수 있다. 전자 장치(100)는 병합 이후 이미 사용한 임시 기준 이미지를 폐기함을 통해 전체 시스템을 경량화 할 수 있다.
도 5b를 참조하면, 단계 S545에서, 전자 장치(100)는 기준 이미지 및 테스트 이미지의 비교 결과가 동일한지 여부를 판단할 수 있고, 기준 이미지 및 테스트 이미지의 비교 결과가 동일한 경우 단계 S560에서 대상 코드에 대한 풀 리퀘스트를 패스할 수 있다. 전자 장치(100)는 기준 이미지 및 테스트 이미지의 비교 결과가 동일하지 않은 경우, 단계 S550에서 대상 코드에 대한 확인을 요청하는 제어 신호를 생성하여 작업자 단말(120)에 송신할 수 있고, 작업자 단말(120)로부터의 응답에 기초하여 단계 S511에서 대상 코드가 매뉴얼 리뷰(manual review)를 통과했는지 여부를 판단할 수 있다. 대상 코드가 매뉴얼 리뷰를 통과한 경우, 전자 장치는 단계 S560에서 대상 코드에 대한 풀 리퀘스트를 패스할 수 있다.
대상 코드가 매뉴얼 리뷰를 통과하지 못한 경우, 전자 장치는 단계 S522에서 풀 리퀘스트를 블록시키고 작업자 단말(120)에 테스트 코드의 수정 요청에 관한 제어 신호를 송신하여 수정된 코드가 매뉴얼 리뷰를 통과할 때까지 위 단계를 반복할 수 있다. 예를 들어, 위 단계에서 대상 코드의 검토자는 작업자 단말(120)에 풀 리퀘스트에 대한 피드백과 의견을 제공할 수 있다. 매뉴얼 리뷰를 수행하는 검토자는 대상 코드의 작업자에게 대상 코드에 대한 개선 사항을 제안하거나 대상 코드가 갖는 잠재적인 문제를 강조하거나 대상 코드에 대한 설명을 요청할 수 있으며, 이를 통해 대상 코드가 적합한 테스트 이미지를 생성하도록 대상 코드를 개선하도록 안내할 수 있다. 수정 요청에 대한 응답에 기반하여 기준 이미지와 수정된 테스트 이미지 간의 차이가 임계 값 미만인 경우 전자 장치(100)는 단계 S560에서 풀 리퀘스트를 통과시킬 수 있고, 앞서 살핀 바와 같이 병합을 수행할 수 있다.
도 6은 일 실시 예에 따른 코드 테스트를 지원하는 전자 장치를 도식화한 블록도이다.
도 6을 참조하면, 도 6의 전자 장치(600)는 본원 명세서의 전자 장치(100)에 대응될 수 있다. 본 개시의 전자 장치(600)는 일 실시 예에 따라, 트랜시버(610), 스토리지(620) 및 프로세서(630)를 포함할 수 있다. 도 6에 도시된 구성요소들은 전자 장치를 구현하는데 있어서 필수적인 것은 아니어서, 본 명세서 상에서 설명되는 전자 장치(600)는 위에서 열거된 구성요소들 보다 많거나, 또는 적은 구성요소들을 가질 수 있음을 본 실시 예와 관련된 기술분야에서 통상의 지식을 가진 자라면 이해할 수 있다. 한편 실시 예에서 프로세서(630)는 적어도 하나의 프로세서를 포함할 수 있다. 또한, 전자 장치(600)는 서버 또는 프록시 서버(Proxy Server)로 동작할 수도 있다.
트랜시버(610)는 유무선 통신 기술을 이용하여 외부의 장치와 통신할 수 있으며 트랜시버(610)를 포함할 수 있다. 외부의 장치는 개발자, 품질 보증 팀의 단말을 포함하는 단말 또는 서버가 될 수 있다. 또한, 트랜시버(610)가 이용하는 통신 기술에는 GSM(Global System for Mobile communication), CDMA(Code Division Multi Access), LTE(Long Term Evolution), 5G, WLAN(Wireless LAN), Wi-Fi(Wireless-Fidelity), 블루투스(Bluetooth), RFID(Radio Frequency Identification), 적외선 통신(Infrared Data Association; IrDA), ZigBee, NFC(Near Field Communication) 등이 있을 수 있으며, 이에 한정되는 것은 아니다.
일 실시 예에 따라, 트랜시버(610)는 네트워크(160)를 통해 작업자 단말(120) 및 데이터베이스(140)와 통신하여 정보를 주고받을 수 있다. 보다 구체적으로, 트랜시버(610)는 데이터베이스(140)로부터 테스트 케이스 정보를 수신할 수 있고, 작업자 단말(120)로부터 대상 코드에 대한 풀 리퀘스트를 수신할 수 있다.
스토리지(620) 는 도 1 내지 도 5b를 통하여 전술한 적어도 하나의 방법을 수행하기 위한 정보를 저장할 수 있다. 스토리지(620)는 메모리로 호칭될 수 있고, 휘발성 메모리 또는 비휘발성 메모리일 수 있다.
프로세서(630)는 전자 장치(600)의 전반적인 동작을 제어하고 데이터 및 신호를 처리할 수 있다. 프로세서(630)는 도 1 내지 도 5b를 통하여 전술한 하나의 방법을 수행할 수 있다. 프로세서(630)는 트랜시버(610) 및 스토리지(620) 와, 나아가 전자 장치(600)가 더 포함할 수 있는 구성요소들과의 상호 작용을 통해 전자 장치(600)가 수행하는 실시 예들을 제어할 수 있다. 일 실시 예에 따라, 프로세서(630)는 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트(pull request)를 확인하고, 코드 테스트에 대한 테스트 케이스 정보를 확인하고, 테스트 케이스 정보에 대응하는 기준 이미지를 확인하고, 풀 리퀘스트에 대응하여 테스트 케이스 정보에 따라 대상 코드에 기초하여 생성된 테스트 이미지를 확인하고, 기준 이미지 및 테스트 이미지의 비교 결과를 확인하고, 비교 결과를 기반으로 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성할 수 있다.
한편, 본 명세서와 도면에는 본 발명의 바람직한 실시 예에 대하여 개시하였으며, 비록 특정 용어들이 사용되었으나, 이는 단지 본 발명의 기술 내용을 쉽게 설명하고 발명의 이해를 돕기 위한 일반적인 의미에서 사용된 것이지, 본 발명의 범위를 한정하고자 하는 것은 아니다. 여기에 개시된 실시 예 외에도 본 발명의 기술적 사상에 바탕을 둔 다른 변형 예들이 실시 가능하다는 것은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에게 자명한 것이다.
전술한 실시 예들에 따른 전자 장치 또는 단말은, 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 아이콘 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-Access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler), 파이썬(Python) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
전술한 실시 예들은 일 예시일 뿐 후술하는 청구항들의 범위 내에서 다른 실시 예들이 구현될 수 있다.

Claims (12)

  1. 전자 장치에서의 코드 테스트 지원 방법에 있어서,
    상기 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트(pull request)를 확인하는 단계;
    상기 코드 테스트에 대한 테스트 케이스 정보를 확인하는 단계;
    상기 테스트 케이스 정보에 대응하는 기준 이미지를 확인하는 단계;
    상기 풀 리퀘스트에 대응하여 상기 테스트 케이스 정보에 따라 상기 대상 코드에 기초하여 생성된 테스트 이미지를 확인하는 단계;
    상기 기준 이미지 및 상기 테스트 이미지의 비교 결과를 확인하는 단계; 및
    상기 비교 결과 및 작업자 단말에서의 응답에 기초하여 상기 대상 코드가 매뉴얼 리뷰(manual review)를 통과했는지 여부를 기반으로, 상기 대상 코드를 기준 코드에 병합(merge)할지 여부에 대한 제어 정보를 생성하는 단계를 포함하는,
    코드 테스트 지원 방법.
  2. 제1항에 있어서,
    상기 기준 이미지는,
    상기 테스트 케이스 정보에 따라 상기 대상 코드에 기초하여 생성되는 기본 기준 이미지 및 상기 테스트 케이스 정보에 따라 임시 코드에 기초하여 생성되는 임시 기준 이미지를 포함하는,
    코드 테스트 지원 방법.
  3. 제1항에 있어서,
    상기 대상 코드가 병합된 새로운 기준 코드에 기초하여 생성되는 기본 기준 이미지를 생성하는 단계를 더 포함하는,
    코드 테스트 지원 방법.
  4. 제1항에 있어서,
    상기 테스트 이미지를 확인하는 단계는,
    테스트 서버를 통해 상기 대상 코드를 기준 코드에 병합한 기준 코드에 기초하여 상기 테스트 이미지를 생성(generate)하고, 상기 테스트 이미지를 확인하는 단계를 포함하는,
    코드 테스트 지원 방법.
  5. 제1항에 있어서,
    상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는,
    상기 비교 결과가 동일한 경우,
    상기 풀 리퀘스트를 통과시키는 단계 및
    상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함하는,
    코드 테스트 지원 방법.
  6. 제1항에 있어서,
    상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는,
    상기 비교 결과가 동일하지 않은 경우,
    상기 대상 코드에 대한 확인을 작업자 단말에 요청하는 제어 신호를 생성하는 단계 및 상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함하는,
    코드 테스트 지원 방법.
  7. 제6항에 있어서,
    상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는,
    상기 요청에 관한 응답을 수신하는 단계;
    상기 기준 이미지와 상기 테스트 이미지 간의 차이가 임계 값 미만인 경우, 상기 풀 리퀘스트를 통과시키는 단계 및
    상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함하는,
    코드 테스트 지원 방법.
  8. 제6항에 있어서,
    상기 요청에 기반하여 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계는,
    상기 요청에 관한 응답을 수신하는 단계;
    상기 기준 이미지와 상기 생성된 테스트 이미지 간의 차이가 임계 값 이상인 경우, 상기 풀 리퀘스트를 블록(block)시키는 단계;
    작업자 단말에 테스트 코드의 수정 요청에 관한 제어 신호를 송신하는 단계;
    상기 수정 요청에 대한 응답에 기반하여, 상기 기준 이미지와 수정된 테스트 이미지 간의 차이가 임계 값 미만인 경우 수정된 풀 리퀘스트를 통과시키는 단계 및
    상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는 단계를 포함하는,
    코드 테스트 지원 방법.
  9. 제1항에 있어서,
    상기 제어 정보에 기초하여 상기 대상 코드를 병합하는 단계 및
    상기 기준 이미지에 임시 기준 이미지가 포함된 경우, 상기 기준 이미지에 포함된 상기 임시 기준 이미지를 폐기(drop)하는 단계를 더 포함하는,
    코드 테스트 지원 방법.
  10. 제1항에 있어서,
    상기 비교 결과를 확인하는 단계는,
    상기 기준 이미지에 임시 기준 이미지가 포함되지 않은 경우,
    상기 대상 코드에 기초하여 생성되는 기본 기준 이미지와 상기 대상 코드에 기초하여 생성된 테스트 이미지의 비교 결과를 확인하는 단계를 포함하는,
    코드 테스트 지원 방법.
  11. 코드 테스트를 지원하는 전자 장치에 있어서,
    트랜시버;
    하나 이상의 명령어를 저장하는 스토리지; 및
    상기 코드 테스트의 대상이 되는 대상 코드에 대한 풀 리퀘스트(pull request)를 확인하고,
    상기 코드 테스트에 대한 테스트 케이스 정보를 확인하고,
    상기 테스트 케이스 정보에 대응하는 기준 이미지를 확인하고,
    상기 풀 리퀘스트에 대응하여 상기 테스트 케이스 정보에 따라 상기 대상 코드에 기초하여 생성된 테스트 이미지를 확인하고,
    상기 기준 이미지 및 상기 테스트 이미지의 비교 결과를 확인하고,
    상기 비교 결과 및 작업자 단말에서의 응답에 기초하여 상기 대상 코드가 매뉴얼 리뷰(manual review)를 통과했는지 여부를 기반으로 상기 대상 코드를 기준 코드에 병합할지 여부에 대한 제어 정보를 생성하는,
    프로세서를 포함하는 전자 장치.
  12. 제1항의 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비임시적 기록매체.
KR1020230087007A 2023-07-05 2023-07-05 코드 테스트 지원 방법 및 전자 장치 KR102620097B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020230087007A KR102620097B1 (ko) 2023-07-05 2023-07-05 코드 테스트 지원 방법 및 전자 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020230087007A KR102620097B1 (ko) 2023-07-05 2023-07-05 코드 테스트 지원 방법 및 전자 장치

Publications (1)

Publication Number Publication Date
KR102620097B1 true KR102620097B1 (ko) 2024-01-02

Family

ID=89511933

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230087007A KR102620097B1 (ko) 2023-07-05 2023-07-05 코드 테스트 지원 방법 및 전자 장치

Country Status (1)

Country Link
KR (1) KR102620097B1 (ko)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001273168A (ja) * 2000-03-24 2001-10-05 Hitachi Information Systems Ltd ソフトウエア自動テストシステム
KR20120121950A (ko) * 2011-04-28 2012-11-07 (주)아이엔에스랩 애플리케이션 그래픽 유저인터페이스 테스트 자동화 시스템 및 그 방법
KR101850303B1 (ko) * 2016-09-13 2018-05-31 슈어소프트테크주식회사 소스 코드 위배 수정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
KR102156931B1 (ko) * 2020-01-16 2020-09-16 주식회사 소프트센 블록 코딩된 프로그램 코드의 평가 장치, 시스템, 방법 및 기록 매체에 저장된 프로그램

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001273168A (ja) * 2000-03-24 2001-10-05 Hitachi Information Systems Ltd ソフトウエア自動テストシステム
KR20120121950A (ko) * 2011-04-28 2012-11-07 (주)아이엔에스랩 애플리케이션 그래픽 유저인터페이스 테스트 자동화 시스템 및 그 방법
KR101850303B1 (ko) * 2016-09-13 2018-05-31 슈어소프트테크주식회사 소스 코드 위배 수정 방법 및 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
KR102156931B1 (ko) * 2020-01-16 2020-09-16 주식회사 소프트센 블록 코딩된 프로그램 코드의 평가 장치, 시스템, 방법 및 기록 매체에 저장된 프로그램

Similar Documents

Publication Publication Date Title
US9665476B2 (en) Auto-deployment and testing of system application test cases in remote server environments
US9846638B2 (en) Exposing method related data calls during testing in an event driven, multichannel architecture
US20150227452A1 (en) System and method for testing software applications
US9489277B2 (en) Application component testing
US10642717B2 (en) Application user interface testing system and method
US10223248B2 (en) Conducting automated software testing using centralized controller and distributed test host servers
US20160306690A1 (en) Integrated test design, automation, and analysis
US9703683B2 (en) Software testing coverage
WO2021189356A1 (en) Microapp functionality recommendations with cross-application activity correlation
KR102202108B1 (ko) 클라우드 인프라 자산의 취약점을 자동진단하기 위한 시스템 및 방법
US10901984B2 (en) Enhanced batch updates on records and related records system and method
US10789563B2 (en) Building confidence of system administrator in productivity tools and incremental expansion of adoption
KR102620097B1 (ko) 코드 테스트 지원 방법 및 전자 장치
US20200233884A1 (en) Analyzing application behavior to determine relationships between data
US10318532B2 (en) Discovery of application information for structured data
CN113886221B (zh) 测试脚本生成方法、装置、存储介质及电子设备
US20230153723A1 (en) Workflow manager
KR102653516B1 (ko) 데이터를 제공하는 방법 및 장치
KR102620693B1 (ko) 애플리케이션에 대한 테스트 설정 환경을 제공하는 전자 장치 및 그 방법
Verma A comparison of web framework efficiency: performance and network analysis of modern web frameworks
US12008362B2 (en) Software development environment
US20220245060A1 (en) System and Method for Automated Testing
US11768824B2 (en) Method and system for performing real-time data validation
KR20240093402A (ko) 데이터를 제공하는 방법 및 장치
US20190196945A1 (en) Entity performance and usability analysis framework

Legal Events

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