2016년 1월 26일 화요일

정적 분석과 코드 커버리지에 대한 이해

‘정적 프로그램 분석’ (Static program analysis)은 실제 실행 없이 컴퓨터 소프트웨어를 분석하는 것을 말한다. 다시 말해, 어떤 프로그램을 분석할 때 그 프로그램을 실행시키지 않고 ‘그 자체’를 분석하는 것이라고 해석할 수 있다. 프로그램에 내재한 논리적 오류는 일반적으로 프로그램을 실행하여 확인하지 않으면 찾기가 힘들지만, 정적 분석은 이러한 오류를 찾아내는 데 도움을 줄 수 있다.

대부분의 경우에 분석은 소스 코드의 버전 중 하나의 형태를 가지고 수행되며, 가끔은 최종 바이너리를 가지고 분석한다. 이에 반하여, 프로그램을 실행 하여 분석하는 것을 ‘동적 프로그램 분석’이라고 한다.  

정적 분석은 코드를 실행하지 않고도 모든 프로그램의 구성 요소를 검사하여 다양한 결함을 검출 할 수 있다는 장점이 있다. 또, 테스팅 도구들은 사용자의 적절한 가이드로 중요한 프로그램 구성 요소들을 실행해가면서 그 결과가 예상된 것 인지를 확인할 수 있는 메커니즘을 제공함으로써, 결함들을 검출 할 수 있도록 해준다. 이러한 정적분석이 ‘테스팅을 완전히 대신할 수 있는가’에 대한 의견이 분분한 가운데, 슈어소프트테크의 권민혁파트장을 만나  이에 대한 의견을 들어보았다. 





권민혁 파트장 (슈어소프트테크 시험자동화 연구소)


Q: 요즘 정적 분석기법이 적용된 도구들에 대한 관심이 높아지고 있는데, 이유가 뭘까요?

최근의 소프트웨어 개발 방법론의 흐름을 보면 과거 보다 소프트웨어 정적 분석 기술과 소프트웨어를 동적으로 테스트하는 테스트 자동화 도구에 대한 관심이 높습니다. 현대의 소프트웨어 는 너무나 크고 복잡해서 사람이 직접 프로그램의 모든 동작을 꼼꼼히 확인하기란 매우 어려운 일이기 때문일 텐데요. 소프트웨어의 품질이 중요시되는 경우, 개발자와 품질 관리자는 전문적인 도구들을 필요로 하게 됩니다. 정적 분석 기법이 적용된 도구와 자동화된 테스트 도구들은 이런 요구에 부합하는 도구들이라고 볼 수 있죠.하지만 산업계의 품질과 관련된 다양한 요구만큼, 도구를 도입하거나 사용할 때 발생할 수 있는 오해도 많이 있습니다. 더 읽기

댓글 없음 :

댓글 쓰기