IBM DW에 실린 개발 일정을 줄이는 방법-테스팅이라는 컬럼을 읽었다.  테스트와 품질관리가 중요하고 그 것이 개발과정 중에 가능한 빨리 수행되는 것이 유리하다는 얘기에는 공감한다.

다만 아래 주장은 조금 의아스럽다.

한 가지 재미있는 점은 개발자들이 일반적으로 생각하는 것과는 달리 소스 기반 단위 테스팅보다 소스를 고려하지 않는 블랙박스 개념의 시스템 테스팅의 결함 검출률이 높다는 것이다.

개발자가 자신이 작성한 소스의 내부 동작원리와 구조를 알고 그것을 검증하기 위해서 작성하는 테스트를 이전엔 단위테스트 요즘엔 주로 개발자테스트라고 한다. 테스트 먼저(test first)방식의 TDD에서 주로 사용하는 방법이지만 코드 먼저(code first) 방식에서도 개발자에 의해서 작성되는 테스트는 대부분 자신이 작성한 내부의 코드의 동작원리에 대한 검증 테스트이기 때문에 내부를 들여다 보고 테스트 한다고 해서 화이트박스 테스트라고 불린다.

위의 주장은 블랙박스 테스트 – 즉, 내부의 동작원리는 무시하고 어떤 기능의 (주로 사용자)인터페이스만 가지고 조건과 결과를 검증하는 테스트 방법이 효과적이라는 것이다.

사실 얼마전에 이와 비슷한 주장을 하는 어떤 글을 읽었던 기억이 난다. 재밌는 것은 여기서 말하는 것은 결함검출률이라는 점이다. 이 주장에서 한가지 간과하고 있는 것은 결함검출시점이다. 동일한 결함이 있는 코드인데 화이트박스 테스트를 해서 잡히는 결함보다 블랙박스 테스트를 해서 잡히는 결함이 더 비율이 높다라는 것은 일단 그 자체로 모순이다.

화이트 박스 테스트는 개발과정의 일부로서 지속적이고 점진적인 방법으로 테스트가 이루어지는 것이 일반적이다. 또한 그렇게 쌓아가는 테스트 덕분에 빨리, 더 결함이 적은 코드가 만들어진다. 그에 반해 블랙박스 테스트만을 사용한다면 블랙박스 테스트가 가능할 때까지 테스트 없이 일단 닥치고-코딩을 해야 할테고, 그렇다면 결함자체가 더 많이 들어갈 확률이 높다. 그렇게 생각한다면 당연히 블랙박스 테스트가 더 많은 결함을 찾는 것처럼 보인다. 왜냐면 결함이 더 많으니까. 애초에 결함이 적게 들어가게 도와주는 단위/개발자 테스트가 결함이 더 많이 쌓이게 방치하는 블랙박스 테스트보다 결함률이 적다는 것은 마치 뚱뚱할 수록 다이어트가 더 잘된다고 주장하는 것과 같다. 평소에 체중을 잘 관리했다면 구지 다이어트 할 필요도 없고, 해도 많은 체중을 줄일 필요가 애초에 없다. 단순히 다이어트를 했는데 얼마나 많이 뺄 수 있었나를 따지는 다이어트 성공률은 체중이 많이 나갈 수록 높다라는 식의 얘기랑 다를 바 없다.

또는 결함률을 따지는 것이 개발자 테스트를 하는 과정서는 결함이 검출되지 않고 남았다가 블랙박스 테스트를 해보니 그때 추가적으로 잡히더라라는 식으로 생각할 수 있다. 당연히 개발자 테스트 또는 소스코드를 의식한 단위 테스트에서 모든 결함이 다 잡히지는 않는다. 그래서 통합테스트, 고객테스트 따위가 필요한 것이다. 하지만 그렇다고 해도 개발자 테스트보다 블랙박스 테스트가 더 결함을 찾는데 효율적이라는 것은 역시 말이 되지 않는다. 그것은 상호보완적인 것이고, 이미 개발자 단위테스트를 통해서 많은 결함이 제거되고, 아예 도입되지도 않은 상태로 더 부가적인 검증을 위해 블랙박스 테스트(기능테스트라고 보면 될까?)를 하는 것이다.

어떤 근거와 자료를 바탕으로 이 주장을 하는지 알 수 없으나 상당히 왜곡되서 전달될 수 있는 내용이라 읽고 나서 찝찝하다.

 

그 다음에 이어지는 요구사항분석과 설계시의 리뷰가 좋다는 것은.. 일단 다른 얘기니까 패스. 설계와 요구사항이 중간에 계속 바뀐다면 그때는 어떤가라고 묻고 싶지만 뭐 내 관심분야가 아니니까… 요구사항분석의 전문가 영회한테 패스. 참.. 그 글에 나온 Phase Error Found & Fixed라는 그림을 보고 있으니, 이건 폭포수방식의 개발방법을 사용했을 때 얘기를 하는게 아닌가 의심스럽기도 하다. 요구사항 검증이 초기에 완벽하게 다 끝난다면 여기 그림처럼 테스트에서 결함이 잡히는 것보다 50배가 높을지도 모르겠지만, 각 단계에서 결함이 의미하는 바도 다르고, 과연 최종 테스트 시에 잡히는 결함이 요구사항 분석에서 잡힐 수 있는 것이 얼마나 될지도 의문이다.

 

한가지 더 생각해보고 싶은 주장은

더욱 놀라운 테스팅은 코드 인스펙션이다. Gilb와 Graham에 의하면 코드 인스펙션으로 무려 60%에서 90%까지 결함을 발견할 수 있으며, 이것은 전체 개발 일정의 10%에서 30%까지 단축을 가능하게 한다고 한다

과연 그럴까? 이 인스펙션이라는 것이 정확히 무엇을 말하는지 잘 모르겠지만, 사람이 직접 눈으로 코드를 살펴보는 리뷰나 룰에 의해서 동작하는 자동 코드인스펙션 툴 같은 것을 의미한다면 역시 이 의견도 무엇인가 왜곡되어있는 것이 아닌가 의심스럽다. 훅시 Connection을 열고 Close안한 코드 찾기 이런 인스펙션을 적용하는 것이 테스트로 검증하는 것보다 낫다는 식의 주장이라면, 그야 말로 결함률을 따지는 그 결함이라는 것이 초보자들이 저질러서 들어가기 쉬운 그런 코딩의 오류라는 수준이 아닐까 싶다. 그런 류의 결함은 스프링과 같이 기술적인 오류 자체를 프레임워크에서 방지해주는 깔끔한 프레임워크를 적용하면 더 효과적으로 아예 도입조차 안하게 할 수 있다.

오히려 테스트가 필요로 하는 결함이라는 것은 애플리케이션의 핵심이 되는 비즈니스 로직에 대한 검증이라고 생각한다. 수많은 단위 컴포넌트들이 복잡하게 얽혀서 돌아가고, 그 과정에서 많은 데이터들이 오고 가는 애플리케이션을 과연 제대로 된 테스트코드를 만들어서 동작시켜보고 검증하지 않고 코드리뷰와 인스펙션 툴로 90%까지 잡아낸다는 말인가? 애플리케이션은 아주 초보적이고 기계적인 수준의 패턴을 가진 반복작업이고, 개발자들은 기초적인 코딩 실수를 연발하는 초보자 뿐이며, 코드리뷰어는 많은 클래스를 한번에 보고 머리속으로 모든 과정을 다 시물레이션 할 수 있는 하늘을 나는 수준의 초고수라면 그럴 수도 있겠다.

개발자의 수준이나 컨텍스트에 대한 충분한 조건제시 없이 개발자테스트, TDD를 모든 상황에서 만능인 것처럼 과장해서 띄우는 식의 글도 답답하지만 이런 배경이나 근거가 제시되지 않는 뜬금없는 수치 몇개로 개발자 테스트를 형편없는 것으로 평가절하해서 개발자들을 혼란에 빠뜨릴 수 있는 글은 정말 위험하게 느껴진다.

No related posts.

Facebook comments:

to “코드리뷰와 인스펙션이 테스트보다 효과적이고 블랙박스 테스트가 단위테스트/개발자테스트보다 낫다고?”

  1. You stated that exceptionally well! canadian pharmacies that ship to us

  2. I’m very happy to find this web site. I need to to thank you for your time due to this wonderful read!! I definitely liked every little bit of it and I have you book marked to check out new stuff in your website.

  3. one of our guests just lately encouraged the following website

  4. Fantastic content. Thank you! buy cialis online

  5. the time to study or stop by the material or web-sites we have linked to beneath the

  6. Oh my goodness! Impressive article dude! Thanks, However I am experiencing problems with your RSS. I don’t understand why I can’t subscribe to it. Is there anybody else getting the same RSS issues? Anybody who knows the solution can you kindly respond? Thanx.

  7. With thanks, Plenty of tips.
    Viagra Cialis Levitra Sample

  8. Whoa a lot of amazing info. canadian drugs

  9. That is a very good tip especially to those new to the blogosphere. Brief but very precise info… Thanks for sharing this one. A must read post.

  10. below you will come across the link to some internet sites that we feel you’ll want to visit

  11. Appreciate it! Numerous knowledge!
    Buy Tretinoin 1%cream

  12. Superb write ups. Thank you! canada pharmaceuticals online

  13. You actually suggested it perfectly. canadian pharcharmy

  14. With thanks! Ample write ups.
    american eagle cbd

  15. check below, are some entirely unrelated web-sites to ours, nevertheless, they are most trustworthy sources that we use

  16. the time to read or go to the content material or websites we have linked to below the

  17. Here is an excellent Blog You may Discover Intriguing that we Encourage You

  18. You expressed that perfectly! canada prescriptions drugs cheap viagra

  19. Kudos, I like this! viagra for sale uk

  20. Here are a number of the internet sites we suggest for our visitors

  21. Here is a great Blog You might Obtain Fascinating that we Encourage You

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