Thoughts2014.04.19 23:28

지나친 낙관 쪽으로 편항되어 있는 인간의 판단력은 대체로 신뢰하기 어렵다. 


그런 편향이 문제를 일으키는 것을 알기 때문에, 인간은 '비관적으로 판단하는 능력'을 학습하기 위해 부단히 노력해 왔다. 그러나 영화 '밀레니엄'에서도 확인할 수 있듯, 인간은 때로 'CLEAR AND PRESENT DANGER' 를 느끼면서도 그 위험을 회피하지 못하는 이상한 행동양태를 보인다. 과연 이 문제는 절차적 엄밀성으로 해결할 수 있는가. 나는 아니라고 생각한다. 





근본적으로, 잘못된 판단의 결과로 일어날 수 있는 재앙의 규모가 크다면 우리는 그 판단에 인간의 낙관적 편향이 끼어들 수 있는 기회를 제거해야 한다. '배가 기울고 있다'는 위험을 느꼈을 때, '조금 더 기다려도 되겠지'라는 낙관적 편향에서 오는 잘못된 결정을 내릴 확률을 0에 가깝게 떨어뜨려야 한다. 


그렇다면 해답은 자동화다. 무조건적으로 최대한 비관적인 결정을 내리도록 안전 절차를 수정하고 자동화해야 한다. 배에서 이상이 발견되면, 무조건 모든 승객을 하선시키도록 결정 절차를 자동화해야 한다. 사람이 죽는 것 보다는 안전 관리 비용이 증가하는 것이 낫기 때문. (비관적 판단에 편향된 자동화는 평균적 안전 관리 비용을 증가시킨다.)

저작자 표시 비영리 변경 금지
신고
Posted by 이병준

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

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 이병준

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