0

私は5人のプログラマーで構成される小さな開発チームで働いていますが、全体的なテスト経験はありません。私たちが開発する製品は複雑なVMSであり、基本的に(個別の)ビデオサーバーと、ライブおよび録画されたビデオを表示するためのクライアントで構成されています。ビデオ処理には多くのハードウェアパワーが必要なため、ソフトウェアは通常、複数のサーバーに展開されます。

機能駆動開発のスリム化バージョンを使用します。過去数か月の間に多くの機能が実装され、QAの贅沢をする時間がほとんどなくなりました。

私は現在、ソフトウェアを可能な限り(時間)効率的にテストする方法を研究しています。私は、TDDなどのテストを中心に構築されたソフトウェア方法論を知っています。ただし、多くの機能が分散アーキテクチャを中心に構築されているため、個々の機能の個別のテストを作成することは困難です。機能の多くが無限のシナリオのいくつかを必要とすることを考えると、適切にテストするために複製するために展開することができます。

たとえば、最近、1つ以上のアイドル状態のサーバーが他のサーバーを監視し、障害が発生した場合にその代わりになるフェイルオーバー機能を開発しました。考えられるシナリオには、リモートロケーションまたは異なるサブネット内のフェイルオーバーサーバー、または一度に複数の障害が発生したサーバーが含まれます。

これらのシナリオを手動で設定するには、多くの貴重な時間がかかります。この場合、常に手動による初期化が必要になることは承知していますが、同等以上の投資を行わずに、これらの種類のテストを自動化する(できれば機能を実装する前に定義する)方法を見つけることができないようです。自動テストを実際に作成する時間。

誰かが同様の環境での経験を持っていますか、またはそのような環境に適した(自動化された)テスト方法論または技術についてもっと教えてもらえますか?テストが大幅に強化された場合、現在の開発プロセスを覆すことをいとわない。

ご入力いただきありがとうございます。そして、私の第一言語ではなく英語として、私の文法を許してください:)

4

2 に答える 2

1

ピラミッドの層を考えることで、テスト戦略に取り組みます。

ピラミッドの最初の層は単体テストです。クラスの単一のメソッドを実行するテストとして単体テストを定義します。システム内のすべてのクラスには、一連のテストが関連付けられている必要があります。そして、すべてのメソッドには、そのスイートに含まれる一連のテストが必要です。これらのテストは、模擬環境に存在することができ、存在する必要があります。

これは、テストと品質戦略の基礎です。ここでしっかりとしたテスト カバレッジがあれば、多くの問題が未然に防げるでしょう。これらは、作成するすべてのテストの中で最も安価で簡単です。ここでは、お金に見合うだけの価値を得ることができます。

ピラミッドの次の層は機能テストです。モジュール内のクラスを実行するテストとして機能テストを定義します。これは、さまざまなクラスが互いにどのように相互作用するかをテストする場所です。これらのテストは、模擬環境に存在することができ、存在する必要があります。

次の層は統合テストです。モジュール間の相互作用を実行するテストとして統合テストを定義します。これは、さまざまなモジュールが互いにどのように相互作用するかをテストする場所です。これらのテストは、模擬環境に存在することができ、存在する必要があります。

次の層は、私が行動テストまたはワークフロー テストと呼んでいるものです。これらは、顧客と同じようにシステムを実行するテストです。これらは、構築と保守が最も費用がかかり、最も困難なテストですが、非常に重要です。彼らは、システムが顧客の期待どおりに機能することを確認します。

ピラミッドの頂点は探索的テストです。これは定義上、手作業です。ここでは、システムの使い方を知っている人にシステムのペースを見てもらい、問題を特定してもらいます。これはある程度の芸術であり、特別な個性が必要です。しかし、それはあなたの全体的な成功にとってかけがえのないものです。

上で説明したことは、あなたがしなければならないことのほんの一部です。次の部分は、継続的インテグレーション/継続的デプロイ (CI/CD) パイプラインのセットアップです。

コードがレポジトリの 1 つにコミットされ、これと同じくらい大きなプロジェクトが別々のレポに分割されていることを願っています。コード カバレッジ データを収集します。

システムの各コンポーネントを定期的に構築するだけで、問題を洗い流すことができます。それをユニット/機能/統合テストの実行と組み合わせると、多くの問題を特定できます。

コンポーネントを構築したら、それをテスト環境またはステージング環境にデプロイする必要があります。このプロセスは自動化され、無人で実行できる必要があります。このプロセスには、OpscodeのChefの使用を検討することを強くお勧めします。

ステージング環境またはテスト環境にデプロイしたら、ワークフロー テストと動作テストを開始できます。

于 2013-02-26T23:08:13.423 に答える