ALM 开发人员生活中的一天:暂停工作、修复 Bug 和执行代码评审

切换的一个功能强大的一键式方式与从工作一个线程上运行的环境到另一个可在 Visual Studio 高级专业版 和 Visual Studio 旗舰版 与Team Foundation server。 此外,团队成员轻松地将有关建议更改的消息交换对代码。 本主题阐释这些功能,继续按照一个虚拟敏捷团队的成员一天的准则。

针对正忙编写完成积压工作项任务的某些代码。但是,他的同事找到块它们的bug,因此,他若要立即修复它。 他挂起直到完成的工作并修复bug。 他需要茱莉亚在评审后检查修复,因此,注册修复,并继续处理他的原始任务。

备注

我的工作和代码评审针对使用可用在 Visual Studio 高级专业版 和 Visual Studio 旗舰版的功能。

主题内容

  • 挂起当前工作并开始在bug的工作

  • 调查bug

  • 请求代码评审

  • 接受并执行(或拒绝)代码评审

  • 接收和响应代码评审

  • 修复测试和代码

  • 签入修复

  • 还原在任务工作

挂起当前工作

当针对于积压工作项,茱莉亚是讨论块她的bug。 在针对所熟悉的区域,因此,他创建任务修复bug并将其分配给他。 他决定立即开始在修复的工作。

在他开始在新bug之前工作,针对若要确保,他的当前正在团队的服务器上的安全位置留下。 在 *** 我的工作 *** 页,针对选择 *** 挂起 *** 保存(在 Team Foundation Server):

  • 直到完成的所有工作,包括对代码的更改,测试和其他文件。

  • 打开解决方案、窗口、断点、监视窗口变量和其他位Visual Studio状态。

现在他的工作区是干净的,针对从拖动 *** 可用的工作项 *** 的新任务添加到 *** 正在工作 ***。 他准备处理和写入此修复。

备注

您运行的环境与显示为"正在进行中"我的工作页的工作项链接。使用 *** 挂起 ****** resume ***,您可以快速不同任务之间进行切换。您打开的解决方案和文件、代码更改和Visual Studio格式所有一起被切换。

Hh474795.collapse_all(zh-cn,VS.110).gif挂起当前工作并开始在不同任务的工作

挂起部分工作

  1. 连接:,如果尚未连接到所需工作的团队项目,然后 连接到团队项目:

    1. *** 团队资源管理器 ***,选择 “主页”图标主页,然后选择 “我的工作”图标*** 我的工作 ***
  2. 挂起 您的当前任务:

    1. *** 正在工作 *** 部分中,选择 *** 挂起 ***

    2. 在出现的框中,指定要赋予此设置挂起的工作的名称,然后选择 *** 挂起 *** 按钮。 默认名称是您当前正在进行的工作项。

  3. 开始新任务的工作,bug或其他工作项:

    1. 在选择工作项之前,您可能希望:

      • 通过选择 新建 创建一个新任务或其他工作项。***** 可用的工作项 *****之下;或

      • 选择其他查询在 ***** 可用的工作项 *****下。

    2. 从拖到 *** 可用的工作项 *** 的工作项到 *** 正在工作 ***

      或者,可以切换到您可以通过拖动它之前挂起从 ***** 挂起的工作 *****下面的工作项。

提示

当前正在进行工作项与当前代码更改和Visual Studio状态链接。若要允许Visual Studio帮助您组织您的工作,请确保适当的项目在"正在进行中"状态,在不同任务切换到另一个时。

调查bug

针对打开并读取bug工作项。 根据测试团队成员编写的声明,一个有偿的发票有时不正确标记为假。 具有实验室环境快照附加到bug工作项。 针对可以打开测试运行的虚拟机,通过IntelliTrace记录参见错误发票和步骤返回。 他跟踪错误对以下方法:

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

从IntelliTrace记录,针对发现该方法有时返回错误,因为参数由极少数不同。 针对知道该此类型舍入误差是不可避免的传入浮点数学,并且,这是已习惯测试相等性的浮点数。

Hh474795.collapse_all(zh-cn,VS.110).gif增加测试显示错误

当找到bug,它表示具有单元测试中的空白测试,或者,测试不满足用户的实际需要。 因此,在修复bug之前,针对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));
        }

他运行测试,并按预期失败。

显示相等测试失败的单元测试资源管理器

Hh474795.collapse_all(zh-cn,VS.110).gif使测试通过

针对修复代码:

        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;
        }

现在可以测试:

显示相等测试通过的单元测试资源管理器

请求代码评审

针对满意他的bug解决,但是,他不注册他的工作。 他的团队使用代码评审提高总体代码质量和减少创建多个bug的风险,因此,针对使用团队资源管理器请求从他的团队伙伴茱莉亚和ADAM的代码评审。

Hh474795.collapse_all(zh-cn,VS.110).gif请求代码评审

请求代码审阅

  1. *** 团队资源管理器 ***,在 *** 我的工作 *** 页上,选择 *** 请求评审 ***

    *** 新的代码评审 *** 页。

  2. 审阅者 指定一个或多个审阅者。

  3. 代码审阅 指定检查的名称。

  4. 区域路径 指定区域路径。

  5. 注释 指定注释向您的审阅者。

  6. 选择 *** 提交请求 ***

审阅者将通知请求通过电子邮件。

还可以请求挂起的工作、搁置集或者变更集代码评审。

接受或拒绝代码评审

茱莉亚接收代码评审请求并接受。 她检查代码,编写在该文件中的某些注释和代码块级别,然后将代码评审给peter。 ADAM太忙而无法检查代码并拒绝。

在她的注释,指出茱莉亚测试是错误的。 公差应为输入值的指定部分,而不是常数。 因此测试应使用该错误与该值。

            // 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(zh-cn,VS.110).gif执行代码评审

接受并响应代码审阅执行代码审阅

  1. *** 团队资源管理器 ***,在 *** 我的工作 *** 页,转到 *** 我的代码评审和请求 *** 部分并打开该请求。

  2. *** 代码评审 *** 页,您可以:

    • 选择 *** 接受 ****** 拒绝 *** 通知该作者您将进行检查。

    • 选择 *** 添加审阅者 *** 添加其他审阅者到代码评审请求。

    • 查看对此工作项的更新的每个文件的更改。

    • 外接 *** 注释 *** 与其作者和其他审阅者讨论更改。

      • 选择 *** 添加整个注释 ***

        - 或 -

        选择代码块然后从快捷菜单中选择 *** 添加注释 ***

      • 选择 *** 将注释 *** 进行的可见传递给作者和其他审阅者。
    • 选择 *** 发送和完成 *** 为您执行检查,指示代码需要更多工作。

响应代码评审

针对接收和响应来自茱莉亚的代码评审。

Hh474795.collapse_all(zh-cn,VS.110).gif响应代码评审

代码的审阅者以及作者可以根据通常交换注释,象使用。 该作者将关闭,查看结束。 对讨论的每个大,其他参与者将通过电子邮件通知。

响应代码审阅

  1. *** 团队资源管理器 ***,在 *** 我的工作 *** 页,转到 *** 代码评审和请求 *** 部分中双击该请求。

    还可以打开该请求的快捷菜单并选择 打开

  2. 读取注释并确保它们根据需要。 若要答案注释,选择 *** 答案 ***,请在中键入注释在出现的框中,然后选择 *** 好 ***。 若要将您的注释,选择 *** 将注释 ***

  3. 若要查看文件并查看包含注释的代码块,或者编辑文件,请转到 *** 注释 *** 部分。 在 *** 文件 *** 小节,打开文件的快捷菜单中选择 *** 比较(只读) ****** 编辑文件 ***

  4. 当您和其他审阅者完成响应彼此的注释时,可以关闭评审,单击 *** 关闭评审 ***,然后选择:

    • 指示的***** 完成 ***** 评审完成。

    • - 或 -

    • 指示您的***** 放弃 ***** 取消检查。

修复测试和代码

读取茱莉亚的注释,针对修复他的单元测试,则建议。 测试现在未通过。 这表明,代码不正确。

针对修复代码:

        /// <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;
        }

测试再次通过:

显示相等测试通过的单元测试资源管理器

提示

若要修复此bug,请遵循的工作方式与在代码开发。编写失败的测试进行测试通过。签入代码,并测试仅当通过了测试

针对转换现在他的注意力到bug捕获的测试用例。 重现bug的步骤将测试用例工作项清单的说明。 他执行中的步骤以发票正确列出。

签入修复

针对签入修复了代码,而且单元测试。 bug的状态自动设置为 *** 解决 ***,并且,*** 分配 *** 值将自动重新分配给发现bug测试团队的成员。 该团队成员验证bug是否已修复和关闭的工作项。

Hh474795.collapse_all(zh-cn,VS.110).gif签入解决

正在签入更新以修复 Bug

  1. *** 团队资源管理器 ***,在 *** 我的工作 *** 页上,选择 *** 注册 ***

  2. 检查 *** 挂起的更改 *** 页的内容,以确保:

    • 所有相关更改列表中 ***** 包含的更改 *****上

    • 所有相关工作项。***** 相关工作项 *****列表。

  3. 当用户查看已更改的文件和文件夹时,的版本控制历史记录指定 *** 注释 *** 帮助您的团队了解这些更改的意图。

  4. 选择**“签入”**。

还原在任务工作

针对继续处理自己的任务。 因为所有他的代码更改还原到他的工作站重要位状态。例如打开、断点和"监视"窗口变量,会返回快速工作的可以访问。

Hh474795.collapse_all(zh-cn,VS.110).gif还原在任务工作

继续并完成任务

  • *** 团队资源管理器 ***,在 *** 我的工作 *** 页中,查找 *** 挂起的和已搁置的工作 *** 列表。 打开项目的快捷菜单。 有两种选择:

    • 如果您在工作区中若要还原拍摄挂起的工作并自动挂起任何挂起的更改,请选择 *** resume ***

    • 如果已经在工作区中若要将被挂起的使用挂起的更改,请选择 *** 与正在进行合并 ***

Hh474795.collapse_all(zh-cn,VS.110).gif当您将工作

受挂起工作项影响的窗格。

当您将工作时,Visual Studio还原:

  • 您打开的解决方案

  • 您的代码更改

  • 打开状态和位置

  • 断点

  • "监视"窗口变量与表达式。

  • 书签