日本語版
最新ニュース
科学&テクノロジー

テストを 5 倍高速化したツールとテクニック — Martian Chronicles、Evil Martians のチーム ブログ

テストの遅さはどのプロジェクトにとっても足かせになりますが、大規模に運営されているエンタープライズレベルのプロジェクトでは特に苦痛となる可能性があります。これにより、CI の遅延、デプロイメント時間の遅延、そしてまったく退屈な開発者エクスペリエンスが発生する可能性があります。 Evil Martians は最近、クライアントが CI パイプラインを最適化し、コードをより迅速にテストおよび変更し、最終的には 5倍速い 結果!この投稿では、それを実現するためのいくつかのテクニックとツールについて説明します。おそらく、あなたも同じことをしたいと思うでしょう。 まず、クライアントの背景について説明します。 パワーホームリフォーム (「POWER」) は、窓、サイディング、屋根材、ドア、屋根裏の断熱材、太陽光発電屋根パネルなどの外装改修を専門とする国内最大の住宅外装リフォーム業者です。社内にも社外にも、この会社が高い基準を持っていることは明らかなので、私たちはその基準を満たすよう努めました。 彼らはまた、この国で働くのに最適な場所であることの意味を刷新しており、フォーチュン誌の「働きやすい企業」リスト 100 社で第 14 位を獲得しているほか、ピープル誌の「気にかけてる企業」やコンピューターワールドの「最高の企業」でもランクインしています。 ITで働くために」。 技術的に言えば、このプロジェクトは Ruby on Rails 上に構築されており、コンポーネントベースのアーキテクチャ設計 (別名) に従っています。 モジュラーモノリス)、数十のコンポーネントを備えています。 最適化の鳥瞰図 このパフォーマンス向上を達成するために、次の組み合わせを使用しました。 Rスペック ハッキング、プロファイリングの習熟度(たとえば、 スタックプロフ)、そしてもちろん、私たち自身の テストプロフ ツールキット。 まず、Stackprof を使用してテスト スイート全体の予備検査を実施しました。これにより、ファクトリ、ロギング、API 呼び出しなど、改善すべき一般的な事項を特定することができました。次に、全体的な最適化を行った後、次のように切り替えました。…

テストを 5 倍高速化したツールとテクニック — Martian Chronicles、Evil Martians のチーム ブログ

1733567404
2024-12-06 12:28:00

テストの遅さはどのプロジェクトにとっても足かせになりますが、大規模に運営されているエンタープライズレベルのプロジェクトでは特に苦痛となる可能性があります。これにより、CI の遅延、デプロイメント時間の遅延、そしてまったく退屈な開発者エクスペリエンスが発生する可能性があります。 Evil Martians は最近、クライアントが CI パイプラインを最適化し、コードをより迅速にテストおよび変更し、最終的には 5倍速い 結果!この投稿では、それを実現するためのいくつかのテクニックとツールについて説明します。おそらく、あなたも同じことをしたいと思うでしょう。

まず、クライアントの背景について説明します。 パワーホームリフォーム (「POWER」) は、窓、サイディング、屋根材、ドア、屋根裏の断熱材、太陽光発電屋根パネルなどの外装改修を専門とする国内最大の住宅外装リフォーム業者です。社内にも社外にも、この会社が高い基準を持っていることは明らかなので、私たちはその基準を満たすよう努めました。

技術的に言えば、このプロジェクトは Ruby on Rails 上に構築されており、コンポーネントベースのアーキテクチャ設計 (別名) に従っています。 モジュラーモノリス)、数十のコンポーネントを備えています。

最適化の鳥瞰図

このパフォーマンス向上を達成するために、次の組み合わせを使用しました。 Rスペック ハッキング、プロファイリングの習熟度(たとえば、 スタックプロフ)、そしてもちろん、私たち自身の テストプロフ ツールキット。

まず、Stackprof を使用してテスト スイート全体の予備検査を実施しました。これにより、ファクトリ、ロギング、API 呼び出しなど、改善すべき一般的な事項を特定することができました。次に、全体的な最適化を行った後、次のように切り替えました。 地元 テストの最適化。たとえば、特定のテスト ファイルの分析とリファクタリング。

イリーナ・ナザロワ Evil Martians の CEO

全体として、私たちは 3 つの PR を提出 (およびマージ) し、それぞれが異なるレベルでテスト スイートの改善をもたらしました。この投稿では、これら 3 つの最適化マイルストーンについて説明します。

テスト最適化の考え方の 3 つの柱

話は以上ですが、深くなりすぎる前に少し待ってみましょう。テストを最適化する前に、大幅な改善を実現するために必要な考え方を理解することが重要です。この考え方は次の 3 つの柱に基づいています。

初め、 最適化すべき最も価値のあるものを探す。たとえば、すべてのテストで使用されるユーザー ファクトリを最適化すると、単一のテストを最適化するよりもはるかに多くの価値が得られます。 monthly_report_spec.rb ファイル (変更または使用されることはほとんどありません)。

2番、 簡単に実現できる成果を見つけ、過剰な最適化を行わない。ある方法に行き詰まりがちで、テストのパフォーマンスを 1 秒向上させるのに 4 時間かかる場合は、ここでの優先順位を再考する必要があります。

三番目、 タイミングを計る また、最適化の前後でタイミングを常に比較します。驚くべき増加が起こる可能性がありますが、これは私たちが実際に望んでいることではありません。

状況の理解

まず、明確な概要を把握し、ボトルネックを特定するために、さまざまな種類の指標を調べる必要がありました。簡単に言うと、これらのメトリクスは、合計テスト時間、コールスタック内の最も遅いメソッド、および最も使用されている (そして最も遅い) ファクトリです。

ツールのセットアップ

まず、Stackprof をインストールして構成し、 テストプロフ。 Stackprof は Ruby のコールスタック プロファイラーであり、TestProf はテストのプロファイリングと最適化のための高度なツールボックスです (これも Evil Martians によって作成されました!)。

#テストを #倍高速化したツールとテクニック #Martian #ChroniclesEvil #Martians #のチーム #ブログ

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。