반응형

제목: On Testing Data-Intensive Software Systems

저자: Michael Felderer(오스트리아), Barbara Russo(이탈리아), Florian Auer(오스트리아)

문서유형: 연구 페이퍼(19페이지), 2019 4

 

데이터 집약적 시스템 관련 테스팅 문헌을 조사하고 새로운(또는 더 중요해진) 연구 방향 및 주제에 대해 논의한 자료

 


 

페이퍼초록(Abstract)

사이버-물리 생산 시스템(cyber-physical production systems)이나 빅 데이터 시스템(big data systems)과 같은 오늘날의 소프트웨어 시스템은 그 품질에 큰 영향을 미치는 다양한 유형의 대용량 데이터를 처리해야 하는 데이터 집약적 시스템(data-intensive systems)이다. 그러나 전통적인 소프트웨어 테스팅 접근 방식은 데이터 측면보다는 기능적 동작에 중점을 둔다. 따라서 테스트에서 데이터의 역할에 대한 재고와 데이터 집약적인 소프트웨어 시스템에 대한 구체적인 테스트 접근 방식이 필요하다. 이 장의 목적은 (1) 데이터 집약적 소프트웨어 시스템과 그 테스트에 대한 기본 용어와 배경을 제공하고, (2) 해당 분야의 연구 현황과 뜨거운 주제를 제시함으로써 이 분야에 기여하는 것이다. 마지막으로 데이터 집약적인 소프트웨어 시스템 테스트에 대한 연구 방향과 새로운 개척지에 대해 논의한다.

 

 

전통적인 소프트웨어 테스팅

저자는 기존 테스팅을 테스트 목적(test objective), 테스트 수준(test level), 실행 수준(execution level)의 세 가지 차원을 활용하여 아래 그림과 같이 분류하였다.

그림 1. 테스팅 디멘젼: 기존 소프트웨어 테스팅의 테스트 수준, 테스트 목표 및 실행 수준

 

 

데이터 집약적 시스템(: 사이버-물리 생산 시스템)

오늘날 데이터 집약적인 시스템은 대용량 데이터를 처리할 뿐만 아니라 다음 측면에서 다른 시스템과 다르다.

  • 데이터는 저장되고 검색되지만 상황에 따라 수집, 생성, 조작 및 재배포(즉, 처리)되기도 한다.
  • 데이터는 "빅" 데이터이며 이전 섹션에서 설명한 특성(즉 볼륨, 속도, 다양성 및 정확성)을 충족한다.
  • 데이터는 운영 단계뿐 아니라 시스템 생명주기의 분석, 설계, 구현, 테스트 및 유지보수 단계에도 영향을 미친다.

 

저자는 데이터 집약적인 시스템을 아래와 같이 정의한다.

Data-intensive systems are systems that may handle, generate, and process a large volume of data of different nature and from different sources over time orchestrated by means of different technologies and with the goal to extract value from data for different types of businesses. They pose specific challenges in all phases of the system lifecycle and over time they might evolve to very large, complex systems as data, technologies and value evolve.

 

그림 2. 데이터 집약적 시스템의 개념적 구조

 

로봇, 제철소 또는 제조 공장과 같은 산업 생산 시스템은 다양한 소스(그림 3 참조) 및 유형에서 대량의 데이터를 생성하고 처리하는 대규모의 장기간 실행되는 사이버-물리적 시스템이다. 일반적인 생산 시스템의 데이터 소스로는 기술 생산 데이터(: 기계 데이터 또는 프로세스 데이터), 조직 생산 데이터(: 주문 데이터 또는 인사 데이터), ERP 시스템의 메시지 등이 있다. 따라서 사이버-물리 생산 시스템(cyber-physical production systems)은 비즈니스에 높은 가치를 부여하고 테스팅이 필요한 데이터 집약적 시스템을 나타낸다. 생산은 데이터 집약적인 시스템과 긴밀하게 연결되어 있으며, 이로 인해 시스템과 시스템이 운영하는 데이터의 품질 보증 표준에 대한 높은 요구사항이 적용된다.

그림 3. 생산 시스템의 데이터 소스 개요

 

데이터 집약적인 시스템은 품질 보증, 특히 테스팅에 새로운 과제를 제기한다. 소프트웨어 집약적인 시스템의 테스팅은 전통적으로 사양(specifications)에 대한 준수(compliance) 및 일치(conformance) 여부와 일부 비기능적 요구사항을 확인하고 검증하는 데 중점을 두었다. 데이터 집약적 시스템은 테스팅 및 분석을 위한 다른 접근 방식을 필요로 하며, 의사 결정자가 실시간으로 대응할 수 있도록 빅 데이터 및 분석 관점에서 시스템, 시스템 요소, 동작 및 속성을 탐색하는 쪽으로 더 나아가고 있다. 동작과 이에 따른 예상 테스트 결과는 종종 정확하게 지정될 수 없고 통계적 불확실성이 있는 경우가 많다. 예를 들어, 자동차 부품을 조립하기 위한 로봇의 움직임은 분명한 방식으로 충분히 명시될 수 없지만 불확실성이 있는 기계 학습 알고리즘을 기반으로 하는 경우가 많다.

 

 

데이터 집약적 시스템을 위한 테스팅 확장

데이터 집약적인 소프트웨어 시스템의 테스트는 일반적으로 검증을 위한 테스트 오라클이 존재하지 않는 "테스트 불가능한(non-testable)" 소프트웨어 클래스에 속하기 때문에 문제가 된다[23]. 이러한 시스템을 테스트하기 위한 입증된 접근 방식은 기계 학습 알고리즘의 유효성을 테스트하는 데 사용할 수 있는 변성 관계(metamorphic relations)의 발견이 필요한 변성 테스트(metamorphic testing)이다[27]. 예를 들어, Xie et al. [34]는 기계 학습 기반 분류 알고리즘의 변성 테스트에 대한 방법을 제안하였다. 이 논문의 저자는 분류자(classifiers)가 시연할 것으로 예상되는 변성 관계를 열거한 다음 주어진 구현에 대해 각 관계가 해당 분류 알고리즘에 필요한 속성인지 여부를 결정한다. 이 경우 관계를 나타내지 못하면 결함이 있음을 나타낸다.

 

기계 학습 알고리즘을 테스트하려면, 특히 딥 러닝 시스템과 같은 정교한 알고리즘의 경우라면, 구체적인 테스트 접근 방식이 필요하다. 이를 위해 최근에는 뉴런 커버리지[24], 서프라이즈 적절성[19] 또는 딥 러닝 시스템을 추상 상태 전이 시스템으로 모델링하여 파생된 기준[8]과 같은 딥 러닝 시스템을 위한 몇몇 적절성 기준(adequacy criteria)이 정의되었다. 그러나 알고리즘을 시스템에 통합하는 것은 복잡할 수 있고 그 과정에서 문제와 결함이 주입될 수 있으므로 알고리즘 테스트만으로는 충분하지 않다. 문헌에 언급된 구체적인 염려로는 신뢰할 수 없는 데이터(untrustworthy data), 잘못된 가정(bad assumptions), 잘못된 수학(incorrect mathematics) 등이 있다[28]. Tian et. al. [29]는 자율주행(autonomous driving)의 맥락에서 딥 러닝 시스템을 테스트하기 위해 변성 테스트를 기반으로 한 방법을 제안하였다. 이렇게 크고 복잡하며 독립적인 시스템이 상호 작용하고 소위 시스템의 시스템(Systems-of-Systems)을 형성하는 자율주행에서 사용되는 데이터 집약적 시스템을 테스트하는 데 시뮬레이션이 중요한 역할을 한다.

 

한 단계 더 나아가 테스트가 실행 중인 시스템으로 이동할 수도 있다. 데이터 집약적 시스템 테스트에 대한 이 새로운 접근 방식은 런타임 환경 모니터링을 수행하여 시스템의 동작과 변경 사항을 평가한다. 테스트 중인 시스템 변경 사항은 제한된 수의 사용자에게 노출된다. 이들과 변경 사항과의 상호 작용을 통해 생성된 런타임 데이터를 변경 사항에 노출되지 않은 사용자와 비교한다. 수집된 실험 데이터를 분석하면 성능(performance)이나 사용용이성(usability)과 같은 미리 정의된 특성에 대한 확률의 영향이 드러난다. 시스템 변경 평가의 접근 방식 역시 지속적인 실험이며[9], 특히 데이터 집약적인 시스템을 테스트하는 맥락에서 유망하다[2].

 

예상치 못한 실행 동작을 관찰하는 것은 예측 테스팅 접근 방식(the anticipatory testing approach)에 도입된 새로운 유형의 오라클인 자체-평가 오라클(self-assessment oracles)을 구축하는 데에도 사용된다[30]. 이러한 접근 방식은 장애가 발생하기도 전에 이를 감지하는 것을 목표로 한다. 이 오라클은 입력의 양과 출력의 불확실성이 테스트 케이스 설계의 주요 과제인 데이터 집약적 시스템에 매우 중요할 수 있다[13].

 

이러한 논의를 고려하여 그림 1의 기존 시스템 테스팅 디멘젼을 데이터 집약적인 소프트웨어 시스템 테스팅에 대해 확장하였다. Test Level 디멘젼에는 Algorithm System-of-Systems 카테고리가 추가되었다. 한편으로는 알고리즘을 분리하여 테스트하는 것이 필수가 되며(: 분류 알고리즘 또는 딥 러닝 알고리즘의 경우), 다른 한편으로는 자율주행과 같은 Systems-of-Systems에서 환경의 시뮬레이션이 특히 중요한 역할을 하는 새로운 테스트 접근 방식이 필요하다. Execution Level 디멘젼에는 동적 테스트의 적극적 침투와 대조적으로 실행 중인 시스템을 수동적으로 관찰하여 변경 사항이나 지정되지 않은 시스템 동작을 테스트하는 Runtime Monitoring이 추가되었다. 마지막으로 Test Objective 디멘젼에는 정확성이나 속도와 같은 데이터 및 빅데이터 품질 속성 테스트로 구성된 Data Quality 카테고리가 추가되었다.

그림 5. 테스팅 디멘젼: 데이터 집약적인 소프트웨어 시스템 테스팅의 테스트 수준, 테스트 목표 및 실행 수준

 

 

저자는 이렇게 데이터 집약적인 소프트웨어 시스템에 대한 테스트 차원을 확장했으며, 새로운 개척지로는 변성 테스트(metamorphic testing), 알고리즘 테스트(algorithm testing), 시스템의 시스템 테스트(testing systems-of-systems), 데이터 품질 측면(data quality aspects), 런타임 모니터링(runtime monitoring) 예측 테스트(anticipatory testing)를 식별하였다.

 

 

반응형

+ Recent posts