Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Locust : カスタマイズ可能な統計ページのパーセンタイル表示機能

Avatar for fooqoo fooqoo
April 13, 2025
440

Locust : カスタマイズ可能な統計ページのパーセンタイル表示機能

Locust OSSプロジェクトに提出した Pull Request #2550 の内容をまとめた スライドです。

このPRでは、統計ページに表示するパーセンタイルをカスタマイズできる機能を追加し、モダンUIとの整合性を改善しました。
フィードバックを受けて Web UI へのカラム選択機能も実装しています。

内容はスクリプトとChatGPTを活用して自動生成されたものです。

Avatar for fooqoo

fooqoo

April 13, 2025
Tweet

Transcript

  1. 実装内容とコード変更 Backend: パーセンタイル設定の導入 +PERCENTILES_TO_STATISTICS = [0.95, 0.99] +for percentile in

    stats.PERCENTILES_TO_STATISTICS: + if not is_valid_percentile(percentile): + logging.error("value between 0 < percentile < 1") + sys.exit(1) 統一されたバリデーションロジックも追加。 produced by pr2slide 5
  2. 実装内容とコード変更(2) Backend: APIレスポンスにパーセンタイルを動的に追加 +response_time_percentiles = { + f"response_time_percentile_{percentile}": self.get_response_time_percentile(percentile) +

    for percentile in PERCENTILES_TO_STATISTICS +} ... +**response_time_percentiles これにより、任意のパーセンタイル列が返されるように。 produced by pr2slide 6
  3. 実装内容とコード変更(3) Web UI: 統計表にパーセンタイル列を表示 const percentilesToStatisticsRows = swarmTemplateArgs.percentilesToStatistics.map( percentile =>

    ({ title: `${percentile * 100}%ile (ms)`, key: `responseTimePercentile${percentile}`, }) ); const tableStructure = [ ... ...percentilesToStatisticsRows, ]; stateからUI構造を生成し、拡張性を確保。 produced by pr2slide 7
  4. 実装内容とコード変更(5) React Hook: 表示列の選択状態管理 const [selectedColumns, setSelectedColumns] = useState<string[]>( defaultStructure.map(column

    => column.key) ); const filteredStructure = structure.filter(s => selectedColumns.includes(s.key)); 再利用可能な useSelectViewColumns を導入 produced by pr2slide 9
  5. 技術スタックと利用技術 React (TypeScript) UI表示とカラム選択UI Redux 状態管理 Vitest + Testing Library

    単体テスト・UIテスト Python + Gevent Locust本体の負荷生成エンジン Jinja2 Web UIへの値伝搬 produced by pr2slide 10
  6. レビューフィードバックと対応(2) @andrewbaldwin44 Column Control UI、いい感じ!Table コンポーネントを変更しない実装が良い → useSelectViewColumns Hook で

    filteredStructure を返す設計に変更 → Table 側には一切変更を加えずに対応! 最終コメント: Looks awesome, nice work! produced by pr2slide 13
  7. 作業のタイムライン 2024-01-14: PR作成、基本機能追加 2024-01-15 AM: 名前修正、バリデーション追加 2024-01-15 PM: Web UI機能実装&プレビュー

    2024-01-15 深夜: Hook構造化、テスト追加 2024-01-16: レビュー完了、マージ直前へ produced by pr2slide 14
  8. 今後の展望・改善ポイント PERCENTILES_TO_STATISTICS のUI側制御を runtime configurable に? legacy UI との整合性は? →

    切り離しの検討 パーセンタイル以外の指標(例: percent fail)表示切替も候補に 既存定数の共通化・命名整理 produced by pr2slide 16