KR20220090865A - 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치 - Google Patents

콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치 Download PDF

Info

Publication number
KR20220090865A
KR20220090865A KR1020200181816A KR20200181816A KR20220090865A KR 20220090865 A KR20220090865 A KR 20220090865A KR 1020200181816 A KR1020200181816 A KR 1020200181816A KR 20200181816 A KR20200181816 A KR 20200181816A KR 20220090865 A KR20220090865 A KR 20220090865A
Authority
KR
South Korea
Prior art keywords
products
product
common
testing
concolic
Prior art date
Application number
KR1020200181816A
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 KR1020200181816A priority Critical patent/KR20220090865A/ko
Publication of KR20220090865A publication Critical patent/KR20220090865A/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
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable

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 Apparatus for Reducing SPL Testing Time using Concolic Testing}
본 발명은 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치에 관한 것이다.
소프트웨어 제품라인의 테스팅에 관한 종래 기술로서 소프트웨어 제품라인에서 여러 제품을 검증할 때 제품간 중복으로 검증해볼 필요가 없는 테스트 케이스를 골라내는 테스트 케이스 선택(testcase selection) 분야가 있다. 소프트웨어 제품라인을 통해 만들어진 제품은 그 특성상 공통점이 많다. 이로 인해 하나의 제품에서 어떤 테스트 케이스를 실행해보면 다른 제품에서 실행할 필요 없는 테스트 케이스들도 생긴다. 이런 테스트 케이스들을 제외하고 중복되는 부분을 검증하지 않도록 테스트 케이스들을 골라내는 것을 테스트 케이스 선택(testcase selection)이라 한다. 또한, 단일 제품에 적용하는 프로그램 검증 기법들이 몇몇 존재하는데 대표적으로 퍼징(fuzzing), 심볼릭 테스팅(symbolic testing), 모델 기반 테스팅(model-based testing) 등이 있고, 본 발명에 사용한 콘콜릭 테스팅(concolic testing) 또한 대표적인 기법중 하나이다. 퍼징(fuzzing)은 기본적으로 랜덤하게 테스트 케이스를 대량으로 생산해서 제품을 검증하는 방법이다. 하지만 프로그램의 분기 조건이 복잡할수록 이런 랜덤 생성 방법은 다양한 분기점을 탐색할 때 불리하다. 심볼릭 테스팅(symbolic testing)은 프로그램의 입력값을 변수로 선언하고 각 분기점에서 분기 조건들을 논리 공식으로 변환해 SAT 솔버(solver)를 이용해 각 실행 경로마다 필요한 입력값을 계산한다. 이는 퍼저(fuzzer)보다 더 지능적으로 분기를 탐색할 수 있지만 분기 조건들이 많거나 복잡하면 입력값을 계산하는데 드는 시간이 기하급수적으로 증가하고 계산할 수 없을 때도 있다. 마지막으로 모델 기반 테스팅(model-based testing)은 제품의 기능을 포멀(formal)하게 설명하는 모델을 활용해서 테스트 케이스를 생성하는 방법이다. 이는 시스템의 행동을 정확하게 모델해서 유닛 테스팅의 단점을 극복하고 모델/제품의 변화에 따른 테스팅을 쉽게 할 수 있다는 장점이 있지만 모델을 만드는 난이도가 높고 그 모델도 정확하게 제품을 모델링하는지 증명하기 힘들다.
한국 등록특허공보 제10-209225호(2020.03.17)
본 발명이 이루고자 하는 기술적 과제는 소프트웨어 제품라인을 테스팅 하는데 필요한 시간을 줄이는 방법 및 장치를 제공하는데 있다. 소프트웨어 제품라인을 이용하여 제품들을 개발하면 생성되는 제품의 수가 상당히 많다. 이러한 많은 제품들을 기존의 소프트웨어 테스팅 방식으로 검증할 경우 제품 하나하나 개별적으로 검증해야 하기 때문에 테스팅에 들어가는 자원(다시 말해, 돈, 컴퓨팅 파워, 시간)이 많이 소모된다. 특히 소프트웨어를 중심적으로 개발하는 기업들은 테스팅에 들어가는 비용이 전체 비용의 매우 큰 비중을 차지함으로 본 발명에서는 이러한 비용을 줄이기 위한 방안을 제안한다.
일 측면에 있어서, 본 발명에서 제안하는 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법은 복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성하는 단계 및 콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하는 단계를 포함한다.
복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성하는 단계는 복수의 제품 모두 공통으로 가진 함수인 공통부분을 분류하는 단계, 복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공유부분을 분류하는 단계 및 복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분을 분류하는 단계를 포함한다.
콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하는 단계는 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 모두 공통으로 가진 함수인 공통부분에 관한 유닛 테스팅을 수행하는 단계, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공통부분에 관한 유닛 테스팅을 수행하는 단계 및 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분에 관한 유닛 테스팅을 수행하는 단계를 포함한다.
본 발명에서 제안하는 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법은 중복적인 테스트 케이스를 생성하지 않기 위해 테스트 케이스를 생성하는 시점부터 복수의 제품으로 구성된 소프트웨어 제품라인에 대한 공통부분, 공유부분 및 제품특화부분에 따라 분류하여 테스트 케이스를 생성한다.
또 다른 일 측면에 있어서, 본 발명에서 제안하는 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 장치는 복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성하는 테스트 케이스 생성부 및 콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하는 검증부를 포함한다.
본 발명의 실시예들에 따르면 소프트웨어 제품라인의 공통점을 테스트 케이스를 생성하는 시점부터 고려해서 불필요한 중복적인 테스트케이스를 생성하지 않고 효율적으로 제품들을 검증할 수 있다.
도 1은 본 발명의 일 실시예에 따른 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법을 설명하기 위한 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 테스트케이스 생성 과정을 설명하기 위한 도면이다.
도 3은 본 발명의 일 실시예에 따른 테스트케이스 생성 방법을 사용하여 소프트웨어 제품라인의 테스트케이스 개수를 줄이는 것을 설명하기 위한 도면이다.
도 4는 본 발명의 일 실시예에 따른 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 장치의 구성을 나타내는 도면이다.
소프트웨어 제품라인을 이용하여 생성된 제품들은 기본적으로 공통된 부분들을 갖게 되며 그 공통된 부분들의 비율이 높은 편이다. 예를 들어 함수 단위로 제품들을 나누면 각 제품은 모든 제품이 공통으로 가진 함수(다시 말해, 공통부분)를 다수 가지고 있고, 몇몇 제품들이 공통으로 가지고 있는 함수(다시 말해, 공유부분)도 가지고 있고, 제품이 고유하게 가지고 있는 함수(다시 말해, 제품특화부분)들도 있다. 모든 제품들을 개별적으로 테스팅 하면 이런 공통된 부분들을 중복적으로 검증하게 되는데, 이를 방지하기 위해서 콘콜릭 테스팅(concolic testing)을 이용해 함수 별로 유닛 테스팅을 한다. 콘콜릭 테스팅을 이용하여 유닛 테스팅을 할 때 공통부분을 검증하고, 그 다음 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하면 중복적으로 검증하는 일 없이 효율적으로 검증을 진행할 수 있다. 이하, 본 발명의 실시 예를 첨부된 도면을 참조하여 상세하게 설명한다.
도 1은 본 발명의 일 실시예에 따른 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법을 설명하기 위한 흐름도이다.
통상적인 소프트웨어 제품라인의 테스팅 방법은 소프트웨어 제품라인으로 생산된 제품들의 가장 큰 특징인 공통점을 고려하지 않고 제품들을 각각 하나씩 검증하거나 테스트 케이스를 제품별로 각각 생성한 후 공통되는 것을 제거해서 비효율적이다.
본 발명은 소프트웨어 제품라인의 공통점을 테스트 케이스를 생성하는 시점부터 고려하여 불필요한 중복적인 테스트케이스를 생성하지 않고 효율적으로 제품들을 검증하는 방법을 제안한다.
제안하는 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법은 복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성하는 단계(110) 및 콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하는 단계(120)를 포함한다.
단계(110)에서, 복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성한다.
먼저, 복수의 제품 모두 공통으로 가진 함수인 공통부분을 분류하고, 이후, 복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공유부분을 분류하고, 마지막으로 복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분을 분류한다.
이렇게 분류된 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하고, 공통부분, 공유부분 및 제품특화부분에 따라 각각의 테스트 케이스를 생성한다.
단계(120)에서, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증한다.
먼저, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 모두 공통으로 가진 함수인 공통부분에 관한 유닛 테스팅을 수행하고, 이후, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공통부분에 관한 유닛 테스팅을 수행하고, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분에 관한 유닛 테스팅을 수행한다.
본 발명의 실시예에 따르면, 중복적인 테스트 케이스를 생성하지 않기 위해 테스트 케이스를 생성하는 시점부터 복수의 제품으로 구성된 소프트웨어 제품라인에 대한 공통부분, 공유부분 및 제품특화부분에 따라 분류하여 테스트 케이스를 생성한다.
도 2는 본 발명의 일 실시예에 따른 테스트케이스 생성 과정을 설명하기 위한 도면이다.
본 발명의 실시예에 있어서, 3개의 제품 (Product A, Product B, Product C)으로 구성된 소프트웨어 제품라인의 테스트케이스 개수를 줄이는 과정을 예시로서 설명한다.
Product A는 공통부분인 2개의 Function X 와 공유부분인 3개의 Function Y를 가지고 있다. Product B는 공통부분인 2개의 Function X 와 공유부분인 3개의 Function Y, 5개의 Function Z를 가지고 있다. 마지막으로 Product C는 공통부분인 2개의 Function X 와 공유부분인 5개의 Function Z, 그리고 제품특화부분인 3개의 Function K를 가지고 있다.
각 제품을 개별적으로 검증하기 위해서는 Product A는 5개의 테스트케이스가 필요하고, Product B는 10개의 테스트케이스가 필요하고, Product C는 10개의 테스트케이스가 필요하다. 다시 말해, 각각의 소프트웨어 제품라인을 개별적으로 테스트하기 위해서는 총 25개의 테스트케이스가 필요하다.
하지만, 본 발명에서 제시한 콘콜릭 유닛 테스팅(concolic unit testing)을 통해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하고, 공통부분, 공유부분 및 제품특화부분에 따라 각각의 테스트 케이스를 생성할 경우, 총 13개의 테스트 케이스만 생성하여 3개의 제품 Product A, Product B, Product C으로 구성된 소프트웨어 제품라인을 검증하기에 충분하다.
도 3은 본 발명의 일 실시예에 따른 테스트 케이스 생성 방법을 사용하여 소프트웨어 제품라인의 테스트 케이스 개수를 줄이는 것을 설명하기 위한 도면이다.
도 3(a)는 종래기술에 따른 제품을 개별적으로 테스팅하는 경우의 생성된 테스트 케이스 개수를 나타내는 도면이고, 도 3(b)는 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하는 경우의 생성된 테스트 케이스 개수를 나타내는 도면이다.
본 발명의 실시예에 있어서, 3개의 제품 (Product A, Product B, Product C)으로 구성된 소프트웨어 제품라인의 테스트케이스 개수를 줄이는 과정을 예시로서 설명한다.
Product A는 공통부분인 2개의 Function X 와 공유부분인 3개의 Function Y를 가지고 있다. Product B는 공통부분인 2개의 Function X 와 공유부분인 3개의 Function Y, 5개의 Function Z를 가지고 있다. 마지막으로 Product C는 공통부분인 2개의 Function X 와 공유부분인 5개의 Function Z, 그리고 제품특화부분인 3개의 Function K를 가지고 있다.
각 제품을 개별적으로 검증하기 위해서는 Product A는 5개의 테스트케이스가 필요하고, Product B는 10개의 테스트케이스가 필요하고, Product C는 10개의 테스트케이스가 필요하다. 다시 말해, 각각의 소프트웨어 제품라인을 개별적으로 테스트하기 위해서는 총 25개의 테스트케이스가 필요하다.
하지만, 본 발명에서 제시한 콘콜릭 유닛 테스팅(concolic unit testing)을 통해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하고, 공통부분, 공유부분 및 제품특화부분에 따라 각각의 테스트 케이스를 생성할 경우, 총 13개의 테스트 케이스만 생성하여 3개의 제품 Product A, Product B, Product C으로 구성된 소프트웨어 제품라인을 검증하기에 충분하다.
이와 같이, 본 발명의 소프트웨어 제품라인 테스팅 방법을 사용하면 기존의 방법들과 비교해 더 짧은 시간 내에 소프트웨어 제품라인을 테스트할 수 있으며, 제품 간의 공통점이 많을수록 더욱더 큰 시간 단축 효과를 볼 수 있다. 이로 인해 새로운 제품을 생성하거나 수정할 때 비용의 부담이 줄어든다.
도 4는 본 발명의 일 실시예에 따른 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 장치의 구성을 나타내는 도면이다.
제안하는 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 장치(400)는 테스트 케이스 생성부(410) 및 검증부(420)를 포함한다.
테스트 케이스 생성부(410) 및 검증부(420)는 도 1의 단계들(110~120)을 수행하기 위해 구성될 수 있다.
테스트 케이스 생성부(410)는 복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성한다.
먼저, 복수의 제품 모두 공통으로 가진 함수인 공통부분을 분류하고, 이후, 복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공유부분을 분류하고, 마지막으로 복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분을 분류한다.
이렇게 분류된 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하고, 공통부분, 공유부분 및 제품특화부분에 따라 각각의 테스트 케이스를 생성한다.
검증부(420)는 콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증한다.
먼저, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 모두 공통으로 가진 함수인 공통부분에 관한 유닛 테스팅을 수행하고, 이후, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공통부분에 관한 유닛 테스팅을 수행하고, 콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분에 관한 유닛 테스팅을 수행한다.
본 발명의 실시예에 따르면, 중복적인 테스트 케이스를 생성하지 않기 위해 테스트 케이스를 생성하는 시점부터 복수의 제품으로 구성된 소프트웨어 제품라인에 대한 공통부분, 공유부분 및 제품특화부분에 따라 분류하여 테스트 케이스를 생성한다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 (5)

  1. 복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성하는 단계; 및
    콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하는 단계
    를 포함하는 소프트웨어 제품라인 테스팅 방법.
  2. 제1항에 있어서,
    복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성하는 단계는,
    복수의 제품 모두 공통으로 가진 함수인 공통부분을 분류하는 단계;
    복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공유부분을 분류하는 단계; 및
    복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분을 분류하는 단계
    를 포함하는 소프트웨어 제품라인 테스팅 방법.
  3. 제1항에 있어서,
    콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하는 단계는,
    콘콜릭 유닛 테스팅을 이용하여 복수의 제품 모두 공통으로 가진 함수인 공통부분에 관한 유닛 테스팅을 수행하는 단계;
    콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 적어도 두 개 이상의 일부 제품들이 공통으로 가지고 있는 함수인 공통부분에 관한 유닛 테스팅을 수행하는 단계; 및
    콘콜릭 유닛 테스팅을 이용하여 복수의 제품 중 하나의 제품만이 고유하게 가지고 있는 함수인 제품특화부분에 관한 유닛 테스팅을 수행하는 단계
    를 포함하는 소프트웨어 제품라인 테스팅 방법.
  4. 제3항에 있어서,
    중복적인 테스트 케이스를 생성하지 않기 위해 테스트 케이스를 생성하는 시점부터 복수의 제품으로 구성된 소프트웨어 제품라인에 대한 공통부분, 공유부분 및 제품특화부분에 따라 분류하여 테스트 케이스를 생성하는
    소프트웨어 제품라인 테스팅 방법.
  5. 복수의 제품으로 구성된 소프트웨어 제품라인의 테스트케이스를 생성하기 위해 복수의 제품의 함수 단위에 따라 공통부분, 공유부분 및 제품특화부분을 분류하여 각각의 테스트 케이스를 생성하는 테스트 케이스 생성부; 및
    콘콜릭 유닛 테스팅을 이용하여 복수의 제품의 공통부분을 검증하고, 이후 공유부분을 검증하고, 마지막으로 제품특화부분을 검증하는 검증부
    를 포함하는 소프트웨어 제품라인 테스팅 장치.
KR1020200181816A 2020-12-23 2020-12-23 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치 KR20220090865A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200181816A KR20220090865A (ko) 2020-12-23 2020-12-23 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200181816A KR20220090865A (ko) 2020-12-23 2020-12-23 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20220090865A true KR20220090865A (ko) 2022-06-30

Family

ID=82215020

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200181816A KR20220090865A (ko) 2020-12-23 2020-12-23 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치

Country Status (1)

Country Link
KR (1) KR20220090865A (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100209225B1 (ko) 1996-11-19 1999-07-15 김영환 바이폴라 접합 트랜지스터 제조방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100209225B1 (ko) 1996-11-19 1999-07-15 김영환 바이폴라 접합 트랜지스터 제조방법

Similar Documents

Publication Publication Date Title
KR102450834B1 (ko) 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
US8543953B2 (en) Automated stimulus steering during simulation of an integrated circuit design
US8918678B2 (en) Functional testing of a processor design
US8417998B2 (en) Targeted black box fuzzing of input data
KR100871563B1 (ko) 컴포넌트 기반의 소프트웨어 개발을 위한 장치 및 방법
GB2519545A (en) Determining a quality parameter for a verification environment
EP1093619A1 (en) System and method for identifying finite state machines and verifying circuit designs
CN111936998B (zh) 数据变换流水线的硬件设计的验证
JP2985922B2 (ja) 論理関数データ処理装置
US7673288B1 (en) Bypassing execution of a software test using a file cache
US7308663B2 (en) Circuit design verification using checkpointing
JP6903249B2 (ja) テストケース生成装置、テストケース生成方法、およびテストケース生成プログラム
KR20220090865A (ko) 콘콜릭 테스팅을 이용한 소프트웨어 제품라인 테스팅 시간 단축 방법 및 장치
KR102009576B1 (ko) 처리 스케줄러를 이용한 워크플로우 장치 및 워크플로우 장치의 동작 방법
US9632912B1 (en) Method and system for debugging a program
JP6912104B2 (ja) 試験装置、試験方法及びコンピュータプログラム
KR101166128B1 (ko) 소프트웨어 테스트 장치 및 그 방법
US11176299B1 (en) Analysis of signal transitions in feedback circuits
US20110098963A1 (en) Context based testing
CN111241766B (zh) 测试方法与测试系统
Corno et al. VEGA: a verification tool based on genetic algorithms
KR102160772B1 (ko) 메모리 수리 장치 및 그 방법
CN117313650B (zh) 一种芯片测试验证方法及其应用装置
US8930759B2 (en) Stream generation
GB2572633A (en) Verification of hardware design for data transformation pipeline

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right