Debugging 您如何使用“故障排除”进行故障排除;“在我的机器上工作”;情节

Debugging 您如何使用“故障排除”进行故障排除;“在我的机器上工作”;情节,debugging,remote-debugging,Debugging,Remote Debugging,很多时候,当你向开发人员报告一个bug时,他会回来说“它在我的系统上工作”,尽管它是一个浏览器应用程序。你如何着手解决这个问题呢?尽可能多地尝试重新创建发现bug系统的用户:从服务器配置到机器配置,包括浏览器和操作系统等。在发布应用程序之前,您可能需要有几个不同的设置来测试应用程序。从培训/流程的角度来看: 培训您的团队,让他们知道“在我的机器上工作”并不是一种无需出狱的回应 祝你好运 有一个自动化的测试部署 您的开发人员必须知道,“works”的定义是“在测试服务器上工作”,而不仅仅是他们的机

很多时候,当你向开发人员报告一个bug时,他会回来说“它在我的系统上工作”,尽管它是一个浏览器应用程序。你如何着手解决这个问题呢?

尽可能多地尝试重新创建发现bug系统的用户:从服务器配置到机器配置,包括浏览器和操作系统等。在发布应用程序之前,您可能需要有几个不同的设置来测试应用程序。

从培训/流程的角度来看: 培训您的团队,让他们知道“在我的机器上工作”并不是一种无需出狱的回应

祝你好运

有一个自动化的测试部署

您的开发人员必须知道,“works”的定义是“在测试服务器上工作”,而不仅仅是他们的机器

从测试/调试的角度来看: 需要向开发人员展示导致错误发生的操作顺序

您可能希望捕获显示错误的屏幕截图,或者可能需要视频捕获(使用诸如的工具)。人们可能很不擅长描述他们在系统上执行的导致错误显示的操作序列,因此您可以捕获更多关于错误以及如何复制自身的信息就越好

从发展/环境的角度来看: 如果真的有一个bug在一个环境中出现,而不是在开发人员的环境中出现,那么请找出它是在没有开发环境中出现,还是只在一个开发人员的环境中出现

从这个意义上讲,这是一个试图减少两个环境之间差异的案例,这样开发者就可以在他的机器上看到问题

或者,您也可以选择另一种方式,尝试在生产(非开发)环境中调试问题


这些技术的实施细节因平台而异。

我们通过在本地开发平台上建立一个开发环境来解决这个问题,该开发环境在设置、硬件、,因此,生产环境中出现的几乎所有问题都可以在该开发系统上重现,即使它们无法在本地开发人员机器上重现。

IE Tester是此类故障排除的良好工具。如果你需要测试很多浏览器,那么像虚拟PC这样的虚拟机是你最好的选择,这样你就可以在测试服务器上设置很多客户端。

这是我在团队中遇到的常见逃避现实的反驳。我的回答通常是:“你知道,你的系统不是生产服务器,这是它需要工作的地方。”。换句话说,这个借口根本不可接受

我还向他们指出了以下可能性:

a。本地系统和服务器之间存在配置差异

b。服务器上不会更新功能的某些依赖项

c。他们还没有清除浏览器缓存

d。我在登台服务器上复制问题,并向他们演示


e、 。。。依此类推,视情况而定。

您需要向开发人员提供尽可能多的信息。即使是你认为不相关的东西

我数不清有多少次我报告了一个问题,也无法重复,后来才发现一条用户最初没有包含但却是解开谜题的关键的信息


你也不需要接受这个答案,而是说“好吧,你的设置和我的不同,我们能做些什么来解决它呢”

啊,是的。。。书中最古老的借口

假设开发人员和测试人员都在同一台服务器上测试,我会尝试通过确定开发人员机器和测试人员机器之间的差异来隔离错误。可能是flash版本、浏览器差异或忘记清除浏览器缓存之类的小问题


我还建议在专用测试服务器上使用自动化测试框架和测试应用程序。

作为最终用户,您可以做的不多,但作为开发人员,您可以通过在系统中包含大量日志来避免这些问题-用户会想到的差异只是您已经测试过的简单事情,但是良好的日志记录可以让您准确地看到系统发生故障时发生了什么。我发现了很多不可能以这种方式发生的bug。

在我们的环境中,我们称之为“暂存服务器”+1+1开发人员不是以它为借口,它确实在他们的机器上工作。因此,他们能做些什么呢?测试和bug中最大的事情是复制。如果他们不能复制它,他们就无法修复它。给开发者提供你所做的一切的屏幕截图,这样他们就可以看到整个故事。那样的话,他们可能有机会修复它。