'Unit test'에 해당되는 글 3

  1. 2010/06/10 My Recent Tweets 20100604
  2. 2009/07/02 Poor men's Code Coverage (2)
  3. 2007/12/19 TDD가 어떻게 개발의 엔트로피를 낮추는가

My Recent Tweets 20100604

프로그래밍programming

방법론methodology

그래픽스graphics
  • RT morgan3d: I released the details of the colored transparent shadow work I did a t NVIDIA: http://bit.ly/cgJ973 #graphics #
    • 유색 그림자 기법에 관한 최신 글
  • RT msinilo: Humus on EDRAM: http://www.humus.name/index.php?ID=309 (good rant) #graphics #
    • Xbox360에 쓰여 유명한 EDRAM에 관한 의견
  • RT meshula: Screen space in-scattering demo. #fb http://bit.ly/ajPBP9 #graphics #
    • 화면 공간 in-scattering 기법 GL 데모
  • RT aras_p: Bump Mapping Unparametrized Surfaces on the GPU: http://bit.ly/9N3XiE #graphics #
    • 게임개발사 너티독의 개발자가 쓴 범프맵핑 기법에 관한 논문
  • Why Intel Larrabee Really Stumbled: Developer Analysis: http://goo.gl/YLY2 #graphics #
    • 최근 취소된 인텔 라라비에 대한 분석
  • RT meshula: Good looking DOF and HDR effect using DX11 features. #fb http://bit.ly/cHtMlq #graphics #
    • DX11 기능을 이용한 피사계 심도 및 HDR 효과 데모
  • RT tatsuma_mu: SIGGRAPH 2010 : Technical Papers Trailer http://bit.ly/ad8EiN #graphics #
    • 시그래프 2010 기술논문 트레일러
  • RT meshula: Ray-Box Intersection algo v/ tuan kuranes http://bit.ly/avgUGU #graphics #
    • 광선추적렌더링에 필수적인 광선-상자 교차 검출 알고리즘에 관한 논문
  • RT aras_p: New blog post: Compiling HLSL into GLSL in 2010 http://bit.ly/amFH2c #graphics #
    • HLSLGLSL로 컴파일하기

병렬성parallelism
  • RT a_williams: RT mfeathers: The resurgence of parallelism (interesting discussion of determinacy): http://bit.ly/civUkr #parallelism #
    • 새롭게 각광 받는 병렬성에 관한 CACM
  • RT IntelDevTools: Dr_Dobbs: A Design Pattern Language for Engineering (Parallel) Software http://bit.ly/c8fymF #parallelism #
    • 병렬 소프트웨어 개발을 위한 패턴 언어
  • RT IntelDevTools: Announcing Intel Concurrent Collections for Haskell 0.1 http://bit.ly/aqXw2C #parallelism #
    • 인텔에서 개발한 해스켈용 병렬 컬렉션 라이브러리
  • RT a_williams: My latest article on enforcing associations between mutexes and data is now up at http://bit.ly/d6IcnP #parallelism #
    • 뮤텍스와 그가 보호하는 데이터 간의 연동을 강제하는 기법에 관한 글
  • RT IntelDevTools: “Structured Parallel Programming with Deterministic Patterns” http://bit.ly/cxGrHk #parallelism #
    • 역시 패턴 기반의 병렬 프로그래밍에 관한 인텔 글

게임개발gamedev
  • RT bjoernknafla: RT niklasfrykholm: New blog post: "Avoiding Content Locks and Conflicts" -- http://bitsquid.blogspot.com/ #gamedev #
    • 게임에서 XML이나 JSON 기반의 컨텐츠의 충돌 처리 및 병합에 관한 글
  • RT rigmania: NDC 후기입니다. 아직 몇 개 남았지만 여기까지 정리해서 올립니다. 이제 제 블로그도 원래 취지에 맞게 걸그룹 소식을 올리도록 하... http://parkpd.egloos.com/tag/NDC #NDC_10 #gamedev #
  • RT repi: "How data rules the world: Telemetry in Battlefield Heroes" from STHLM Gamedev Forum is now up on... http://bit.ly/b4AaVg #gamedev #
    • 스톡홀름 게임개발자 포럼에서 전도유망한 스웨덴 개발사 DICE의 멤버가 발표한 슬라이드
  • RT themadpeacock: Check this video out -- Will Wright Keynote at GameTech 2010 http://bit.ly/9MVQ4y #gamedev #
    • 저도 아직 못본...;
  • RT repi: Posted the updated slides for my "Parallel Futures of a Game Engine (v2.0)" talk I did @ STHLM #gamedev Forum http://bit.ly/cwTc5z #
    • 역시 스톡홀름 포럼에서 발표된 게임엔진의 병렬화에 관한 발표자료
  • RT niklasfrykholm: "Practical Examples in Data Oriented Design" -- slides from my talk at Sthlm #gamedev Forum: http://bit.ly/cLdPLA #
    • 요즘 게임 개발에서의 핫트렌드 중 하나인 데이터 지향 설계에 관해 쉽게 설명해줍니다.
  • RT imqwerty2: 데브캣 스튜디오 Publications Blog가 오픈하였습니다. http://bit.ly/csYEvg #gamedev #
    • 멋집니다, 데브캣!
  • RT ChristinaCoffin: The Aesthetics of Unique Video Game Characters: http://bit.ly/aIuP35 by Shaylyn Hamm http://bit.ly/b9eMGG #Art #gamedev #
    • 비디오 게임 캐릭터의 미학
  • RT eiaserinnys: NDC2010 "완벽한 MMO 클라이언트 설계에의 도전 : M2 아키텍처 리뷰" 강연 자료를 공개합니다. http://bit.ly/bHlPjc 고의성 낚시 제목에 고통받으신 많은 분들께 죄송할 뿐이고;;; #gamedev #
  • RT tatsuma_mu: RT CrEEp3r Cryengine 2 Fantasymodification - http://bit.ly/d66fH1 #leveldesign #gamedev #gamedesign #
    • 아름다운 판타지풍의 CryENGINE 2 모드
  • RT tatsuma_mu: http://bit.ly/9IA6rV google pacman source. #gamedev #
    • 얼머전 구글 로고에 데뷔한 인터액티브 팩맨 소스코드
  • RT Wolfire: Reviewing Sculptris http://bit.ly/9NQD09 #gamedev #
    • 지브러쉬 등에 견줄만한 공짜 모델링 툴
  • RT Wolfire: Automatic navigation meshes http://bit.ly/dqZqxF #gamedev #
    • 괜춘한 네비게이션 메쉬 라이브러리에 대한 소개

기타etc
  • “Doing nothing is better than being busy doing nothing.” ~Lao Tzu #quote #
  • RT DeliciousHot: Kaleidoscope — File comparison for Mac http://is.gd/cz8gn #
    • 깔삼해보이는 맥용 파일 비교 툴. 맥에서 개발하시는 분에게 강추
  • RT sioum: The Secret Powers of Time http://bit.ly/as8RJu #
  • RT dailyrt: Hello world! http://chirrps.com is a revolutionary Twitter search engine combined with the best Twitter directory on the planet #
  • RT nicolerichie "I'd rather regret the things I've done than regret the things I haven't done." - Lucille Ball (http://chirrps.com) #
  • 유럽 출시 둘째날, 드디어 iPad 겟! (미국으로 신혼여행 떠난 동료에게 부탁했었으나, SF 애플스토어에선 iPad가 일시 품절이란 소식에...) #
  • RT tferriss: "Letters from a Stoic" free (a large portion) on Google Books: http://ping.fm/kvMP1 (Thx, Craig!) #
  • RT PsychodudeCom: 50 Useful Blogs for Writers: http://bit.ly/bZklhC #
    • 영어 글쓰기에 유용한 블로그 50선
  • RT themindfulist: "Pain is inevitable. Suffering is optional." Any problems in your life this quote applies to? (Hint: ALL of them!) #quote #
  • RT Twitter_Tips: It's Official: Apple Is Now Worth More Than Microsoft: http://j.mp/9QiXGM #
  • lol RT rickasaurus: Top 10 Things That Annoy Programmers http://is.gd/cpUYA #
    • 프로그래머를 화나게 하는 10가지 ㅎㅎ
  • What now is always what I want. - JJ #quote #
  • RT esstory: Stretching Clock http://shar.es/mj6cf - 자다 일어 나서 스트레칭 먼저 하면 개운하겠네요 이런 베게 아주 좋아 ㅎ #
  • RT DeliciousHot: Top 40 Useful Sites To Learn New Skills http://is.gd/cocmX #
  • RT go2web20: Soluto: Anti-Frustration Software http://bit.ly/Soluto #Israel #Go2web20 #
    • PC 문제 해결을 위한 흥미로운 접근
  • RT iwisenet: As I have not worried to be born, I do not worry to die.-F.García Lorca #quote http://bit.ly/dw0Qnh #
  • RT princeofcode: Duck Duck Go, a search-engine for programmers: http://bit.ly/a2qARB (via hackernewsbot) #
    • 소스 코드 검색에 뛰어난 새로운 검색 엔진
  • RT PsychodudeCom: Running A Software Business On 5 Hours A Week: http://bit.ly/9ZGK39 #
    • 일주일에 5시간 투자로 소프트웨어 비즈니스 꾸려나가기에 관한 진솔하고 유용한 글
  • RT mushman1970: RT 기대가 큽니다. 글고 수고 많았습니다. BKLove: 트위터 매쉬업 서비스 트윗믹스가 오픈했습니다. 대한민국에서 가장 뜨거운 이슈를 확인해보세요 :) http://tweetmix.net/" #



 * 이 포스트는 blogkorea [블코채널 : 웹, 컴퓨터, it에 관련된 유용한 정보 및 소식] 에 링크 되어있습니다.  


크리에이티브 커먼즈 라이선스
Creative Commons License

'Tweets' 카테고리의 다른 글

My Recent Tweets 20100623  (1) 2010/07/03
My Recent Tweets 20100604  (0) 2010/06/10
My Recent Tweets 20100226  (0) 2010/03/02
My Recent Tweets 20100208  (0) 2010/02/10
My Recent Tweets 20100118  (0) 2010/01/19
My Recent Tweets 20100104  (0) 2010/01/05
Trackback 0 Comment 0

Poor men's Code Coverage

Google
Google "Testing on the Toilet" by niallkennedy 저작자 표시비영리

C++ 용으로는 쓸만한 '공짜' 코드 커버리지 도구를 찾기 힘들더군요. 단위 테스트 적용 시나 기타 기능 테스트 등에서도 코드 커버리지를 점검하는 것은 상당히 중요한 부분입니다. 그러던 중 AI쪽 일을 하는 동료 한명이 좋은 아이디어를 제시했습니다.

일명 intrusive code coverage 되겠습니다. Intrusive profiling과 유사한 방식이라 생각하시면 됩니다. 프로파일링 매크로를 매 함수나 블록 도입부에 삽입하여 C++ RAII를 통해 그 부분이 프로파일링 되도록 하는 방식 말입니다. 마찬가지 개념으로 테스트 되어야 하는 주요 코드 지점마다 점검 지점을 나타내는 함수를 삽입하여 그 지점까지의 도달 여부를 점검토록 하는 거죠. 다음의 CC_Check()가 그 예가 되겠습니다.



실제 커버리지 확인을 위해서는 프로그램을 돌린 후 로그 파일로 남기도록 할 수도 있고, 아니면 런타임에 막대그래프 형식으로 코드 커버리지 상황을 실시간 확인할 수 있도록 만드는 것도 가능하겠죠.

자동 테스트 시에도 유용하고 QA 등에 의한 수동 테스트 시에도 유용하다 하겠습니다. 범용의 코드 커버리지 도구는 저수준에서 검사를 하기에 일종의 false-positive가 있거나 실제 테스트가 필요한 부분의 파악에 불편함이 있을 수 있는데, 이 방식은 실제 테스트되어야 할 핵심 부분을 수동 지정해줄 수 있으니 나름의 장점이 있습니다. ...라고는 하지만 역시 가난한 자를 위한 코드 커버리지 도구라 불러야할듯. ㅎㅎ


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2

TDD가 어떻게 개발의 엔트로피를 낮추는가

사실상 시도는 전에 전 프로젝트에서부터 였습니다.  안타깝게도 한 프로젝트는 매우 단명하였고, 다른 하나는 상용엔진에 스크립트 기반 작업이 대부분이라는 핑계로 테스트를 등한시 하였습니다. 최근 간신히 둥지를 튼 새 회사에서는 나름 의욕적으로 TDD(Test-Driven Developement)를 추진하였습니다.

아직도 갈 길이 구만리이지만, 이제 그 기반은 어느 정도 자리를 잡은 듯 합니다. 아쉽게도 아직 test-first의 경지에 이르지는 못했습니다. 비록 선작업이 아닌 후작업으로 테스트 코드를 짜고는 있지만, 벌써 그 장점이 드러나더군요(참고로 저희는 boost library를 적극 활용하고 있어, 단위테스트 프레임워크도 거기 있는 것을 사용하였습니다).

첫째는 훌륭한 예제 코드로서의 기능입니다. 저희는 코드 리뷰를 의무화하고 있습니다. 주석이 어느 정도 잘 달려 있어도 남의 코드를 읽는 것이 간단한 일은 아니죠...(참고로 저희는 CodeStriker라는 오픈소스 코드 리뷰 툴을 사용 중인데... 버그도 많고 사용도 어려워 다른 놈으로 갈아타려고 합니다.) 이 때, 테스트 코드가 예제로서 코드의 의도를 명확히 하여 이해를 돕습니다.

둘째는 개발 엔트로피의 통제 기능입니다. 저는 코드를 짜고, 컴파일을 성공시키고, 실행 파일을 돌려서 아무 에러가 없으면 1차 기능 구현이 완료되었다고 판단하는 안일한 습관이 있었습니다. 설사 방금 짠 기능을 제대로 활용하고 있는 부분이 아직 코드에 없더라도 말입니다!

이럴 경우 나중에 다 구현되었다고 생각한 모듈들이 실제 통합되어 제 기능을 하게 되는 시점에 파국을 맞게 되지요... 안일한 판단 속에 개발 엔트로피가 싸여가고 눈덩이처럼 불어나다가... 나중에 펑! 또 마일스톤을 놓쳤군요. 단위테스트는 애초에 의도한 모듈의 기능을 가능한 한 빠른 시점에 검증하게 함으로써 개발 엔트로피가 과도하게 쌓이는 것을 막아 줍니다.

이외도 많은 장점이 있겠으나, 일단 개발 초기인 현 시점에서 가장 마음에 와 닿는 것을 공유해봅니다.
크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 0

top