2011-08-18 8 views
1

저는 부두에 앱을 배포하는 단위 테스트가있는 Java 웹 앱을 개발 중입니다. 나는 HtmlUnit을 사용하여 앱을 치고 몇 가지 높은 수준의 테스트를 수행합니다. 싱글 톤 프로브를 사용하여 시스템 구성을 수정하고 "테스트"플래그를 추가 할 수 있도록 설정했습니다. 실제 사용자를 인증하거나 사용자 역할을 확인하지 않고도 일부 테스트를 실행할 수 있기를 원하기 때문에 편리합니다 .자바 앱에 대해 "테스트 모드"를 어떻게 설정합니까?

그러나 앱을 배포 할 때 취약성으로 인해 문을 여는 것처럼 보입니다. 나는이 "뒷문"을 좀 더 총알로 만드는 방법에 대한 제안을 찾고 있습니다. 이것을 처리하기 위해 mock 객체를 사용할 수는 있지만 여전히 백도어가 노출 된 채로 남아 있다고 생각합니다.

+0

테스트에 대한 플래그를 수동으로 설정 했으므로 생산에 배치하기 전에 스위치를 끄는 것을 잊지 못할 수도 있습니다. – dbf

+0

그건 웹 앱으로는 아무도 코드를 볼 수 없거나 클래스를 디 컴파일 할 수있는 유일한 구멍 일 것입니다 ... 클라이언트 측에 다운로드되지 않습니다. – Snicolas

+0

이 테스트 플래그는 무엇입니까? 시스템 속성? 서블릿 초기화 매개 변수? 당신의 설정에있는 다른 param? – pcjuzer

답변

1

모든 환경에서 테스트 할 수있는 사용자 계정이 있습니다. 나는 실제 등록 과정을 사용하여 그것들을 만든다. 아무것도 만들지 않았다.

이것은 문제를 우회하여 내가 서명 프로세스를 테스트 할 수있게하며, 필요한 경우 다른 특성/역할을 가진 여러 사용자를 만들어 테스트 할 수 있습니다.

사용자가 내 제어 권한을 갖고 있기 때문에 일관성을 유지하고 예상되는 테스트 결과와 일치합니다.

+0

하지만 등록 환경을 완전히 제어 할 수 없다면 어떻게 될까요? 예를 들어, 내 "실제"응용 프로그램에서 LDAP에 대해 인증해야합니다. 테스트를하는 동안 강제로 수행하고 싶지는 않습니다. 실제 계정을 사용하고 싶지는 않습니다. (테스트를 위해 일종의 서비스 계정을 얻을 수 있다고 생각합니다.) – MTR

+0

예, 테스트 용 계정이 무엇인지 의미합니다. 나는 그 문제에 빠지지 않았다. 누군가가 "가짜"사용자를 원하지 않는다고 불평하면 테스트를 위해 사용자가 인증을 무시하도록하는 것보다 더 안전하고 안전하다고 제안합니다. –

1

가정하기에 충분한 길이의 특수 매개 변수를 사용하십시오. 예를 들어 GUID. 응용 프로그램에서 하드 코딩 될 수도 있습니다. 모든 테스트는이 매개 변수를 사용중인 각 URL에 추가합니다. 특별한 HttpFilter를 사용하여이 매개 변수를 검사하고 테스트 모드를 켤 수 있습니다.

+0

저는이 기술을 다른 목적으로 사용했습니다 : 주어진 페이지의 끝 부분에 많은 로깅 정보를 추가하는 것입니다. 이는 프로덕션의 문제를 진단 할 때 매우 편리합니다. –

1

응용 프로그램을 테스트 모드로 변경하는 데 사용하는 프로세스와 관련된 보안을 던지십시오. 해당 페이지에 대한 기본 인증 또는 다른 것으로 변경하십시오. 이것은 모두 web.xml에서 직접 구성 할 수 있습니다.

관련 문제