자바 웹 개발 시작하기 (8주차 : 명세서,...

20
자바 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합) 2011. 12. 14 DEVELOPMENT #2 이덕곤

Upload: dk-lee

Post on 20-Dec-2014

504 views

Category:

Technology


2 download

DESCRIPTION

Java web development 08 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합) 2011. 12. 14 벌써 2년도 넘은 자료지만 그래도 필요하신분이 있을지 몰라서... (지금보니 2년사이 많은것을 배운것 같네요 ㅎㅎ)

TRANSCRIPT

Page 1: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

2011. 12. 14

DEVELOPMENT #2

이덕곤

Page 2: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  로그인과 테스트와 국제화, 검증, 예외처리

§  jUnit : 단위 테스트 전략 알아보기(다음시간)

§  세션과 로그인 처리

§  국제화 : I18N

§  Validation

§  예외처리 : Exception

§  과제 : 명세서에 대해 읽어오기

Page 3: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  프로젝트 기획

§  명세서를 만들어 보자

§  로그인과 보드의 통합

§  단위테스트

§  동작하는 소프트웨어가 포괄적인 문서보다 우선이다 : 애자일 동맹 선언 중

Page 4: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  명세 明(밝을 명)細(가늘 세)

§  분명하고 자세함

§  명세서 明細書

§  물품이나 금액 따위의 내용을 분명하고 자세하게 적은 문서

§  글을 쓰는 이유 : 당신은 왜 글을 쓰시나요?

Page 5: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  생각의 정리, 기억력의 확장 §  기록은 기억을 지배한다

§  의사소통 시간의 절약 §  품질보증팀원 : 어떻게 테스트할지 알 수 있다

§  마케팅 : 아직 만들지도 않은 제품에 대한 웹사이트에 올릴 모호한 백서를 작성하는데 활용함

§  사업개발팀 : 제품을 어떻게 사용할지에 대한 계획, 투자자 유치

§  고객 : 제품에 가치 판단

§  기술 지필가 : 멋진 메뉴얼 작성

§  관리자 : 관리 회합 도중에 아는체 하는데 사용 ^^

Page 6: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  여기서 명세서란 기능 명세서를 말합니다

§  재미있게 작성하라

§  명세를 쓰는 작업은 머리가 돌아가도록 코드를 쓰는 작업과 유사하다

§  최대한 단순하게 작성하라

§  여러 차례에 걸쳐 검토하고 다시 읽어라 (명세는 지속적으로 개정해야 합니다)

§  표준양식은 해롭다고 간주한다

Page 7: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  면책조항: "이 명세는 완벽하지 않습니다"

§  저자: 1명

§  시나리오

§  회피목표

§  개괄

§  세부사항, 세부사항, 세부사항

§  미해결 문제

§  방주(side note)

Page 8: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  간단하게 작성해 오세요(생각의 정리 차원)

Page 9: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  userId, password 제거

§  userIdx, nickName 추가

§  로그인 정보에 대한 확인

§  로그인 한 사람만 글 작성

§  글 수정, 삭제 권한에 대한 정의

Page 10: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  단위 테스트 §  프로그램의 기본 단위가 내부 설계 명세에 맞게 제대로

동작하는지를 테스트 하는 것

§  Java의 경우 기본단위가 클래스이므로 각 클래스에 포함된 메서드가 제대로 동작하는지를 테스트 하는 것

§  범위가 한정적

§  기능 테스트 §  소프트웨어 전체가 제대로 동작하는지를 확인하는 테스트

§  기능 테스트는 보통 별도의 테스트 팀이 수행하며, 개발할 때와는 다른 별도의 도구와 기술을 사용

Page 11: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  xUnit이라는 단위 테스트 프레임워크의 자바 구현체 §  코드를 릴리즈 하기 전에 단위 테스트에 사용하는 툴

§  외부 테스트 프로그램을 작성하여 System.out으로 일일이 디버깅하지 않아도 됨

§  테스트에 걸린 시간 또한 별도로 출력해 볼 필요가 없다

§  테스트 결과를 단순한 텍스트로 남기는 것이 아니라 Test클래스로 남김으로 다음에 인계할 개발자에게 테스트 방법 및 클래스의 history를 넘겨줄 수 있다

§  junit-4.10.jar

§  org.springframework.test-3.0.6.RELEASE.jar

Page 12: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)
Page 13: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  소스폴더 생성 후

§  패키지를 만듭니다.

Page 14: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

@RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations={ "file:WebContent/WEB-INF/config/base/testContextForJUnit.xml"})

public class UserTest { @Autowired private UserDao userDao; @Autowired private UserService userService;

@Test public void testJoinUser() { User user = userDao.getLastJoinUser(); // 마지막 사용자를 가지고 옵니다. user.setUserId("Test_Join_" + (user.getUserIdx() + 1)); user.setNickName("Test_Join_" + (user.getUserIdx() + 1)); int userIdx = userService.joinUser(user); // 가입확인 if (userIdx != 0) {

Assert.assertTrue(true); // 가입에 성공한 경우 } else {

Assert.assertTrue(false); // 가입에 실패한 경우 } } }

Page 15: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  setUp() -> @Before §  초기 값을 설정할 필요가 있을 경우

§  test 메소드가 수행되기 직전에 매번 실행

§  tearDown() -> @After §  필요 없는 값을 해제

§  test 메소드가 종료될 때마다 매번 실행

§  Assertions: 비교확인, 조건확인, Null확인 §  Test메소드 중간중간에 어떤 조건이나 객체의 비교를 통해서

문제점을 끄집어 낼 수 있도록 도와준다.

§  비교한 결과나 조건이 false면, assertionFailure라는 Failure를 내고 해당 test메서드를 종료

@Before public void setUp(){ }   @After public void tearDown(){ }

Page 16: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  assertEquals(primitive expected, primitive actual) §  두 개의 기본형 변수의 값이 같은지 검사

§  assertEquals(Object expected, Object actual) §  두 개의 객체 값이 같은지 검사(내부적으로 equals()메소드 사용)

§  assertSame(Object expected, Object actual) §  두 개의 객체가 같은지 검사(내부적으로 두 객체의 메모리 주소가 같은지 검사)

§  assertNotSame(Object expected, Object actual) §  두 개의 객체가 다른지 검사(내부적으로 두 객체의 메모리 주소가 다른지 검사)

§  assertNull(Object object) / assertNotNull(Object object) §  객체가 Null인지 / Null이 아닌지 검사

§  assertTrue(boolean condition) /assertFalse(boolean condition) §  조건문이 true인지 / false인지 검사

Page 17: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  명세서 작성에 대한 사항을 알아보았습니다

§  보드 통합 과정을 수행해 보았습니다

§  단위 테스트를 이해하고 구현해 보았습니다

Page 18: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  프로젝트 구현

§  추가적인 뷰에 대한 공부

§  RSS뷰

§  커스텀 태그

§  @Async

§  과제 : 작품 완성해 오기

Page 19: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

§  명세서 §  http://www.joelonsoftware.com/articles/fog0000000036.html

§  http://sinihong.tistory.com/18

§  단위테스트 §  http://www.junit.org/

§  http://www.javajigi.net/pages/viewpage.action?pageId=278

§  http://younghoe.info/255

Page 20: 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)