2012-05-18 2 views
4

저는 Selenium을 처음 접했고 퍼지 테스트도합니다. Selenium IDE는 고정 된 테스트 케이스 만 허용한다는 것을 알았다. 하지만 퍼지 테스트가 도움이 될 것 같습니다.Selenium을 이용한 퍼징 테스트 방법

그래서 퍼즈 테스트의 뒤에는 셀레늄이 제공하는 테스트 중 블랙 박스 또는 화이트 박스 테스트가 있습니다.

도움을 주시면 감사하겠습니다. 짧은 대답을

답변

12

:

  • 셀레늄은 블랙 박스 테스트에 대해 대부분이지만 셀레늄과 일부 하얀 테스트를 할 수 있습니다.
  • 셀레늄 RC는 셀레늄 IDE보다 퍼즈 테스트를 더 자유롭게 수행 할 수 있습니다.

긴 대답은 아래를 참조하십시오 :

을이 글에서 나는 무작위 셀레늄 RC를 사용하여 웹 응용 프로그램을 테스트의 개념을 설명하려고한다.

일반적으로

말하기, 셀레늄과 같은 black-box testing 기술은 당신에게

에 좋은 자유를 제공
  • (1)
  • 는 모든 필드를 선택 (2)
  • 특정 HTML 형태로 테스트 할 수있는 특정 필드에 값을 입력
  • (3) 실행 순서/단계를 선택하여 특정 필드 집합을 테스트하십시오.

기본적으로 당신이

  • 사용 (1) (당신은 필드에 대한 좋은 최대 길이를 선택 했습니까) 당신의 HTML 양식의 특정 필드를 테스트하기 위해, 예를 들어, 해당 필드의 값을 자바 스크립트 처리가 (회전 "t"를 오늘 날짜로 변환하고 "+1"을 내일 날짜로 변환), 그리고 백엔드 데이터베이스에서 해당 변수를 처리합니다 (VARCHAR 길이, 숫자 문자열을 숫자로 변환 ...).
  • 사용 가능한 필드를 모두 테스트하려면
  • 필드의 상호 작용을 테스트하려면 use password 필드 앞에 username 필드가 입력되지 않은 경우 JavaScript 경고가 표시됩니다. 특정 조건이 충족되지 않으면 데이터베이스 (예 : Oracle) 트리거가 "팝업"됩니다.

모든 변수 (가능한 모든 변수의 조합으로 구성된 모든 상태)를 테스트하는 것은 이론적으로조차 가능하지 않습니다 (예 : 문자열을 구문 분석하는 데 사용 된 작은 함수를 테스트 한 다음 몇 가지 가능한 값 문자열이 있나요?). 따라서 제한된 리소스 (시간, 돈, 인력)를 감안할 때 실제로 웹 응용 프로그램의 "가장 중요한"실행 경로 만 테스트하려고합니다. (a) 빈번히 실행되고, (b) 명세에서 벗어나 심각한 손실을 초래하는 속성이 더 많으면 경로가 더 "중요 함"이라고합니다.

아쉽게도 응용 프로그램의 모든 사용 사례를 기록하고 가장 빈번하게 수행해야하는 사례를 선택하는 경우가 아니면 어떤 실행 사례가 중요한지 알기가 어렵습니다. 이는 매우 많은 시간이 소요되는 프로세스입니다. 또한 최소한의 유스 케이스에서의 버그조차도 보안 구멍 (예 : 일부 PHP 페이지의 URL 처리에서 작은 버그가있는 경우 모든 고객의 비밀번호를 훔치는) 인 경우 많은 문제를 일으킬 수 있습니다.

그렇기 때문에 테스트 공간 (즉, 사용 사례에 사용 된 값의 공간)을 무작위로 스캔해야하며 모든 것을 실행하고 스캔 할 수 있기를 바랍니다. 이를 fuzz testing이라고합니다.

Selenium RC를 사용하면 Java, PHP, CSharp와 같은 지원되는 언어로 프로그래밍을 수행하여 모든 실행 단계에서 모든 필드의 값을 테스트 할 수 있습니다 (1), (2) 및 (3) 단계를 쉽게 수행 할 수 있습니다. , Ruby, Perl, Python.

다음은 할 수있는 단계 이러한 모든 단계 (1), (2), (3) :

  • 당신이 쉽게 반복 할 수 있도록 HTML 필드의 목록을 만듭니다. HTML 필드가 충분히 구조화되지 않은 경우 (기존 이유) 특정 ID가 포함 된 새 속성을 추가하는 것이 좋습니다 (예 : selenium-id, (1) XPath 구성 단순화, (2) XPath 분석 속도 향상, (3) 번역 번거 로움을 피하기 위해 이러한 새로 추가 된 selenium-id의 값을 선택하는 동안 (a) 연속 번호를 사용하여, (b) 일관성을 형성하는 이름을 사용하여 fuzzing하는 동안 반복 할 수 있습니다.
  • 가 rand_field
  • 결국, 특정 필드에 입력 값을 조절하는 임의의 변수를 생성 말한다 가 rand_step
  • 필드를 제어하는 ​​임의의 변수를 생성 말할 단계를 제어하는 ​​임의의 변수를 생성 예 : rand_value
  • 지금, 당신의 퍼징 알고리즘 내에서, 그리고 마침내 rand_value을 반복, rand_field을 반복, 각 등의 반복으로, rand_step의 값을 통해 첫 번째 반복.

즉, 퍼즈 테스트는 제한된 실행 시간 후에 전체 응용 프로그램의 유스 케이스 값 공간을 검색하는 데 도움이됩니다. "a plague of new vulnerabilities emerge that affected popular client-side applications including Microsoft Internet Explorer, Microsoft Word and Microsoft Excel; a large portion of these vulnerabilities were discovered through fuzzing"

그러나 단점없이 퍼지 테스트가 수행되지는 않습니다. 하나는 테스트 케이스를 재현하는 능력이다. 그러나 당신은 쉽게 하나가 다음 중 하나를 수행하여 이러한 한계를 극복 할 수 :

  • 특정 시간에 사용되는 배치 파일에 손 전에 테스트 케이스 생성을,이 파일을 점진적으로
  • 생성을 적용 테스트 케이스를 즉시 로깅하여 해당 사례를 로깅합니다.
  • 실패한 사례 만 로깅합니다.
+1

내 질문에 대한 매우 상세한 답변. 감사. HTML 입력 필드에 값을 입력 한 다음 버튼을 무작위로 클릭하는 방법에 대해 설명 했습니까? –

2

셀레늄이 검은 색 또는 흰색 인 경우 자세한 내용을 알려주십시오. 블랙 박스와 화이트 박스

  • 블랙 박스에 대한

    의 정의 : 입력이 공급되는 동안 검사 한 상자 (일반적으로 전체 응용 프로그램)의 경우 정확한 출력을 제공합니다. 이론적으로 모든 가능한 입출력 쌍이 확인되면 응용 프로그램에 버그가 없습니다.

  • 흰색 상자 : 소스의 제어 흐름을 확인합니다.이론적으로 모든 실행 경로를 문제없이 방문하면 응용 프로그램에 버그가 없습니다.

하지만 당신은 항상

  • 시간
  • 돈에
  • 사람들
을 자원 제한되어 있기 때문에 실제 생활에서, 당신은 모든 입출력 쌍 없으며, 모든 실행 경로를 할 수 없다

셀렌 : 웹 응용 프로그램에 값을 입력하거나 특정 클릭을하여 사용자를 모방 한 다음 브라우저에서 필요. 웹 애플리케이션의 내부 기능이 실제로 어떻게 작동하는지 알지 못한다. 그래서 전형적인 셀레늄 테스트가 블랙 박스 테스트입니다.

+1

크게 감사드립니다. 저는 셀레늄 테스트에서 더 검은면을 보았습니다. 그렇다면 그것의 더 하얀 부분은 어떨까요? –

+0

셀레늄 테스트는 블랙 박스 테스트의 예이며 흰색 상자는 테스트하지 않습니다. – AndyPerfect

+0

@AndyPerfect : 오타를 발견해 주셔서 감사합니다. 나는 전체 글에서 Selenium === black-box를 의미하지만 실수로 오타로 끝냈다. – CuongHuyTo

관련 문제