Locust는 HTTP 및 기타 프로토콜을 위한 오픈 소스 성능/부하 테스트 도구입니다. 개발자 친화적인 접근 방식을 통해 일반 Python 코드로 테스트를 정의할 수 있습니다.
Locust 테스트는 명령줄이나 웹 기반 UI를 사용하여 실행할 수 있습니다. 처리량, 응답 시간 및 오류를 실시간으로 확인하거나 나중에 분석하기 위해 내보낼 수 있습니다.
일반 Python 라이브러리를 테스트에 가져올 수 있으며 Locust의 플러그형 아키텍처를 사용하면 무한히 확장할 수 있습니다. 대부분의 다른 도구를 사용할 때와는 달리 테스트 디자인은 GUI나 도메인별 언어로 제한되지 않습니다.
바로 시작하려면 설명서로 이동하세요.
사용자가 반복하거나 조건부 동작을 수행하거나 계산을 수행하도록 하려면 Python에서 제공하는 일반 프로그래밍 구성을 사용하면 됩니다. Locust는 자체 그린렛(경량 프로세스/코루틴) 내에서 모든 사용자를 실행합니다. 이를 통해 콜백이나 다른 메커니즘을 사용하는 대신 일반(차단) Python 코드처럼 테스트를 작성할 수 있습니다. 시나리오는 "단순한 Python"이므로 일반 IDE를 사용할 수 있고 일반 코드로 테스트 버전을 제어할 수 있습니다(XML 또는 바이너리 형식을 사용하는 다른 도구와는 반대).
locust import HttpUser, task, betweenclass QuickstartUser(HttpUser):wait_time = between(1, 2)def on_start(self):self.client.post("/login", json={"username":"foo", " 비밀번호":"bar"})@taskdef hello_world(self):self.client.get("/hello")self.client.get("/world")@task(3)def view_item(self):for item_id in range(10):self.client. get(f"/item?id={item_id}", name="/item")
Locust를 사용하면 여러 컴퓨터에 분산된 부하 테스트를 쉽게 실행할 수 있습니다. 이는 이벤트 기반(gevent 사용)이므로 단일 프로세스가 수천 명의 동시 사용자를 처리할 수 있습니다. 주어진 하드웨어에서 초당 더 많은 요청을 수행할 수 있는 다른 도구가 있을 수 있지만 각 Locust 사용자의 오버헤드가 낮기 때문에 이 도구는 동시 작업 부하를 테스트하는 데 매우 적합합니다.
Locust에는 테스트 진행 상황을 실시간으로 보여주는 사용자 친화적인 웹 인터페이스가 있습니다. 테스트가 실행되는 동안 로드를 변경할 수도 있습니다. UI 없이도 실행할 수 있어 CI/CD 테스트에 쉽게 사용할 수 있습니다.
Locust는 주로 웹 사이트/서비스에서 작동하지만 거의 모든 시스템이나 프로토콜을 테스트하는 데 사용할 수 있습니다. 테스트하려는 클라이언트를 작성하거나 커뮤니티에서 만든 클라이언트를 탐색해보세요.
Locust의 코드 베이스는 의도적으로 작게 유지되었으며 기본적으로 모든 것을 해결하지는 않습니다. 대신, 우리는 일반 Python 코드를 사용하여 발생할 수 있는 모든 상황에 쉽게 적응할 수 있도록 노력합니다. 다음을 수행하는 데 방해가 되는 것은 없습니다.
실시간 보고 데이터를 TimescaleDB로 전송하고 Grafana에서 시각화
REST API의 특성을 처리하기 위해 호출을 래핑합니다.
완전히 사용자 정의된 하중 형태/프로파일 사용
...
문서: docs.locust.io
지원/질문: StackOverflow
Github 토론: Github 토론
채팅/토론: Slack (가입)
관리자: Lars Holmberg
UI: 앤드류 볼드윈
원작자: 조나탄 헤이먼
모든 기여자들에게 진심으로 감사드립니다.
MIT 라이선스에 따라 라이선스가 부여된 오픈 소스입니다(자세한 내용은 LICENSE 파일 참조).