-
데이터 모델링 기법프로그래밍 JAVA 2020. 7. 16. 23:44
데이터 모델링
모델 기반 테스트는 소프트웨어 테스트 또는 시스템 테스트를 수행하기 위한 아티팩트를 설계하고 선택적으로 실행하기 위한 모델 기반 설계의 응용이다.
모델은 시험 대상 시스템의 원하는 동작을 나타내기 위해 또는 시험 전략과 시험 환경을 나타내기 위해 사용될 수 있다.
오른쪽 그림은 이전의 접근을 묘사하고 있다.
SUT를 설명하는 모델은 일반적으로 SUT가 원하는 행동을 추상적이고 부분적으로 보여주는 것이다.
그러한 모델에서 도출된 시험 사례는 모델과 동일한 수준의 추상화 수준에 대한 기능 시험이다.
이러한 테스트 사례들은 집합적으로 추상 테스트 제품군으로 알려져 있다.
추상 테스트 스위트는 SUT에 대해 직접 실행할 수 없다.
스위트가 잘못된 추상화 수준에 있기 때문이다.
실행 가능한 테스트 제품군은 해당 추상 테스트 제품군에서 파생되어야 한다.
실행 가능한 테스트 제품군은 테스트 대상 시스템과 직접 통신할 수 있다.
이는 추상적인 시험 사례를 실행하기에 적합한 구체적인 시험 사례에 매핑함으로써 달성된다.
일부 모델 기반 테스트 환경에서 모델은 실행 가능한 테스트 세트를 직접 생성하기에 충분한 정보를 포함하고 있다.
다른 한편에서는 추상적인 테스트 제품군의 요소들을 소프트웨어의 특정 문구나 메서드 호출에 매핑하여 구체적인 테스트 제품군을 만들어야 한다.
이것을 "매핑 문제" 해결이라고 한다.
[1] 온라인 시험의 경우(아래 참조) 추상적인 시험 제품군은 개념적으로만 존재하지만 명시적 인공물로서 존재하지는 않는다.
시험은 다양한 방법으로 모델에서 도출될 수 있다.
시험은 대개 실험적이고 경험적 접근법에 기초하기 때문에 시험 유도에는 알려진 단일 최선의 접근법이 없다.
흔히 "시험 요건", "시험 목적" 또는 "사용 사례"로 알려진 패키지로 모든 시험 유도 관련 매개변수를 통합하는 것이 일반적이다.
이 패키지는 중점적으로 다루어야 하는 모델의 해당 부분 또는 시험을 완료하기 위한 조건(시험 중지 기준)에 대한 정보를 포함할 수 있다.
테스트 스위트는 소스 코드가 아닌 모델에서 파생되기 때문에 모델 기반 테스트는 보통 블랙박스 테스트의 한 형태로 보여진다.
온라인 테스트, 오프라인 테스트 실행 파일 테스트, 오프라인에서 수동으로 배포할 수 있는 테스트 등 모델 기반 테스트를 배포하는 다양한 방법이 알려져 있다.
온라인 테스트란 모델 기반 테스트 도구가 SUT에 직접 연결하여 동적으로 테스트하는 것을 말한다.
오프라인 세대의 실행 가능한 테스트는 모델 기반 테스트 도구가 나중에 자동으로 실행될 수 있는 컴퓨터 판독 가능한 자산으로 테스트 케이스를 생성하는 것을 의미한다.
예를 들어 생성된 테스트 로직을 구현하는 Python 클래스의 모음입니다.
오프라인에서 전개 가능한 테스트를 수동으로 생성한다는 것은 모델 기반 테스트 도구가 나중에 수동 테스트를 지원할 수 있는 사람이 읽을 수 있는 자산으로 테스트 케이스를 생성한다는 것을 의미한다.
예를 들어 생성된 테스트 단계를 설명하는 인간 언어로 된 PDF 문서와 같다.
알고리즘적으로 테스트 도출
모델 기반 시험의 효율성은 주로 그것이 제공하는 자동화 가능성 때문이다.
만약 모델과 공식적인 그 정도로 뚜렷한 행동 해석을 가지는 것을 기계 판독 가능하다, 시험 경우 원칙적으로 기계적으로 파생될 수 있다.
유한 상태 기계로부터
종종 모델은 유한 상태 자동 또는 상태 전환 시스템으로 번역되거나 해석된다.
이 자동화는 시험 대상 시스템의 가능한 구성을 나타낸다.
테스트 케이스를 찾기 위해 자동 시스템에서 실행 가능한 경로를 검색한다.
실행 가능한 경로가 테스트 사례로 작용할 수 있다.
이 방법은 모형이 결정론적이거나 결정론적 모형으로 변환될 수 있는 경우에 효과가 있다.
이러한 모델에서 지정되지 않은 전환을 활용하여 중요한 오프노멀 테스트 사례를 얻을 수 있다.
테스트 중인 시스템의 복잡성과 해당 모델에 따라 시스템의 구성 가능한 양이 많기 때문에 경로의 수가 매우 클 수 있다.
적절하지만 유한한 경로 수를 다룰 수 있는 테스트 사례를 찾기 위해서는 선택 지침을 위한 테스트 기준이 필요하다.
이 기법은 모델 기반 시험을 시작한 논문에서 오푸트와 압두라지크가 처음 제안했다.
[3] 테스트 케이스 생성을 위한 여러 기법이 개발되어 러시비가 조사한다.
[4] 시험기준은 시험교재에 일반 그래프로 기술되어 있다.
정리증거
정리 증명은 원래 논리 공식의 자동 증명에 사용되었다.
모델 기반 시험 접근방식의 경우, 시스템은 술어 집합에 의해 모델링되며, 시스템의 동작을 명시한다.
[5] 시험 사례를 도출하기 위해, 모델은 시험 대상 시스템을 기술하는 술어 집합의 유효한 해석에 대해 동등성 등급으로 구분된다.
각 세분류는 특정 시스템 동작을 기술하므로 시험 사례로 활용할 수 있다.
가장 간단한 분할은 시스템의 동작을 설명하는 논리적인 표현에서 이분법적 정규형태로 변형되는 이분법적 정규형태 접근방식이다.
제약 논리 프로그래밍 및 심볼 실행
제약조건 프로그래밍을 사용하면 일련의 제약조건을 변수 집합에 걸쳐 해결함으로써 특정 제약조건을 만족시키는 시험 사례를 선택할 수 있다.
시스템은 제약의 수단으로 설명된다.
[6] 제약조건 집합의 해결은 부울 해결사(예: 부울 만족도 문제에 기초한 SAT 해결사) 또는 가우스 제거와 같은 수치 분석에 의해 수행될 수 있다.
제약 조건 공식을 풀어서 찾은 해결책은 해당 시스템의 시험 사례로 작용할 수 있다.
제약조건 프로그래밍은 상징적 실행과 결합될 수 있다.
이 접근법에서 시스템 모델은 상징적으로 실행된다.
즉, 서로 다른 제어 경로에 걸쳐 데이터 제약조건을 수집한 다음 제약조건 프로그래밍 방법을 사용하여 제약조건을 해결하고 시험 사례를 생성한다.
모델체크
모델 체커는 테스트 케이스 생성에도 사용할 수 있다.
[8] 원래 모델체크(model checking)는 모델에서 규격의 속성이 유효한지 확인하는 기법으로 개발되었다.
테스트에 사용할 경우, 테스트 대상 시스템의 모델과 테스트할 속성을 모델 체커에 제공한다.
증명 절차 내에서, 만약 이 특성이 모델에서 유효하다면, 모델 체커는 목격자와 배반자를 탐지한다.
증인은 속성이 충족되는 경로인 반면, counterexample은 속성이 침해되는 모델 실행의 경로인 것이다.
이러한 경로는 다시 테스트 사례로 사용될 수 있다.
마르코프 체인 테스트 모델을 사용하여 테스트 사례 생성
마르코프 체인은 모델 기반 테스트를 처리하는 효율적인 방법이다.
마르코프 체인을 통해 실현된 테스트 모델은 사용 모델로서 이해할 수 있으며, 이를 사용/통계 모델 기반 테스트라고 한다.
사용 모델, 즉 마르코프 체인은 주로 테스트된 시스템의 가능한 모든 사용 시나리오를 나타내는 FSM과 시스템이 통계적으로 어떻게 사용되고 있는지 나타내는 FSM의 자격을 부여하는 운영 프로파일(Operational Profiles, OP)의 2가지 유물로 구성된다.
첫 번째(FSM)는 테스트할 수 있거나 테스트한 내용을 파악하는 데 도움이 되며 두 번째(OP)는
'프로그래밍 JAVA' 카테고리의 다른 글
JAVA와 JDK란 무엇인가 (feat. API) (0) 2020.07.19 JAVA 스케쥴링 작업 설명 (0) 2020.07.19 메타데이터 통신과 사진 (0) 2020.07.16 메타데이터 (META DATA 의 총평) (0) 2020.07.15 JAVA 컴퓨터 시뮬레이션 (0) 2020.07.15