6

過度のテストを避けるために、開発の反復後にどの機能を回帰テストする必要があるかについてのヒントを品質保証 (QA) チームに提供したいと思います。C++ および Subversion (およびビジュアル スタジオ) 開発環境でそれを実行できるツールを知っていますか?

ユースケースの詳細:

  1. 機能は、開発チームによってエントリ ポイント (通常はクラスまたはクラス メソッド) の観点から定義されます。たとえば、機能「Excel ファイルのインポート」は、クラス FileImporter のメソッド ImportExcelFile(...) によって定義されます。
  2. 開発の反復中に、開発チームはいくつかのクラスのいくつかのメソッドにいくつかの変更をコミットします。たとえば、これらのクラスの 1 つがメソッド ImportExcelFile() によって間接的に使用されているとします。
  3. 反復の最後に、すべてのコミットがツールによって分析され、レポートが作成されて QA チームに配信されます。この例では、「Excel ファイルのインポート」機能をテストする必要があり、他の機能 XY と Z は変更されていないことが QA チームに通知されます。

おそらく、このツールは静的コード分析を使用し、Subversion API を使用します。しかし、それは存在しますか?

4

2 に答える 2

2

こんばんは

あなたが説明しているのは、実際には回帰テストではありません。新しい機能をテストしているだけです。

回帰テストでは、完全なテスト スイートを具体的に実行して、新しい機能をサポートするコードが以前に機能していたコードを壊しているかどうかを確認します。

あなたが話している側面のいくつかをカバーしているMartin Fowler の優れた論文「Continuous Integration 」を読むことを強くお勧めします。

また、作業のより良い方法、特に Martin が彼の論文で述べている CI の側面を提供するかもしれません。

編集:特にCIには、後から考えると明らかないくつかの小さなトラップが隠されているためです。新しい機能を実装するすべてのファイルがまだコミットされていないバージョンをテストしようとしているテスターを止めるなど。(過去 5 分間にコミットがないことを確認します)。

もう 1 つの重要なポイントは、壊れたビルドがあり、誰かがコードをチェックアウトしてテストできるようにビルドしようとするまで、壊れていることに気付かない場合の時間の損失です。

壊れている場合は、次のものがあります。

  • 予定されたテストを実行できずに座っているテスター、
  • 現在の作業を中断して以前の作業に戻って、ビルドが壊れている原因を突き止めようとしている開発者。問題は、それぞれが独自に機能する 2 つの別個の部分の間の相互作用であるため、開発者である可能性が高いです。
  • 開発者が以前の作業の考え方に戻らなければならないことによる時間の損失、および
  • 開発者が調査のために中断する前に取り組んでいた新しい作業の考え方に戻るための時間の損失。

CI の基本的な考え方は、壊れたビルドをできるだけ早くトラップできるように、完全な製品のビルドを 1 日に数回行うことです。いくつかのテストを選択して、製品の基本機能がまだ機能していることを確認することもできます。もう一度、ビルドの現在の状態に問題があることをできるだけ早く通知します。

編集:あなたの質問については、テストを行ったときにリポジトリにタグを付けるのはどうですか。たとえば、TESTS_COMPLETE_2009_12_16。次に、次の一連のテストで何が行われるかを判断する準備ができたら、最新のテスト終了タグと HEAD の間で "svn diff -r" を実行しますか?

HTH

ところで、私が考えているいくつかの提案でこの回答を更新します。

乾杯、

于 2009-12-16T10:12:08.143 に答える
0

プロジェクトを個別の実行可能ファイルに分割してビルドします。

依存関係が変更された場合、Makeは実行可能ファイルを再構築します。

連鎖テストの出力ファイルを次のテストの依存関係に追加します。たとえば、ファイルの保存テストの出力を読み取りファイルテストの依存関係として追加します。

この時点以降に構築されたものはすべて、単体テストが必要です。

ライブラリが共通の枯渇可能なリソース(ヒープメモリ、ディスク、グローバルミューテックスなど)を使用している場合は、それらも依存関係として追加します。これは、あるライブラリでのリークによる枯渇は、別のライブラリでのリグレッションの失敗であることが多いためです。

特定の時点以降に構築されたものはすべて、回帰テストが必要です。

保証対象者がリソースを使い果たしていない環境(TinyCなど)で作業していない限り、すべてを回帰テストすることになります。回帰テストは単体テストではありません。

于 2009-12-16T11:43:58.180 に答える