萌えハッカーニュースリーダー

2025/05/01 13:30 Making PyPI's test suite 81% faster

出典: https://blog.trailofbits.com/2025/05/01/making-pypis-test-suite-81-faster/
hakase
博士

ロボ子、今日のITニュースはPyPIのセキュリティ強化の話じゃぞ。Trail of Bitsが協力して、PyPIのWarehouseっていうシステムのテストをめっちゃ速くしたらしいのじゃ。

roboko
ロボ子

PyPIですか。Pythonのパッケージを管理する、あのPyPIですね。具体的には、どのような改善があったのでしょうか?

hakase
博士

そうそう。以前はテストに163秒もかかってたのが、たった30秒になったらしいぞ!テストの数も3,900から4,700以上に増えたのに、じゃ。

roboko
ロボ子

それはすごいですね!81%も性能が向上したということですか。一体どうやったのでしょう?

hakase
博士

まず、pytest-xdistを使ってテストを並列化したらしいのじゃ。これで67%も時間が減ったみたいじゃぞ。それから、Python 3.12のsys.monitoringを使って、カバレッジ計測を効率化したみたいじゃ。これでさらに53%削減じゃ!

roboko
ロボ子

pytest-xdistで並列化ですか。各テストワーカーが独立したデータベースインスタンスを使うようにしたんですね。sys.monitoringは初めて聞きました。カバレッジ計測がそんなに効率化されるとは。

hakase
博士

じゃろじゃろ?他にも、testpathsの設定を最適化して、テストの検出を効率化したり、不要なimportを排除したりしたみたいじゃぞ。細かいけど、こういう積み重ねが大事なのじゃ。

roboko
ロボ子

なるほど。地道な改善の積み重ねですね。PyPIは1日に10億以上の配布ファイルをダウンロード提供しているとのことですから、こういう改善は非常に重要ですね。

hakase
博士

そうなんじゃ。Warehouseは4,734のテストで100%のブランチカバレッジを達成したらしいぞ。品質へのこだわりがすごいじゃろ?

roboko
ロボ子

素晴らしいですね。テストカバレッジ100%は理想的です。2024年3月からの改善で、テスト数が約3,900から増えたのに、実行時間が短縮されたというのも驚きです。

hakase
博士

テストの並列実行で、各テストワーカーが独立したデータベースインスタンスを使うようにしたのは、coverage reportingの問題を解決するためらしいぞ。sitecustomize.pyファイルを追加したみたいじゃ。

roboko
ロボ子

sitecustomize.pyですか。初めて聞きました。pytest-sugarを統合して、テスト結果を見やすくしたというのも良いですね。

hakase
博士

Python 3.12のsys.monitoringは、coverage.py 7.4.0以降で使用できるらしいぞ。testpaths設定オプションでテスト検出を最適化したり、-X importtimeオプションで不要なimportを特定して削除したり、色々工夫してるのじゃ。

roboko
ロボ子

-X importtimeオプション、初めて知りました。データベースの初期化フェーズを分析して、Alembicでデータベースの移行を管理しているというのも、興味深いですね。

hakase
博士

じゃろじゃろ?しかし、これだけテストが速くなると、コーヒーを淹れる時間も無くなるのじゃ。困ったのじゃ。

roboko
ロボ子

博士、テストが速くなった分、新しい技術の勉強時間ができますよ。ポジティブに考えましょう!

hakase
博士

それもそうじゃな。よし、ロボ子。今度、一緒にPyPIのパッケージを100個ダウンロードして、何が一番速く終わるか競争するのじゃ!

roboko
ロボ子

博士、それはセキュリティ的に問題があるかもしれません…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search