[转载]基于TFS实践敏捷-修复Bug和执行代码评审

本主题阐释了这些功能,以继续这一关注虚拟敏捷团队成员的一天的教程。

Peter 忙于编写一些代码以完成积压工作 (backlog) 项任务。但是,他的同事发现了一个阻碍他们工作的 Bug,他想立即修复此 Bug。 他暂停了手中的工作并修复此 Bug。 他请求 Julia 审查修复情况,并在审查后检查修复结果并恢复其初始任务。

说明

Peter 使用的“我的工作”和“代码评审”功能仅在 Visual Studio 高级专业版和 Visual Studio 旗舰版中可用。

主题内容

  • 挂起当前工作并开始处理 Bug
  • 调查 Bug
  • 请求代码评审
  • 接受并执行(或拒绝)代码评审
  • 接收并响应代码评审
  • 修复测试和代码
  • 签入修复
  • 继续处理任务

 

挂起当前工作

当 Peter 处理积压工作 (backlog) 项时,Julia 过来讨论困扰她的 Bug。 这是 Peter 所熟悉的区域,因此他创建了修复 Bug 的任务,并将其分配给自己。 他决定立即开始修复工作。

在 Peter 开始处理新的 Bug 前,他想确保其当前工作保留在团队服务器上的安全位置。 在“我的工作”页上,Peter 选择“挂起”进行保存(在 Team Foundation Server 上):

  • 他完成的所有工作包括对代码、测试和其他文件的更改。
  • 打开解决方案、窗口、断点、监视窗口变量和其他 Visual Studio 状态的位。

限制已清理工作区,Peter 将新的任务从“可用工作项”拖动到“正在进行的工作”。 他已准备好研究和编写修复。

说明

你的工作上下文链接到在“我的工作”页中显示为“正在进行”的工作项。 通过使用“挂起”和“继续”,可在不同的任务间快速切换。 打开的解决方案和文件、代码更改以及 Visual Studio 布局都会一起切换。

挂起当前工作并开始执行另一项任务

  1. 连接:如果尚未连接到要在其中工作的团队项目,请连接到团队项目:
    1. 在“团队资源管理器”中,选择“主页”,然后选择“我的工作”。
  1. 挂起你的当前任务:
    1. 在“正在进行的工作”部分中,选择“挂起”。
    2. 在显示的框中,指定你要为此挂起的工作集提供的名称,然后选择“挂起”按钮。 默认名称是当前正在进行的工作项。
  2. 开始新任务、Bug 或其他工作项上的工作:
    1. 在选择工作项之前,你可能需要:
      • 通过选择“可用工作项”下的“新建”,创建新任务或其他工作项;或
      • 在“可用工作项”下选择不同查询。
    2. 将工作项从“可用工作项”拖动到“正在进行的工作”。 
      或者,可以从“挂起的工作”项下拖出之前已挂起的工作项来切换到该工作项。

提示

当前正在进行的工作项将链接到当前代码更改和 Visual Studio 状态。 若要允许 Visual Studio 帮助你组织工作,请确保你在从一个任务切换到另一个任务时,相应的项处于“正在进行中”状态。

 

调查 Bug

Peter 打开并阅读 Bug 工作项。 根据测试团队成员编写的说明,已付款的发票有时会被错误地标记为未付款。 有一个附加到 Bug 工作项的实验室环境快照。 Peter 可以打开运行测试的虚拟机,查看错误发票和 IntelliTrace 日志。 他跟踪以下方法存在的错误:

复制代码

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

复制代码

从 IntelliTrace 日志中,Peter 发现此方法有时会因参数存在极小的差异而返回 false。 Peter 知道此类舍入误差在浮点算法中是不可避免的,同时,利用此方法测试浮点数字的相等性也较为不妥。

增加测试以显示错误

在找到 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 errorTestEqual(1, 1e-5, false); // More than allowed errorTestEqual(1000, 1e-7, true); // Less than allowed errorTestEqual(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));}

复制代码

他运行了该测试,结果如预期一样以失败告终。

让测试通过

Peter 修复代码:

复制代码

  public static bool EqualTo(double a, double b){// Allow for rounding errors.// For example, a == 2.0 and b = 1.99999999999const double allowedError = 1/1000000;return System.Math.Abs(a - b) < allowedError;}

复制代码

测试现在通过:

 

请求代码评审

Peter 对自己对 Bug 的修复感到满意,但是尚未签入其工作。 Peter 的团队使用代码评审来提高整体代码质量并减小因创建更多 Bug 带来的风险,因此,他使用团队资源管理器从团队同事 Julia 和 Adam 那里请求代码评审。

请求代码评审

  1. 在“团队资源管理器”中的“我的工作”页上,选择“请求审查”。“新代码审阅”页将出现。
  2. 指定一个或多个审阅者。
  3. 指定评审的名称。
  4. 指定区域路径。
  5. 指定审阅者的注释。
  6. 选择“提交请求”。

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

你还可以请求对挂起的工作、搁置集或变更集进行代码评审。 若要查看变更集的列表,请打开“源代码管理资源管理器”,然后选择“历史记录”按钮。

接受或拒绝代码评审

Julia 接收并接受代码评审请求。 她评审代码,并在文件和代码块级别编写注释,然后将代码评审反馈给 Peter。 Adam 太忙,无法评审代码,因此拒绝了请求。

Julia 在其注释中指出测试是错误的。 允许的误差应为输入值的指定部分,而不是常数。 因此,测试应将错误值乘以值。

复制代码

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

复制代码

提示

请注意,团队成员会将测试用作讨论焦点。 如果测试正确且足够,则代码也会如此。 与代码不同,每个测试表示单独的大小写。 因此,讨论测试通常比讨论代码更容易。 

执行代码评审

  1. 在“团队资源管理器”中的“我的工作”页上,转到“我的代码评审和请求”部分并打开该请求。
  2. 在“代码评审”页上,你可以:
    • 选择“接受”或“拒绝”以通知作者你是否将执行评审。
    • 选择“添加审阅者”以将其他审阅者添加到代码审阅请求。
    • 查看对每个已为此工作项更新的文件的更改。
    • 展开“注释”以与作者和其他审阅者讨论更改。
      • 选择“添加总体评价” 
        - 或 -
        选择一个代码块,然后从快捷菜单中选择“添加注释”。
      • 选择“发送评论”以使你的提交对作者和其他审阅者可见。
    • 选择“发送和完成”以完成审阅,指出是否需要进一步修改代码。

 

响应代码评审

Peter 接收并响应了来自 Julia 的代码评审。

代码的审阅者和作者可以根据需要交换注释。 作者一旦关闭评审,则评审就将结束。 每次有人参与讨论时,其他参与者都会收到电子邮件通知。

  1. 在“团队资源管理器”中的“我的工作”页上,转到“代码评审和请求”部分,然后双击该请求。 
    你还可以打开请求的快捷菜单并选择“打开”。
  2. 阅读评论并根据需要进行答复。 若要答复评论,请选择“答复”,在出现的框中输入你的评论,然后选择“确定”。 若要发送你的评论,请选择“发送评论”。
  3. 若要查看文件并查看包含注释的代码块或者要编辑文件,请转到“注释”部分。 在“文件”子节中,打开文件的快捷菜单并选择“比较(只读)”或“编辑文件”。
  4. 如果你和其他审阅者已回复完彼此的评论并准备关闭审阅,请单击“关闭审阅”,然后选择:
    • 完成”可表明已完成审阅。
    • - 或 -
    • 放弃”可表明正在取消审阅。

 

修复测试和代码

阅读完 Julia 的注释后,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;}

复制代码

测试再次通过:

提示

若要修复此 Bug,请按照代码开发中的相同做法进行操作。 编写会失败的测试,然后设法让该测试通过。 仅在测试通过时,签入代码和测试。

Peter 现在将注意力转移到发现 Bug 的测试用例上。 在测试用例工作项中清楚说明了 Bug 的重现步骤。 他按照这些步骤操作,并发现已正确列出了发票。

 

签入修复

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

  1. 在“团队资源管理器”中,在“我的工作”页上,选择“签入”。
  2. 查看“挂起的更改”页的内容以确保:
    • 所有相关更改都在“包含的更改”中列出
    • 所有相关工作项都在“相关工作项”中列出。
  3. 指定“注释”以在你的团队查看已更改文件和文件夹的版本控制历史记录时助其了解这些更改的目的。
  4. 选择“签入”。

 

继续处理任务

Peter 继续处理自己的任务。 他很快就可以继续工作,因为他的所有代码更改连同重要的状态图位(如打开窗口、断点及观看窗口变量)都已还原至工作区。

继续任务中的工作

  • 在“团队资源管理器”中的“我的工作”页上,查找“挂起的和搁置的工作”列表。 打开项的快捷菜单。 你有两个选择:
    • 若要继续挂起的工作并自动挂起工作区中任何挂起的更改,请选择“继续”。
    • 若要将挂起的工作与工作区中已挂起的更改合并,请选择“正在进行部分合并”。

当你继续工作时

当你继续工作时,Visual Studio 会还原:

  • 打开的解决方案
  • 代码更改
  • 打开的窗口的状态和位置
  • 断点
  • 监视窗口变量与表达式
  • 书签

 

验证此 bug 已消失

如果测试团队发现此 bug,他们会将一些测试用例链接到此 bug,并且将重新运行它们。 了解详细信息。


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单元测试入门

https://docs.microsoft.com/zh-cn/visualstudio/test/getting-started-with-unit-testing?viewvs-2019 使用 Visual Studio 定义和运行单元测试&#xff0c;使代码保持正常运行、确保代码覆盖率并在客户之前找到错误和缺陷。 经常运行单元测试&#xff0c;确保代码正常运行。…

.net开源框架简介和通用技术选型建议

.net体系 .net core .net 类库 asp.net mvc asp.net webapi asp.net core EF 跨平台和运行时解决方案&#xff08;解决方案&#xff09; Katana&#xff1a;微软基于OWIN规范实现的非IIS寄宿ASP.NET和MVC等。 MONO.NET&#xff1a;跨平台的.NET运行环境&#xff0c;让.NE…

JAVA 2048源码_java实现2048游戏源代码

本文实例为大家分享了java实现2048游戏源代码&#xff0c;供大家参考&#xff0c;具体内容如下一.主要功能&#xff1a;1、游戏初始化&#xff1a;新建游戏44的16宫格画布&#xff0c;随机格子上生成2或者4两个数字2、格子的移动&#xff1a;先判断能否移动&#xff0c;移动后判…

开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源

DncZeus 前言 关于 DncZeus DncZeus Dnc Zeus "Dnc"--.Net Core 的缩写&#xff1b; "Zeus"--中文译为宙斯&#xff0c;是古希腊神话中的众神之王&#xff0c;奥林匹斯十二主神之首&#xff0c;统治宇宙万物的至高无上的主神&#xff08;在古希腊神…

十大开源的.NET用户界面框架 让GUI设计不再犯难

选择一款合适的GUI框架是.NET开发中比较重要但又很棘手的问题&#xff0c;因为用户界面相当于一款应用的"门面"&#xff0c;直接面向用户。好的UI更能吸引用户&#xff0c;有时甚至成为决定一款应用成败的关键。下面小编整理出十大应用最广泛.NET开源用户界面框架&am…

python flv转mp4_ffmpeg将多个flv文件合成为mp4(python版)

需求直播生成的flv片段需要做个归档&#xff0c;把指定的文件夹中的flv合并成一个mp4&#xff0c;简单的转码合并操作直接用命令行调用来实现。注意事项flv文件直接合并生成mp4的话只有第一个flv的内容才能播放&#xff0c;需要先转换成ts再合成mp4使用的第三方库ffmpy&#xf…

多租户技术

本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。 多租户技术&#xff08;英语&#xff1a;multi-tenancy technology&#xff09;或称多重租赁技术&#xff0c;是一种软件架构技术&#xff0c;它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件&…

使用开源工具ELK可视化 Azure NSG日志

国内的Azure最近上线了网络观察程序服务&#xff0c;可以帮助用户监控和分析VNET虚拟网络。其中一个很重要的功能就是可以记录NSG的安全访问日志了。但是如果用户设置了NSG流日志&#xff0c;并下载日志想要分析一下的话&#xff0c;会发现日志其实并不是很友好&#xff0c;NSG…

pythoncad二次开发视频_AutoCAD ObjectARX 二次开发(2020版)--4,使用ARX向导创建CAD二次开发项目(编程框架)--...

手动创建ObjectARX应用程序非常麻烦&#xff0c;在此步骤中&#xff0c;将介绍ObjectARX向导。在这里&#xff0c;我们将使用ObjectARX向导创建我们的ObjectARX应用程序。本节的程序的需求是&#xff0c;接收CAD用户的输入。首先&#xff0c;打开VS2017&#xff0c;新建项目在左…

Azure Data Explorer(Kusto)学习笔记

Azure Data Explorer 指南 Azure在2018年推出了Data Explorer产品&#xff0c;提供实时海量流数据的分析服务&#xff08;非流计算&#xff09;&#xff0c;面向应用、网站、移动端等设备。 用户可以查询&#xff0c;并交互式地对结果进行分析&#xff0c;以达到提升产品、增…

python将一列数据转换成向量_python读取csv和txt数据转换成向量的实例

最近写程序需要从文件中读取数据&#xff0c;并把读取的数据转换成向量。查阅资料之后找到了读取csv文件和txt文件两种方式&#xff0c;下面结合自己的实验过程&#xff0c;做简要记录&#xff0c;供大家参考&#xff1a;1、读取csv文件的数据import csvfiltpath "data_t…

Iaas,Paas,Saas三者的区别联系是什么?

本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。 多租户技术&#xff08;英语&#xff1a;multi-tenancy technology&#xff09;或称多重租赁技术&#xff0c;是一种软件架构技术&#xff0c;它是在探讨与实现如何于多用户的环境下共用相同的系统或程序组件&…

什么是ASP.NET Boilerplate Project(ABP)框架

使用.NET技术进行开发已经多年&#xff0c;偶尔一次网络上搜索.NET开发框架&#xff0c;看到了ABP这个框架&#xff0c;引起了我极大的兴趣&#xff0c;于是决定对该框架进行深入学习和研究&#xff0c;并将过程全部记录如下&#xff0c;对自己也是一次学习和总结&#xff0c;同…

使用ABP打造SAAS系统(2)——前端框架选择

一、流行框架比较 作者用过的前端框架不少&#xff0c;曾经还在一个项目中同时使用两套框架控件&#xff08;年少无知、效率特慢&#xff09;&#xff0c;所以可供选择的前端框架有不少&#xff1a; easyui&#xff1a; 优点&#xff1a;非常成熟的框架&#xff0c;基于iframe…

java 一元线性回归_一元线性回归的java实现

我们有两组数据&#xff0c;比如连续5年的pv与uv。我们想预测一下&#xff0c;uv达到500k那么pv会是多少。当然更有意思可能是&#xff0c;如果销售额是500w的话&#xff0c;pv会是多少。机器学习里的一元线性回归方法是比较简单的方法,就是我们猜是满足ywxb的。那么&#xff0…

【转】ELK是什么能做什么怎么做

作者&#xff1a;蛙课网 链接&#xff1a;https://www.zhihu.com/question/338932215/answer/777380560 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 为什么用到ELK&#xff1a; 一般我们需要进行日志分析场景&…

java中的并发类_java中并发常用工具类

前言:在你无聊的时候,想想比你优秀还努力的人,也许就不觉的无聊了今天下午没事干把买的java并发编程艺术这本书拿出来看了看,看了下也记不住,还是好记性不如烂笔头,今天讲四个并发中可能会用到的工具类,分别是&#xff1a;CountDownLatchCyclicBarrierSemaphoreExchangerCountD…

github迁移到gitee相关问题

为什么要从github迁移到gitee&#xff08;国内github版&#xff09;&#xff1f; 1. github对于国人来讲&#xff0c;速度较慢。例如&#xff1a; 浏览个技术文档点击个链接半天跳不过去pull、push、clone个代码太慢个人版&#xff08;免费版&#xff09;没有私人仓库&#xf…

【转】abp vNext微服务框架分析

abp vNext新框架的热度一直都很高&#xff0c;于是最近上手将vNext的微服务Demo做了一番研究。我的体验是&#xff0c;vNext的微服务架构确实比较成熟&#xff0c;但是十分难以上手&#xff0c;对于没有微服务开发经验的.net人员来说几乎是看不懂的&#xff0c;所以研究一番后再…