Stress test
STRESS TEST
Stress test는 특정 시스템이나 시스템의 구성요소(ex. 특정 모듈) 또는 Software 프로그램에 다양한 Stress를 가할 때 test 대상이 정상적으로 동작하는지 확인하는 시험이다. 이는 개발중인 타깃을 고온, 저온, 장시간, 과부하 등 예외적이지만 실제로 발생할 가능성이 있는 극한의 환경에 노출시켜 동작시킴으로써 예상하지 못하였던 문제점을 발견하고 이를 개선하기 위한 목적으로 활용되고 있다.
이러한 Stress test의 목적으로 인해 특정 기능을 반복하여 동작 시키는 경우가 많으며 짧게는 수일 길게는 수주 동안 test가 지속되는 경우도 있다. 실제로 test 대상이 특정 동작을 반복하여 수행할 때 처음 2,3일 동안은 아무런 문제가 발생하지 않으나 그 이상 test 해 볼 경우 확인 가능한 문제들이 존재한다. 가장 대표적인 문제로는 대부분의 개발자가 흔히 접할 수 있는 Software의 타이밍 이슈 또는 미세하게 발생하는 Memory leak 등이 있다.
Stress test는 이와 같이 장기간 진행이 되고 예외적인 문제를 발견하는 특징이 있기 때문에 한번 문제가 발생했다고 하더라도 이를 다시 재현하기가 쉽지 않다. 또한 언제 어디서 문제가 발생할지 예상하기가 상당히 까다로워 문제를 다시 재현했다고 하더라도 이를 해결하기 위한 정보를 획득하지 못하는 경우도 많다(타깃이 reboot 되거나 정보를 획득하기 위한 명령을 인식하지 못하는 등). 이 때문에 수일에 걸쳐 어렵게 재현한 문제를 계속 반복하여 재현하는 경우가 많으며 이로 인해 개발 기간이 상당히 지연되게 된다.
이와 같은 test 환경에서 한번의 재현 만으로 문제의 정보를 획득하기 위해 소스코드 내에 예측되는 수많은 지점에서 로그를 출력하도록 하지만 로그 출력을 위해 삽입된 함수로 인해 발생하던 문제가 재현되지 않는 경우도 많다.
하지만 기존의 방법이 아닌 TRACE32의 다양한 기능과 스크립트를 활용한다면 Stress test 환경에서의 위와 같은 불편을 해결할 수 있다. 에러가 발생했을 때 타깃이 reboot되거나 정보 획득을 위한 명령어(HDD/SSD의 SMART정보 등) 입력이 불가해 지기 전 관련정보를 획득하거나register 값, 메모리 값 등 디버깅에 필요한 정보를 dump받을 수 있다. 또한 타깃이 on-off 를 반복하는 test 에서도 TRACE32를 자동으로 연결 할 수 있으며 TRACE32의 스크립트를 통해서 타깃의 Stress test를 직접 진행할 수 있다. 특히 Logic/Analog Signal을 소스코드와 동기화 하여 확인이 가능하여 이슈가 발생했을 시 해당 문제가 H/W의 문제인지 S/W의 문제인지 판가름 하는데도 많은 도움을 받을 수 있다.
관련문서:
Useful TRACE32 Functions (http://trace32.com/wiki/index.php/%EB%94%94%EB%B2%84%EA%B9%85_%EC%8B%9C_%EC%9C%A0%EC%9A%A9%ED%95%9C_%EB%AA%85%EB%A0%B9)
Script Programming (http://trace32.com/wiki/index.php/Script_Programming)
HW와SW co-debugging (http://trace32.com/wiki/index.php/Hardware%EC%99%80_Software_Co-Debugging_Solution)