실버라이트 유닛 테스트

번역/ScottGu's Blog 2008. 4. 2. 23:46

원문 : Unit Testing with Silverlight

실버라이트 베타1이 출시되었을 때 가장 중요한 기능 중 한 가지는 API 레벨과 UI 레벨에서 수행할 수 있는 유닛 테스트 도구였습니다. 실버라이트의 유닛 테스트 도구는 크로스 브라우저와 크로스 플랫폼을 지원하고, 또한 자동화된 유닛 테스트를 신속하게 수행할 수 있습니다.

실버라이트 유닛 테스트 도구에는 이 도구를 이용하여 작성된 2,000 개의 유닛 테스트 소스도 포함되어 있습니다. 이 소스는 실버라이트 컨트롤 소스에 대한 자동화된 커버리지를 제공합니다. 실버라이트 컨트롤 소스의 라이센스는 상당히 관대하기 때문에, 이를 수정한 후 유닛 테스트를 실행하여 검증하고 다시 배포하는 것도 가능합니다.

실버라이트를 유닛 테스트 하는 방법

Jeff Wilcox(실버라이트 유닛 테스트 프레임웍과 도구를 개발한 개발자입니다.)는 실버라이트 유닛 테스트 프로젝트를 솔루션에 추가하는 방법을 설명한 멋진 블로그 포스트를 작성하였습니다.(링크) 그가 테스트한 채팅 애플리케이션은 지난 달에 제가 작성한 Expression Blend 블로그 포스트 튜토리얼(한국어)에서 다운로드 받을 수 있습니다. 또한 그는 유닛 테스트를 수행하는 과정을 담은 유용한 비디오 포스트도 공개하였습니다.

Jeff의 포스트가 설명하는 것 처럼, 이제 비주얼 스튜디오 솔루션에 “실버라이트 테스트 프로젝트”를 추가할 수 있습니다.

clip_image002

그 다음에는 테스트 프로젝트에 API나 실버라이트 컨트롤의 UI 액션을 시뮬레이션하는(버튼 클릭 시뮬레이션 등) 테스트 클래스를 추가합니다.

clip_image004

그리고 테스트 프로젝트를 실행하면 테스트 결과를 검증하고 그 상태를 확인할 수 있습니다.

Jeff의 테스트 프레임웍은 브라우저 기반의 테스트 도구와 보고서 시스템을 제공합니다. (이 말은 실버라이트가 실행되는 어떠 브라우저나 OS에서도 사용할 수 있다는 의미입니다.)

clip_image006

Jeff의 테스트 프레임웍은 각각의 테스트 후 곧바로 컨트롤을 다시 설정하는 기능을 제공합니다. (따라서 새로운 브라우저를 재시작하는 작업을 하지 않아도 되는데, 이는 대단한 시간 절약이라고 할 수 있겠습니다.)

수 백 혹은 수 천 개의 자동화된 테스트도 몇 초 안에 수행이 됩니다.

clip_image008

녹색은 테스트가 통과되었다는 의미입니다. 적색은 테스트 케이스가 실패하여, 실패한 어셜션 (그리고 / 또는) 런타임 예외에 대한 로그를 기록하였다는 의미입니다.

정리

AJAX 애플리케이션과 관련하여 자동화된 유닛 테스트 혹은 TDD 전략에 대한 고민을 많이 하셨다면, 실버라이트가 제공하는 테스트 도구가 훌륭한 선택이 될 수 있을 것입니다. 비주얼 스튜디오를 사용하면 테스트 프로젝트를 별도의 프로젝트로 뺄 수 있어, 실버라이트 프로젝트에 테스트 코드를 포함시키지 않을 수도 있습니다.

실버라이트 2 최종 버전에서는 여태까지 말씀 드린 유닛 테스트 도구와 프레임웍 뿐만 아니라 UI 자동화 API도 지원될 예정입니다. 이 기능을 이용하면 장애우들도 접근 가능한 애플리케이션을 만들 수 있습니다. 또한 실제 마우스와 키보드의 동작을 그대로 흉내 내는 UI 테스트를 수행할 수도 있게 됩니다. 결과적으로 이러한 기능들이 결합하면 더욱 튼튼하고 유지보수가 유연한 RIA 솔루션을 만들 수 있게 되는 것입니다.

도움이 되길 바라며,

스캇

추신 : 저의 “실버라이트 팁, 트릭, 튜토리얼, 링크” 포스트에 가시면 실버라이트 2에 대한 더 많은 내용을 보실 수 있습니다.

: