1. 자바 웹 개발 시작하기
(8주차 : 명세서, 단위테스트, 통합)
2011. 12. 14
DEVELOPMENT #2
이덕곤
2. § 로그인과 테스트와 국제화, 검증, 예외처리
§ jUnit : 단위 테스트 전략 알아보기(다음시간)
§ 세션과 로그인 처리
§ 국제화 : I18N
§ Validation
§ 예외처리 : Exception
§ 과제 : 명세서에 대해 읽어오기
3. § 프로젝트 기획
§ 명세서를 만들어 보자
§ 로그인과 보드의 통합
§ 단위테스트
§ 동작하는 소프트웨어가 포괄적인 문서보다 우선
이다 : 애자일 동맹 선언 중
4. § 명세 明(밝을 명)細(가늘 세)
§ 분명하고 자세함
§ 명세서 明細書
§ 물품이나 금액 따위의 내용을 분명하고 자세하게
적은 문서
§ 글을 쓰는 이유 : 당신은 왜 글을 쓰시나요?
5. § 생각의 정리, 기억력의 확장
§ 기록은 기억을 지배한다
§ 의사소통 시간의 절약
§ 품질보증팀원 : 어떻게 테스트할지 알 수 있다
§ 마케팅 : 아직 만들지도 않은 제품에 대한 웹사이트에 올릴
모호한 백서를 작성하는데 활용함
§ 사업개발팀 : 제품을 어떻게 사용할지에 대한 계획, 투자자 유치
§ 고객 : 제품에 가치 판단
§ 기술 지필가 : 멋진 메뉴얼 작성
§ 관리자 : 관리 회합 도중에 아는체 하는데 사용 ^^
6. § 여기서 명세서란 기능 명세서를 말합니다
§ 재미있게 작성하라
§ 명세를 쓰는 작업은 머리가 돌아가도록 코드를
쓰는 작업과 유사하다
§ 최대한 단순하게 작성하라
§ 여러 차례에 걸쳐 검토하고 다시 읽어라
(명세는 지속적으로 개정해야 합니다)
§ 표준양식은 해롭다고 간주한다
7. § 면책조항: "이 명세는 완벽하지 않습니다"
§ 저자: 1명
§ 시나리오
§ 회피목표
§ 개괄
§ 세부사항, 세부사항, 세부사항
§ 미해결 문제
§ 방주(side note)
9. § userId, password 제거
§ userIdx, nickName 추가
§ 로그인 정보에 대한 확인
§ 로그인 한 사람만 글 작성
§ 글 수정, 삭제 권한에 대한 정의
10. § 단위 테스트
§ 프로그램의 기본 단위가 내부 설계 명세에 맞게 제대로
동작하는지를 테스트 하는 것
§ Java의 경우 기본단위가 클래스이므로 각 클래스에 포함된
메서드가 제대로 동작하는지를 테스트 하는 것
§ 범위가 한정적
§ 기능 테스트
§ 소프트웨어 전체가 제대로 동작하는지를 확인하는 테스트
§ 기능 테스트는 보통 별도의 테스트 팀이 수행하며, 개발할
때와는 다른 별도의 도구와 기술을 사용
11. § xUnit이라는 단위 테스트 프레임워크의 자바 구현체
§ 코드를 릴리즈 하기 전에 단위 테스트에 사용하는 툴
§ 외부 테스트 프로그램을 작성하여 System.out으로 일일이
디버깅하지 않아도 됨
§ 테스트에 걸린 시간 또한 별도로 출력해 볼 필요가 없다
§ 테스트 결과를 단순한 텍스트로 남기는 것이 아니라
Test클래스로 남김으로 다음에 인계할 개발자에게 테스트 방법
및 클래스의 history를 넘겨줄 수 있다
§ junit-4.10.jar
§ org.springframework.test-3.0.6.RELEASE.jar
15. § setUp() -> @Before
§ 초기 값을 설정할 필요가 있을 경우
§ test 메소드가 수행되기 직전에 매번 실행
§ tearDown() -> @After
§ 필요 없는 값을 해제
@Before
public void setUp(){
}
@After
public void tearDown(){
}
§ test 메소드가 종료될 때마다 매번 실행
§ Assertions: 비교확인, 조건확인, Null확인
§ Test메소드 중간중간에 어떤 조건이나 객체의 비교를 통해서
문제점을 끄집어 낼 수 있도록 도와준다.
§ 비교한 결과나 조건이 false면, assertionFailure라는 Failure를
내고 해당 test메서드를 종료
16. § 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인지 검사
17. § 명세서 작성에 대한 사항을 알아보았습니다
§ 보드 통합 과정을 수행해 보았습니다
§ 단위 테스트를 이해하고 구현해 보았습니다
18. § 프로젝트 구현
§ 추가적인 뷰에 대한 공부
§ RSS뷰
§ 커스텀 태그
§ @Async
§ 과제 : 작품 완성해 오기