同じバグが二度目に製品に侵入しないようにするにはどうすればよいでしょうか?

StackOverflow https://stackoverflow.com/questions/1111119

質問

その簡単な答えはテストを行うことだと理解していますが、それでもこのテストはどのように行うのでしょうか?実行する追加のテスト ケースとしてバグを含めるようにテスト ケースを変更しますか、それとも古いリリースから最新のリリースまでバグ追跡システム内のすべてのバグを検証するだけですか。

ご回答ありがとうございます。私の質問が明確ではなかったようです。バグレポートを作成し、バグを修正し、修正検証のためのテストを行う必要があることを理解しています。ただし、次のバージョンのリリース時にテストを再度実行して、新しい変更によってバグが再導入されていないことを確認するには、このテストをどのテスト フェーズで実行する必要があります。回帰テストを行うべきでしょうか、それともその特定のプロジェクトの統合テストを行うべきでしょうか、それともバージョン 1.0 以降のバグ追跡システムのすべてのバグをテストするだけでよいでしょうか?

役に立ちましたか?

解決

とはどういう意味ですか? というのも そのテストは突然不合格になる」?

「単体テスト」のポイントは、コンパイル/チェック サイクルの一部として自動的に実行されることです。コンパイル後、コードをチェックインする前にテストを実行します。単体テストが失敗した場合、コードの一部が失敗したことがわかります。 あなたは今書いたばかりです 古いバグを再現します。

編集:

どうしてそう言い切れるのか? なぜなら、あなたのユニットテストは バグが修正されました。

一般に、バグを再現できる場合は、コード内でバグを再現するテストを作成できます。最も重要な部分は、バグの存在をチェックするテストを作成した後、テストを実行してテストが失敗した場合、バグが再び持ち込まれたことになります。このテーマに関する素晴らしい本の一冊は、 「従来のコードを効果的に使用する」

一つのバグが 複数のユニットテストにまたがる。

もちろん、複数のテストにまたがることもできます。

バグが「ファイルを保存できない」であると仮定します。

そして、これを引き起こす可能性のあるいくつかの異なるシナリオがあると仮定しましょう。

  • ディスク容量不足、

  • 上に書いているファイルは 別のプロセスによって開かれ、ロックされる、

  • パーミッションの問題(たとえば ディレクトリにアクセスできないか 書き込み権限がない)、

  • または ファイルを保存します。

理想的には、テスト ハーネス (テストのコレクション) には、それぞれに個別のテストが含まれます。一部のテストでは、「モック オブジェクト」と呼ばれるものを使用する必要がある場合があります (コンポーネントのコードをまだ書いていない場合にも使用できます)。

他のヒント

あなたは、問題を再現する自動テストを作成します。その後、問題を解決し、新しいテストし、すべての既存のテストはまだ合格していることを確認します。

<時間>

これはリグレッションテストであるべきであり、可能な限り自動化する必要があります。

あなたがバグを見つけたら、

、最初にやるべきことは、バグを示しユニットテストを行うことです。あなたはそれを修正したとき、テストに合格したので、あなたは、知っていますよ。そのテストが突然失敗するので、あなたは、それを回帰から保護しています。

  1. バグレポートを入手する
  2. バグレポートを再現するためのテストケースを作成する
  3. バグを修正
  4. そのバグを再び修正する必要がないことを楽しむ
システムの

A「バグ」は動作していない機能のほんの一部の単位です。バグが、その作業単位のために再表示された場合の機能のユニットをカバーしてユニットテストをcreateingことによって、あなたは知ることができます。今、あなたは、あなたがより多くのカバレッジを取得しますまねたような状況で失敗する可能性があります機能の他の領域をテストする追加のユニットテストを書く場合ます。

これは、ユニットテストが答えの一部だけであると述べました。同様に、このバグのためのテストケースを追加することもoccuringからそれをキャッチしかし残念ながら、それは修正するために、後に開発ライフサイクルにおける、より高価になるだろうに役立ちます。

QAとして、あなたは、いくつかの修正の結果として、影響を受けたになるだろう領域を予測する必要があります。非常に各凍結した後、全体のビルドを退縮することを推奨しているがThorougly同じのためのアプリケーションをテストします。

それは長期的なプロジェクトであり、あなたが手元に時間を持っている場合は、

、プロジェクトは、時間の短いスパン内アジャイルモデルで開発され、要件を変更している場合は、手動でそれを行うが、テストを自動化することをお勧めですできるだけ多くをカバーしようとしてテストします。

どの視点から質問するかに応じて、さまざまな方法で問題に取り組むことができます。開発者の観点からは、1.0 (またはそれ以前) 以降のすべてのバグを適切な単体テストでチェックし、CI でも実行できるようにするのが最善でしょう。面倒になったら、ビルドごとに実行される重要なテストをグループ化して、1 日に 1 回、週に 1 回休む (またはその程度) ようにしてください。

QA/テストの観点から見ると、もう少し努力が必要です。

  1. アプリケーション用の回帰スーツを準備します。主なビジネスプロセス/ユースケース、ハッピーパス。それをベースラインにしてください。いかなる状況でも失敗してはならない一連のテスト。リリース前、または大きな変更が行われたとき、多くの変更が行われたとき、重要な部分が変更されたときは、必ず実行してください。それを自動化するために少し努力してください (そして今回は単体テストについて話しているのではなく、完全なアプリケーション テストについて話しています)。
  2. 次に、アプリケーションの領域に適した回帰テストを作成します。以前のスーツよりも多くのテストが行​​われていますが、各回帰スーツは異なるアプリケーション領域に焦点を当てています。アプリケーションの一部を変更した場合は、その部分に対して回帰を実行します。自動化することはできますが、頻繁に変更される領域のテストを維持するのは難しい場合があります。
  3. いくつかの要件/機能に対するテストに取り組み始める際に、バグ リポジトリに目を通すように QA チームを教育します。関連があると思われる場合は、以前のバグをチェックする必要があります。

回帰テスト、テストの自動化には注意し、バージョン 1.0 からのすべてのバグをチェックする必要があることに注意してください。おそらくアプリケーションはバージョン 1.0 以降大きく変更され、いくつかのバグは関係なくなったのでしょうか?古いバグに基づいて回帰テストを構築するときは、このことを考慮する必要があります。

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