2016년 12월 23일 금요일

소프트웨어의 테스트 자동화에 대한 장단점 분석


한동안 소프트웨어의 품질을 높이기 위해 QA(Quality Assurance) 활동이 주류를 이루었다. QA 하나로 가장 주목받는 분야가 테스트라는 것은 누구도 부인하기 어려울 것이다그만큼 소프트웨어의 완성도를 확인하기 위해 중요한 활동이 테스트이고아직까지 충분한 만족도를 내지 못하는 분야이기도 하다최근에 테스트 자동화를 통해 이러한 한계를 해결하고자 노력하고 있지만끊임없는 테스트자동화 도구가 나오는 이유는 아직도 요구를 충분히 만족시키지 못하기 때문일 것이다이번 회에서는 테스트 자동화에 대해 국제대학교 김성철 교수를 만나 자세한 얘기를 들어본다.


Q: 안녕하세요소프트웨어 테스트에 대한 말들이 요새  많이 나오기 시작하는  같습니다테스트 자동화에 대해 말씀해 주시죠.

테스트는 소프트웨어 개발에 있어 없어서는 안되는 중요한 활동 중의 하나입니다소프트웨어라는 것이 처음 나왔을 때부터 지금까지쉼없이 발전하는 분야 중의 하나이기도 합니다하지만소프트웨어 테스트의 발전은 더디기만 했습니다가장  이유는 소프트웨어테스트가 항상 수작업으로 이루어질  밖에 없었기 때문입니다사람이   있는 것에는 한계가 있는데 아무리 노력해도 모든 테스트 케이스를 커버하기도 어렵고일정한 테스트 수준을 유지하기도 어려웠습니다이러한 것을 보완하고자 TDD(Test Driven Development) 테스트 자동화 같은 분야들이 나오기 시작한 것이죠.

Q: TDD 대해서는 지난번 185 인사이드 이슈에서 말씀하셨는데요테스트 케이스를 개발하기 전에 만들어 개발한 코드가 정상적으로 동작하는지 미리 확인하자는 것으로 기억하고 있습니다그렇다면테스트 자동화가 소프트웨어 개발에서 필요한 이유는 무엇인가요?

소프트웨어 테스트는 소프트웨어가 정상적으로 동작하는지를 살펴보기 위해 테스트 데이터를 샘플로 만들어서 개발자가 직접 테스트를 했습니다이러한 수작업은 모든 테스트 케이스를 만들  없었고 일관된 테스트도 하기 어렵습니다그리고테스트 계획을 수립할때도 효과적인 테스트 케이스를 만들기 어렵습니다(그림1).

<그림1> 테스트의 효율성과 유효성
출처: http://www.tssg.org/

가장 좋은 테스트는 모든 테스트 케이스를 포함하고 빠르게 테스트가 가능해야 합니다그림1에서 보는 것처럼 유효한 테스트가 효율적으로 이루어져야 좋은 테스트가 되고좋은 테스트를 통해 안전한 소프트웨어를 완성할  있습니다1 테스트 자동화를 통해 얻을  있는 효과를 나타냅니다.

<1> 테스트 자동화의 효과


Analytic Database 사례



Analytic Database와 DWDB의차이점













SW 특징 - 4차 산업혁명, 품질의 중요도


Real World – 실시간 제어
교통 의료 에너지 전쟁 …
Cost of poor quality (COPQ)

• 도요타의 프리우스 16만대 리콜 2005
• 대량의 방사선 누출 사망 - Therac-25 엑스레이 1985-1987
• 소련 가스 파이프라인 사고 – 역사상 가장 큰 폭발 1982
• 화성탐사선 마리너 1호 - 4분만에 대서양 추락
• 아리안 5 로켓 40초만에 폭발 1996년
• 패트리엇 미사일 -28명의 미국 병사 사망 – 1991
• 심장박동기 오동작 – 미국 메디트로닉스사 - 1994