'2019년 이전 정리/TDD'에 해당되는 글 2건

  1. 2013.08.18 TDD 프로젝트 적용
  2. 2013.08.18 TDD 에 관해
2013. 8. 18. 10:13

public class ZipTest extends AndroidTestCase {

String testUrl = 

"http://files.parse.com/b18520bb-433b-4d@@@@@@@@@@@@@@@3-binibean.zip";


public void testZip() {

NOFileDownloadManager manager = new NOFileDownloadManager(mContext, testUrl);

manager.download(new NOFileDownloadThread(mContext, manager));


try {

manager.getCurrentThread().get();

} catch (Exception e) {

e.printStackTrace();

}


File file2 = new File(mContext.getFilesDir(), "/character/binibean");

File []pngs = file2.listFiles();

assertEquals(6, pngs.length);

assertEquals(file2.getAbsolutePath() + "/binibean_01.png", pngs[0].getAbsolutePath());

}

}


테스트 코드 가정

1. FileDownloadManager 는 Parse 에서 Image zip파일을 다운로드 받는다.

2. 그리고 app내 files 폴더에 압축을 해제하고, zip파일을 날린다.


결과 

1. 파일이 files 폴더에 image파일로 저장되어있는지 확인해야한다.

딱히 파일체크를 하는 코드를 만들필요없이. assertEquals 에서 파일 갯수가 맞는지 체크하고 그 파일의 AbsolutePath()에 저장되어있는지 확인.


이렇게해서 검증된 코드는 믿음이 간다. 실제로 여러명이 프로젝트를 진행하는 경우에, 몇번의 디버깅을 통해 소스를 merge 하는 것보다. TDD 방식을 통해 검증된 코드를 merge 하면 업무의 효율성이 높아 지지 않을까 생각해 본다. 



'2019년 이전 정리 > TDD' 카테고리의 다른 글

TDD 에 관해  (0) 2013.08.18
Posted by hoonihoon
2013. 8. 18. 10:05

TDD는 Test Driven Development 의 약자이다. 우리나라 말로 하면 테스트 주도 개발이라는 뜻이다. 지금까지의 개발 방식과 다르게, 테스트할 코드를 먼저 작성하고 코드를 개발하는 다소 특이한 개발 방법이다.

 

기존 개발 절차

디자인 -> 개발 -> 테스트

TDD의 개발 절차

테스트, 스크립트 개발 -> 개발 -> 리팩토링

 

TDD 를 실무 적용하지 못하는 이유는 시간적 여유입니다. 언제 테스트 스크립트를 만들고 개발하냐는 것이죠.

 

"단지 개발하면서 테스트 스크립트를 만들었고 게다가 리팩토링까지 수행했다면, TDD를 적용했다고 할 수 있는 것이다. 그리고 테스트 스크립트를 코드와 같이 작성하고 오류를 점검한다는 개념 자체가 중요한 것이다."


출저:http://sangjjang.tistory.com/175




Test the program before you wirte it.                 

-Kent Beck

 

 

 

TDD란 뭘까?

 

XP(eXtream Programming) 창시자 중 한명이며, TDD를 주도한 켄드 벡은 TDD를 소개한 자신의 책에서 "프로그램을 작성하기 전에 테스트를 먼저 작성하는 것" 이라고 테스트 주도 개발을 정의했다.

 

 

"업무 코드를 작성하기 전에 테스트 코드를 먼저 만드는 것!"

 

 

 

잘 동작하는 깔끔한 코드

 Clean code theat works  - Ron Jeffries

 

 

우리가 TDD라는 방식을 통해 얻고자 하는 최종 목적은 '잘 동작하는 깔끔한 코드' 이다.

 

이는 일반적인 소프트웨어 개발의 목표와 별반 다르지 않다. 다만 TDD에선 정상적으로 동작하는 코드만을 목표로 삼지 않고, 작성된 코드도 명확한 의미를 전달할 수 있게 작성되어야 한다고 말한다. 즉, '제대로 동작함(works)'뿐 아니라 '깔끔함(clean)'까지도 동등한 수준의 개발 목표로 삼는다는 점이 일반적인 개발 방식과 다르다. 이 차이점은 소프트웨어의 품질을 비롯한 유지 보수의 편의성, 가독성, 그리고 그에 따른 소프트웨어의 비용과 안정성 등 여러 가지 측면의 의미를 내포한다. 따라서 이 책의 나머지 부분 전반에 걸쳐 TDD를 사용하 어떻게 해면 '깔끔하고 잘 동작하는 코드'를 얻을 수 있는지를 이야기할 것이다. 

 

 

 

테스트 주도 개발의 진행 방식

 

ㅁ질문(ASK) : 테스트 작성을 통해 시스템에 질문한다.(테스트 수행 결과는 실패)

 

ㅁ응답(Respond): 테스트를 통과하는 코드를 작성해서 질문에 대답한다.(테스트 성공)

 

ㅁ정제(Refine): 아이디어를 통합하고, 불필요한 것은 제거하고, 모호한 거승ㄴ 명확히 해서 대답을 정제한다(리펙토링)

 

ㅁ반복(Repeat): 다음 질문을 통해 대화를 계속 진행한다.


출저: http://blog.naver.com/hero1014?Redirect=Log&logNo=20184110933


'2019년 이전 정리 > TDD' 카테고리의 다른 글

TDD 프로젝트 적용  (0) 2013.08.18
Posted by hoonihoon