2011-10-26 2 views
9

나는 단위 테스트에서 현재 가지고있는 것과 같은 방식으로 성능 테스트를 자동화하려고 생각하고 있습니다.성능 테스트를 자동화하고 CI와 통합하는 방법은 무엇입니까?

jMeter와 같은 도구를 사용하여 성능 테스트를 수행하거나 응용 프로그램의 특정 부분을 트리거하는 코드를 작성하는 방법을 알고 있습니다. 나는 시간, jvisualvm, nmon 또는 다른 것들을 사용하여 사용되는 자원에 관한 정보를 수집하는 방법을 안다.

성능 테스트를 작성하고 싶습니다. 특정 라인 (실행 시간, 메모리 또는 CPU 소비량 ...)을 초과하면 성능 테스트를 실패합니다. 그런 다음 CI 서버 (Jenkins)가 정기적으로 테스트를 실행하여 성능이 양호하게 유지되도록합니다.

성능이 하드웨어에 따라 다르므로이 방법은 복잡합니다. 현재 수행하고있는 방식대로 결과를 사람이 해석해야 만족 여부를 판단 할 수 있습니다.

그런 식으로 성능 테스트를 자동화하는 데 유용한 도구 또는 프레임 워크 (가능한 경우 Java 기반)를 알고 계십니까? 그렇지 않다면 조언을 구하는 좋은 습관을 가지고 있습니까?

감사합니다.

+0

센서를 어디에두고 싶은가요? 서버 또는 클라이언트. 어느 쪽이든 당신은 시험에서 성취 할 수있는 구체적인 목표를 세워야합니다. 테스트 결과를 응답 시간과 같이 해석 가능하게 만들면 자동화가 성공 또는 실패하는지 쉽게 판단 할 수 있습니다. ... happy scripting – jpse

+0

둘 다 동시에 때로는 둘 다 있습니다. 예를 들어, 서버와 통신하는 Windows 클라이언트가있는 경우가 있습니다. 나는 그것이 서버에 너무 많은 부하를주지 않도록하고 싶다. 그래서 클라이언트의 많은 인스턴스를 시작하고 CPU 소비, 메모리와 같은 서버 측의 것들을 측정 할 것을 암시합니다 ... –

답변

2

이전에는 JUnit을 사용하여 성능 테스트를 수행했습니다. 그러나 그것은 인간의 해석이 필요하지 않았습니다. 알고리즘은 너무 오래 걸리거나 빠릅니다. 어떤면에서는 시간 임계 값을 기준으로 합격/불합격 테스트였습니다.

주관적인 성능 테스트가 자동으로 수행되어야하는 경우 빌드하기가 어렵습니다.

+0

그래서 코드 조각에 걸리는 시간을 측정하고 "fail()"을 호출하면 그것은 어떤 가치 이상입니다. 메모리 소비는 어떻게됩니까? –

+0

맞습니다. 우리는 메모리 소비를 추적 할 필요가 없었습니다. –

0

ant와 함께 jmeter를 사용하여 CI 서버에서 자동으로 perf 테스트를 실행할 수 있습니다. 임계 값을 초과하는 응답 타이밍을 트랩 할 수 있는지 확실하지 않지만 XSL/쉘 스크립팅을 통해 간단해야합니다. 수동으로 검토 할 수는 있지만 실적 보고서는 확실히 게시 할 수 있습니다.

3

테스트가 주관적이라면 자동화를 위해 주관성을 "제거"해야합니다. 그 말은, 당신이 받아들이거나 받아 들일 수없는 것으로 여겨지는 한계점을 설정하는 것입니다. 젠킨스가 선택할 수있는 깃발이나 물건을 던질 방법이 있는지보십시오. 이러한 임계 값이 있다면 원하는 자동화를 얻을 수있는 더 나은 기회입니다.

+0

동의합니다. 이 연습의 일부는 내가 설정하고 싶은 한계가 무엇인지 분명히하는 것입니다. –

2

Jenkins에는 JMeter 및 JUnit의 결과를 캡처하는 "Performance Plugin"이 있습니다. "Jinkkins 관리"아래의 "플러그인"아래에서 찾아보십시오

+0

감사합니다. 임계 값을 허용하는 것처럼 보입니다. 그것은 나를위한 좋은 출발이 될 것입니다. –

1

자동으로 테스트를 통과하거나 실패하려면 불리언 수로 합격/불합격 기준을 정의 할 수 있어야합니다. 이것은 평균 응답 시간이거나 약간 더 진보 된 통계 분석 일 수 있습니다. 경향 함수 또는 표준 편차.

저는 클라이언트 및 서버 쪽 모두에서 이러한 종류의 작업을 수행하는 도구를 모릅니다.

클라이언트 측 결과에 대해이를 수행 할 수있는 도구가 제한적입니다.

Jenkins Performance Plugin을 사용하면 구성된 오류 임계 값을 사용하여 빌드를 성공/실패시킬 수 있어야합니다. 이것은 테스트 결과의 매우 기본적인 자동 검증과 빌드를 성공 또는 실패시키는 방법입니다.

비슷한 도전에 직면했을 때 Performance Plugin을 평가했으며 제공 한 기능에 완전히 만족하지 않았습니다. 이 방법은 내가 자바 기반의 Lightning 프로젝트에서 일하기 시작했다. JMeter 결과를 분석하고 레일을 자동으로 통과시키는 기능을 제공합니다.특정 트랜잭션 유형에 대한 평균 응답 시간 또는 표준 편차.

관련 문제