0

12 のレガシー プロジェクトがあります。1 つは 9 年前にプログラムされた古い Visual Basic アプリケーション、もう 1 つは C# (.NET) アプリケーション、2 つの Java プロジェクト、および OS on です。

各プロジェクトのリポジトリのクリーニングと作成が完了しました (そのうちのいくつかは、別のコンピューターにある単なるフォルダーでした...)。

多くの便利なプラグインを使用して Jenkins を構成し、継続的インテグレーションと継続的デリバリーの 2 冊の本を購入しましたが、まだ完全には読んでいません。

プロジェクトの展開パイプラインを定義しました。リポジトリへのコミット後にすべてが自動的にコンパイルされ、コードの分析が自動的に行われます (循環的複雑度など)。

ただし、プロジェクトに使用できるテスト (簡単に追加できる) があるかどうかを知りたいです。単体テストについては知っていますが、これらのプロジェクトの単体テストを作成するには時間がかかりすぎます (可能であれば)。

追加できる他の種類のテストや、パイプラインに追加できるその他の有用なものはありますか?

一部のプログラムでは、インストーラーが自動的に生成されます。

また、パイプラインの最後には、バイナリ (インストーラー) を apache サーバーのパブリック フォルダーに移動する手動の手順があり、社内の人々は最後の安定したバイナリを簡単に取得できます (ここでの安定は、手動でインストールしたアプリケーションであり、テスト (Exploratory test と呼ばれていると思います) を実行し、何も問題がなければ、安定版リリースとして宣伝します)。

4

3 に答える 3

1

私は通常、次の 3 つのレベルのテストを適用します。

  1. 単体テスト - コードの小さな独立した単位の正しい動作を検証する低レベルのテスト。これらのテストは通常​​、低レベルであり、他のコード/API を直接呼び出し、(ビルド時に) 高速に実行され、大規模なリファクタリングを行うと比較的速く壊れることもあります。
  2. 統合テスト - 多数のコード単位の正しい動作を一緒に検証する中レベルのテスト。たとえば、バックエンドから外部システムまたはフロントエンドに提供される API。これらのテストは通常​​、低レベルではなく、コード レベル (http リクエストなど) より上で動作し、単体テストよりも少し遅く実行されますが (まだビルド時)、システムの境界に対してテストするため ( REST エンドポイントなど)。
  3. エンド ツー エンド テスト - システム全体をテストする高レベルのテスト。Web アプリケーションの場合、通常はブラウザー テストが使用され (たとえば、Selenium を使用)、ブラウザーがテストによって制御され、システムの実行中のインスタンスに接続されます。これらのテストは非常に高レベル (ユーザーの動作をシミュレートします) であり、ビルド時ではなく低速で実行されます (システムを最初にデプロイする必要があるため)。

あなたの場合、これらのタイプのテストを組み合わせます。統合テストやエンドツーエンド テストを使用して、自動化された回帰テスト スイートを作成することから始めます。これらのタイプのテストは、あまり労力をかけずに、システムの比較的大きな部分をヒットできます。機能を追加/変更するときは、まず、システムの現在の状態を確認する 1 つ以上の単体テストを記述します。次に、システムの望ましい/新しい状態を検証するテスト ケースを追加/変更し、それに応じてシステムを変更します。

ところで、「これらのプロジェクトの単体テストを書くのは時間がかかりすぎる」という文を再考してください。はい、時間がかかるかもしれませんが、テストをまったく作成しないと、知らないうちに機能が壊れてしまい、多くの問題を修正する必要があることに気付くため、時間がかかります。

于 2016-04-03T20:04:11.717 に答える