The danger of mock objects을 보면 mock object의 사용에 관한 위험성을 지적하는 내용이 나온다.

Mock object는 잘못쓰면 부작용이 있을 수도 있고 위험할 수도 있다. 그럼 잘못쓰는데도 안 위험한 기술이나 API는 있을까? 당연히 모든 기술은 잘못 쓰면 다 위험하다. 디자인 패턴이 아무리 좋고 프레임워크를 사용하는 것의 장점이 많을지라도 적절한 상황에서 바른 방법으로 사용하지 않으면 다 소용없다.

그런 원론적인 얘기 말고 Cedric이 지적한 케이스를 보자. 어느 Method가 connection을 close하는가에 대해서 테스트하는 것을 Mock connection을 만들어서 close가 호출되는가를 체크하는 식으로 만들면 개발자는 자기 애플리케이션에 문제가 없다는 착각에 빠진다는 것이다. 예를 든 것이 close에 문제가 있는 JDBC드라이버로 업그레이드를 했을때 이 테스트는 여전히 성공했다고 나오기 때문에 그것을 못잡아 낸다는 것이다. 답글을 보니 반쯤은 공감을 하고 있고 반쯤은 반대를 하고 있다.

아주 어이없는 주장이다.

Test, TDD, UnitTest, Mock, Stub등은 항상 많은 논쟁이 있는 분야이다. QA를 통한 수동테스트 방식이 아닌 개발자 스스로 작성하는 방식의 TDD나 자동화된 테스트기반의 다양한 테스트 기법이 나온지 사실 오래 되지도 않았기 때문에 여전히 논쟁이 있을 수 있다.

그 중 Mock Object는 제일 많이 논란의 대상이 되는 것을 볼 수 있다. 얼마전에 TDD뉴스그룹에서  또dynamic mock과 static mock에 대한 논쟁이 있었다. 사실 mock object에 대한 정확한 정의부터 많은 혼란이 있다. mock을 그저 real을 대신하는 가짜라는 의미로 사용하는 것이 가장 일반적이긴 하다. Martin Folwer는  stub과 대비해서 interactive한 테스트가 가능하게 해주는 것이라는 정의를 내리기도 했다. 사실 그 용어가 처음 소개 되었을 때는 기대결과(expectation)와 그에 따른 검증(verify)가 가능한 collaborator라는 의미로 얘기되었던 것 같다(정확한 내용은 찾아보기 귀찮아서.. -_-)

Cedric이 말하는 위험한 mock이란 넓은 의미로 가짜 오브젝트를 말하는 것 같다. 그것을 왜 사용하는가? 단지 테스트하기 쉬워서인가? 그것만은 아니다. Mock을 사용해야 하는 일차적인 이유는 real을 사용하려면 너무 많은 리소스를 사용하게 되고 시간이 걸리고 real을 테스트 환경에서 사용하기가 매우 까다로운 경우기 때문일 것이다. 하지만 그렇지 않은 경우에도 mock의 사용은 필요하다. 그것은 Unit Test가 지향하는 독립적인 테스트(isolated test)를 하기 위함이다. Cedric의 케이스로 다시 돌아가서 보면 내가 테스트 하는 코드는 분명 db코드 수행을 마치고 항상 주어진 connection의 close를 하지만 업그레이드 된 JDBC드라이버가 문제가 있기 때문에 수행을 실패한다면 그것은 JDBC드라이버에 대한 테스트이지 내가 만든 메소드의 테스트는 아니다. JDBC드라이버에 따라서 내 method의 close 수행여부가 결정된다는 것은 우스운 일이다. 테스트는 각각 작성된 목적이 있는 것이다. JDBC드라이버가 못미더워서 그것을 검증하고 싶다면 독자적인 테스트를 작성하면 된다. 내 코드는 이상적인 collaborator(JDBC driver)가 있다는 전제하에 그와 협업을 잘 수행해 내는가만 확인하면 된다. 외부의 리소스와 클래스 등에 독립적인 테스트를 수행하는 것은 Unit Test의 기본이다. 그것을 애플리케이션 전체적인 관점에서 외부리소스나 사용 라이브러리까지 포함한 넓은 의미의 테스트가 아니기 때문에 개발자에게 잘못된 확신을 주어 위험하다는 것은 다양한 테스트수행 목적에 대한 착각에서 비롯된 주장일 뿐이다.

더 살펴보면 그의 주장은 스스로 모순이다. Mock은 real을 사용하기가 아주 어려운 경우만 사용하라고 했다. 그럼 Connection의 real을 가져다가 테스트하기 아주 어려운 경우가 발생했다고 보자 그래서 조심스럽게 mock을 썼다. 그런데 JDBC Driver를 업그레이드하고 보니 close에 문제가 있었다. 그럼 그렇게 주의 깊게 mock을 사용한 테스트는 이때 그런 문제를 잡아줄 수 있는가? 당연히 아니다. 결국 그가 주장하는대로 외부리소스(JDBC Driver)에 대한 검증을 그것을 사용하는 코드의 테스트에서 하려고 한다면 어떠한 경우에도 mock을 사용하면 안될 것이다. 위험하다고 하지말고 절대사용불가라고 해야 할 것이다.

Rod Johnson은 테스트는 thorough해야 한다고 했다. 그러기 위한 가장 기본적인 전략은 다양한 레벨의 테스트를 수행해야 하는 것이다. 자신이 만든 코드가 의도한대로 동작하는지 독립적으로 테스트 해보기 위해서는 mock을 이용한 unit test를 써야 한다. 그것이 외부리소스와 잘 연계해서 동작하는지는 integration test레벨에서 하면 된다. 그것이 복잡한 시나리오를 가진 상황에서 여러모듈이 연계해서도 잘 동작하는지 확인하려면 functional test를 하고 고객의 요구사항을 정확히 반영했는지는 acceptance test를 또 해야 할 것이다. 필요한 성능을 가졌는지는 performance test를 별도로 수행해야 함은 물론이다. HA시스템를 위한 scalability test도  해야한다. 필요에 따라 외부리소스나 사용 라이브러리 자체에 대한 검증 테스트도 필요할 것이다. 이렇게 다양한 접근방법을 가지는 테스트를 통해서 테스트는 완벽해져야 한다.
Mock은 그러한 테스트 중에서 테스트에서 사용하기 힘든 리소스를 써야 하는 경우, 예를 들면 JNDI, MAIL, 또는 isolated test에서 collaborator를 대신하는 목적으로 쓰면 된다. 또 자체적인 검증코드를 가진 interactive한 테스트가 필요한 경우에도. 필요한 경우라면 마음 것 쓰면 된다. 그다지 주의 할 것도 없다. Mock을 쓰는 것이 더 복잡한 테스트를 만드는 경우만 피하면 될 것이다.
Cedric과 같이 mock의 사용에 대해서 불편해하는 경우는 대부분 TDD와 같은 white/glass box test 방법을 사용하지 않기 때문이라고 보인다. 아무리 그래도 mock에 대해서 쓸모없는 비방은 좀 그만 했으면 싶다.

Related posts:

  1. EasyMock 2.1 Released
  2. 켄트 벡의 오리사냥 – Optimistic Typing
  3. SimpleNamingContextBuilder를 이용해서 JNDI를 이용하는 코드 테스트 하기
  4. JSP UnitTest
  5. Rod Johnson의 Testing with Spring
  6. 이클립스에서 JUnit4 테스트의 특정 테스트메소드만 실행하기
  7. Spring기반의 Hibernate DAO Unit Test 만들기

Facebook comments:

to “Mock Object의 위험성?”

  1. dans le plastique+ ,%, les matériaux de construction ou linformatique.Impr
    Bottes UGG Classic Mini
    le industriel. Cette activité devrait peser millions d’euros de chiffre d’af
    Canada Goose Enfant
    i pour avocat Me Chaffin, a demandé à Me Isorni, défenseur du maréchal Pé
    Bottes UGG Sundance II
    res professionnellesA travers sa filiale Nomento, le spécialiste américain
    acheter canada goose

  2. heures par semaine, mais pas pour les temps partiels courts, qui sont le plu
    Bottes UGG Classic Mini
    ont réussi à y inclure une disposition sur le management. L’accord reconna
    Canada goose france
    de l’entrée est de F, ou F pour les étudiants et les es. On peut le visite
    bottes ugg soldes
    ucléaire Quelles sont les voies de développement pour le moteur électrique
    Canada goose france

  3. iritiro precampionato, finalizzato a rifinire la forma e a integrare i nuovi acquisti nellossatura base del quindici pratese. Il tutto per arrivare preparati al giorno del gran debutto nel massimo campionato italiano, il settembre, contro i campioni dItalia del Benetton
    Moncler Outlet
    tazioneCaos al comando del I gruppoPrati, ex XVII gruppo. Come accaduto a settembre ad Ostia negli uffici sono state trovate numerose zecche e pulci. Dopo le segnalazioni della mattinata, la decisione di chiudere la struttura. Cosigrave alle una parte degli uffici sono
    Moncler outlet
    oto: Ugo CappellacciCommentiSport, Vita in provinciaTag: Carmignanello, comune di Cantagallo, festa dello sportSarà un sabato di sport a Carmignanello il prossimo settembre. A partire dalle infatti, andrà in scena la quarta edizione della Festa dello sport, a cura del
    Moncler Giacche
    i lavori di risanamento e modulazione della sede stradalenel tratto di viaCavour compreso tra la via Galcianese evia Pistoiese che rimarrà chiuso al traffico veicolare e alla sosta su entrambi i lati. Durante lo stop alle autoil trafficosarà deviato in via della M
    Moncler Outlet

  4. operativa sociale Nuove Idee.Stampa l’articolo Scrivi un commento Annulla rispostaALGHERO – Domani, mercoledì marzo, il campo comunale di Samassi ospiterà il raduno della selezione regionale che rappresenterà la Sardegna al Torneo delle Regioni, la prestigiosa manif
    giubbotti Moncler scontati
    ellordine dei lavori del prossimo consiglio comunale per saperequali progetti e quali strategie il Comune di Alghero ha promosso per i sofferenti mentali relativamente ad un bando indetto dalla Regione Sardegna che finanzia progetti integrati di sviluppo per linclusion
    Moncler Cappotti Donne
    o calcolato secondo le tariffe .Rimangono invariati i canali tramite i quali effettuare il pagamento.Stampa l’articoloCommenti: B. anno faMe ne sono accorto che è arrivata la Tia a Vaiano, e volevo puntualizzare come fosse stato dichiarato inizialmente che tramite la
    offerte piumini Moncler
    ri isolani Un Presepio vivente a villa Devoto sotto NataleCon queste parole il consigliere regionale del partito democratico critica pesantemente la decisione del Governatore Cappellacci di recarsi a Buenos Aires per accompagnare il simulacro della madonna di Bonaria.N
    Moncler Cappotti Donne

  5. i lavori di risanamento e modulazione della sede stradalenel tratto di viaCavour compreso tra la via Galcianese evia Pistoiese che rimarrà chiuso al traffico veicolare e alla sosta su entrambi i lati. Durante lo stop alle autoil trafficosarà deviato in via della M
    UGG Classic Mini 5854 Boots
    batteria di qualificazione in , è di livello assoluto, visto che è di soli due centesimi di secondo superiore al limite utile per strappare il pass per i Campionati Mondiali Indoor, in programma il mese prossimo in Qatar, sulla pista di Doha.Ora, lobbiettivo più pros
    stivali UGG Italia
    i ricoverati, ricevuti dai dirigenti e dai medici dellospedale. Un modo per regalare a questi sfortunati bambini un momento di gioia, un piccolo regalo e un sorriso di speranza.CommentiSASSARIL’Auser di Monserrato Rizzeddu organizza per sabato alle una serata musicale c
    Stivali Ugg Scontati
    uiderà la Mercede San Paolo Alghero nel campionato di Serie A /. Al termine di un incontro tra il general manager algherese Francesco De Rosa e l’esperto allenatore, si è deciso per una rescissione consensuale per motivi personali.Coach Paccariè ha spiegato a De Rosa
    Ugg Classic Tall Boots

  6. al termine dell’incontro da parte del personale ospedaliero. In questo modo si eviteranno furbizie. La stessa associazione ha raccolto oltre firme che sono state presentate al Comune e Provincia di Sassari.CommentiCAGLARIUn risultato importante per la Sardegna, frutto
    Snow Stivali
    rispostaALGHEROI lavori a Punta del Mol rischiano di creare disagi alla viabilità portuale. La secca delle Murgie è interessata da due giorni da un importante operazione di riqualificazione del fondale che deve essere livellato secondo quanto stabilito dagli organi co
    Bomber UGG Tall
    ore Alessandro Maida e del preside di Agraria Pietro Luciano. Consorte, amministratore delegato della SellaMosca, a lungo presidente nazionale dellAssociazione Enologi ed Enotecnica, è luomo che ha cambiato i vini sardi, contribuendo in modo decisivo al successo dellaz
    Snow Stivali
    a stagione, ha collezionato tre vittorie, quattro pareggi ed altrettante sconfitte, per un totale di tredici punti. La differenza reti è però ampiamente deficitaria, un meno undici, figlio di sole quattro reti segnate e ben quindici subite.A partire dalla partita di d
    UGG Evera 1798

  7. ti, lesperienza almeno biennale nella gestione di servizi culturali, museali o di accompagnamento culturale turistico, il numero medio annuo di operatori non inferiore a quattro unità e lintroito medio annuo non inferiore a . euro. Limporto annuale del progetto è di .
    UGG® stivali outlet
    ia relativa alla modifica alla circolazione allinterno del Piazzale della Pace e nella via Garibaldi ad Alghero. Una parte degli spazi di sosta allinterno dellarea ex Saica saranno riorganizzati istituendo una zona in cui sarà obbligatoria lesposizione del disco orario
    stivali ugg
    a, poi, la squadra ha provveduto al suo recupero e alla messa in sicurezza della stessa. Il tutto davanti a decine di spettatori che hanno potuto assistere in diretta allintervento.Stampa l’articolo Scrivi un commento Annulla rispostaEconomia, E stata approvata la conve
    stivali UGG® classic
    emocratico, Silvio Lai, futuro senatore a Roma, non usa mezzi termini per bocciare l’atto aziendale della Asl di Sassari, e sottolinea di aver chiesto ufficialmente a tutti i sindaci del territorio di rispedire al mittente il documento. Dalla Riviera del Corallo poi lan
    prezzi ugg

  8. http://www.androspeed.com/
    brand bags
    Balenciaga online store : Balenciaga bag,Balenciaga city bag,Balenciaga classic city,Balenciaga city handbag,Balenciaga giant 21 discount sales.Welcome to Balenciaga city sale shop and you can choose your favorite Balenciaga from our website.
    http://www.androspeed.com/includes/templates/androspeed/images/brand/right09.jpg
    http://www.androspeed.com/Chanel bags on sale

  9. hero.Il collegamento avrà inizialmente per tutto il mese di Agosto una frequenza giornaliera: AlgheroRoma Ciampino alle . con arrivo alle . Roma CiampinoAlghero alle . e arrivo in terra sarda alle .. Dal ° settembre poi, la Ryanair opererà il collegamento con quattro
    Moncler Cappotto Donna
    ma da questa comunque pretesa. Numerose le minacce attuate dai due, anche sul luogo di lavoro della vittima, operaio in un cantiere edile.Finalmente il giovane ha denunciato il fatto e ieri è scattata la trappola: la consegna del denaro in un angolo del porto de La Ma
    UGG Ultra Short 5225
    atuitamente. Il progetto si inserisce in un piano più ampio pensato dai Servizi sociali del Comune per i giovani che si trovano in situazioni di disagio. Lo sportello sarà attivo nei seguenti giorni e orari: martedì nellistituto Brunelleschi, dalle ore alle ore giove
    Moncler Spaccio
    o e aziende sono state segnalate alle competenti Procure della Repubblica. L’inchiesta Tyres ha permesso di scoprire come le gomme e i copertoni di auto e camion fuori uso, provenienti da numerose rivendite della Sardegna, invece di arrivare agli impianti autorizzati d
    UGG Ultra Short 5225

Leave a Reply

(required)

(required)

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© 2017 Toby's Epril Suffusion theme by Sayontan Sinha