Extremely Agile/TDD2007.09.25 02:00
방금 웹 서핑을 하다가 HttpUnit에 대한 글을 잠깐 읽었습니다. 블로그들에는 없는 내용이 없군요 :-P

http://httpunit.sourceforge.net/

위의 URL이 httpunit의 주소입니다. jUnit과 함께 사용해야하는, Java 기반의 solution입니다.

Cookbook 문서를 읽어보면 알수 있는 것입니다만 (아래의 글은 Cookbook 문서를 보고 간단히 요약한 것입니다) HttpUnit 프레임워크는 WebConversion 클래스를 사용해서 웹 브라우저가 만드는 HTTP conversion을 흉내냅니다.

WebConversation wc = new WebConversation();
WebRequest     req = new GetMethodWebRequest( "http://www.meterware.com/testpage.html" );
WebResponse   resp = wc.getResponse( req );

WebResponse 객체를 받아온 다음에는 getText() 메소드를 불러서 텍스트 형태의 프로세싱을 할 수도 있고, getDOM() 메소드를 호출해서 DOM 기반의 조작을 할 수도 있습니다. (이 편이 좀 더 편하긴 하겠네요.)

다음 처럼 하면 링크를 따라가는 것도 가능합니다.

WebConversation wc = new WebConversation();
WebResponse resp =
            wc.getResponse( "http://www.httpunit.org/doc/cookbook.html" ); // read this page
WebLink link = resp.getLinkWith( "response" );                              // find the link
link.click();                                                                               // follow it
WebResponse jdoc = wc.getCurrentPage();                                  // retrieve the referenced page

폼 프로세싱이나 테이블 형태의 자료 처리도 가능합니다. 폼 프로세싱 예제만 살펴보면,

WebForm form = resp.getForms()[0];      // select the first form in the page
assertEquals( "La Cerentolla", form.getParameterValue( "Name" ) );
assertEquals( "Chinese",       form.getParameterValue( "Food" ) );
assertEquals( "Manayunk",      form.getParameterValue( "Location" ) );
assertEquals( "on",            form.getParameterValue( "CreditCard" ) );

위와 같이 해서 폼의 기본 파라메타 값이 어떻게 만들어져있는지 검사할 수도 있고,

form.setParameter( "Food", "Italian" );      // select one of the permitted values for food
form.removeParameter( "CreditCard" );         // clear the check box
form.submit();                                // submit the form

폼에 포함된 컨트롤들에 값을 넣어서 날릴 수도 있습니다.

웹 기반의 인터페이스 테스트를 하는 데 굉장히 유용할 것 같네요. :-) 하지만 이 프레임워크의 가장 큰 약점은...

자바스크립트 지원이 아직은 기본적인 수준이다

는 점이 되겠군요 -_-;


다들 알고 있는데 저만 모르는 사실들이 아주 많은것 같아 좀 우울합니다 ㅋㅋ



신고
Posted by 이병준

소중한 의견, 감사합니다. ^^

  1. 시월애

    잘보고갑니다. ^^
    많은도움얻고갑니다 ㅎ

    2008.03.24 13:38 신고 [ ADDR : EDIT/ DEL : REPLY ]
  2. 이것은 위대한이며 많은 사람들이이 공유를 주셔서 감사합니다 사랑 할거야 확신

    2011.11.22 04:12 신고 [ ADDR : EDIT/ DEL : REPLY ]

Extremely Agile/TDD2007.09.20 10:54
웹에 대해서 관심을 끊은지 하도 오래되어서 이런 툴이 나온줄도 몰랐군요.

TDD할 때 가장 짜증나는 부분이 웹 사이트를 비롯한 "User Interface"에 대한 interaction을 어떻게 자동화 할 것이냐 하는 부분입니다. 사실 이 부분에 대한 고민을 예전에 좀 했었지만, 그냥 얼핏 생각하기에는 Lynx같은 텍스트 기반 브라우저를 돌려서 그 결과를 적절히 파싱한 다음에 원하는 결과와 대조하면 되는게 아닐까, 하는 다소 느슨한 생각만 하고 있었어요. 언젠가 그런 솔루션을 찾거나 만들거나 해야지... 하는 생각만 했더랬죠.

그러다 웹 서핑하는 도중에 Selenium이라는 솔루션을 만나게 되었습니다. 웹 사이트 주소는 http://openqa.org/ 입니다.


Selenium IDE 사용 예를 보여주는 플래쉬 무비


웹 사이트에 대한 interaction을 녹화해두었다가 재생해주는 방식을 사용해서 웹에 대한 테스트를 자동화할 수 있게 해 줍니다. 얼마나 테스트를 잘 할 수 있는지는 아직 해보지 않아서 모릅니다만, 나중에 한 번 써 봐야 겠어요. 그런데 공짜는 아닌거같군요. -_-

Seleniuim IDE는 Firefox하고만 연동되는것 같습니다만, Selenium Core는 대부분의 웹 브라우저에서 다 잘 되는군요.  심지어는 이런 저런 운영체제들에서도 다 잘 돌아갑니다. 거기다 오픈 소스... :-) 쭉 읽어보니 Selenium Core는 자바 스크립트 기반 솔루션인것 같습니다. Selenium IDE는 Core를 통한 Test Case 개발을 좀 더 편하게 할 수 있도록 지원해주는 툴인 셈이고요.
신고
Posted by 이병준

소중한 의견, 감사합니다. ^^