关于记录错误或找猫

本文来自我们办公室内部论坛上的帖子,经过一点讨论,一点补充,然后我决定将其以最终形式放在此处,以使链接更加方便。
是的,该职位是船长,这是预期的行为:)我只是希望它可以被收集,有序且普遍可用。


简介:找猫


我们开发的产品中存在错误。
我们有时会找到它们。 有时我们甚至把它写下来。
为了帮助我们的同事使他们的产品更好。
当我们的同事给我们写信时,“我不懂镍铬合金”,“它对我没有用”,“来告诉我”,我们感到非常生气。
有时候我这么说。
因为很多时候,虫子看起来就像照片中的“发现一只猫”。


找猫


编写该错误的人确切知道那只猫在哪里。 他已经找到了。 他再也看不见他了。
我必须坐下来,钻入显示器,寻找一只该死的猫。


通常,视频会附有错误。 毕竟,视频显示了一切!
那里的一切都一样,只有草还在摆动(鼠标移动)并且门打开(打开不相关的对话框)。
在这一点上,我将讨论记录错误的规则,这些规则我会自己尝试遵循,并向其他人推荐。


我记录错误的个人规则


1) Bug标头中的关键字
这样您可以快速了解错误属于谁的能力。


2) 玩的步骤
这是非常非常重要的。 是的,在录制时,编译它们花费的时间最多。
因为很多时候,开始,写下步骤并扔掉“多余的”步骤,您会了解到该bug并非总是复制出来的。


3)在实际上存在错误的步骤中,“ 预期行为 ”与“ 观察到的行为 ”。
这很关键。 因为并非总是一个人期望看到的东西,所以它与实际情况相对应。 然后,您可以无休止地搜索猫。


4) 截图很好
图片提供了可视化的上下文,向产品的开发人员展示了存在问题的部分,他立即了解了必要的知识领域。 在这方面,图片与关键字结合使用(请参见第1段)


5) 视频是好的,但只有当我们显示动画错误时
并且-当错误的作者无法编写播放步骤时,您基本上可以观看视频。
或者错误是不确定的,需要证明。
在其他情况下,视频是多余的。
该错误的视频应该是该错误的视频。 10秒长,无需打开左侧窗户。


6)显式执行堆栈跟踪/控制台错误
好吧,几乎每个人都明白这一点并加以应用,我仅为保证清单的完整性而写。


7) 播放示例
如果我们正在谈论某种桌面系统,那么我们需要一个可以重现问题的档案。
在网络上更容易-您通常可以链接到在线演示(或扩展的暂存环境)。


这全都是第一近似的。


我与其他人分享这一点-他们经常相信我,并开始这样做。
其他示例和详细信息的20%,占文章的80%:)


例子


一个错误的例子是我如何编写它们,或多或少:)




dxTreeView在虚拟模式下创建冗余加载指示器



主屏幕截图




更多票(仅从我们团队记录的公共票列表中随机选择)
  • Web仪表板-提交参数值后,“重置”和“提交”按钮在“参数”自定义项中消失
    要重现此问题,请运行附件项目,在“参数”自定义项中更改参数值,然后单击“提交”按钮。
    实际结果:重置和提交按钮消失。
    预期结果:应该显示“重置”和“提交”按钮。
  • Web Dashboard Viewer-在启用触摸的监视器上单击控件的任何部分并且隐藏项目标题时,将显示工具栏按钮
    运行该项目,然后单击查看器的任何部分以重现该问题。
    实际结果:显示工具栏按钮。
    预期结果:仅在将鼠标悬停在工具栏按钮上时,才应显示它们。
    解决方法是,在OnInit事件处理程序中执行以下(内部)代码:
    function onInit(s, e) { DevExpress.Dashboard.Internal.DashboardLayoutModeHelper.isTouch = false; } 

  • ASPxDashboardViewer / MVCxDashboardViewer-如果打开带有选项卡的仪表板,则会引发异常 (这不是预期的,但是从错误的标题中可以明显看出 。这种情况,可以)。
    与ASPxDashboard / MVCxDashboard相比,旧的ASPxDashboardViewer控件和MVCxDashboardViewer扩展不支持Tab容器仪表板项。 当ASPxDashboardViewer / MVCxDashboardViewer打开带有选项卡容器的仪表板时,将发生客户端异常。 必须在仪表板UI中显示相应的弹出消息。
  • Dashboard Web-在某些情况下,“绑定”面板仍保持透明 (此处是视频,因为它是一个非常糟糕的错误,我们试图捕获了一年半的时间)
    重现步骤:
    1. 创建带有项目的仪表板。 确保打开时装订面板将与该项目重叠。
    2. 选择项目。
    3. 打开装订面板(例如,单击“选项”按钮),然后将光标移到面板上,直到光标移到项目上方。 绑定面板变得透明(预期)
    4. 单击仪表板上的项目。 装订面板关闭。
    5. 再次单击“选项”按钮。
      实际结果:
      绑定面板是透明的。
      预期结果:
      绑定面板不透明。
      主要步骤是在透明时单击项目以关闭装订面板。
      截屏视频已附加。

  • Web仪表板-全屏项目-透视图在最大化状态下无法正确运行
    1. 打开RevenueAnalysis演示。
    2. 展开数据透视表的“自行车”列。
    3. 收起枢轴的“自行车”列。
    4. 最大化“数据透视表”仪表板项目。


    预期结果:数据透视表的“自行车”列应在最大化状态下折叠。

    结果:枢轴的“自行车”列在最大化的项目中展开。
  • 如果使用自定义容器,则可以裁剪图表的工具提示
    重现步骤:
    1. 使用图表的容器作为工具提示容器;
    2. 在靠近图表边缘的某些点上显示工具提示;
    3. 错了。 工具提示显示在容器外部,也可以根据容器的溢出设置进行裁剪。
      预期的。 工具提示应显示在其容器内部,直到适合容器大小为止。


还有其他


哲学和次要定义细节


屏幕截图准备


图片应带有大红色箭头,甚至带有标题。
屏幕截图应在文本中,是错误主体的一部分。
如果该错误是在大多数现代系统中报告的,则只需按Ctrl + V从剪贴板粘贴图片即可完成


您为什么不能仅提供图片链接? 因为缺少上下文。 如果您看图片,则看不到文字。 如果看到文本,则看不到图片。 如果您同时看到这和那个东西,那么大脑中某些东西发出咔嗒声的可能性就会更高。


一分钟的专业变形
这就是为什么仪表板作为数据分析现象变得越来越流行的原因:)
当一个人从不同的角度和不同的角度看到相同的数据时,洞察力就会传到他身上。
有关详细信息,请参见Steven Few和其他作者。

屏幕截图大小始终是一个折衷方案。
较小时,该问题会更好地看到,并且占用的空间很小。 但是,这件作品的来源并不总是很清楚。
他们多捕获了屏幕区域-多余的细节都适合。 从中打开弹出窗口的屏幕,在该屏幕上出现错误。 浏览器所在的错误。 Windows出现错误的“开始”按钮。 发生错误的监视器的DPI ...哦,但是错误本身不再可见。 这只猫变成了两个像素,甚至在红色圆圈内也不确定。
在哪里停止裁剪屏幕截图永远是一门艺术)


屏幕截图示例,从小到大:


  • 刑法中的错误报告,栏杆损坏
    栏杆损坏的屏幕快照
    该问题清晰可见,但是上下文丢失了。 如果没有字样表明它在正门附近,焊工会戴着口罩在现场走动,进行搜索。


  • 在个人交流中,有关TreeView实现的问题



屏幕向导报告
它显示了我要记住的元素(加号...好,更好地翻译扩展按钮:)),上下文可见(新向导屏幕)


  • DPI = 125%时扩展仪表板演示的问题
    银幕歌剧占125%
    可以看到什么样的浏览器和站点URL
    标签不必要地模糊,以免分散注意力。 剩下的文章是有关Windows 10 Creators Update(在15.6英寸笔记本电脑中,其中125%的DPI成为默认值),因此,在查看此屏幕截图时,我会记住并能够炫耀并讨论它。

让我们再次强调。 使用常规工具,每个屏幕截图的准备时间为5到30秒。
这不是长篇作品的成果。 快速高效。 您可以停下来使它们完美无缺...但是通常这不是必需的。


截屏程序


  • Yandex.Disk,我非常喜欢他的屏幕截图 。 好吧,这是。 由于某种原因,事实证明,这是我尝试制作箭头,用小方块圈出并添加可读的题词的最佳选择。 本文中的所有示例均基于此。
  • Monosnap (免费,有付费计划)。 原则上,什么都没有,但是(主观性!)箭头是丑陋的。
  • ShareX (完全免费);
  • Jing已被我们的技术支持工程师广泛使用; 慢慢离开,因为他写的视频令人讨厌。
  • 在Windows 10中-内置组合Win + Shift + S 作者评论:确实相当不错
  • Mac 上的内置屏幕截图程序,
  • GreenShot-
  • LightShot -Mac / Win
  • FastStone Capture
  • FlameShot (Linux,在github上讨论了Windows的可能性)
  • 截图工具-Windows内置
  • gooncam
  • PicPick(Windows)
  • Spectacle&KSnapshot(Linux)
  • 问题步骤记录器-Windows内置,从命令行通过PSR启动

我们写下问题,而不是解决方案


该项目是内部讨论的结果。 非常出乎意料的是,每个人都不清楚,因此-一个例子。


例如,我正在测试仪表板设计器,我看到这样的事情:
设计器错误的示例屏幕截图


我正在编写一个错误:
“没有水平滚动”
我什至可以按照步骤和预期的结果编写它:笑脸:
预期结果 :规则名称应水平滚动。
实际结果 :规则名称未滚动


该错误是正常框架,但这并不能阻止开发人员认为我是白痴。 他会是对的:)


存在问题:“文本不完整可见;文本叠加在图标上”
但是,我没有记录这个问题,而是记录了我对这个问题的解决方案。 其中之一,当然也不是最好的。
而且这种替换很少发生。 即使是我自己,我有时也会抓住这个机会。
毕竟,我确切地知道如何解决它。 所以,我来写!
(嗯,有时候我真的知道。在实际描述问题之后,我尝试将建议写在错误的正文中。但这不是唯一的解决方案)


播放的专业示例


在桌面开发中,该项目值得商bat。 一方面,执行示例代码以重现该问题的实用程序对每个人都是显而易见的。
另一方面,创建示例已经大大增加了编写错误所需的时间,最多可以达到一个顺序。
通常,以我的想法是这样的:对于复杂的情况,这是必要的,在简单的情况下,它可能是多余的。
我在大学里曾被告知,如果安全系统变得过于复杂并带来伤害和不便,那么他们只会停止使用它。
如果您有义务为每个错误制作一个示例,那么一个月内,他们将为复杂的错误甚至为示例评分)
另一方面,您可以训练一些简单的错误来制作示例...
简而言之,这个问题值得商bat。


我将在十年前将我们办公室的CTO文章添加到存钱罐,他在其中解释了为什么我们要求客户提供示例。


朱利安请求简单示例程序10


现在有一些简化示例,请引用:


一个高度简化的例子当然是好的,但也很糟糕。 重复出现过一个简化的例子:
-并未涵盖错误的所有情况;
-不能反映实际情况,这可能会导致解决方案不正确。
理想情况下,最好同时具有简化样本和原始样本。

现在您知道了:


  • 准备实例非常有用;
  • 很难
  • 最主要的是不要过度操作。

错误记录时间


原来有很多信件。 这似乎是一个复杂,漫长而乏味的官僚程序。
因此,它不应该是困难而漫长的。
满足以上要求的漏洞的错误记录时间的中位数约为一分钟。
是的,如果事实证明这些步骤没有重现该错误; 或它们并不都很重要,并希望消除多余的部分; 或在流程中发现了新的步骤-时间就会增加。
但是,您的错误将被修复且不会被注释“无法复制”关闭的可能性正在大大增加。


反对派


当我分享我的愿景时,他们告诉我的是:


错误很明显

对于已经找到猫的人来说,这是显而易见的。
没有详细的描述和步骤,其他所有人将不得不寻找他。 不确定的时间。
是的,我的妻子和VYudachev在前三秒钟发现了这只猫。 我的两个样本。
而其余的人(大约一打左右),我看过他们的监视器,则要寻找猫长达五分钟。
但总的来说,我吐口水,并立即开始猜测。
对于写得不好的错误,同样的事情。


视频就足够了,在那里一切都可见

首先,对于错误的读者来说,这是很长的时间。 比阅读步骤列表要长得多,因此无法检索关键字。


其次,为了找出最小的细节,有必要对其进行多次修改,试图在关键时刻停止,准确地停顿一下。


第三,通常在准备不好的视频上有很多额外的细节。 而且您不知道什么是真正多余的,什么不是。 ....是否需要关闭来自VKontakte的有关该错误可重复性的通知?..是否与导致渲染错误的操作系统发生任何交互?..我可以使用电报代替VKontakte吗?...


(公平地说,在我的实践中,该函数的作者在所附视频中发现了其他错误)


编写这样的错误很长时间

是的编写带有步骤的错误需要更长的时间
通常是因为通过写下确切的步骤,您无意间开始进行调试工作。
您正在尝试抛出一些步骤,或者这很关键。
是的,您花费时间并保存了别人的时间。


参考文献


记录bug的要求清单是基于我的:


  • 错误报告编写指南 (Mozilla); (在论坛上的此链接上,转换很少,但是,一篇出色的文章却徒劳无功:));
  • 如何聪明地问问题10 。 一位同事将该文章作为对第一种选择的评论,并愉快地阅读:

如果您抛出论坛-邮件列表-开放源代码细节,那么几乎所有东西都是有价值的。 包括我最喜欢的“描述问题的症状,而不是您的猜测”和“明确表达您的问题”;


结束


我与我的团队分享了有关记录错误的观点。 现在,我决定覆盖更多的受众。


感谢您的阅读。




这是猫图片线索( 在此处拍摄 )。
顺便说一下,图片不是我的,而是准备得很好-有一个箭头,并且面积增加了 一个错误




UPD 06/28/2019
屏幕截图程序从注释添加到常规列表
错别字已修复,甚至引起评论讨论

Source: https://habr.com/ru/post/zh-CN456132/


All Articles