質問

実際、アプリケーションのテストを停止して実稼働環境に移行する時期を知るために、どのような手段を使用していますか?

役に立ちましたか?

解決

私の組織のプロジェクトに関して、私が通常使用する手段は次のとおりです。

  • 重大度 1 (ショーストッパー) の問題はありません
  • 重大度 2 (主要な機能が制限される) の問題はありません
  • 重大度 3 (軽度の機能) の問題の許容数

「許容される数」は、アプリケーションの規模などに応じて、当然ながら非常に微妙な数になります。等

これらの前提条件が満たされたら、すべての関係者 (QA リーダー、開発リーダー、アプリ サポート リーダーなど) との会議を開き、未解決の問題のリストに目を通し、割り当てられた重大度について合意があることを確認します。未解決の問題。未解決のセクション 1 およびセクション 2 の問題がないことを確認したら、各関係者から「ゴー/ノーゴー」の連絡を受けます。全員が「ゴー」と言ったら、私は安心して本番環境に移行できます。少なくとも 1 人のステークホルダーが「No Go」を言った場合、私たちは「No Go」の理由を調査し、必要に応じてその背後にある問題を解決するための措置を講じます。

小規模なプロジェクトでは、プロセスがより合理化される可能性があり、それが 1 人の作業だけの場合は、一連の前提条件がはるかに単純になる可能性があります。「このアプリケーションは、(明らかに)許容できる数のバグを抱えながらも、妥当な利点を提供します。公開しましょう!」アプリケーションによってもたらされる利点がバグの煩わしさを上書きする限り、特に「早期かつ頻繁にリリースする」ガイドラインに従っている場合は、それがうまくいく可能性があります。

他のヒント

まず、テストを決してやめないでください。いつ あなた テストが完了してリリースすると、それはユーザーがあなたの代わりにテストしていることを意味します。

次に、包括的なテスト スクリプトが許容レベルの失敗で合格したら、次に進む準備ができています。

最後に、これはあなたのケースに非常に固有です。一部のプロジェクトでは、3 週間のベータ テスト期間が設けられており、最小限の変更を展開する前に多くの人がシステムをハッキングします。他の領域 (それほど重要ではありません) では、小さな変更は別の開発者の同意だけで移行できます。

私がずっと試してみたいと思っていた興味深いテスト手法の 1 つは、「エラー シーディング」です。そのアイデアは、さまざまなカテゴリに分類される意図的なバグをシステムに挿入させるというものです。

例えば:

  • 表示上の間違い、スペルミスなど
  • 重大ではないエラー
  • 重大なエラーとクラッシュ
  • データの問題。エラーは発生しませんが、結果にさらに深刻な問題があります。

「シーダー」は、これらのバグを挿入するために変更された内容を正確に文書化するため、バグをすぐに元に戻すことができます。テスト チームはシードされたバグを見つけると同時に、実際のバグも見つけていますが、その違いはわかりません。理論的には、テスト チームがシードされた重大なエラーの 90% を発見した場合、おそらくそれに比例した数の実際の重大なエラーが発見されたことになります。

これらの統計に基づいて、いつリリースを許可するかを判断することができます。もちろん、どのバグが見つかるか (本物かシードか) ランダムな性質があるため、これは絶対確実というわけにはいきませんが、リリースされる可能性のあるバグの数がまったくわからないよりはおそらくマシでしょう。

私の職場で時々使用される指標の 1 つは、製品の過去のいくつかのバージョンに存在していた古いバグや報告されていないバグを見つけ始めるときに、十分なテストを行っているかどうかということです。これらがテスト中に発見されたバグであり、それらのバグが顧客から苦情を言われずに何年も存在していた場合、おそらく安全に出荷できるだろう、という考えです。

もちろん、手動テスト、自動テスト、開発者に製品を使用させること、ベータ版、継続的なテストなどもすべて行うことができますが、過去のバージョンには存在していたものの報告されていなかった、現在発見されているバグの数を使用します。初めて聞いたときは新しいアイデアでした。

主要なショーストッパーがすべて去ったとき。

真剣に、ユーザー受け入れテストを実施し、ユーザーにシステムを使用してもらい、それがすべて自分たちに適しているかどうかを確認する必要があります。これが現実的でない場合は、ターゲット ユーザーに似たユーザーを選択してクローズド ベータ版を実施します。

システム内のすべてのバグを実際に見つけることは不可能なので、場合によっては、唯一の本当のルールは次のとおりです。 ただ発送してください.

マーレン、

包括的な自動テストがある場合、そうでない限りソフトウェアを出荷するのは全く無責任であると私は思います。 全て 彼らのうちは合格します。自動テストとは、これらがコア機能であるか、ユーザーが認識している過去に発生したバグのいずれかであり、テストに合格するために修正できる領域であることを意味します。自動テストに 100% 合格しないソフトウェアを出荷するのは無責任です。

ジョン、

テストスクリプトを暗示するつもりはありませんでした 自動化された テスト中。私が言及したのは、何をテストするか、どのようにテストするかを段階的にリストするという、より伝統的なアプローチです。

そうは言っても、すべての自動テストが合格する必要があるということに私は同意しません。すべては重大度と優先度によって異なります。大規模なプロジェクトでは、ユーザーから報告された問題に基づいて、開発者がテストを作成して失敗することがあります。すべてのリリースですべてのバグを修正することはできないため、一部のテストがパスしないのは当然のことです。

「重大なバグ」や機能の重大なバグが発生するまでに製品に費やされるテスト時間を測定することで、目標に近づいていることを知ることができます。新しい機能の追加により製品が急速に変化するとき、テスト チームが報告しているバグのほとんどが機能に関する重大なバグであることに気づくのはよくあることです。これらに対処すると、インタラクションのスムーズさと明瞭さを改善することを目的とした、フィット感や仕上がりに関する小さな問題が大量に発生することがよくあります。全体として、それらは製品の品​​質に大きな違いをもたらしますが、それぞれはそれほど重要ではありません。これらが修正され、テストが継続されるにつれて、テスターがエラー ケースや異常な使用パターンに突入するにつれて、おそらく引き続きバグ レポートが届きます。その時点で、リリースのビジネス価値と、検出されない重大な問題のリスクをいつ判断するかによって決まります。

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