2012-06-20 6 views
2

Visual Studio 2010 Ultimate Load Test를 사용하여 엔터프라이즈 웹 응용 프로그램 (빌드하지 않았 음)을 테스트하려고합니다. 각 가상 사용자가 처음에 로그인하고 임의 테스트를 마칠 때 로그 아웃해야합니다. 로드 테스트를 올바르게 구성 할 수 있습니다. 그러나 합병증이 있습니다. ASP.NET 부하 테스트 세션에서 WebTestContext를 유지할 수 있습니까?

http://ProductName/(S(ilv3lp2yhbqdyr2tbcj5mout))/System/Container.aspx 

내가 코딩 테스트에 비주얼 스튜디오 WebTests를 변환 한 다음 세션 별 URL을 사용하여 코드를 개조 : 세션 키는이처럼 URL에 주입된다. 이것은 잘 작동합니다. 내가해야 할 일은 특정 가상 사용자가 로그인 WebTest 클래스로 시작하는 다양한 테스트에서이 세션 인코딩 URL을 로그 아웃 WebTest 클래스에 유지하는 것입니다.

개별 WebTest 클래스는 각 테스트의 시작과 끝에서 로그인 및 로그 아웃 할 수 있습니다. 그러나 이것은 일반적인 사용의 정확한 표현이 아닙니다. 이 응용 프로그램은 메인 프레임 터미널을 에뮬레이트하고 웹 브라우저 요청 사이의 연결이나 세션을 절대로 끊어지지 않습니다. 각 세션은 메인 프레임 터미널이 IBM AS400과 상호 작용하는 것처럼 긴 하나의 대화 형 HTTP 요청입니다. Usert는 일반적으로 하루의 시작 부분에 메인 프레임에 로그인하고 끝날 때 로그 아웃해야합니다. 마찬가지로이 웹 응용 프로그램은 사용자가 로그 아웃하거나 IIS 세션 시간 초과가 발생할 때까지 HTTP 요청을 유지 관리합니다. 따라서 모든 테스트 사이의 URL에서 동일한 세션을 유지해야 메모리 누출과 기타 불쾌한 버그가 누적되지 않도록 할 수 있습니다.

의견을 보내주십시오.

답변

7

문제 1 : 테스트 반복

당신은 시험의 반복에 걸쳐 지속되는 '사용자 컨텍스트'에 데이터를 저장할 수에 걸쳐 세션 ID를 유지. 이름이 '$ LoadTestUserContext'인 WebTestContext에 있습니다.

// within WebTestPlugin.PreRequest() or MyExtractionRule.Extract() 
// e is the corresponding eventargs object... 
LoadTestUserContext userContext = (LoadTestUserContext)e.WebTest.Context["$LoadTestUserContext"]; 
... 
// setting the value in the user context (i.e. in the extraction rule) 
userContext["sessionId"] = "(extracted session id)"; 
... 
// getting the value from the user context (i.e. in WebTestPlugin PreWebTest event) 
e.WebTest.Context["sessionId"] = userContext["sessionId"]; 

당신은 그 웹 테스트 컨텍스트에 사용자 컨텍스트에서 값을 가져옵니다 (A WebTestPlugin를 추가해야합니다 (이 컨텍스트 매개 변수는 부하 테스트 실행에 나타납니다하지만 독립형 웹 테스트에서 실행, 주))를 모든 웹 테스트에 적용하여 모든 테스트에서 값을 사용할 수있게하십시오.

문제 2 :

  • 자신의 별도의 시험에 로그인과 로그 아웃 기능을 추출 단지 시작과 부하 테스트의 끝에서 로그인/로그 아웃 (로그 아웃 테스트도를 페치 WebTestPlugin이 필요하다는 것을 기억 로드 된 테스트 세션에서
  • 로드 테스트에서 테스트 믹스 편집 대화 상자를 사용하여 초기화 및 종료 테스트를 지정할 수 있습니다.로드 테스트 시나리오에서 방금 생성 한 로그인 및 로그 아웃 테스트
  • 으로 설정하고 "새 백분율 사용자 수 "를

"새 사용자의 백분율을"설정 "새 사용자의 비율"의 일부 추가 설명이 설정은 제대로 명명하고 전체 동작을 나타내지 않습니다.

  • 는 "새 사용자는"테스트 반복을 시작, 그것은 새로운 $ WebTestUserId 소요 (당신이 원하지 않는 새로운 신선한 사용자 컨텍스트 가져옵니다)
  • 을 할 때 비 "새 사용자는 "그것은 지금까지 너무 좋아 예전 $ WebTestUserId (당신이 원하는 할 이전 사용자 컨텍스트)

를 유지, 테스트 반복을 시작합니다.

  • 각 "새 사용자는"부하 테스트하는 동안 다음을 실행합니다 :

    Initialize > web test iteration > Terminate

  • 비 "새 사용자"가 실행 전체에 대해 다음 그러나 예상치 못한 부분이있다 부하 테스트 기간 :

    Initialize > iteration1 > iteration2 > ... > iterationN > Terminate

,

즉, "신규 사용자"는 지속적으로 로그인 및 로그 아웃합니다 (원하지 않는). "신규 사용자"가 아닌 사용자는 전체 부하 테스트에서 번만 번 로그인하고 로그 아웃하고 원하는 기간 동안 테스트 반복을 계속 실행하십시오.