web-dev-qa-db-ja.com

デプロイメントパイプラインでの手動テスト

私たちの会社はまだソフトウェアの手動テストを多く使用しています(これは今後数年間変更されません)。自動テストと手動テストの両方を処理するデプロイメントパイプラインを使用して、ビルドおよびデプロイメントプロセスを改善しようとします。

アイデアは、ユーザーがそれらが実行されたことを承認するテストのリストを提示することです。デプロイメントパイプラインは、この承認が与えられるまで待機します。

この種の正式なデプロイメントパイプラインの主な問題は、バグ修正後にすべての手動テストをやり直すことができないことです。完全に自動化されたデプロイメントパイプラインでは、コードを修正し、アーティファクトの新しいバージョンを作成して、すべてのテストに(再度)送信します。すべての手動テストを繰り返すリソースはありませんが、バグ修正の「おそらく」影響を受けるソフトウェアの部分のみを手動でテストします。

デプロイパイプラインでこれを処理する良い方法は何でしょうか?

2
J. Fabian Meier

エラーを最小限に抑えるためのベストプラクティスは1つしかなく、とにかくすべてを再テストすることになるため、「運用環境で問題が発生した場合、誰が責任を負うのか」という状況では、お答えできません。

バグ修正によって「おそらく」影響を受ける領域をテストすることは、妥当な妥協策ですが、バグ修正を行った人だけが影響を受ける領域を知ることができます。タグを各テストに関連付けて、タグ「dao」と「orders」を含むすべてをテストすることもできます。これにより、プログラムを分割してテストを行うことができるため、バグ修正が行われたときに影響を受けるこれらの領域を迅速かつかなり正確にテストできるという点で、多少の柔軟性が得られます。プログラム内のどの領域がどのタグに対応するかを明確にするために、他の開発者向けの技術文書を作成するのは時間の価値があります。

お役に立てば幸いです。

3
Neil

最初のステップは、JenkinsなどのCIサーバーをデプロイすることです。これを改善するための開発側の作業がいくつかある可能性があります。適切な分岐戦略を持ち、適切な分岐でCIサーバーをターゲットにし、ビルドプロセスを自動化し、CIパイプラインにある自動テストを組み込みます。

多くの(すべてではないにしても)CIサーバーで実行できることの1つは、手動の昇格プロセスを持つことです。適切な構成とスクリプトを使用すると、自動化された手順(自動化されたテスト、静的分析)と手動による承認の両方を組み込むことができます。定期的に自動テストを開始すると、成功したビルドをすべて特定できます。次に、適切な権限を付与することで、特定のユーザーがWebインターフェースを使用してタグ付けし、さまざまなレベルの統合およびテスト環境にデプロイできるようにすることができます。最終的には、各ゲートを通過するビルドを宣伝する人々によって、ソフトウェアのプロダクションビルドをプッシュすることもできます。

私がよくわからないのは、テストケースが実行されたことを強制するツールを使用することです。適切なプラグインがあるかもしれませんが、これは手動のプロセスかもしれません。テスト管理ツールを使用している場合は、CIサーバーがそれにプラグインし、特定のテストスイートがツールで他の人を通過させるようにマークされている場合にのみ昇格を許可できます。これは必ずしも間違いのないことではありません。実際にテストを実行しなくても、合格とマークされる可能性があります。しかし、私はあなたが正しいことをするために一日の終わりにあなたの人々を信頼する必要があると思います。

全体として、コードの変更に基づいて実行するテストケースを選択する戦略は正しいことだと思います。ただし、手動テストに到達する前に問題を見つけるために、自動テストのいくつかのレベルの改善に投資することも検討しますが、これには長期的な投資が必要であり、新しいスキルについて人々を訓練するか、人材を雇用する必要があるかもしれません特定のスキルを持つ。

3
Thomas Owens

実行するテストのリストを作成する代わりに、これを少し簡略化してみます...

ビルドとデプロイ後に実行するテストの「ベースライン」を作成してみてください。これには、手動テストと自動テストを混在させることができます。アプリケーションのすべての主要な動作部分を検証するための基本的な「煙のテスト」を含める必要があります。ベースラインを実行し、合格した場合は、特定の欠陥テストを実行します。それらがパスすれば、欠陥を閉じることができます。

設定された間隔で、1週間、1か月などの回帰テストを実行して、不具合の修正によって間接的に発生した問題を検出します。手動回帰はコストがかかるため、ビルドが行われるたびに行うことはできませんが、更新によって既存の機能が壊れないようにするために必要になる場合があります。

自動化されたテストが多いほど、変更の検証が速くなり、フォールアウトの検出が速くなります。すべてが自動化されている場合、変更を加えてそれを非常に迅速に検証できるため、多くの手動による作業が不要になるため、ソフトウェアの速度と俊敏性が劇的に向上します。

ベースラインは必要に応じて変更できます。ベースラインテストは、正確であるかどうかを検証するために、ほんの数分で自動化されていれば、1日未満のように短時間で実行できます。ベースラインには主要な機能が含まれている必要がありますが、すべてを網羅しているわけではありません。

0
Jon Raynor