SSブログ

開発環境(3) [プログラマー現役続行]

継続的インテグレーション(Continuous Integration)を行うために、CIツールを使用して、ビルドからテストコードの実行まで行っている開発組織は増えてきていると思います。その場合、CIツールを動作させているサーバではビルドごとにテストコードの実行は1回行ってパスするかどうかを調べることになります。テスト対象のソフトウェアがマルチスレッドで動作するのでなければ、これで良いかもしれません。

テスト対象のソフトウェアがマルチスレッドで動作するのではあれば、1回の実行では不十分です。何千回と繰り返したり、システムに様々な負荷をかけて実行したりということが必要になってきます。そうなると、サーバだけでなく、各開発者の環境でも動作させて、夜間にテストを実行し続けることが必要になってきます。

しかし、ここで注意しなければならないのは、CIサーバーがマルチコアで動作しているのに、開発者にはシングルコアの年代物のPCを与えていてはいけないということです。そのような貧弱な開発環境では、開発者は以下の問題に遭遇します。
  • 自分のPCではテストが動作するのだけど、CIサーバではテストが失敗することがある。
このような場合には、開発者にもマルチコアのPCを与えて、1回動作しただけでは不十分なので、夜間もテストを連続実行させる必要があります(システムへの負荷を変動させながらだとベターです)。そして、翌朝テストが失敗していたら、調査させる必要があります(きちんと調査させるには、マルチスレッドに関する正しい知識が必要です)。

残念ながら開発者のPCが貧弱な場合には、開発者の能力がいくら高くても、マルチスレッドに関係する問題の洗い出しや調査に非常に長い時間を要してしまいます(「開発環境(2)」)。ましてや、マルチスレッドに関する正しい識を持っていないレベルの開発者は、貧弱な環境であれば、問題を正しく認識して解決することができなかったりします。