2013年3月16日土曜日

負荷テスト - 10ポインタの性能向上に


人々はしばしばパフォーマンステストと負荷テストを同一視する。負荷テストは "システムがどのように高速に反応するのか"という質問に答えるための方法として見られているこのビューには、負荷テストはプロジェクト活動の終わりと見られていることを意味する傾向がある。唯一の開発の最後に我々は、パフォーマンステストのための最終的な実装を持っていますので、我々はそれがライブサービスに現実の世界では十分にすぐに実行して、スムーズに移行することだけにして確認することができます。

間違ったアプローチ!これは非常に危険であり、初期の負荷テストを開始し、プロジェクト全体に適用することの多くの利点に出てミス。このアプローチを使用してサービスにスムーズに負荷テストや移行を介してシステム帆していますか?たまにはい。しかし、もっと頻繁にシステム負荷があってもボリュームのわずかな増加と、適用が開始されるように失敗し始める..初めて資源をめぐる制度と仲裁上の同時要求がある必要です。実行されたことがないコードを通るパスがトリガーされ、状況は誰もが本当に考え抜かないことが生じる。トランザクションは失敗します。システムがクラッシュします。これらの問題は修正されており、より多くの負荷をテストに適用された後、我々は、リソースの枯渇、バッファオーバーフロー、タイムアウトや一貫性のない動作のような問題が発生した。堅牢なソリューションに官能プリプロダクションシステムを回すために必要な実際の作業は、まだ始まったばかりです。

例としては、負荷テストの開始時に失敗して、労力、ストレスや支出の多くの後、棚上げされた製品のあふれている。さらに悪いことには完全に負荷テストを逃し、ライブ操作の間に劇的に失敗したものです。負荷テストのパフォーマンスが低いと不安定なシステムにつながった根本的な構造上の問題や非効率的なコーディングを明らかにしたとき、インターネットポータル開発者は最近、新しいサービス、機能開発を完了した1の開発を停止しました。

それで、あなたは、これらのリスクを回避するために何をすべきですか?我々は、すべての彼らは負荷テストをまだ修正するためにはるかに少ないコストそれでもできるだけ遅くまで残っているときに、それが早期に故障を発見することをお勧めします知っている。見つかった障害のタイプは、頻繁にそれまでアール実装が非常に高価であり、アーキテクチャの変更と主要の書き換えが必要になります。答えは、あなたが早期に開始するべきであるということです。負荷テストのさまざまな形態を繰り返し早い段階で問題を識別するために、システムがトラックをオフに行くされていないことを確認するために、プロジェクト全体に適用されるべきである。

これは、テスト主導型開発の実践の自然な拡張である。自動テストが最初に書かれているコードとテスト主導の開発は、それが開発されているように、主要な利点を提供し、これらのテストに合格する必要があります。しかし、現在の形では、このテストの焦点は、機能性にあります。それが進化するにつれ、ソフトウェアの機能の状態は常に知られており、それ故に扱いやすい、機能的な障害は、高コストの修正を回避芽で挟持されており、機能的なリスクは大幅に軽減されます。そうではないその他のリスク。プロジェクトが早期にかつ継続的に負荷テストを実行する場合、それははるかに広いし、包括的なリスク低減を取得します。これを有効にするには、次のように

1。システムを研究して、システムに対する脅威を注文するのを助けるためにリスク分析を実行し、これは負荷テストの活動に優先順位をつけるのに役立ちます。
2。異なるビルドの効率の比較を可能にするためにデータを収集します。長期トレンドのこの許可の監視、 "同じ仕事をするために、より多くのプロセッサ時間を使用したシステムですか?"このデータは、さまざまなレベルで<スタイル= "色のリソース要件を予測するために使用することができます:#333333;テキストを装飾:なし;カーソル:テキスト;> の需要など、スケーラビリティの予測をサポートするの "href =" http://www.euoem.com/ "。
3。システムの挙動を評価し、負荷がかかって故障を誘発することを目指してテストを実行します。需要のパターンは、システムの集合挙動を観察することが期待シミュレーションワークロードを使用します。システムの脆弱性を探るために特別に合わせた極端なワークロードを使用します。
4。テストスイートに負荷テストの完全なスペクトルを含む。非定型的な需要のスパイクや、リソースの枯渇への影響の両方をチェックするストレステスト;、これは典型的な繁忙期の作業負荷のパフォーマンステストを意味し、運用期間と累積動作試験の両方を使用して耐久テスト、時折の取引かどうかをチェックし、トランザクションを大量に実行し、信頼性試験失敗、二人のユーザの同時実行のテストが同時に同じアカウントに取り組んでいます。
5。デザイン·測定活動の科学者が実験を設計と同じように、分析できるデータを提供するためにそれらを設計します。補間をサポートするために複数のデータセットを提供するために、異なる定常状態ワークロードの下でシステムをサンプル。各トランザクションタイプのリソースコストの推定を可能にするためにワークロードを選んだ。
6。汎用の活動との最初のミドルウェアをターゲットと機能が開発されたスイートを進化させます。早期に開始してから、以前のスイートで、次に新しい機能に対応して変更されたスイートで、まず、システムの各増分リリースをテストします。
7。代表的なスケールで動作するように時間とリソースを投資しています。たぶん、テストベッドはフルスケールにすることはできませんが、それは意図されたシステムよりも2桁小さいべきではありません。スマートかつ適切な規模テストベッドを提供するために、効果的にリソースを使用するための革新的である。これが行われていない場合には発生します費用ははるかにテストベッドを提供するコストを上回るだろう。
8。遅延しないでください。できるだけ早くインクリメントをテストします。 1をスキップしていないか、またはあなたはそれらをすべてスキップしてしまいます。前のものと測定と動作を比較し、それが良いか悪いか?
9。機能テストのためのバックグラウンド負荷を提供します。システムが考えるために他のものを持ったときには、作業オフロードが失敗する可能性が特長。
10。そのようなサーバの障害やシステムの再構成など、時折イベントを考えてみましょう。これらは、負荷の下でテストする必要がありますか?

結論としては、開発プロセス全体の負荷テストを組み込む必要があります。サービスを生きるための最後の実行まで、負荷テストにしておくと、災害のためのレシピです。作業は時間と予算に配信されるだろうと、これは一般的な習慣となった場合は、もっと多くのアプリケーションやシステム。

©Acutest株式会社2005 - http://www.acutest.co.uk

0 件のコメント:

コメントを投稿