KR20180052799A - 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템 - Google Patents

제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템 Download PDF

Info

Publication number
KR20180052799A
KR20180052799A KR1020160149387A KR20160149387A KR20180052799A KR 20180052799 A KR20180052799 A KR 20180052799A KR 1020160149387 A KR1020160149387 A KR 1020160149387A KR 20160149387 A KR20160149387 A KR 20160149387A KR 20180052799 A KR20180052799 A KR 20180052799A
Authority
KR
South Korea
Prior art keywords
product line
code
test item
product
changed
Prior art date
Application number
KR1020160149387A
Other languages
English (en)
Other versions
KR101934163B1 (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 KR1020160149387A priority Critical patent/KR101934163B1/ko
Publication of KR20180052799A publication Critical patent/KR20180052799A/ko
Application granted granted Critical
Publication of KR101934163B1 publication Critical patent/KR101934163B1/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/3672Test management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템이 제시된다. 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법은 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 단계; 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 단계; 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 단계; 상기 제품 라인 코드 파티션 테이블에서 상기 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 단계; 및 상기 제품 라인 시험 항목 파티션 테이블을 활용하여 상기 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 단계를 포함하여 이루어질 수 있다.

Description

제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템{Method and System for Selecting Automated Code-based Regression Test Item for Software Product Line}
아래의 실시예들은 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템에 관한 것이다. 더욱 상세하게는, 소프트웨어 제품 라인에서 회귀 시험을 효과적이고 효율적으로 수행하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템에 관한 것이다.
기존에 단일 제품을 위한 회귀 시험 선택 방법이 많이 연구되었다[비특허문헌 1]. 현재 연구된 방법들 중 우수하다고 알려진 [Orso04]의 방법과 사례연구에 따르면, 7천 줄(line) 정도 길이의 코드를 대상으로 1시간 만에 효과적인 재시험 항목을 식별할 수 있다. 그러나 단일 제품을 위한 방법을 제품 라인을 구성하는 각 제품마다 사용하는 것은 현실적으로 한계를 지닌다.
일반적으로 제품 라인을 구성하는 제품 수는 최소 3개 이상이며 많게는 수십 개로 구성된다. 이에 따라 단일 제품을 위한 방법을 제품 라인에 사용하기 위해서는 이를 여러 번 적용해야 한다. 또한, 현업에서 사용되는 제품의 규모는 수십만 줄에서 수백만 줄까지 분포하여, 기존 방법을 여러 번 적용하는 것은 시간적/비용적 한계가 있다.
예를 들어, 각각 코드의 길이가 10만 줄의 규모를 갖는 5개의 제품으로 구성된 제품 라인에 [Orso04]의 방법을 사용하는 경우 약 70시간이 필요하다. 변경이 발생할 때마다 70시간 동안 재시험을 하는 것은 현실적으로 이루어질 수 없다. 또한, 현업에서는 점점 짧아지는 제품의 출시 주기를 극복하기 위해 개발 일정보다 시험 일정을 단축시키는 경우가 많기 때문에 제품 라인에 특화된 효율적인 회귀 시험 선택 방법이 요구된다.
종래에도 제품 라인을 위한 회귀 시험 연구들이 제시되었다.
[비특허문헌 2]는 제품 라인 회귀 시험 항목을 선택하기 위해 고려해야 할 측면들을 고찰한다. 이 연구는 먼저 회귀 시험 항목 연구와 제품 라인 테스트 연구에 관해서 각각 사전 연구 조사를 수행하고, 현재까지 완료된 연구들과 진행중인 연구들에 대해서 기술한다. 그리고 앞으로 제품 라인에서 회귀 시험 항목 선택 연구를 수행하기 위해 제품 라인 커버리지 및 테스트 범위 선택의 두 가지 측면을 제시한다.
먼저, 제품 라인 커버리지는 시험 항목들이 시스템과 어떻게 연관되고, 각 시험 항목이 시험하는 범위가 어떻게 되며, 제품 라인 전체의 시험 범위는 어떻게 관찰되어야 하는지 등을 나타낸다.
다음으로, 테스트 범위 선택은 특정 제품을 시험하기 위해 얼마나 많은 시험 항목이 실행되어야 하고, 어떤 시험 항목이 실행되어야 하며, 시험 중인 제품과 제품 라인의 변경을 어떻게 표현할 수 있는지 등을 나타낸다.
[비특허문헌 2]는 제품 라인 시험 항목을 선택하기 위해 고려해야 할 사항들을 제시하고 있지만 어떻게 수행해야 하는지 구체적인 방법을 제시하고 있지 않다. 단지, 단일 제품과는 다른 제품 라인에서 추가적으로 고려해야 할 점들을 나열하고 있다.
[비특허문헌 3]는 제품 라인의 시험 계획과 분석, 시험 항목의 선택과 설계, 시험 항목 실행 등을 수행하는 단계를 설명하고 각 단계를 수행하는 역할 별 전문가와 산출물을 정의한다.
그러나, 이 방법 또한 각 단계를 수행하는 구체적인 절차를 제시하고 있지 않다. 게다가 수많은 제품 라인 전문가들이 수작업으로 구성 절차들을 수행해야 하기 때문에 많은 노력이 들고 현업에서 적용하기 어렵다는 한계점을 지닌다.
[비특허문헌 4]는 모델 분할 기법과 델타 모델링 기법을 결합하여 제품 라인 모델의 변경에 대한 회귀 시험 항목 선택을 수행하는 연구이다.
그러나, 실행이 가능한 시험 항목을 선택하지 않고 시험 시나리오 수준으로 결과를 도출하기 때문에 소스코드에 적용하기 어렵다는 한계를 지닌다.
Figure pat00001
Emelie, Per Runeson, and Mats Skoglund. "A systematic review on regression test selection techniques." Information and Software Technology 52.1 (2010): 14-30.
Figure pat00002
and P. Runeson, "Software product line testing-a systematic mapping study," Information and Software Technology, vol. 53, pp. 2-13, 2011. P. A. d. M. S. Neto, I. do Carmo Machado, Y. C. Cavalcanti, E. S. de Almeida, V. C. Garcia, and S. R. de Lemos Meira, "A regression testing approach for software product lines architectures," in Software Components, Architectures and Reuse (SBCARS), 2010 Fourth Brazilian Symposium on, 2010, pp. 41-50.
Figure pat00003
S. Lity, T. Morbach, and I. Schaefer, "Applying Incremental Model Slicing to Product-Line Regression Testing," in International Conference on Software Reuse, 2016, pp. 3-19.
실시예들은 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템에 관하여 기술하며, 보다 구체적으로 제품 라인에 변경이 발생되었을 경우 기존에 개발된 기능들에 결함이 없음(correctness)을 보장하기 위해 코드를 기반으로 기존 시험 항목들을 재시험하는 자동화된 기술을 제공한다.
실시예들은 제품 라인을 구성하는 모든 상기 제품 라인 소스코드와 상기 제품 라인 시험 항목들을 일괄적으로 분석하여 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택함으로써, 시간적/비용적인 현실적 한계를 극복할 수 있는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템을 제공하는데 있다.
일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법은, 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 단계; 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 단계; 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 단계; 상기 제품 라인 코드 파티션 테이블에서 상기 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 단계; 및 상기 제품 라인 시험 항목 파티션 테이블을 활용하여 상기 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 단계를 포함하고, 상기 스페이스의 집합은, 제품 군의 제품들의 소스코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 집합이다.
여기서, 제품 라인을 구성하는 모든 상기 제품 라인 소스코드와 상기 제품 라인 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택할 수 있다.
상기 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 단계는, 제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집하는 단계; 추출한 각각의 상기 메소드와 필드가 어느 제품에 포함된 것인지 검색하는 단계; 및 검색 후, 포함된 제품 집합으로 구성되는 스페이스로 분배하여 상기 제품 라인 코드 파티션 테이블을 생성하는 단계를 포함할 수 있다.
상기 제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집하는 단계는, 추출하는 항목들을 서로 구별될 수 있도록 유일한 식별자를 사용하여, 상기 제품 라인 코드 파티션 테이블을 생성할 수 있다.
상기 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 단계는, 제품 라인을 구성하는 모든 제품의 제품 라인 구성 시험 항목을 추출하여 중복 없이 수집하는 단계; 추출한 각각의 상기 제품 라인 시험 항목이 어느 제품에 포함된 것인지 검색하는 단계; 및 검색 후, 포함된 제품 집합으로 구성되는 시험 수트에 분배하여 상기 제품 라인 시험 항목 파티션 테이블을 생성하는 단계를 포함할 수 있다.
상기 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 단계는, 소스코드 비교 분석 도구를 이용하여 상기 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드인 변경된 메소드 또는 필드의 집합을 추출할 수 있다.
상기 제품 라인 코드 파티션 테이블에서 상기 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 단계는, 추출된 상기 변경된 메소드 또는 필드가 포함된 스페이스를 식별하는 단계; 및 상기 제품 라인 코드 파티션 테이블에서 상기 변경된 메소드 또는 필드를 검색하여, 제품 라인을 구성하는 각각의 메소드 또는 필드를 포함하는 스페이스의 집합을 추출하는 단계를 포함할 수 있다.
상기 제품 라인 시험 항목 파티션 테이블을 활용하여 상기 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 단계는, 상기 변경된 스페이스의 집합에 대해 각 스페이스를 포함하는 제품 집합의 모든 부분 집합을 멱 집합 연산을 통해 획득하여, 각 부분 집합은 변경되지 않은 제품을 원소로 갖지 않도록 할 수 있다.
다른 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템은, 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 제품 라인 코드 파티션 테이블 생성부; 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 제품 라인 시험 항목 파티션 테이블 생성부; 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 변경된 소스코드 추출부; 상기 제품 라인 코드 파티션 테이블에서 상기 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 변경된 스페이스 집합 추출부; 및 상기 제품 라인 시험 항목 파티션 테이블을 활용하여 상기 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 회귀 시험 항목 선택부를 포함하고, 상기 스페이스의 집합은, 제품 군의 제품들의 소스코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 집합이다.
제품 라인을 구성하는 모든 상기 제품 라인 소스코드와 상기 제품 라인 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택할 수 있다.
상기 제품 라인 코드 파티션 테이블 생성부는, 제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집하고, 추출한 각각의 상기 메소드와 필드가 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 스페이스로 분배하여 상기 제품 라인 코드 파티션 테이블을 생성할 수 있다.
상기 제품 라인 코드 파티션 테이블 생성부는, 추출하는 항목들을 서로 구별될 수 있도록 유일한 식별자를 사용하여, 상기 제품 라인 코드 파티션 테이블을 생성할 수 있다.
상기 제품 라인 시험 항목 파티션 테이블 생성부는, 제품 라인을 구성하는 모든 제품의 제품 라인 구성 시험 항목을 추출하여 중복 없이 수집하고, 추출한 각각의 상기 제품 라인 시험 항목이 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 시험 수트에 분배하여 상기 제품 라인 시험 항목 파티션 테이블을 생성할 수 있다.
상기 변경된 소스코드 추출부는, 소스코드 비교 분석 도구를 이용하여 상기 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드인 변경된 메소드 또는 필드의 집합을 추출할 수 있다.
상기 변경된 스페이스 집합 추출부는, 추출된 상기 변경된 메소드 또는 필드가 포함된 스페이스를 식별하고, 상기 제품 라인 코드 파티션 테이블에서 상기 변경된 메소드 또는 필드를 검색하여, 제품 라인을 구성하는 각각의 메소드 또는 필드를 포함하는 스페이스의 집합을 추출할 수 있다.
실시예들에 따르면 제품 라인을 구성하는 모든 상기 제품 라인 소스코드와 상기 제품 라인 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택함으로써, 시간적/비용적인 현실적 한계를 극복할 수 있는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템을 제공할 수 있다.
실시예들에 따르면 소스코드와 시험 항목만을 활용하여 단일 제품을 위한 방법을 단순히 제품 라인에 적용하는 방법보다 월등히 적은 비용으로 회귀 시험을 수행할 수 있다. 또한, 선택된 시험 항목들을 재시험함으로써 모든 시험 항목을 재시험하는 것과 같은 효과를 얻을 수 있다.
도 1은 일 실시예에 따른 제품 라인을 구성하는 제품들의 각 코드 영역을 설명하기 위한 도면이다.
도 2는 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템을 나타내는 블록도이다.
도 3은 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법을 나타내는 흐름도이다.
도 4는 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법의 예를 나타내는 흐름도이다.
이하, 첨부된 도면을 참조하여 실시예들을 설명한다. 그러나, 기술되는 실시예들은 여러 가지 다른 형태로 변형될 수 있으며, 본 발명의 범위가 이하 설명되는 실시예들에 의하여 한정되는 것은 아니다. 또한, 여러 실시예들은 당해 기술분야에서 평균적인 지식을 가진 자에게 본 발명을 더욱 완전하게 설명하기 위해서 제공되는 것이다. 도면에서 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
아래에서, 회귀 시험 선택은 시스템에 변경이 발생되었을 경우, 기존 시험 항목들 중 재시험해야 하는 시험 항목을 선택하는 활동을 회귀 시험 선택이라 한다.
그리고, 변경-무관 시험 항목은 코드 변경에 의해서 영향을 받지 않는 부분만을 실행하는 시험 항목을 변경-무관 시험 항목이라고 한다.
또한, 제품 군의 제품들의 코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 각각을 하나의 스페이스라고 한다.
한편, 변경-무관 시험 항목은 시스템의 변경에 의해 발생된 결함을 찾는데 도움이 되지 않으므로, 이들을 식별하여 제거할 필요가 있다. 이들을 제거하기 위해 제품 라인의 공통성/가변성을 기반으로 변경된 코드를 시험하지 않는 시험 항목들을 제거하여 선택적으로 재시험할 수 있다.
아래의 실시예들은 제품 라인에 변경이 발생되었을 경우 기존에 개발된 기능들에 결함이 없음(correctness)을 보장하기 위해, 코드를 기반으로 기존 시험 항목들을 재시험하는 자동화된 방법을 제시하는 것이다. 특히, 기존의 방법을 제품 라인에 적용했을 때 발생되는 시간적/비용적인 현실적 한계를 극복할 수 있는 제품 라인에 특화된 효율적인 방법을 제시할 수 있다.
실시예들에 따르면, 제품 라인을 구성하는 모든 소스코드와 시험 항목을 제품간의 공통성 및 가변성을 기반으로 각각 파티션으로 구성하고, 변경이 발생된 코드에 영향을 받은 파티션을 선택하는 알고리즘을 통해 선택된 파티션을 구성하는 시험 항목을 선택함으로써, 재시험해야 할 시험 항목들을 얻을 수 있다.
실시예들에 따르면, 소스코드와 시험 항목만을 활용하여 단일 제품을 위한 방법을 단순히 제품 라인에 적용하는 방법보다 월등히 적은 비용으로 회귀 시험을 수행할 수 있다. 또한, 선택된 시험 항목들을 재시험함으로써 모든 시험 항목을 재시험하는 것과 같은 효과를 얻을 수 있다. 즉, 오류가 발생되는 시험항목을 모두 선택할 수 있다. 이는 재시험할 필요가 없는 시험 항목들을 효과적으로 식별할 수 있음을 의미한다.
도 1은 일 실시예에 따른 제품 라인을 구성하는 제품들의 각 코드 영역을 설명하기 위한 도면이다.
먼저, 다음의 두 가지에 대한 가정을 할 수 있다.
첫 번째, 하나의 스페이스에서 발생한 변경은 상기의 스페이스를 포함하는 제품에 속하는 스페이스들 이외의 다른 스페이스에는 영향은 미치지 않는다.
두 번째, 기존 시험 항목들은 하나의 스페이스의 코드와 상기의 스페이스를 포함하는 제품에 속하는 스페이스들 이외에 다른 스페이스의 코드를 함께 실행하는 시험 항목을 가지지 않는다.
첫 번째 가정에서, 하나의 코드의 변경은 그 코드를 포함하지 않는 제품에 영향을 줄 수 없다. 이는 제품 라인으로부터 도출된 각 제품의 코드가 서로 독립적으로 구동한다면 성립한다.
두 번째 가정에서, 시험 항목을 구성하는 함수 호출들은 하나의 제품 내의 코드로 구성된다. 함수 호출이 하나의 코드와 상기의 코드를 포함하지 않는 다른 제품의 코드로 구성되는 시험 항목은 여러 제품을 동시에 시험하는 시험 항목으로, 올바르게 작성되지 않은 것이다. 따라서 고려할 필요가 없으므로 두 번째 가정이 성립된다.
도 1을 참조하면, 제품 라인을 구성하는 제품들의 각 코드 영역의 예를 나타내는 것으로, 제품 라인으로부터 도출된 세 제품 P1, P2, P3을 구성하는 스페이스들을 나타낼 수 있다.
P1은 스페이스 A, D, E, G로 구성되고, P2는 스페이스 B, D, F, G로 구성되며, P3은 스페이스 C, E, F, G로 구성된다. 스페이스 A, B, C는 각 제품의 특정한 코드이고, 스페이스 D, E, F, G는 두 제품 이상의 공통된 코드이다.
다음의 두 가지 상황의 예를 통해 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법의 효과를 확인할 수 있다.
먼저, 제품의 특정한 코드가 변경된 경우를 하나의 예를 들어 구체적으로 설명한다.
스페이스 A의 코드가 변경된 경우, 스페이스 A를 포함하는 P1 전체(스페이스 A, D, E, G)를 시험할 수 있으나 비효율적인 방법이다. 따라서 변경으로부터 영향을 받지 않는 시험 항목들을 제거할 수 있다.
위에서 설명한 첫 번째 가정에 의해, 스페이스 A의 코드 변경은 스페이스 A, D, E, G의 코드에만 영향을 줄 수 있다. 또한 두 번째 가정에 의해, 스페이스 B 또는 C 또는 F의 코드를 실행하면서 스페이스 A의 코드를 실행하는 TCs는 존재하지 않는다.
이때, 스페이스 A의 코드는 P2, P3에 포함되지 않는 코드이므로, 스페이스 A의 코드를 실행하는 시험 항목들은 P2, P3에서 실행될 수 없다. 따라서 P2 또는 P3에서 실행 가능한 시험 항목들은 모두 재시험할 필요가 없다.
다시 말하면 스페이스 A의 코드가 변경되는 경우 P1에서만 실행 가능한 시험 항목들만 재시험하면 된다.
다음으로, 공통 코드가 변경된 경우를 하나의 예를 들어 구체적으로 설명한다.
스페이스 F의 코드가 변경된 경우, 스페이스 F를 포함하는 P2, P3 전체(스페이스 B, C, D, E, F, G)를 시험하는 것이 비효율적이므로 변경으로부터 영향을 받지 않는 시험 항목들을 제거할 수 있다. 첫 번째 가정에 의해, 스페이스 F의 코드 변경은 스페이스 A의 코드에 영향을 줄 수 없고, 두 번째 가정에 의해, 스페이스 A의 코드를 실행하면서 스페이스 F의 코드를 실행하는 시험 항목들은 존재하지 않는다.
이때, 위에서 설명한 예와 마찬가지로 스페이스 F의 코드를 실행하는 시험 항목들만 재시험할 수 있다. 스페이스 F의 코드는 P1에 포함되지 않는 코드이므로, 스페이스 F를 실행하는 시험 항목들은 P1에서 실행될 수 없다. 따라서 P1에서 실행 가능한 시험 항목들은 모두 재시험할 필요가 없다.
도 2는 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템을 나타내는 블록도이다.
도 2를 참조하면, 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템(200)은 제품 라인 코드 파티션 테이블 생성부(210), 제품 라인 시험 항목 파티션 테이블 생성부(220), 변경된 소스코드 추출부(230), 변경된 스페이스 집합 추출부(240), 및 회귀 시험 항목 선택부(250)를 포함하여 이루어질 수 있다. 실시예에 따라 입력부 및 출력부를 더 포함할 수 있다.
제품 라인 코드 파티션 테이블 생성부(210)는 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성할 수 있다.
제품 라인 코드 파티션 테이블 생성부(210)는 제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집하고, 추출한 각각의 메소드와 필드가 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 스페이스로 분배하여 제품 라인 코드 파티션 테이블을 생성할 수 있다.
제품 라인 코드 파티션 테이블 생성부(210)는 추출하는 항목들을 서로 구별될 수 있도록 유일한 식별자를 사용하여, 제품 라인 코드 파티션 테이블을 생성할 수 있다.
제품 라인 시험 항목 파티션 테이블 생성부(220)는 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성할 수 있다.
제품 라인 시험 항목 파티션 테이블 생성부(220)는 제품 라인을 구성하는 모든 제품의 제품 라인 구성 시험 항목을 추출하여 중복 없이 수집하고, 추출한 각각의 제품 라인 시험 항목이 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 시험 수트에 분배하여 제품 라인 시험 항목 파티션 테이블을 생성할 수 있다.
변경된 소스코드 추출부(230)는 기설정된 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출할 수 있다.
변경된 소스코드 추출부(230)는 소스코드 비교 분석 도구를 이용하여 기설정된 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드인 변경된 메소드 또는 필드의 집합을 추출할 수 있다.
변경된 스페이스 집합 추출부(240)는 제품 라인 코드 파티션 테이블에서 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출할 수 있다.
여기에서, 스페이스의 집합은 제품 군의 제품들의 소스코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 집합이다.
변경된 스페이스 집합 추출부(240)는 추출된 변경된 메소드 또는 필드가 포함된 스페이스를 식별하고, 제품 라인 코드 파티션 테이블에서 변경된 메소드 또는 필드를 검색하여, 제품 라인을 구성하는 각각의 메소드 또는 필드를 포함하는 스페이스의 집합을 추출할 수 있다.
회귀 시험 항목 선택부(250)는 제품 라인 시험 항목 파티션 테이블을 활용하여 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택할 수 있다.
회귀 시험 항목 선택부(250)는 변경된 스페이스의 집합에 대해 각 스페이스를 포함하는 제품 집합의 모든 부분 집합을 멱 집합 연산을 통해 획득하여, 각 부분 집합은 변경되지 않은 제품을 원소로 갖지 않도록 할 수 있다.
따라서 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템(200)은 제품 라인을 구성하는 모든 제품 라인 소스코드와 제품 라인 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택할 수 있다.
실시예들에 따르면 제품 라인을 구성하는 모든 제품 라인 소스코드와 제품 라인 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택함으로써, 시간적/비용적인 현실적 한계를 극복할 수 있다.
도 3은 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법을 나타내는 흐름도이다.
도 3을 참조하면, 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법은 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 단계(310), 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 단계(320), 기설정된 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 단계(330), 제품 라인 코드 파티션 테이블에서 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 단계(340), 및 제품 라인 시험 항목 파티션 테이블을 활용하여 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 단계(350)를 포함하여 이루어질 수 있다.
여기에서, 스페이스의 집합은 제품 군의 제품들의 소스코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 집합이다.
일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법은 제품 라인을 구성하는 모든 제품 소스코드와 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택할 수 있다.
아래에서 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법을 하나의 예를 들어 더 구체적으로 설명하기로 한다.
일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법은 도 2에서 설명한 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템을 이용하여 더 구체적으로 설명할 수 있다. 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템은 제품 라인 코드 파티션 테이블 생성부, 제품 라인 시험 항목 파티션 테이블 생성부, 변경된 소스코드 추출부, 변경된 스페이스 집합 추출부, 및 회귀 시험 항목 선택부를 포함하여 이루어질 수 있다.
단계(310)에서, 제품 라인 코드 파티션 테이블 생성부는 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성할 수 있다.
이때, 제품 라인 코드 파티션 테이블 생성부는 제품 라인 소스코드를 입력 받을 수 있다.
제품 라인 코드 파티션 테이블 생성부는 제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집할 수 있다. 여기서, 추출하는 항목들을 서로 구별될 수 있도록 유일한 식별자를 사용하여, 제품 라인 코드 파티션 테이블을 생성할 수 있다.
그리고, 제품 라인 코드 파티션 테이블 생성부는 추출한 각각의 메소드와 필드가 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 스페이스로 분배하여 제품 라인 코드 파티션 테이블을 생성할 수 있다.
이에 따라 제품 라인 코드 파티션 테이블은 제품으로 구성될 수 있는 모든 공통성 및 가변성을 기반으로 소스코드 파티션을 만들고, 각 파티션에 포함되는 소스코드를 나타낼 수 있다.
단계(320)에서, 제품 라인 시험 항목 파티션 테이블 생성부는 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성할 수 있다.
이때, 제품 라인 시험 항목 파티션 테이블 생성부는 제품 라인 시험 항목을 입력 받을 수 있다.
제품 라인 시험 항목 파티션 테이블 생성부는 제품 라인을 구성하는 모든 제품의 제품 라인 구성 시험 항목을 추출하여 중복 없이 수집하고, 추출한 각각의 제품 라인 시험 항목이 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 시험 수트에 분배하여 제품 라인 시험 항목 파티션 테이블을 생성할 수 있다.
이에 따라 제품 라인 시험 항목 파티션 테이블은 제품으로 구성될 수 있는 모든 공통성 및 가변성을 기반으로 시험 항목 파티션을 만들고, 각 파티션에 포함되는 시험 항목을 나타낼 수 있다.
단계(330)에서, 변경된 소스코드 추출부는 기설정된 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출할 수 있다.
이때, 변경된 소스코드 추출부에 기존 제품 라인 소스코드와 변경된 제품 라인 소스코드가 입력될 수 있다. 또한 기존 제품 라인 소스코드는 기입력되거나 기저장될 수 있고, 변경된 제품 라인 소스코드만 입력될 수 있다.
변경된 소스코드 추출부는 소스코드 비교 분석 도구를 이용하여 기설정된 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드인 변경된 메소드 또는 필드의 집합을 추출할 수 있다.
단계(340)에서, 변경된 스페이스 집합 추출부는 제품 라인 코드 파티션 테이블에서 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출할 수 있다.
여기에서, 스페이스의 집합은 제품 군의 제품들의 소스코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 집합이다.
이때, 변경된 스페이스 집합 추출부는 제품 라인 코드 파티션 테이블부로부터 제품 라인 코드 파티션 테이블을 전달 받고, 변경된 소스코드 추출부로부터 변경된 메소드 또는 필드 집합을 전달 받을 수 있다.
변경된 스페이스 집합 추출부는 추출된 변경된 메소드 또는 필드가 포함된 스페이스를 식별하고, 제품 라인 코드 파티션 테이블에서 변경된 메소드 또는 필드를 검색하여, 제품 라인을 구성하는 각각의 메소드 또는 필드를 포함하는 스페이스의 집합을 추출할 수 있다.
단계(350)에서, 회귀 시험 항목 선택부는 제품 라인 시험 항목 파티션 테이블을 활용하여 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택할 수 있다.
이때, 회귀 시험 항목 선택부는 변경된 스페이스 집합 추출부로부터 변경된 스페이스 집합을 전달 받고, 제품 라인 시험 항목 파티션 테이블부로부터 제품 라인 시험 항목 파티션 테이블의 정보를 전달 받을 수 있다.
회귀 시험 항목 선택부는 변경된 스페이스의 집합에 대해 각 스페이스를 포함하는 제품 집합의 모든 부분 집합을 멱 집합 연산을 통해 획득하여, 각 부분 집합은 변경되지 않은 제품을 원소로 갖지 않도록 할 수 있다.
실시예들에 따르면 제품 라인을 구성하는 모든 제품 라인 소스코드와 제품 라인 시험 항목들을 일괄적으로 분석하여 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택함으로써, 소스코드와 시험 항목만을 활용하여 단일 제품을 위한 방법을 단순히 제품 라인에 적용하는 방법보다 월등히 적은 비용으로 회귀 시험을 수행할 수 있다.
또한, 선택된 시험 항목들을 재시험함으로써 모든 시험 항목을 재시험하는 것과 같은 효과를 얻을 수 있다.
도 4는 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법의 예를 나타내는 흐름도이다.
도 4를 참조하면, 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법은 제품 라인을 구성하는 모든 제품 소스코드와 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택할 수 있다.
이하, 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법의 예를 각 단계별로 보다 상세히 설명한다. 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법은 도 2에서 설명한 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템에 의해 더 구체적으로 설명할 수 있다. 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템은 제품 라인 코드 파티션 테이블 생성부, 제품 라인 시험 항목 파티션 테이블 생성부, 변경된 소스코드 추출부, 변경된 스페이스 집합 추출부, 및 회귀 시험 항목 선택부를 포함하여 이루어질 수 있다. 아래에서는 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템을 간단히 회귀 시험 항목 선택 시스템이라 하기로 한다.
단계(410)에서, 회귀 시험 항목 선택 시스템은 제품 라인의 공통성 및 가변성을 기반으로 소스코드를 분할할 수 있다.
여기에서, 입력은 제품 라인 소스코드이고, 출력은 제품 라인 코드 파티션 테이블이 될 수 있다.
더 구체적으로, 회귀 시험 항목 선택 시스템은 제품 라인 소스코드로부터 도출된 모든 제품 소스코드를 공통성 및 가변성을 기반으로 일괄적으로 스페이스로 분할하여 제품 라인 코드 파티션 테이블을 만들 수 있다.
표 1은 제품 라인 코드 파티션 테이블을 만드는 알고리즘을 나타낸다.
Figure pat00004
표 1을 참조하면, 먼저, 제품 라인을 구성하는 모든 제품의 구성 메소드와 필드 항목을 추출하여 중복 없이 모을 수 있다(알고리즘의 줄(line) 1-5). 추출하는 항목들은 서로 구별될 수 있도록 유일한 식별자를 사용할 수 있다.
그리고, 추출한 각 메소드와 필드가 어느 제품에 포함된 것인지 검색하여(줄 8) 포함된 제품 집합으로 구성되는 스페이스로 분배함으로써(줄 10) 제품 라인 코드 파티션 테이블을 만들 수 있다(줄 6-15).
표 2는 일 실시예에 따른 제품 라인의 공통성 및 가변성을 기반으로 분할된 소스 코드 파티션 테이블을 나타낸다.
Figure pat00005
표 2를 참조하면, 일 실시예에 따른 제품 라인의 공통성 및 가변성을 기반으로 분할된 소스 코드 파티션 테이블을 나타내는 것으로, 앞에서 설명한 도 1을 대상으로 제품 라인의 소스코드를 코드 파티션 테이블로 구성한 것이다.
더 구체적으로, 세 개의 제품으로 구성될 수 있는 모든 공통성 및 가변성을 기반으로 소스코드 파티션을 만들고, 각 파티션에 포함되는 소스코드를 나타낸 것이다. 이러한 테이블은 제품 라인의 회귀 시험 항목을 효율적으로 선택하기 위해 이하에서 설명하는 단계(440)에서 활용될 수 있다.
여기에서, 제품 라인의 특징인 공통성 및 가변성을 활용하여 제품 라인으로부터 도출되는 제품들을 일괄적으로 분석하기 때문에, 제품 라인을 구성하는 각 제품을 하나하나 별개로 분석하지 않고 제품 라인 전체를 위한 하나의 파티션 테이블 생성될 수 있다.
단계(420)에서, 회귀 시험 항목 선택 시스템은 제품 라인 시험 항목을 분할할 수 있다.
여기에서, 입력은 제품 라인 시험 항목이고, 출력은 제품 라인 시험 항목 파티션 테이블이 될 수 있다.
단계(410)과 같이, 회귀 시험 항목 선택 시스템은 제품 라인을 구성하는 모든 시험 항목들을 공통성 및 가변성을 기반으로 일괄적으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성할 수 있다.
표 3은 제품 라인 코드 파티션 테이블을 만드는 알고리즘을 나타낸다.
Figure pat00006
표 3을 참조하면, 먼저, 제품 라인을 구성하는 모든 제품의 구성 시험 항목을 추출하여 중복 없이 모을 수 있다(알고리즘의 줄 1-4).
그리고, 추출한 각 시험 항목이 어느 제품에 포함된 것인지 검색하여(줄 8) 포함된 제품 집합으로 구성되는 시험 수트에 분배함으로써(줄 9) 제품 라인 시험 항목 파티션 테이블을 만들 수 있다(줄 5-14).
표 4는 일 실시예에 따른 제품 라인의 공통성 및 가변성을 기반으로 분할된 시험 항목 파티션 테이블을 나타낸다.
Figure pat00007
표 4를 참조하면, 일 실시예에 따른 제품 라인의 공통성 및 가변성을 기반으로 분할된 시험 항목 파티션 테이블을 나타내는 것으로, 앞에서 설명한 도 1을 대상으로 제품 라인 시험 항목을 시험 항목 파티션 테이블로 구성한 것이다.
더 구체적으로, 세 개의 제품으로 구성될 수 있는 모든 공통성 및 가변성을 기반으로 시험 항목 파티션을 만들고, 각 파티션에 포함되는 시험 항목을 나타낸 것이다. 이러한 테이블은 제품 라인의 회귀 시험 항목을 효율적으로 선택하기 위해 이하에서 설명하는 단계(450)에서 활용될 수 있다.
여기에서 제품 라인의 특징인 공통성 및 가변성을 활용하여 제품 라인을 구성하는 시험 항목들을 일괄적으로 분석하기 때문에, 제품 라인을 구성하는 각 제품의 시험 항목들을 하나하나 별개로 분석하지 않고 제품 라인 전체를 위한 하나의 파티션 테이블 생성할 수 있다.
단계(430)에서, 회귀 시험 항목 선택 시스템은 변경된 소스코드를 추출할 수 있다.
여기에서 입력은 기존 제품 라인 소스코드와, 변경된 제품 라인 소스코드가 되고, 출력은 변경된 메소드 및 필드 집합이 될 수 있다.
더 구체적으로, 회귀 시험 항목 선택 시스템은 두 버전의 제품 라인 코드로부터 변경된 제품 라인 소스코드를 추출할 수 있다. 예컨대 변경된 소스코드를 메소드와 필드 단위로 추출할 수 있다. 이는 기존에 연구된 여러 가지 소스코드 비교 분석 도구들(e.g. ccfinder, WinMerge 등)을 통해 쉽게 추출할 수 있다.
단계(440)에서, 회귀 시험 항목 선택 시스템은 변경된 소스코드의 스페이스를 식별할 수 있다.
여기에서, 입력은 제품 라인 코드 파티션 테이블과, 변경된 메소드 및 필드 집합이 되고, 출력은 변경된 스페이스 집합이 될 수 있다.
더 구체적으로, 회귀 시험 항목 선택 시스템은 단계(430)에서 추출한 변경된 메소드들과 필드들이 포함된 스페이스들을 식별할 수 있다. 그리고 회귀 시험 항목 선택 시스템은 단계(410)에서 생성한 제품 라인 코드 파티션 테이블에서 변경된 메소드 또는 필드를 검색하여, 제품 라인을 구성하는 각 메소드와 필드를 포함하는 스페이스를 손쉽게 얻을 수 있다.
예를 들어, 제품 3에만 포함된 소스코드가 변경되었을 경우, [표 2]를 검색하여 해당 소스코드가 스페이스 C에 포함된다는 것을 알 수 있다.
단계(450)에서, 회귀 시험 항목 선택 시스템은 회귀 시험 항목을 선택할 수 있다.
여기에서 입력은 변경된 스페이스 집합과, 제품 라인 시험 항목 파티션 테이블이고, 출력은 선택된 시험 항목 집합이 될 수 있다.
더 구체적으로, 회귀 시험 항목 선택 시스템은 제품 라인 시험 항목 파티션 테이블을 활용하여 변경된 스페이스 집합으로부터 변경 무관 시험 항목들을 제거함으로써, 재시험할 시험 항목을 선택할 수 있다.
표 5는 변경된 스페이스로부터 재시험해야 할 시험 항목들을 선택하는 알고리즘을 나타낸다.
Figure pat00008
표 5를 참조하면, 변경된 스페이스로부터 재시험해야 할 시험 항목들을 선택하는 알고리즘을 나타내는 것으로, 단계(440)에서 도출된 변경된 스페이스들(알고리즘의 줄 3-5)에 대해, 각 스페이스를 포함하는 제품 집합의 모든 부분 집합을 멱 집합 연산을 통해 얻을 수 있다(줄 6-8). 그러면 각 부분 집합은 변경되지 않은 제품을 원소로 갖지 않게 된다.
그리고, 각 부분 집합에 대응하는 시험 항목들을 [표 4]에서 선택하면 변경된 스페이스를 포함하는 제품을 위한 시험 항목들이 모두 선택될 수 있다(줄 9-14).
다음은 이상에서 설명한 일 실시예에 따른 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법의 알고리즘이 효과적으로 동작하는 것을 하나의 예를 들어 더 구체적으로 설명한다.
하나의 스페이스의 코드가 변경되었을 경우, 그 코드를 실행하지 않아서 제거할 수 있는 시험 항목들이 존재한다. 그 이유는 위에서 설명한 두 번째 가정에 의해 변경된 스페이스를 포함하지 않는 제품을 시험하는 시험 항목들은 변경된 코드를 실행하지 않기 때문이다.
예를 들어 도 1의 스페이스 A가 변경된 경우, P2 또는 P3을 시험하는 시험 항목들은 스페이스 A의 코드를 실행하지 않기 때문에 재시험할 필요가 없다.
다시 말해서, P2 또는 P3를 시험하는 시험 항목들 (TS({P2}), TS({P3}), TS({P1,P2}), TS({P1,P3}), TS({P2,P3}), TS({P1,P2,P3}))은 모두 스페이스 A의 코드를 실행하지 않기 때문에 재시험하지 않고 오직 P1을 위한 TS({P1})만 재시험하면 된다.
마찬가지로, 스페이스 D가 변경된 경우, P3을 시험하는 시험 항목들은 스페이스 D의 코드를 실행하지 않으므로 P3를 시험하는 시험 항목들(TS({P3}), TS({P1,P3}), TS({P2,P3}), TS({P1,P2,P3}))은 재시험할 필요가 없다.
따라서 TS({P1}), TS({P2}), TS({P1,P2})만 재시험하면 된다. 이를 수행하기 위해 알고리즘(줄 6-8)에서 멱 집합 연산을 사용할 수 있다.
이상에서 설명한 바와 같이, 실시예들은 제품 라인 소스코드와 시험 항목을 분석하고 이들을 가공하여 제품 라인 소스코드의 변경에 대해 재시험해야 하는 시험 항목을 선택하는 구체적인 방법을 포함하고 있다.
실시예들에 따르면 회귀 시험 항목을 선택하는 알고리즘을 제시하여 전문가가 참여할 필요 없이 자동으로 시험 항목을 선택해 주기 때문에 매우 짧은 시간 내에 효과적인 결과를 얻을 수 있다.
또한, 실시예들에 따르면 소스코드 수준에서 실행이 가능한 회귀 시험 항목을 선택하기 때문에 실제 시스템을 시험하는데 있어서 실용성이 매우 높다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 컨트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPA(field programmable array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (15)

  1. 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 단계;
    입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 단계;
    기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 단계;
    상기 제품 라인 코드 파티션 테이블에서 상기 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 단계; 및
    상기 제품 라인 시험 항목 파티션 테이블을 활용하여 상기 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 단계
    를 포함하고,
    상기 스페이스의 집합은, 제품 군의 제품들의 소스코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 집합인 것을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  2. 제1항에 있어서,
    제품 라인을 구성하는 모든 상기 제품 라인 소스코드와 상기 제품 라인 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  3. 제1항에 있어서,
    상기 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 단계는,
    제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집하는 단계;
    추출한 각각의 상기 메소드와 필드가 어느 제품에 포함된 것인지 검색하는 단계; 및
    검색 후, 포함된 제품 집합으로 구성되는 스페이스로 분배하여 상기 제품 라인 코드 파티션 테이블을 생성하는 단계
    를 포함하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  4. 제3항에 있어서,
    상기 제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집하는 단계는,
    추출하는 항목들을 서로 구별될 수 있도록 유일한 식별자를 사용하여, 상기 제품 라인 코드 파티션 테이블을 생성하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  5. 제1항에 있어서,
    상기 입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 단계는,
    제품 라인을 구성하는 모든 제품의 제품 라인 구성 시험 항목을 추출하여 중복 없이 수집하는 단계;
    추출한 각각의 상기 제품 라인 시험 항목이 어느 제품에 포함된 것인지 검색하는 단계;
    검색 후, 포함된 제품 집합으로 구성되는 시험 수트에 분배하여 상기 제품 라인 시험 항목 파티션 테이블을 생성하는 단계
    를 포함하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  6. 제1항에 있어서,
    상기 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 단계는,
    소스코드 비교 분석 도구를 이용하여 상기 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드인 변경된 메소드 또는 필드의 집합을 추출하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  7. 제6항에 있어서,
    상기 제품 라인 코드 파티션 테이블에서 상기 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 단계는,
    추출된 상기 변경된 메소드 또는 필드가 포함된 스페이스를 식별하는 단계; 및
    상기 제품 라인 코드 파티션 테이블에서 상기 변경된 메소드 또는 필드를 검색하여, 제품 라인을 구성하는 각각의 메소드 또는 필드를 포함하는 스페이스의 집합을 추출하는 단계
    를 포함하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  8. 제7항에 있어서,
    상기 제품 라인 시험 항목 파티션 테이블을 활용하여 상기 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 단계는,
    상기 변경된 스페이스의 집합에 대해 각 스페이스를 포함하는 제품 집합의 모든 부분 집합을 멱 집합 연산을 통해 획득하여, 각 부분 집합은 변경되지 않은 제품을 원소로 갖지 않도록 하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법.
  9. 입력 받은 제품 라인 소스코드를 제품 라인의 공통성 및 가변성을 기반으로 분할하여 제품 라인 코드 파티션 테이블을 생성하는 제품 라인 코드 파티션 테이블 생성부;
    입력 받은 제품 라인 시험 항목을 공통성 및 가변성을 기반으로 분할하여 제품 라인 시험 항목 파티션 테이블을 생성하는 제품 라인 시험 항목 파티션 테이블 생성부;
    기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드를 추출하는 변경된 소스코드 추출부;
    상기 제품 라인 코드 파티션 테이블에서 상기 변경된 소스코드를 검색하여, 제품 라인을 구성하는 변경된 스페이스의 집합을 추출하는 변경된 스페이스 집합 추출부; 및
    상기 제품 라인 시험 항목 파티션 테이블을 활용하여 상기 변경된 스페이스의 집합으로부터 변경 무관 시험 항목들을 제거하고, 재시험할 시험 항목을 선택하는 회귀 시험 항목 선택부
    를 포함하고,
    상기 스페이스의 집합은, 제품 군의 제품들의 소스코드를 공통성 및 가변성을 기반으로 분할하여 나누어진 코드 세그먼트들의 집합인 것을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템.
  10. 제9항에 있어서,
    제품 라인을 구성하는 모든 상기 제품 라인 소스코드와 상기 제품 라인 시험 항목들을 일괄적으로 분석하여, 한 번의 수행으로 제품 라인 전체를 위한 회귀 시험 항목을 선택하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템.
  11. 제9항에 있어서,
    상기 제품 라인 코드 파티션 테이블 생성부는,
    제품 라인을 구성하는 모든 제품의 구성인 메소드와 필드 항목을 추출하여 중복 없이 수집하고, 추출한 각각의 상기 메소드와 필드가 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 스페이스로 분배하여 상기 제품 라인 코드 파티션 테이블을 생성하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템.
  12. 제11항에 있어서,
    상기 제품 라인 코드 파티션 테이블 생성부는,
    추출하는 항목들을 서로 구별될 수 있도록 유일한 식별자를 사용하여, 상기 제품 라인 코드 파티션 테이블을 생성하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템.
  13. 제9항에 있어서,
    상기 제품 라인 시험 항목 파티션 테이블 생성부는,
    제품 라인을 구성하는 모든 제품의 제품 라인 구성 시험 항목을 추출하여 중복 없이 수집하고, 추출한 각각의 상기 제품 라인 시험 항목이 어느 제품에 포함된 것인지 검색하여, 포함된 제품 집합으로 구성되는 시험 수트에 분배하여 상기 제품 라인 시험 항목 파티션 테이블을 생성하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템.
  14. 제9항에 있어서,
    상기 변경된 소스코드 추출부는,
    소스코드 비교 분석 도구를 이용하여 상기 기설정된 상기 제품 라인 소스코드와 변경된 제품 라인 소스코드로부터 변경된 소스코드인 변경된 메소드 또는 필드의 집합을 추출하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템.
  15. 제14항에 있어서,
    상기 변경된 스페이스 집합 추출부는,
    추출된 상기 변경된 메소드 또는 필드가 포함된 스페이스를 식별하고, 상기 제품 라인 코드 파티션 테이블에서 상기 변경된 메소드 또는 필드를 검색하여, 제품 라인을 구성하는 각각의 메소드 또는 필드를 포함하는 스페이스의 집합을 추출하는 것
    을 특징으로 하는 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 시스템.
KR1020160149387A 2016-11-10 2016-11-10 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템 KR101934163B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160149387A KR101934163B1 (ko) 2016-11-10 2016-11-10 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160149387A KR101934163B1 (ko) 2016-11-10 2016-11-10 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20180052799A true KR20180052799A (ko) 2018-05-21
KR101934163B1 KR101934163B1 (ko) 2019-01-02

Family

ID=62453169

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160149387A KR101934163B1 (ko) 2016-11-10 2016-11-10 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101934163B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102226387B1 (ko) * 2019-06-03 2021-03-11 한국과학기술원 효율적인 제품 라인 회귀 시험을 위해 시험 항목의 실행 횟수를 줄이는 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784778A (ja) * 1993-09-16 1995-03-31 Fujitsu Ltd ソースプログラムの試験項目編集・管理装置
KR20090056525A (ko) * 2007-11-30 2009-06-03 인하대학교 산학협력단 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법
KR101393807B1 (ko) * 2012-11-22 2014-05-12 슈어소프트테크주식회사 소프트웨어 회귀 검증 장치 및 그 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0784778A (ja) * 1993-09-16 1995-03-31 Fujitsu Ltd ソースプログラムの試験項目編集・管理装置
KR20090056525A (ko) * 2007-11-30 2009-06-03 인하대학교 산학협력단 객체 분할을 이용한 객체지향프로그램의 동적 분할시스템및 그 방법
KR101393807B1 (ko) * 2012-11-22 2014-05-12 슈어소프트테크주식회사 소프트웨어 회귀 검증 장치 및 그 방법

Also Published As

Publication number Publication date
KR101934163B1 (ko) 2019-01-02

Similar Documents

Publication Publication Date Title
US20150074669A1 (en) Task-based modeling for parallel data integration
WO2015195676A3 (en) Computer-implemented tools and methods for extracting information about the structure of a large computer software system, exploring its structure, discovering problems in its design, and enabling refactoring
KR101535813B1 (ko) 복합 이벤트 처리를 위한 이벤트 구성 규칙의 동적 업데이트를 위한 시스템 및 방법
JP2018200305A5 (ko)
CN105068920A (zh) 一种基于shell测试rack资产信息稳定性的方法
CN108170602B (zh) 一种测试用例生成方法、装置、终端及计算机可读介质
CN114546738A (zh) 服务器通用测试方法、系统、终端及存储介质
CN110737437A (zh) 一种基于代码集成的编译方法和装置
JPWO2012104907A1 (ja) プログラムの実行性能評価のためのテストデータ生成方法
CN103473178A (zh) 一种优化测试流程执行的方法及系统
Schlagkamp et al. Understanding user behavior: from HPC to HTC
CN108572892B (zh) 一种基于PowerPC多核处理器的离线测试方法和装置
KR101934163B1 (ko) 제품 라인을 위한 코드 기반의 자동화된 회귀 시험 항목 선택 방법 및 시스템
Nagamoto et al. Locating a faulty interaction in pair-wise testing
CN105224450A (zh) 并发测试方法及装置
CN113032281A (zh) 一种代码覆盖率实时获取方法及装置
JP7259973B2 (ja) データ分析処理装置、データ分析処理方法及びデータ分析処理プログラム
CN104572921B (zh) 一种跨数据中心的数据同步方法和装置
US9348733B1 (en) Method and system for coverage determination
US10545740B2 (en) Distributed agent to collect input and output data along with source code for scientific kernels of single-process and distributed systems
KR102009576B1 (ko) 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법
US9983983B2 (en) Auto-generation of testable units for COBOL code
JP6912104B2 (ja) 試験装置、試験方法及びコンピュータプログラム
US11281458B2 (en) Evaluation of developer organizations
KR20160014174A (ko) 에이전트 기반 마이크로 시뮬레이션 시스템 및 방법

Legal Events

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