Software testing is an important activity for assuring the software quality. Since software testing is known to account for approximately 50 percent of the development cost, how to reduce its cost and improve its quality has always been a challenge to the software engineers.
Function Block Diagram is widely used in industries, i.e. traffic controls, chemical processing plants, and nuclear power plants, to solve the real-time safety critical problems. However it is known to there is no systematic testing technique on Function Block Diagram.
This thesis presents the testing technique on Function Block Diagram. This thesis proposes Function-based coverage and Function Block-based coverage. Function-based coverage considers only a cycle of Function Block Diagram because it has same behavior during the cycle for using only Function of Function Block Diagram. Function-based coverage is not enough to test timing aspect of systems. So in this case, Function Block-based coverage is needed for several cycles. And this thesis presents the experimental results that show the performance advantages in terms of fault detection ability using a partial part of Korean nuclear power plant RPS(Reactor Protection System) example.
소프트웨어 개발 과정에서 테스팅은 소프트웨어의 구현이 요구사항에 부합하는지 확인하기 위해, 혹은 소프트웨어의 품질을 보장하기 위해서 반드시 수행되어야 하는 작업이다. 테스팅을 수행하는데 소요되는 비용은 대략적으로 전체 소프트웨어 개발 비용의 50%에 달하는 것으로 추정되고 있다. 따라서 이러한 소프트웨어의 테스팅 비용을 줄이고, 품질을 향상시키는 일은 소프트웨어 공학자들에게는 항상 관심있는 주제였다. Function Block Diagram은 교통 신호기, 화학 처리 시설물, 원자력 발전소 등의 실제 산업에서 안정성이 중요한 문제들을 해결하기 위해서 널리 사용되고 있는 PLC(Programmable logic Controller)의 가장 널리 사용되는 프로그래밍 언어이다. 그러나 현재 Function Block Diagram에 대한 체계적인 테스팅 기법은 사용되고 있지 않은 것으로 알려져 있다. 본 연구에서는 Function block Diagram의 테스팅 기법을 Function 기반 커버리지와 Function Block 기반 커버리지로 나누어 제안한다. Function Block Diagram의 Function은 같은 입력 값이 들어올 경우, 항상 같은 출력 값을 내보낸다. 따라서 Function으로 이루어진 Function Block Diagram의 경우, 매 주기마다 동일하게 동작하기 때문에, 한 주기만을 대상으로 테스팅을 수행할 수 있다. 반면, Function Block의 경우, 같은 입력 값이라도 Function Block의 내부 상태에 따라 출력 값이 다르게 나올 수 있기 때문에 한 주기를 대상으로 하는 Function 기반 커버리지를 이용한 테스팅을 수행하는 것으로 충분하지 않다. 따라서 여러 주기를 대상으로 테스팅을 수행할 수 있는 Function Block 기반 커버리지를 제안한다. 사례 연구에서는 현재 한국 원자력 연구소에서 개발중인 RPS(Reactor Protection System)의 비교 논리 프로세서의 일부분을 대상으로 제안된 방법의 유용성을 보인다.