SlideShare a Scribd company logo
자바 웹 개발 시작하기
(8주차 : 명세서, 단위테스트, 통합)
2011. 12. 14

DEVELOPMENT #2

이덕곤
§  로그인과 테스트와 국제화, 검증, 예외처리
§  jUnit : 단위 테스트 전략 알아보기(다음시간)
§  세션과 로그인 처리
§  국제화 : I18N
§  Validation
§  예외처리 : Exception
§  과제 : 명세서에 대해 읽어오기
§  프로젝트 기획
§  명세서를 만들어 보자
§  로그인과 보드의 통합
§  단위테스트
§  동작하는 소프트웨어가 포괄적인 문서보다 우선
이다 : 애자일 동맹 선언 중
§  명세 明(밝을 명)細(가늘 세)
§  분명하고 자세함
§  명세서 明細書
§  물품이나 금액 따위의 내용을 분명하고 자세하게
적은 문서
§  글을 쓰는 이유 : 당신은 왜 글을 쓰시나요?
§  생각의 정리, 기억력의 확장
§  기록은 기억을 지배한다

§  의사소통 시간의 절약
§  품질보증팀원 : 어떻게 테스트할지 알 수 있다
§  마케팅 : 아직 만들지도 않은 제품에 대한 웹사이트에 올릴
모호한 백서를 작성하는데 활용함
§  사업개발팀 : 제품을 어떻게 사용할지에 대한 계획, 투자자 유치
§  고객 : 제품에 가치 판단
§  기술 지필가 : 멋진 메뉴얼 작성
§  관리자 : 관리 회합 도중에 아는체 하는데 사용 ^^
§  여기서 명세서란 기능 명세서를 말합니다
§  재미있게 작성하라
§  명세를 쓰는 작업은 머리가 돌아가도록 코드를
쓰는 작업과 유사하다
§  최대한 단순하게 작성하라
§  여러 차례에 걸쳐 검토하고 다시 읽어라
(명세는 지속적으로 개정해야 합니다)
§  표준양식은 해롭다고 간주한다
§  면책조항: "이 명세는 완벽하지 않습니다"
§  저자: 1명
§  시나리오
§  회피목표
§  개괄
§  세부사항, 세부사항, 세부사항
§  미해결 문제
§  방주(side note)
§  간단하게 작성해 오세요(생각의 정리 차원)
§  userId, password 제거
§  userIdx, nickName 추가
§  로그인 정보에 대한 확인
§  로그인 한 사람만 글 작성
§  글 수정, 삭제 권한에 대한 정의
§  단위 테스트
§  프로그램의 기본 단위가 내부 설계 명세에 맞게 제대로
동작하는지를 테스트 하는 것
§  Java의 경우 기본단위가 클래스이므로 각 클래스에 포함된
메서드가 제대로 동작하는지를 테스트 하는 것
§  범위가 한정적

§  기능 테스트
§  소프트웨어 전체가 제대로 동작하는지를 확인하는 테스트
§  기능 테스트는 보통 별도의 테스트 팀이 수행하며, 개발할
때와는 다른 별도의 도구와 기술을 사용
§  xUnit이라는 단위 테스트 프레임워크의 자바 구현체
§  코드를 릴리즈 하기 전에 단위 테스트에 사용하는 툴
§  외부 테스트 프로그램을 작성하여 System.out으로 일일이
디버깅하지 않아도 됨
§  테스트에 걸린 시간 또한 별도로 출력해 볼 필요가 없다
§  테스트 결과를 단순한 텍스트로 남기는 것이 아니라
Test클래스로 남김으로 다음에 인계할 개발자에게 테스트 방법
및 클래스의 history를 넘겨줄 수 있다

§  junit-4.10.jar
§  org.springframework.test-3.0.6.RELEASE.jar
자바 웹 개발 시작하기 (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); // 가입에 실패한 경우
}
}
}
§  setUp() -> @Before
§  초기 값을 설정할 필요가 있을 경우
§  test 메소드가 수행되기 직전에 매번 실행

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

@Before
public void setUp(){
}

 
@After
public void tearDown(){
}

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

§  Assertions: 비교확인, 조건확인, Null확인
§  Test메소드 중간중간에 어떤 조건이나 객체의 비교를 통해서
문제점을 끄집어 낼 수 있도록 도와준다.
§  비교한 결과나 조건이 false면, assertionFailure라는 Failure를
내고 해당 test메서드를 종료
§  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인지 검사
§  명세서 작성에 대한 사항을 알아보았습니다
§  보드 통합 과정을 수행해 보았습니다
§  단위 테스트를 이해하고 구현해 보았습니다
§  프로젝트 구현
§  추가적인 뷰에 대한 공부
§  RSS뷰
§  커스텀 태그

§  @Async
§  과제 : 작품 완성해 오기
§  명세서
§  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
자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합)

More Related Content

What's hot (20)

PDF
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee
 
PPTX
영속성 컨텍스트로 보는 JPA
경원 이
 
PDF
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

DK Lee
 
PDF
Facebook은 React를 왜 만들었을까?
Kim Hunmin
 
PDF
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
beom kyun choi
 
PDF
React Native를 사용한
 초간단 커뮤니티 앱 제작
Taegon Kim
 
PDF
Jpa 잘 (하는 척) 하기
경원 이
 
PDF
[오픈소스컨설팅]MyBatis Basic
Ji-Woong Choi
 
PPTX
세미나 Spring mybatis
Somang Jeong
 
PPTX
Spring boot-summary(part2-part3)
Jaesup Kwak
 
PDF
역시 Redux
Leonardo YongUk Kim
 
PPTX
[115] clean fe development_윤지수
NAVER D2
 
PDF
React 튜토리얼 2차시
태현 김
 
PPTX
Java JPA
Yonghoon Ji
 
PPTX
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XpressEngine
 
PDF
ReactJS | 서버와 클라이어트에서 동시에 사용하는
Taegon Kim
 
PDF
실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료
수홍 이
 
PDF
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
DoHyun Jung
 
PDF
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
Gyutae Jo
 
PDF
Spring boot 5장 cli
Choonghyun Yang
 
자바 웹 개발 시작하기 (2주차 : 인터넷과 웹 어플리케이션의 이해)
DK Lee
 
영속성 컨텍스트로 보는 JPA
경원 이
 
자바 웹 개발 시작하기 (10주차 : ㅌㅗㅇ ㅎㅏ ㄹㅏ)

DK Lee
 
Facebook은 React를 왜 만들었을까?
Kim Hunmin
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
beom kyun choi
 
React Native를 사용한
 초간단 커뮤니티 앱 제작
Taegon Kim
 
Jpa 잘 (하는 척) 하기
경원 이
 
[오픈소스컨설팅]MyBatis Basic
Ji-Woong Choi
 
세미나 Spring mybatis
Somang Jeong
 
Spring boot-summary(part2-part3)
Jaesup Kwak
 
역시 Redux
Leonardo YongUk Kim
 
[115] clean fe development_윤지수
NAVER D2
 
React 튜토리얼 2차시
태현 김
 
Java JPA
Yonghoon Ji
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XpressEngine
 
ReactJS | 서버와 클라이어트에서 동시에 사용하는
Taegon Kim
 
실전! 스프링과 함께하는 환경변수 관리 변천사 발표자료
수홍 이
 
발렌타인 웨비너 7회 - React를 이용한 웹 앱 개발 살펴보기
DoHyun Jung
 
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
Gyutae Jo
 
Spring boot 5장 cli
Choonghyun Yang
 

Viewers also liked (17)

PDF
20141229 dklee docker
DK Lee
 
PDF
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
DK Lee
 
PPTX
SpringMVC 전체 흐름 알아보기
Myung Woon Oh
 
PDF
Starpl 20111012 스타플5를_만들기_시작하며
DK Lee
 
PDF
Junit jasmine
Kim BuSeung
 
PPT
Unit Test With J Unit
Kenu, GwangNam Heo
 
PPTX
Database design
Joshua Yoon
 
PPTX
자바 프로그래밍 Agile(1장 시작하기)
brain816
 
PPTX
Kopss Open API 단위테스트 이슈사항
MinPa Lee
 
PDF
NDC12_Lockless게임서버설계와구현
noerror
 
PDF
구글 앱 엔진의 활용(Google App Engine) 2부
mosaicnet
 
PDF
P2P Transfers
Oleksii Piven
 
PPTX
유니티3D 그리고 웹통신
현욱 김
 
PDF
Anatomy of a Data Product and Lending Club Data
Sri Ambati
 
PPTX
단위테스트자동화지원도구 임성현 최종
guest7178884
 
PDF
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
iFunFactory Inc.
 
PPTX
스마트폰 온라인 게임에서 고려해야 할 것들
Hyunjik Bae
 
20141229 dklee docker
DK Lee
 
자바 웹 개발 시작하기 (1주차 : 웹 어플리케이션 체험 실습)
DK Lee
 
SpringMVC 전체 흐름 알아보기
Myung Woon Oh
 
Starpl 20111012 스타플5를_만들기_시작하며
DK Lee
 
Junit jasmine
Kim BuSeung
 
Unit Test With J Unit
Kenu, GwangNam Heo
 
Database design
Joshua Yoon
 
자바 프로그래밍 Agile(1장 시작하기)
brain816
 
Kopss Open API 단위테스트 이슈사항
MinPa Lee
 
NDC12_Lockless게임서버설계와구현
noerror
 
구글 앱 엔진의 활용(Google App Engine) 2부
mosaicnet
 
P2P Transfers
Oleksii Piven
 
유니티3D 그리고 웹통신
현욱 김
 
Anatomy of a Data Product and Lending Club Data
Sri Ambati
 
단위테스트자동화지원도구 임성현 최종
guest7178884
 
NDC14 범용 게임 서버 프레임워크 디자인 및 테크닉
iFunFactory Inc.
 
스마트폰 온라인 게임에서 고려해야 할 것들
Hyunjik Bae
 
Ad

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

PPTX
TDD - Test Driven Development
ChangHyeon Bae
 
PDF
TDD.JUnit.조금더.알기
Wonchang Song
 
PDF
개발이 테스트를 만났을 때(Shift left testing)
SangIn Choung
 
PDF
아꿈사.C++ api 디자인.20140315 a
Choonghyun Yang
 
PDF
테스터가 말하는 테스트코드 작성 팁과 사례
SangIn Choung
 
PDF
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
Ahreum Kim
 
PDF
Effective Unit Testing
Yeon Soo Kim
 
PDF
테스트개선지원 사례 - 웹어플리케이션대상
SangIn Choung
 
PDF
TDD&Refactoring Day 02: TDD
Suwon Chae
 
PDF
Effective unit testing - 좋은테스트 요약
YongEun Choi
 
PDF
자바 테스트 자동화
Sungchul Park
 
PDF
Istqb 2-소프트웨어수명주기와테스팅-2015
Jongwon Lee
 
PDF
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
SangIn Choung
 
PDF
TDD&Refactoring Day 03: TDD
Suwon Chae
 
PDF
전통적인 개발과 테스트 주도 개발, 그리고 애자일
Tap ToRestart
 
PDF
Growing object oriented software guided by test
라한사 아
 
PPTX
TEST?
beom kyun choi
 
PDF
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
Suwon Chae
 
PDF
테스트 기발 개발, TBD(Test based developement)
도형 임
 
PDF
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
SangIn Choung
 
TDD - Test Driven Development
ChangHyeon Bae
 
TDD.JUnit.조금더.알기
Wonchang Song
 
개발이 테스트를 만났을 때(Shift left testing)
SangIn Choung
 
아꿈사.C++ api 디자인.20140315 a
Choonghyun Yang
 
테스터가 말하는 테스트코드 작성 팁과 사례
SangIn Choung
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
Ahreum Kim
 
Effective Unit Testing
Yeon Soo Kim
 
테스트개선지원 사례 - 웹어플리케이션대상
SangIn Choung
 
TDD&Refactoring Day 02: TDD
Suwon Chae
 
Effective unit testing - 좋은테스트 요약
YongEun Choi
 
자바 테스트 자동화
Sungchul Park
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Jongwon Lee
 
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
SangIn Choung
 
TDD&Refactoring Day 03: TDD
Suwon Chae
 
전통적인 개발과 테스트 주도 개발, 그리고 애자일
Tap ToRestart
 
Growing object oriented software guided by test
라한사 아
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
Suwon Chae
 
테스트 기발 개발, TBD(Test based developement)
도형 임
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
SangIn Choung
 
Ad

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

  • 1. 자바 웹 개발 시작하기 (8주차 : 명세서, 단위테스트, 통합) 2011. 12. 14 DEVELOPMENT #2 이덕곤
  • 2. §  로그인과 테스트와 국제화, 검증, 예외처리 §  jUnit : 단위 테스트 전략 알아보기(다음시간) §  세션과 로그인 처리 §  국제화 : I18N §  Validation §  예외처리 : Exception §  과제 : 명세서에 대해 읽어오기
  • 3. §  프로젝트 기획 §  명세서를 만들어 보자 §  로그인과 보드의 통합 §  단위테스트 §  동작하는 소프트웨어가 포괄적인 문서보다 우선 이다 : 애자일 동맹 선언 중
  • 4. §  명세 明(밝을 명)細(가늘 세) §  분명하고 자세함 §  명세서 明細書 §  물품이나 금액 따위의 내용을 분명하고 자세하게 적은 문서 §  글을 쓰는 이유 : 당신은 왜 글을 쓰시나요?
  • 5. §  생각의 정리, 기억력의 확장 §  기록은 기억을 지배한다 §  의사소통 시간의 절약 §  품질보증팀원 : 어떻게 테스트할지 알 수 있다 §  마케팅 : 아직 만들지도 않은 제품에 대한 웹사이트에 올릴 모호한 백서를 작성하는데 활용함 §  사업개발팀 : 제품을 어떻게 사용할지에 대한 계획, 투자자 유치 §  고객 : 제품에 가치 판단 §  기술 지필가 : 멋진 메뉴얼 작성 §  관리자 : 관리 회합 도중에 아는체 하는데 사용 ^^
  • 6. §  여기서 명세서란 기능 명세서를 말합니다 §  재미있게 작성하라 §  명세를 쓰는 작업은 머리가 돌아가도록 코드를 쓰는 작업과 유사하다 §  최대한 단순하게 작성하라 §  여러 차례에 걸쳐 검토하고 다시 읽어라 (명세는 지속적으로 개정해야 합니다) §  표준양식은 해롭다고 간주한다
  • 7. §  면책조항: "이 명세는 완벽하지 않습니다" §  저자: 1명 §  시나리오 §  회피목표 §  개괄 §  세부사항, 세부사항, 세부사항 §  미해결 문제 §  방주(side note)
  • 8. §  간단하게 작성해 오세요(생각의 정리 차원)
  • 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
  • 13. §  소스폴더 생성 후 §  패키지를 만듭니다.
  • 14. @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); // 가입에 실패한 경우 } } }
  • 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 §  과제 : 작품 완성해 오기
  • 19. §  명세서 §  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