ALM 開発者の 1 日: 作業の中断、バグの修正、コード レビューの実行

作業の 1 種類のスレッド間で、作業のコンテキストを切り替えることができる強力な 1 クリックの方法は、Team Foundation Server で Visual Studio Premium と Visual Studio Ultimate で使用できます。また、チーム メンバーはコードについて提案された変更に関するメッセージ交換簡単にできます。このトピックでは、1 日架空のアジャイル チームのメンバーに従ってチュートリアルを続行これらの機能について説明します。

Peter は、バックログ項目のタスクを実行するコードを記述でビジー状態です。ただし、自分のユーザーが、そのブロックには、それをすぐに修正するバグを検索します。Bob は Alice にする中断し、バグを修正を処理します。Mallory はジュリアに修正の確認を行うように尋ね、レビュー、チェックイン修正および再開が、元のタスクを実行した後。

[!メモ]

Peter を使用して自分の作業とコード レビューの機能は Visual Studio Premium と Visual Studio Ultimateでのみ使用できます。

このトピックの内容

  • 現在の作業を中断し、バグの作業を開始します

  • バグを検索します。

  • コード レビューを要求します。

  • (または拒否) コード レビューを受け入れ、実行します。

  • コード レビューに受信して応答します

  • テストおよびコードを修正

  • 修正をチェックイン

  • タスクの作業の再開

現在の作業を中断します。

Peter がバックログ項目を操作しているときに、ジュリアは、バグをブロックを話し合うことがあります。これは Peter を理解しているため、Mallory はバグを修正するタスクを作成し、自身に割り当てる領域にあります。Mallory は修正の作業をすばやく開始することになります。

これが新しいバグで作業を開始する前に Peter は、自分の現在の動作がチームのサーバー上の安全な場所で取得専用ことが必要になる場合があります。[担当作業] のページで、Peter は保存するに 中断 を選択します Team Foundation Server () :

  • 作成したコードが、テスト、およびそのほかのファイルへの変更を含むすべての作業は。

  • Visual Studio の状態の開いているソリューション、ウィンドウ、ブレークポイント、ウォッチ ウィンドウで変数やそのほかのビット。

自分のワークスペースのクリーンであるため、Peter は [使用できる作業項目] から **[処理中の作業]**に新しいタスクをドラッグします。Mallory は修正を調査して記述する準備ができました。

[!メモ]

の動作は、コンテキストと同時に作業のページの実行中に示す作業項目にリンクします。中断[再開]を使用して、さまざまなタスク間ですばやく切り替えることができます。は、開いているソリューション ファイルと、コードの変更と Visual Studio のレイアウトはすべて一緒に切り替えます。

Hh474795.collapse_all(ja-jp,VS.110).gif現在の作業を中断し、別のタスクの作業を開始するには

一部の作業の中断

  1. 使用するチーム プロジェクトに接続する必要**:接続** と チーム プロジェクトに接続します。:

    1. [チーム エクスプローラー]では、[ホーム][ホーム] アイコンを選択し、**[担当作業]**を選択 [担当作業] アイコンします。
  2. 中断 上記のタスク:

    1. [処理中の作業] のセクションでは、中断を選択します。

    2. 表示されるダイアログ ボックスで中断された作業のセットを付ける指定し、を 中断 のボタンをクリックすると、名前の。既定の名前は、の現在進行中の作業項目です。

  3. 新しいタスク作業の開始、バグなどの作業項目:

    1. 作業項目を選択する前に、必要な可能性があります:

      • **[使用できる作業項目]**の下に 新規 のをクリックして、新しいタスク、またはそのほかの作業項目を作成します。; または

      • **[使用できる作業項目]**の下の別のクエリを選択します。

    2. [使用できる作業項目] から **[処理中の作業]**に作業項目をドラッグします。

      また、を **[中断されている作業]**のからコントロールをドラッグする前によって中断する作業項目へ切り替えることができます。

ヒントヒント

現在進行中の作業項目は、現在のコードの変更と Visual Studio の状態にリンクします。1 個のタスク間で切り替えると適切な項目が実行中の状態であることを Visual Studio での作業を整理するのに役立つ確認します。

バグを検索します。

Peter は、バグ作業項目を開き、読み取ります。テスト チームのメンバーによって作成された説明に従って、支払いされたの請求書は、無給ように、不適切にフラグが設定されます。バグ作業項目に添付されたラボ環境のスナップショットがあります。Peter は、IntelliTrace ログを使用してテストが実行された仮想マシンを開く、" 不適切な請求書、ついて説明します。Mallory は、次のメソッドの違反をトレース:

    public class LocalMath
    {       
        public static bool EqualTo(double a, double b)
        {
          return a == b;
        }

IntelliTrace ログから、Peter は、パラメーターがあってもごくわずか異なるため、メソッドは false を返すことがわかります。Peter は、この種の丸め誤差が浮動小数点演算で場合であること、および参照が等値で浮動小数点数をテストする望ましくないことを認識します。

Hh474795.collapse_all(ja-jp,VS.110).gifエラーを示すために、テストをインクリメントします。

バグがあるとき、単体テストにすき間があるか、またはテストがユーザーの実際のニーズに一致しないことを示します。したがって、バグを修正、Peter がこのエラーの存在を示すテストを追加します。

 
        // Added 2012-02-02 for bug 654321:
        /// <summary>
        /// Make sure that number equality test allows for 
        /// small rounding errors.
        /// </summary>
        [TestMethod]
        public void TestDoublesEqual()
        {
            // We allow a rounding error of 1 in 1000000:
            TestEqual(1, 1e-7, true); // Less than allowed error
            TestEqual(1, 1e-5, false); // More than allowed error
            TestEqual(1000, 1e-7, true); // Less than allowed error
            TestEqual(1000, 1e-5, false); // More than allowed error
        }
        private void TestEqual(double value, double error, bool result)
        {
            // Try different combinations of error and value:
            Assert.IsTrue(result == LocalMath.EqualTo(value + error, value));
            Assert.IsTrue(result == LocalMath.EqualTo(value, value + error));
            Assert.IsTrue(result == LocalMath.EqualTo(value - error, value));
            Assert.IsTrue(result == LocalMath.EqualTo(value, value - error));
        }

Mallory は、テストを実行し、予想どおりに失敗します。

等価テストの失敗を示す単体テスト エクスプローラー

Hh474795.collapse_all(ja-jp,VS.110).gifテストのパスを設定します

Peter は、コードを修正:

        public static bool EqualTo(double a, double b)
        {
            // Allow for rounding errors.
            // For example, a == 2.0 and b = 1.99999999999

            const double allowedError = 1/1000000;
            return System.Math.Abs(a - b) < allowedError;
        }

テストのパス:

等価テストの成功を示す単体テスト エクスプローラー

コード レビューを要求します。

Peter はバグとの間の修正に成立しますが、Mallory は自分の作業をまだチェックイン。自分のチームは、全体的なコード品質を向上し、より多くのバグを作成するリスクを軽減するコード レビューを使用して、Peter は、自分のチーム ジュリア関連付けるとアダムからコード レビューを要求するためにチーム エクスプローラーを使用します。

Hh474795.collapse_all(ja-jp,VS.110).gifコード レビューを要求します。

コード レビューの要求

  1. [チーム エクスプローラー]では、[担当作業] のページで、**[レビューの要求]**を選択します。

    [新しいコード レビュー] のページが表示されます。

  2. レビューアー 一つ以上のレビュー担当者を指定します。

  3. コード レビュー レビューの名前を指定します。

  4. 区分パス 区分パスを指定します。

  5. コメント すべてのレビュー担当者にコメントを指定します。

  6. **[要求の送信]**を選択します。

レビュー担当者は、電子メールで要求の通知されます。

中断された処理、シェルブセット、または変更セットのコード レビューを要求できます。

コード レビューを受け入れるか拒否します。

ジュリアは、コード レビューの要求を受け取り、受け取ります。Alice はコードを見直しましたり、ファイル、およびコード ブロック レベルにあるコメントを記述し、Peter にコード レビューを返します。アダムは、コードをレビューするには、ビジー状態で、拒否します。

自分のコメントでは、ジュリアは、テストが誤っていることを示しています。有効なエラーは、入力値の指定された部分が、定数量必要があります。このテストは、エラーをインクリメントする必要があります。

            // We allow a rounding error of 1 in 1000000
            // as a fraction of the value:
            TestEqual(1, 1e-7, true); // Less than allowed error
            TestEqual(1, 1e-5, false); // More than allowed error
            TestEqual(1000, 1000*1e-7, true); // Less than allowed error
            TestEqual(1000, 1000*1e-5, false); // More than allowed error
ヒントヒント

チーム メンバーがついては、フォーカスとしてテストを使用することに注意してください。テストが正しく、十分である場合は、コードでもあります。コードとは異なり、各テストは別のケースを表します。したがって、テストは、多くについて、およびコードをより簡単です。

Hh474795.collapse_all(ja-jp,VS.110).gifコード レビューを実行するには

コード レビューの受け入れと応答コード レビューの実行

  1. [チーム エクスプローラー]では、[担当作業] のページで、マイ コードのレビューと要求 のセクションに移動し、要求を開きます。

  2. [コード レビュー] のページで、あります:

    • レビューを行うかどうかを作成者に通知するために [同意する]同意しない を選択します。

    • code–review の要求に他のレビュー担当者を追加するに [レビューアーの追加] を選択します。

    • この作業項目の更新された各ファイルへの変更を確認します。

    • 作成者と他のレビュー担当者と変更についてするに [コメント] を展開します。

      • **全体的なコメントを追加します。*****を選択します。

        または

        コード ブロックを選択し、ショートカット メニューの [コメントの追加] を選択します。

      • 作成者と、の機能を他のレビュー担当者に表示できるようにするに コメントを送信します。*** を選択します。
    • コードがより多くの作業を必要とするかどうかを示す、のレビューを完了するに send および完了 を選択します。

コード レビューに応答します

Peter はジュリアからコード レビューに受け取り、応答します。

Hh474795.collapse_all(ja-jp,VS.110).gifコード レビューに応答するには

使うとコードのレビュー担当者と開発者はコメントを頻繁に交換できます。レビューの作成者が閉じると終了します。ディスカッションをそれぞれ使用して、他の参加要素は、電子メールで通知されます。

コード レビューへの対応

  1. [チーム エクスプローラー]では、[担当作業] のページで、コード レビューと要求 のセクションに移動し、要求をダブルクリックします。

    また、要求のショートカット メニューを開き、**[開く]**を選択できます。

  2. 必要に応じてそれらのコメントと応答を参照してください。コメントに応答するには、**[返信]を入力、コメントを表示して、を選択します。[OK]**にボックスをオンにします。、コメントを送信するには、**コメントを送信します。*****を選択します。

  3. ファイルを表示し、コメントを含むコード ブロックを表示するには、またはファイルを編集することは [コメント] のセクションに、移動します。[ファイル] の部分で、ファイルのショートカット メニューを開き、比較 (読み取り専用) か **[ファイルの編集]**を選択します。

  4. 、およびそのほかのレビュー担当者が互いのコメントに応答が終了され、レビューを終了準備が整ったとき **[レビューを閉じる]**をクリックし、次のいずれかを選択する:

    • レビューが終了したことを示す完了します。***

    • または

    • 示す破棄 は、レビューはキャンセルされます。

テストおよびコードを修正

Alice が示すようにジュリアのコメント、Peter を読み取る自分の単体テストを修正します。テストで、失敗します。これにより、コードがまだ正しくないことを示します。

Peter は、コードを修正:

        /// <summary>
        /// Returns true if two numbers are equal.
        /// </summary>
        public static bool EqualTo(double a, double b)
        {
            // Allow for rounding errors.
            const double allowedErrorMultiple = 1/1000000;
            double allowedError = (System.Math.Abs(a) + System.Math.Abs(b)) * allowedErrorMultiple/2;
            return System.Math.Abs(a - b) < allowedError;
        }

テストは再びパス:

等価テストの成功を示す単体テスト エクスプローラー

ヒントヒント

バグを修正するには、コードの開発と同じ手順に従います。失敗するテストを記述し、テストを渡らせます。テストに成功した場合にのみコードとテストをチェックインします。

Peter は、バグが検出されたテスト ケースへの自分の注意を切り替えます。バグを再現する手順は、テスト ケースの作業項目で明確に記述されています。Mallory は手順に従って、請求書が正しく表示されることを確認します。

修正をチェックイン

Peter のチェックイン固定コードと単体テスト。バグの状態は [解決済み]に自動的に設定され、[担当者] の値は、バグを検出したテスト チームのメンバーに自動的に再度割り当てられます。そのチーム メンバーが、バグを確認し、作業項目を修正するを閉じます。

Hh474795.collapse_all(ja-jp,VS.110).gif修正をチェックイン

バグを修正するための更新プログラムのチェックイン

  1. [チーム エクスプローラー]では、[担当作業] のページで、**[チェックイン]**を選択します。

  2. ように [保留中の変更] ページの内容を確認します:

    • **[含まれる変更]**のすべての関連する変更が一覧表示

    • 関連するすべての作業項目は **[関連作業項目]**に示します。

  3. それらが変更されたファイルとフォルダーのバージョン管理履歴を表示するとき、チームがこれらの変更の目的を理解できるように [コメント] を指定します。

  4. [チェックイン] を選択します。

タスクの作業の再開

Peter の再開が Bob のタスクを実行します。Bob は Alice のコード変更がすべて開いているウィンドウ、ブレークポイントやウォッチ ウィンドウの変数のような状態の上位ビットとともに自分のワークスペースに復元するため、すぐに使用できるように戻れます。

Hh474795.collapse_all(ja-jp,VS.110).gifタスクの作業を再開します。

タスクの再開と完了

  • [チーム エクスプローラー]では、[担当作業] のページで、Suspended & Shelved の作業 のリストを取得します。項目のショートカット メニューを開きます。2 個のオプションがあります:

    • 中断された作業を再度開き、自動的に自分のワークスペースの保留中の変更を中断する場合は、**[再開]**を選択します。

    • ワークスペースの保留中の変更が中断された作業を既にマージする場合は、**[処理中とマージ]**を選択します。

Hh474795.collapse_all(ja-jp,VS.110).gif作業を再開したとき

作業項目を中断すると影響を受けるペイン。

作業を再び開くと、Visual Studio が復元されます:

  • は、開いているソリューション

  • コードの変更

  • 開いているウィンドウの状態と位置

  • ブレークポイント

  • ウォッチ ウィンドウの変数と式

  • ブックマーク