3
2015년 한국컴퓨터종합학술대회 논문집 FBD 프로그램 대상 구조적 커버리지를 만족시키는 테스트 시퀀스 생성 알고리즘 * 송지영 O 지은경 배두환 KAIST 전산학부 {jysong, ekjee, bae}@se.kaist.ac.kr Generation of Test Sequences Satisfying Structural Test Coverage Criteria for FBD Programs Jiyoung Song O Eunkyoung Jee Doo-Hwan Bae School of Computing, KAIST Function Block Diagram (FBD) 산업용 컴퓨터인 Programmable Logic Controller (PLC) 표준 프로그래밍 언어 하나이다. 안전 필수 시스템 구현에 FBD 프로그램이 사용되면서 FBD 프로그램에 대한 체계적이고 자동화된 테스팅 중요성이 높아지고 있다 . 기존 연구에서 FBD 프로그램대상 구조적 테스트 커버리지를 만족하는 테스트 입력을 자동 으로 생성하는 연구가 이루어졌으나, FBD 프로그램이 내부상태를 가지는 경우에 테스트 시퀀스를 자동으로 생성하지 못하는 한계가 있었다. 연구에서는 기존 연구를 확장하여 내부 상태를 가지는 FBD 프로그램에 대해서 테스트 시퀀 생성을 자동화하기 위한 알고리즘을 제안한다. 1. 프로그래머블 로직 컨트롤러(Programmable Logic Controller: PLC) 산업용 컴퓨터로, 일정한 주기를 가지고 프로그램이 반복 수행되는 특징을 가진다. Function Block Diagram (FBD) PLC 표준 프로그래 언어 하나로, 원자로 보호 시스템과 같은 안전 필수 시스템 구현 FBD사용되면서 [1], FBD 프로그램 테스팅에 대한 중요성이 아지고 있다. 기존 산업계에서 FBD 프로그램에 대한 테스팅은 프로그 내부 구조를 고려하지 않는 기능 테스팅 위주로 진행되었으며 테스 입력 생성이 수동으로 이루어져 시간과 노력이 많이 들었다. 이를 보완하기 위해 FBD 프로그램의 내부 구조를 고려하는 구조적 테스팅 기법[2] FBD 프로그램 대상 테스트 입력 자동 생성 연구가 진행되 왔다[3-9]. FBD 프로그램을 대상으로 테스트 케이스를 생성하는 기존 연구로 FBD 프로그램을 다른 모델링 언어( 타임드 오토마타, UML) 변환하 , 변환된 모델로부터 테스트 케이스를 생성하는 연구가 진행되었다 [3-8]. 그러나 이러한 접근은 FBD 프로그램 이외 중간 모델을 추가로 생성하는 부담이 있고 , 생성된 중간 모델에 대한 정확성 검증이 미비하 다는 단점이 있다. 한편, FBD 프로그램에 대한 중간 모델 없이 FBD 프로그램 자체를 모델로 보고 구조적 테스트 커버리지를 만족하는 스트 케이스를 자동 생성하는 연구가 이루어졌다 [9]. 연구에서는 FBD 프로그램이 내부 상태를 가지지 않는 경우에는 모든 테스트 입력 생성이 자동으로 이루어지지만, 내부상태를 가지는 FBD 프로그램에 대해서는 테스트 시퀀스 생성이 자동화되지 못하는 한계점이 있었다 . 논문에서는 [9]연구를 확장하여 내부상태를 가지는 FBD 프로그 램에 대해서 구조적 커버리지를 만족시키는 테스트 시퀀스 생성을 동화할 있는 알고리즘을 제안한다. 논문의 구성은 다음과 같다. 2 장에서는 FBD 프로그램에 대한 경지식과 기존 테스트 입력 생성 방법에 대하여 서술한다 . 3장에서는 FBD 프로그램대상 구조적 커버리지를 만족시키는 테스트 시퀀스를 동으로 생성하는 알고리즘을 제시하고, 4 장에서 결론 향후 연구를 기술한다. 2. FBD 프로그램 대상 테스트 입력 생성 2.1. FBD 프로그램 [ 그림 1] FBD 예제 프로그램 [그림 1] FBD구현된 원자로 보호 시스템의 일부로, PV_OUT, TSP, TRIP_LOGICK_DELAY입력으로 받고, TRIP_LOGIC TON_et 출력으로 내는 프로그램이다. 기존에 원자로를 정지할 조건 아니면서(TRIP_LOGIC 입력이 false), 온도나 압력 등을 나타내 공정 (PV_OUT) 설정치(TSP) 보다 크거나 같은 상태가 K_DELAY시간 동안 유지되면 원자로를 정지시키는 신호를 내보내는 (TRIP_LOGIC 출력을 true설정) 논리를 나타낸다. 현재 주기의 TRIP_LOGIC 출력 값은 다음 주기의 TRIP_LOGIC 입력 값이 된다. GE_REALAND2_BOOL 내부 상태가 없이, 같은 입력에 대해 같은 출력을 내는 function이며 TON(On-delay timer) 같은 입력 대해서도 내부 상태에 따라 다른 출력을 있는 function block 이다. TONIN 변수의 이전 주기 값과, ET 변수의 이전 주기 값을 부변수로 가진다. * 논문은 2015 년도 정부 ( 미래창조과학부 ) 재원으로 정보통신기술진흥센터의 지원 [R0101-15-0144, ( 엑소브레인 -4 세부 ) 자율지능형지식 / 기기협업프레임워크기술개발 ] 2013 년도 정부 ( 교육부 ) 재원으로 한국연구재단의 지원을 받아 수행된 연구임 (NRF- 2013R1A1A2058618, 안전필수소프트웨어FBD 모델대상자동화된테스트케이스생성 ) 570

2015 2-J[&â,Ö) s-W-G î.z j - KAISTse.kaist.ac.kr/ekjee/paper/KCC2015-jysong.pdf · 2016-07-08 · 2015 2-J[&â,Ö) s-W-G î.z j &!¿ %

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 2015 2-J[&â,Ö) s-W-G î.z j - KAISTse.kaist.ac.kr/ekjee/paper/KCC2015-jysong.pdf · 2016-07-08 · 2015 2-J[&â,Ö) s-W-G î.z j &!¿ %

2015년 한국컴퓨터종합학술대회 논문집

FBD 프로그램 대상 구조적 커버리지를 만족시키는

테스트 시퀀스 생성 알고리즘*

송지영O 지은경 배두환

KAIST 전산학부

{jysong, ekjee, bae}@se.kaist.ac.kr

Generation of Test Sequences

Satisfying Structural Test Coverage Criteria for FBD Programs

Jiyoung SongO Eunkyoung Jee Doo-Hwan Bae

School of Computing, KAIST

요 약

Function Block Diagram (FBD)은 산업용 컴퓨터인 Programmable Logic Controller (PLC)의 표준 프로그래밍 언어

중 하나이다. 안전 필수 시스템 구현에 FBD 프로그램이 사용되면서 FBD 프로그램에 대한 체계적이고 자동화된 테스팅

의 중요성이 높아지고 있다. 기존 연구에서 FBD 프로그램대상 구조적 테스트 커버리지를 만족하는 테스트 입력을 자동

으로 생성하는 연구가 이루어졌으나, FBD 프로그램이 내부상태를 가지는 경우에 테스트 시퀀스를 자동으로 생성하지

못하는 한계가 있었다. 본 연구에서는 기존 연구를 확장하여 내부 상태를 가지는 FBD 프로그램에 대해서 테스트 시퀀

스 생성을 자동화하기 위한 알고리즘을 제안한다.

1. 서 론

프로그래머블 로직 컨트롤러(Programmable Logic Controller: PLC)

는 산업용 컴퓨터로, 일정한 주기를 가지고 프로그램이 반복 수행되는

특징을 가진다. Function Block Diagram (FBD)은 PLC 표준 프로그래

밍 언어 중 하나로, 원자로 보호 시스템과 같은 안전 필수 시스템 구현

에 FBD가 사용되면서[1], FBD 프로그램 테스팅에 대한 중요성이 높

아지고 있다. 기존 산업계에서 FBD 프로그램에 대한 테스팅은 프로그

램 내부 구조를 고려하지 않는 기능 테스팅 위주로 진행되었으며 테스

트 입력 생성이 수동으로 이루어져 시간과 노력이 많이 들었다. 이를

보완하기 위해 FBD 프로그램의 내부 구조를 고려하는 구조적 테스팅

기법[2] 및 FBD 프로그램 대상 테스트 입력 자동 생성 연구가 진행되

어 왔다[3-9].

FBD 프로그램을 대상으로 테스트 케이스를 생성하는 기존 연구로

FBD 프로그램을 다른 모델링 언어(타임드 오토마타, UML등)로 변환하

고, 변환된 모델로부터 테스트 케이스를 생성하는 연구가 진행되었다

[3-8]. 그러나 이러한 접근은 FBD 프로그램 이외 중간 모델을 추가로

생성하는 부담이 있고, 생성된 중간 모델에 대한 정확성 검증이 미비하

다는 단점이 있다. 한편, FBD 프로그램에 대한 중간 모델 없이 FBD

프로그램 자체를 모델로 보고 구조적 테스트 커버리지를 만족하는 테

스트 케이스를 자동 생성하는 연구가 이루어졌다[9]. 이 연구에서는

FBD 프로그램이 내부 상태를 가지지 않는 경우에는 모든 테스트 입력

생성이 자동으로 이루어지지만, 내부상태를 가지는 FBD 프로그램에

대해서는 테스트 시퀀스 생성이 자동화되지 못하는 한계점이 있었다.

본 논문에서는 [9]의 연구를 확장하여 내부상태를 가지는 FBD 프로그

램에 대해서 구조적 커버리지를 만족시키는 테스트 시퀀스 생성을 자

동화할 수 있는 알고리즘을 제안한다.

본 논문의 구성은 다음과 같다. 2장에서는 FBD 프로그램에 대한 배

경지식과 기존 테스트 입력 생성 방법에 대하여 서술한다. 3장에서는

FBD 프로그램대상 구조적 커버리지를 만족시키는 테스트 시퀀스를 자

동으로 생성하는 알고리즘을 제시하고, 4장에서 결론 및 향후 연구를

기술한다.

2. FBD 프로그램 대상 테스트 입력 생성

2.1. FBD 프로그램

[그림 1] FBD 예제 프로그램

[그림 1]은 FBD로 구현된 원자로 보호 시스템의 일부로, PV_OUT,

TSP, TRIP_LOGIC과 K_DELAY를 입력으로 받고, TRIP_LOGIC 및

TON_et를 출력으로 내는 프로그램이다. 기존에 원자로를 정지할 조건

이 아니면서(TRIP_LOGIC 입력이 false), 온도나 압력 값 등을 나타내

는 공정 값(PV_OUT)이 설정치(TSP)보다 크거나 같은 상태가

K_DELAY시간 동안 유지되면 원자로를 정지시키는 신호를 내보내는

(TRIP_LOGIC 출력을 true로 설정) 논리를 나타낸다. 현재 주기의

TRIP_LOGIC 출력 값은 다음 주기의 TRIP_LOGIC 입력 값이 된다.

GE_REAL과 AND2_BOOL은 내부 상태가 없이, 같은 입력에 대해 항

상 같은 출력을 내는 function이며 TON(On-delay timer)은 같은 입력

에 대해서도 내부 상태에 따라 다른 출력을 낼 수 있는 function block

이다. TON은 IN 변수의 이전 주기 값과, ET 변수의 이전 주기 값을 내

부변수로 가진다.

* 이 논문은 2015년도 정부 (미래창조과학부)의 재원으로 정보통신기술진흥센터의 지원

[R0101-15-0144, (엑소브레인-4세부) 자율 지능형 지식/기기 협업 프레임워크 기술 개발]과

2013년도 정부 (교육부)의 재원으로 한국연구재단의 지원을 받아 수행된 연구임 (NRF-

2013R1A1A2058618, 안전 필수 소프트웨어 FBD 모델 대상 자동화된 테스트 케이스 생성)

570

Page 2: 2015 2-J[&â,Ö) s-W-G î.z j - KAISTse.kaist.ac.kr/ekjee/paper/KCC2015-jysong.pdf · 2016-07-08 · 2015 2-J[&â,Ö) s-W-G î.z j &!¿ %

2015년 한국컴퓨터종합학술대회 논문집

2.2. FBD 구조적 커버리지를 만족하는 테스트 입력 생성

지은경 외[2,9]의 연구에서는 FBD 프로그램 상에서 하나의 입력 변

수로부터 하나의 출력 변수까지의 경로를 데이터 경로, 즉, d-path로

정의하고, d-path를 커버하기 위한 조건인 DPC(d-path condition)를

정의하였다. 이를 이반으로, 모든 입력으로부터 모든 출력까지의 d-

path를 한 번 이상 커버하는 것을 기준으로 하는 기본 커버리지(Basic

Coverage: BC)를 정의하였으며, BC기준을 만족하면서 이진 입력의

true/false도 고려하는 입력 조건 커버리지(Input Condition Coverage:

ICC) 및 모든 이진 에지의 true/false까지 고려하는 복잡 조건 커버리

지(Complex Condition Coverage: CCC)를 정의하였다.

예를 들어, [그림 1]에 강조하여 표기한 d-path p와 p를 커버하는

DPC(p)는 다음과 같이 표현된다.

GE_REAL function으로 연결된 PV_OUT이 GE1_out에 영향을 미치는

조건은 function condition (FC)으로 정의되며, TON function block으

로 연결된 AND2_out이 TRIP_LOGIC에 영향을 미치는 조건은

function block condition (FBC)으로 정의된다. 각 FC와 FBC에 대한

정의 및 커버리지 기준 정의는 [2]를 참고한다

[그림 2] [그림 1]의 FBD 프로그램 대상

테스트 입력 생성을 위한 Yices 입력 파일 예

[그림 2]는 [그림 1]의 FBD 프로그램을 대상으로, BC 및 ICC 커버

리지 기준을 만족하는 테스트 입력을 구하기 위한 Yices SMT 해결기

입력 파일 일부이다. 5-11줄에 입출력 변수 및 상수가 선언 되어있고,

14-17줄은 블록의 연산을 정의한다. 20-23줄에서는 FB 및 FBC를 정

의한다. 29줄은 [그림 1]에 강조하여 표시한 d-path p에 대한 DPC 정

의를 나타낸다. FC(<PV_OUT, GE1_out>)은 TRUE이며, FC(<GE1_out,

AND2_out>)와 FBC(<AND2_out, TRIP_LOGIC>)는 [그림 2]의 20줄,

22줄에 각각 선언된 C1, C3에 해당한다. [그림 2]의 파일을 입력으로

[9]에서 제시된 알고리즘을 따라 테스트 요건들을 최대한 만족시키는

해를 구하면, (AND2_out_t1, TON_et_t1, PV_OUT, TRIP_LOGIC)입력

변수에 대해 td1= (true,100, 0, true), td2 = (true, 100, 26805, false)와

같이 두 개의 테스트 데이터가 얻어진다. td1은 이전 주기의 AND2_out

값이 true이고, 이전 주기의 TON_et 값이 100인 상태에서, PV_OUT은

0으로 TRIP_LOGIC은 true로 입력하라는 의미이다. 이처럼 기존 연구

에서는 테스트 입력 조건과 입력 값을 생성해주지만, 입력 조건에 도달

하기까지의 테스트 입력은 자동으로 생성하지 못한다. 즉, 실제 테스트

를 하기 위해서는 AND2_out_t1이 true이면서 TON_et_t1이 100인 상

태까지 도달하는 시퀀스를 테스터가 수동으로 생성해야 하는 한계점이

있다.

3. FBD 프로그램 대상 테스트 시퀀스 생성

초기 상태로부터 특정 조건을 만족하는 상태까지 도달하는 테스트

시퀀스를 자동으로 생성하기 위한 알고리즘의 기본 아이디어는 다음과

같다. FBD 프로그램을 분석하여 function block이 존재할 경우, 주기적

반복 수행 특성을 고려하여 FBD 프로그램의 여러 주기에 걸친 실행을

모두 논리식으로 인코딩한다. Yices와 같은 SMT 해결기에 인코딩한 파

일을 넣어 해를 구하면 주기 별 입력 시퀀스를 얻을 수 있게 된다. [그

림 3]은 FBD 프로그램 대상 테스트 시퀀스 자동 생성 알고리즘을 순

서도 형식으로 표현한 것이다.

[그림 3] 테스트 시퀀스 생성 순서도

3.1 FBD 프로그램 분석 단계

[그림 3]에 표현된 알고리즘의 S1-S4에서는 입력 FBD 프로그램 분

석하고, 몇 주기에 걸친 FBD 프로그램 실행을 인코딩할 것인지 에 대

한 반복 횟수(iteration number)를 정한다. S1에서는 프로그램의 입출력

변수 및 상수에 대해 타입과 초기값을 정의한다. S2에서는 프로그램

내 모든 블록의 출력에 대해서 연산 식을 정의하여 하나의 연산 집합

을 구성한다. [그림 1]의 FBD 프로그램이 입력인 경우, [그림 2]의

14-17줄과 같이 선언된다. S3에서는 대상 프로그램에 function block

이 있는지를 확인한다. Function block이 있다면 S4-1에서 반복 횟수

의 최솟값을 계산하고, 최댓값을 설정해 준다. 예를 들어, [그림 1]

FBD 프로그램의 경우, 주기가 50ms이고, K_DELAY가 100ms인 것을

571

Page 3: 2015 2-J[&â,Ö) s-W-G î.z j - KAISTse.kaist.ac.kr/ekjee/paper/KCC2015-jysong.pdf · 2016-07-08 · 2015 2-J[&â,Ö) s-W-G î.z j &!¿ %

2015년 한국컴퓨터종합학술대회 논문집

고려하여 계산하면, 반복 최소 횟수를 3으로 설정할 수 있다. 최대 반

복 횟수는 주기를 늘리더라도 만족시킬 수 없는 테스트 요구사항이 있

는 경우 반복 횟수가 무한히 늘어나는 것을 방지하기 위해 필요하다.

FBD 프로그램이 function만을 포함하는 경우는 기존의 입력 값 생성

방법으로 해결이 가능하므로 S4-2를 따라 반복 횟수를 1로 설정한다.

3.2 연산집합 및 테스트 요건 선언 단계

S5에서는 매 주기 연산 집합을 인코딩하는 작업을 수행한다. 매 주

기 연산 집합을 구별하기 위해 연산 집합의 연산 식 변수 이름에 주기

정보를 포함한 인코딩이 필요하다. 각 변수 이름 뒤에 _t와 몇 번째 주

기인지를 나타내는 숫자를 추가하여 (define[varname_t(cycle

number)]::[type][expr])와 같은 형태로 선언하였다. [그림 1]의

FBD 프로그램에 대해 [그림 2]의 7-17줄에 표현된 상수를 제외한 연

산 집합과 입력 변수를 최소 반복 횟수만큼 인코딩하면, [그림 4]와 같

이 Yices 입력 파일에 선언할 수 있다.

[그림 4] 알고리즘을 적용한 Yices 입력 파일 일부

S6에서 FC 및 FBC들과 DPC들을 선언한다. [그림 2]에서는 19-30

줄에 해당한다. S7에서 BC, ICC, CCC와 같은 테스트 커버리지 기준을

만족시키기 위한 테스트 요건들을 assert+문으로 선언한다. 이는 [그림

2]의 31-37줄에 해당한다.

3.3 입력 파일 실행 및 알고리즘 종료 결정 단계

S8-12는 Yices 입력 파일의 실행 및 종료 결정 단계이다. S8에서

파일이 실행되면, 테스트 요건들을 최대한 만족하는 테스트 시퀀스 하

나가 생성된다. Assert+문으로 선언된 테스트 요건들 중 기 생성된 테

스트 시퀀스로 만족된 테스트 요건들은 제외하고 나머지 만족되지 않

은 테스트 요건(Unsatisfied Test Requirement: UTR) 집합만 가지고 새

로운 Yices 파일을 만들어 실행시킨다. UTR이 공집합이면 모든 테스트

요건이 만족됨을 의미하므로 알고리즘을 종료한다. 추가적으로 Yices

수행을 해도 UTR에 변동이 없는 경우는 더 이상 만족시킬 수 있는 테

스트 요건이 없는 것이므로, 반복 횟수를 1만큼 증가시켜 초기 테스트

요건을 가지고 알고리즘을 재 수행한다. UTR이 공집합이거나 최대 반

복 횟수를 넘으면 알고리즘을 종료한다. [그림 1]의 예제 프로그램에

대해 반복 횟수를 3으로 설정하고 알고리즘을 수행하면, 예제 프로그

램의 입력 값인 PV_OUT에 대하여 ts1: (PV_OUT_t2 = 26805)

(PV_OUT_t1 = 26805) ( PV_OUT = 0), ts2: (PV_OUT_t2 = 0)

(PV_OUT_t1 = 0) ( PV_OUT = 0)와 같은 테스트 입력 시퀀스를 얻

을 수 있다.

4. 결론 및 향후 연구

본 연구에서는 내부상태를 가지는 FBD 프로그램의 구조적 커버리지

를 만족시키는 테스트 시퀀스를 Yices SMT 해결기를 이용해 생성하는

알고리즘을 제안하였다. 이 알고리즘을 바탕으로 테스트 시퀀스를 자

동 생성하면 테스트 생성 시간이 감소될 뿐 아니라, 실행 가능한

(feasible) 테스트 시퀀스만이 생성되게 된다. 향후 연구에서는 본 알고

리즘을 자동화 구현하고, 내부 상태를 갖는 다양한 FBD 프로그램에 적

용하여 효과성을 평가하고자 한다.

참고 문헌

[1] Doosan Heavy Industry & Construction, KNICS–RPS–SDS231-01,

Rev. 01, Software Design Specification for the Bistable Processor

of the Reactor Protection System (2006)

[2] Eunkyoung Jee, Junbeom Yoo, Sung Deok Cha, Doo-Hwan

Bae: A data flow-based structural testing technique for FBD

programs. Information & Software Technology 51(7): 1131-

1139 (2009)

[3] Eduard Paul Enoiu, Daniel Sundmark, Paul Pettersson: Model-

Based Test Suite Generation for Function Block Diagrams Using

the UPPAAL Model Checker. ICST Workshops 2013: 158-167

(2013)

[4] da Silva L, de Assis Barbosa L, Gorgonio K, Perkusich A, Lima A:

On the automatic generation of timed automata models from

function block diagrams for safety instrumented systems. IECON

(2008)

[5] Kormann B, Vogel-Heuser B: Automated test case generation

approach for PLC control software exception handlingusing fault

injection. IECON (2011)

[6] Hametner R, Kormann B, Vogel-Heuser B, Winkler D, Zoitl A:

Test case generation approach for industrial automation systems.

International Conference on Automation, Robotics and

Applications (2011)

[7] Magnus S, Krause J, Diedrich C: Test generation for model

based fieldbus profiles. IEEE International Conference on

Industrial Technology (2012)

[8] Hussain T, Frey G: UML-based development process for IEC

61499 with automatic test-case generation. IEEE Conference on

Emerging Technologies and Factory Automation (2006)

[9] Eunkyoung Jee, Donghwan Shin, Sung Deok Cha, Jang-Soo

Lee, Doo-Hwan Bae: Automated test case generation for FBD

programs implementing reactor protection system software.

Softw. Test., Verif. Reliab. 24(8): 608-628 (2014)

572