質問

ビルド ファイルの単体テストに最適なポリシーは何ですか?

私が尋ねる理由は、私の会社が信頼性の高い組み込みデバイスを製造しているからです。ソフトウェアパッチは、顧客に配布するのに数千ドルの費用がかかるため、選択肢にはなりません。このため、当社では非常に厳格なコード品質手順 (単体テスト、コードレビュー、トレーサビリティなど) を採用しています。これらの手順はビルド ファイル (autotools をご存知でしたら、ご容赦ください) に適用されていますが、ハッキングのように感じられる場合は。

えー...プロジェクトはコンパイルされます...ビルド ファイルをレビュー済みおよび単体テスト済みとしてマークします。

もっと良い方法があるはずです。アイデアは?

役に立ちましたか?

解決

ここでは、十数のプラットフォームにわたって大規模なコード ベース (数百万行のコード) を構築する際に採用したアプローチを示します。

  • Makefile の変更はビルド チームによってレビューされます。 これらの人々は、私たちのビルド環境で人々が犯しがちなエラーを知っており、ビルドが壊れたときに矢面に立つ人たちなので、問題を見つけることに意欲的です。
  • Makefile に含める必要があるものを最小限に抑える, 、そのため、エラーが発生する可能性が少なくなります。Make の上に Makefile を生成するレイヤーがあります。開発者は、タグを使用して上位レベルのファイル内で、たとえば特定のターゲットが共有ライブラリまたは単体テストであることを示すだけで済みます。通常、ターゲットは 1 行で定義され、生成された Makefile には複数の設定/ターゲットが含まれます。同様のことは、次のようなビルドツールでも実行できます。 軽蔑的 これにより、プラットフォーム固有の詳細などを抽象化して、ターゲットを非常にシンプルにすることができます。
  • ビルドツールの単体テスト。 このツールは Perl で書かれているため、Perl の テスト::詳細 単体テスト フレームワークを使用して、上位レベルのファイルを指定してツールが正しい Makefile を生成することを確認します。代わりにスコンのようなものを使用する場合は、次のようにします 彼らのテストフレームワーク.
  • 夜間のビルド/テスト スクリプトの単体テスト。 各プラットフォームで夜間ビルドを開始し、静的分析ツールを実行し、単体テストを実行し、機能テストを実行し、すべての結果を中央データベースにレポートする一連のスクリプトがあります。さまざまなスクリプトを個別にテストしますが、主に シュユニット2 sh/bash/ksh/などの単体テストフレームワーク。
  • ビルド/テストプロセスのエンドツーエンドのテスト。 私は、本番コードではなく小さなソース ツリーで動作するエンドツーエンドのテストに取り組んでいます。後者はビルドに数時間かかる可能性があるためです。これらのテストは主に、コード カバレッジ ツールをアップグレードしたり、ビルド スクリプトを変更した後でも、ビルド ターゲットが引き続き機能し、結果を中央データベースに報告できることを確認することを目的としています。

他のヒント

(ビルドの観点から類似しているか、コードの簡素枚)ソフトウェアの既知のバージョンをコンパイルするビルドファイルを持っていると(の検証済みバージョンで構築された期待される結果にあなたの新しいビルドツールで得られた結果を比較しますビルドツール)。

私のプロジェクトでは、ビルド・ファイルは、非常に頻繁に変更されません。さらに、私は(私はセクションを認識するように簡単に移動することを)いくつかの変数を変更し、以前のプロジェクトからビルドファイルを再利用することができます。私にとって、それはユニットテストビルドファイルに不要である理由です。それは他のプロジェクトに異なる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top