2012-11-03 4 views
0

기본적으로 클라이언트와 서버 (반드시 HTTP 서버는 아님)를 구축하여 Java 소켓 프로그래밍을 연습하고 있습니다. 간단히 말해 클라이언트는 서버를 통해 소켓을 통해 요청을 보내고 서버는 작업 큐에 요청을 추가합니다. 쓰레드 풀은 처음에 특정 개수의 쓰레드를 가지며 각각의 빈 쓰레드는 태스크 큐에서 하나의 실행 가능한 태스크에 할당된다. 내 웹 서버에는 디스크에서 파일의 데이터를 저장하고 검색하는 간단한 저장소도 있습니다. 이 프로젝트에서는 여러 가지 동시성 문제를 처리해야합니다.Java로 웹 서버를 테스트하려면 어떻게해야합니까?

기본적으로 클라이언트, 서버, 스레드 풀, 처리기, 저장소를 구축해야합니다. 그러나, 나는 체계적인 방식으로 철저히 테스트하고 싶다. (단위 테스트, 통합 테스트 등). 필자는 테스트에서 많은 경험이 없으므로 포인터, 방법론, 프레임 워크 또는 자습서를 찾고 있습니다. (I는 건물을 자동화하는 개미를 사용하고, 처음에 테스트를 JUnit을하고 EasyMock에 고려)

architecture

답변

0

테스트하기 전에, 좀 거칠고 준비가 같이 prototpye 코드를 코딩에 의해 시작 했죠. 그냥 그것을 작동보고 내가 사용하는 API에 대한 느낌을 얻을 수 있습니다.

그런 다음 JUnit을 사용하여 일부 단위 테스트를 소개합니다 (JUnit은 유비쿼터스이며 다른 튜토리얼을 통해 시작할 수 있습니다).

개체가 다른 개체와 상호 작용하여 작업을 완료해야하는 경우 mock (EasyMock 등)을 사용하여 상호 작용을 제공하십시오. 이렇게하면 다시 팩터링이 발생할 수 있습니다.

당신이 행복 해지면 객체가 어떻게 상호 작용하는지 테스트 할 수 있습니다. 실제와 함께 모의를 대체하는 새로운 (통합) 테스트를 작성할 수 있습니다. 상호 작용이 커지면 복잡성이 커집니다.

어떤 것들은

  • 사소한 방법을 기억하기는
  • 100 %의 범위가
  • 어떤 테스트가 없음
  • 단위보다 더 시간 낭비 (예를 들어, 간단한 접근)을 테스트하는 가치가 아니다 테스트가 통합 테스트보다 쉽습니다.
  • 모든 테스트가 작동하지는 않습니다.
  • 멀티 스레드 응용 프로그램 테스트가 쉽습니다. d

Google의 테스트 방법에 대한 책이 있습니다. 기본적으로 테스트는 무언가가 생길 때까지 쓰지 않습니다. 그들은 테스트 용 코드를 구조화하는 방법에 대해 조언하는 엔지니어가 있습니다. 요점은 :

  • 의 Runnable 코드는
  • 테스트는 그 목표에 추가 목표이지만, 그것을 대체하지 않습니다
  • 테스트 할 수 있습니다
  • 코드 작성은 배운 기술
입니다
관련 문제