MOSS 프로젝트를 하다보니, 역시 웹기반이여서 웹 기반 부하테스트를 할 기회가 생겼다.
얼씨구나 한 것 까지는 좋았는데, 이게 생각보다 큰 비용을 지불하는 고급 기능이였다.
어느 정도 고급인지는 알길은 없지만, 개인적인 범위나 간단한 테스트용도로는 쓸만하다고 판단된다.

쓰는 방법은 아래와 같다.

구성 준비

Visual Studio의 제품 별로 다르지만, 제품 군 중에, Visual Studio 2005 Team System(이하 VSTS) 제품에만 팀 개발자 및 테스터 도구을 설치할 수 있다. 그러므로 VSTS를 설치할 수 있으며, 또한 팀 개발자 및 테스트 도구부분을 설치해주어야 한다

사용자 삽입 이미지


Visual Studio Test 프로젝트 시작

Visual Studio 을 실행 한 뒤에 새로 만들기” -> “프로젝트를 한다.

사용자 삽입 이미지


프로젝트 종류 에서 “Visual C#” -> “테스트” -> “테스트 프로젝트를 선택 한 뒤 , 이름에 적절한 이름을 넣고 확인을 클릭한다.

사용자 삽입 이미지


웹 테스트를 위한 스크립트 작성

만들어진 프로젝트에서 오른쪽 마우스 클릭해서 나오는 Context 메뉴에서 추가” -> “웹 테스트를 선택한다.

사용자 삽입 이미지


스크립트 생성을 위한 웹브라우징 하기.
자동으로 Internet Explore가 뜨는데, 여기서 시나리오 대로 웹 브라우징을 한다. 브라우징을 시작하면 왼편의 웹 테스트 레코더에 이동한 경로에 대한 사항들이 저장된다. 브라우징이 완료되면 중지를 클릭한다.
사용자 삽입 이미지
사용자 삽입 이미지




















스크립트 생성

캡처 한 스크립트에 대한 접속 스크립트 소스를 생성해야 한다. 코드 생성 방법은 .webtest 파일을 선택한 뒤에 왼편 창에서 나오는 상위 메뉴 중 코드 생성을 선택한다.

생성이 완료되면 해당 cs 파일이 생성이 되는데 이 cs 파일을 열면 테스트를 위한 전체 진행 프로그램이 자동 생성되었음을 확인할 수 있다.

사용자 삽입 이미지


스크립트 소스 수정

코드 내에 수정할 필요가 있는 사항들을 수정한다.
코드 자체를 이해할 수 있다면 최소한 각 시나리오 별로 스크립트를 나누어 추가 스크립트 구성도 가능하고 제작도 가능하다. 이 중 다른 부분은 제외하더라도, 굵게 표시한 ThinkTime 정도의 값의 수정이 필요하다. Action 별로 지연시간을 의미하는데, 테스트의 중요한 요소 이므로 적절한 값으로 대체하여 구성한다



public override IEnumerator<WebTestRequest> GetRequestEnumerator()

{

   WebTestRequest request1 = new WebTestRequest("http://tsquare.netswork.co.kr/");

  request1.ThinkTime = 8;

  ExtractHiddenFields rule1 = new ExtractHiddenFields();

  rule1.ContextParameterName = "1";

  request1.ExtractValues += new EventHandler<ExtractionEventArgs>(rule1.Extract);

  yield return request1;

 

WebTestRequest request2 = new WebTestRequest("http://tsquare.netswork.co.kr/_layouts/TLogin.aspx");

request2.Method = "POST";

request2.QueryStringParameters.Add("ReturnUrl", "%2f_layouts%2fAuthenticate.aspx%3fSource%3d%252f", false, false);

request2.QueryStringParameters.Add("Source", "%2f", false, false);

FormPostHttpBody request2Body = new FormPostHttpBody();

request2Body.FormPostParameters.Add("__VIEWSTATE", this.Context["$HIDDEN1.__VIEWSTATE"].ToString());

request2Body.FormPostParameters.Add("AccountID", "test001");

request2Body.FormPostParameters.Add("password", "test001");

request2Body.FormPostParameters.Add("__EVENTVALIDATION", this.Context["$HIDDEN1.__EVENTVALIDATION"].ToString());

request2Body.FormPostParameters.Add("login.x", "40");

request2Body.FormPostParameters.Add("login.y", "40");

request2.Body = request2Body;

ExtractHiddenFields rule2 = new ExtractHiddenFields();

rule2.ContextParameterName = "1";

request2.ExtractValues += new EventHandler<ExtractionEventArgs>(rule2.Extract);

yield return request2;

 

              [ 이하 생략 ]

 



부하테스트 설정
코드 정리가 되면 부하 테스트를 위한 준비를 시작한다. 프로젝트 위에서 마우스 오른쪽 버튼을 클릭하여 추가” -> “부하 테스트를 선택하여 부하테스트 제작 마법사를 띄운다.
사용자 삽입 이미지


사용자 삽입 이미지


패턴에 단계 부하에서 단계적으로 몇 명에 해당하는 부하를 넣을지를 판단하여 채운다.

사용자 삽입 이미지


부하테스트를 위한 테스트를 추가한다.

사용자 삽입 이미지


사용자 삽입 이미지


클라이언트 예상 브라우저를 선택한다. 만일 다양한 버전의 브라우저를 사용하는 환경에 대한 테스트라면 그 브라우저 사용 비율에 맞추어 추가한다
사용자 삽입 이미지


클라이언트와 서버 사이의 네트워크 매체를 설정한다.

일반적인 인트라넷은 LAN으로 하면 되고, 익스트라넷 또는 인터넷 환경이면 그에 맞는 유형과 비율을 설정한다.

사용자 삽입 이미지


부하테스트를 모니터링 할 대상을 설정한다. 그러나 AD 환경과 같이 모든 컴퓨터에 바로 접속할 수 있는 환경이 아닌 경우 타 시스템의 정보를 확인하는 작업은 제대로 진행되지 않는다. 차라리 대상 서버에서 직접 성능 MMC(제어판->를 이용하는 것이 좋다

사용자 삽입 이미지


테스트 실행

확장자가 .loadtest 라는 파일이 생성되는데, 이 파일을 연 뒤에 왼쪽 트리의 최상위에서 마우스 오른쪽 버튼을 클릭해서 테스트 실행을 선택한다

사용자 삽입 이미지


리포트 확인

실행을 하면 자동적으로 결과 리포트를 띄워주는데, 기본적으로 그래프를 제공하고 해당 로그 내용을 표나 요약등으로 확인할 수 있다.

사용자 삽입 이미지


728x90

+ Recent posts

728x90