在《Learning From Your Bugs》一文中,我写了关于我是如何追踪我所遇到的一些最有趣的bug。最近,我回顾了我所有的194个条目(从13岁开始),看看有什么经验教训是我可以学习的。...例如,当我用VoIP SIP协议工作时,我写了一个能够用正是我想要的标题和值回复的小脚本。这个工具使得测试很多边界情况变得容易起来。另一个例子是可以进行API调用的一个命令行工具。...或者,我认为软件的最新版本上正在运行,但其实是一个旧版本。因此,一定要核实细节,而不是假设。人们更容易看到自己希望看到的东西,而不是事实。 16.最近的变化。...当曾经可以正常工作的东西停止工作,那么这通常是因为最近改变的东西所导致的。在一个案例中,最近的改变只是日志记录,但是日志中的错误却导致了一个更大的问题。...为了更容易找到这种回归,承认不同的提交会导致不同的变化,以及清楚说明这些更改会有所裨益。 17.相信用户。有时,当用户报告问题的时候,我的本能反应是,“这是不可能的。一定是他们做错了什么事”。
如何描述bug也很有讲究,bug在什么情况下会产生,如果条件变化一点点,就不会有这个bug,以哪些最少的操作步骤就能重现这个bug,这个bug产生的规律是什么?...54、你以前工作时的测试流程是什么? 参考答案:(灵活回答) 公司对测试流程没有规定如何做,但每个测试人员都有自己的一套测试流程。我说下我1年来不断改正(自己总结,吸取同行的方法)后的流程吧。...二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。...57、您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?...我花了一定的时间考虑自己的目标,想清楚了自己擅长做的事情以及想从工作中得到的东西,最后我得出了一个坚定的结论,那就是这个行业是最适合我的。
如果一切正常,那也没关系,但要是有问题发生,你会很庆幸自己添加了这些日志。 测试 作为一个开发人员,直到要测试了我才会去处理功能。至少,这意味着每一行新的或改变了的代码行至少已经被执行过一次。...例如,当我用VoIP SIP协议工作时,我写了一个能够用正是我想要的标题和值回复的小脚本。这个工具使得测试很多边界情况变得容易起来。另一个例子是可以进行API调用的一个命令行工具。...或者,我认为软件的最新版本上正在运行,但其实是一个旧版本。因此,一定要核实细节,而不是假设。人们更容易看到自己希望看到的东西,而不是事实。 16.最近的变化。...当曾经可以正常工作的东西停止工作,那么这通常是因为最近改变的东西所导致的。在一个案例中,最近的改变只是日志记录,但是日志中的错误却导致了一个更大的问题。...为了更容易找到这种回归,承认不同的提交会导致不同的变化,以及清楚说明这些更改会有所裨益。 17.相信用户。有时,当用户报告问题的时候,我的本能反应是,“这是不可能的。一定是他们做错了什么事”。
例如,当我用VoIP SIP协议工作时,我写了一个能够用正是我想要的标题和值回复的小脚本。这个工具使得测试很多边界情况变得容易起来。另一个例子是可以进行API调用的一个命令行工具。...或者,我认为软件的最新版本上正在运行,但其实是一个旧版本。因此,一定要核实细节,而不是假设。人们更容易看到自己希望看到的东西,而不是事实。 16.最近的变化。...当曾经可以正常工作的东西停止工作,那么这通常是因为最近改变的东西所导致的。在一个案例中,最近的改变只是日志记录,但是日志中的错误却导致了一个更大的问题。...为了更容易找到这种回归,承认不同的提交会导致不同的变化,以及清楚说明这些更改会有所裨益。 17.相信用户。有时,当用户报告问题的时候,我的本能反应是,“这是不可能的。一定是他们做错了什么事”。...遵循这些步骤可以确保它确实是一个bug,并且此次修复的确可以解决这个问题。简单而有必要。 其他观察结果 在这13年来我一直在跟踪我所遇到的最棘手的bug,很多事情由此而改变。
你好呀,我是歪歪。 前几天和一个大佬聊天的时候他说自己最近在做线程池的监控,刚刚把动态调整的功能开发完成。 想起我之前写过这方面的文章,就找出来看了一下:《如何设置线程池参数?...首先,为什么需要对线程池的参数进行动态调整呢? 因为随着业务的发展,有可能出现一个线程池开始够用,但是渐渐的被塞满的情况。 这样就会导致后续提交过来的任务被拒绝。...第二种方式,大多适用于那种“你也不知道为什么,反正这样写程序就是正常了”的情况。 现在我们知道在线程池里面动态调整队列长度的坑是什么了。...主要是这个 bug 确实也有点超出我的认知,而且在链接中并没有明确的说具体原因是什么,导致我定位的时间非常的长,甚至一度想要放弃。 但是最终定位到问题之后也是长叹一口:害,就这?没啥意思。...他的言外之意就是:这个问题非常的莫名其妙,但是我可以稳定复现,只是每次复现出现问题的时机都非常的随机,我搞不定了,我觉得是一个 bug,你们帮忙看看吧。
1在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?...参考答案: 1、是否支持回车 2、单击 3、快速双击, 可能会导致重复提交的bug 4、网络中断 5、只输入必填项,单击提交 6、分别缺少一个必填项、单击提交(无效等价类不能合并) 7、所有字段的最大长度...总之就是以最少的用例覆盖尽可能多的测试点,并在最短的时间内找出最多的bug。 36测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?...二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。...42产品上线之后出现了bug,相关负责人过来质问,“为什么测试的时候没有发现这个bug”?
如果一切正常,那也没关系,但要是有问题发生,你会很庆幸自己添加了这些日志。 测试 作为一个开发人员,直到要测试了我才会去处理功能。至少,这意味着每一行新的或改变了的代码行至少已经被执行过一次。...例如,当我用VoIP SIP协议工作时,我写了一个能够用正是我想要的标题和值回复的小脚本。这个工具使得测试很多边界情况变得容易起来。另一个例子是可以进行API调用的一个命令行工具。...或者,我认为软件的最新版本上正在运行,但其实是一个旧版本。因此,一定要核实细节,而不是假设。人们更容易看到自己希望看到的东西,而不是事实。 3.最近的变化。...当曾经可以正常工作的东西停止工作,那么这通常是因为最近改变的东西所导致的。在一个案例中,最近的改变只是日志记录,但是日志中的错误却导致了一个更大的问题。...为了更容易找到这种回归,承认不同的提交会导致不同的变化,以及清楚说明这些更改会有所裨益。 4.相信用户。有时,当用户报告问题的时候,我的本能反应是,“这是不可能的。一定是他们做错了什么事”。
中途我跑去写了两天文档,再进行测试时(首页数据和其他开发有接口),问了一下开发B数据来源,得知现在的数据是假数据,沟通确认后问题得到了证实,当前新版本进行了变更。 这个问题的原因是计划赶不上变化。...深层次剖析原因:我们部门缺少流程,一切还处在以人为核心的工作模式,没有监督,缺少管理。 故事三 拖进度(老油条) 跟一个人打过交道几次后,你就知道这个人的办事风格是什么样。...最近,线上系统Bug提交后,我查看了下修改进度,开发A的备注是这样: 【未复现】 【未排查到空数据】 一旦看到这样回复,就知道接下来的流程:交给测试整批量验证,再反过来沟通,这么来来回回至少浪费半个月,...很多开发人员拿到提交的Bug,基本都会核实到底是测试问题还是程序问题,而不何核实直接打回来就是态度问题,这种态度有问题的人,我把他们称为“老油条”。...最近的感悟:即使你不在管理岗位上,只要能干成一个多人配合才能完成项目,就算是攻克了管理的难点。
注意:git config --global 参数,有了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然你也可以对某个仓库指定的不同的用户名和邮箱。 ▍如何操作? 1....如何从远程库克隆? 上面我们了解了先有本地库,后有远程库时候,如何关联远程库。 现在我们想,假如远程库有新的内容了,我想克隆到本地来 如何克隆呢?...比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下: ?...并不是我不想提交,而是工作进行到一半时候,我们还无法提交,比如我这个分支bug要2天完成,但是我issue-404 bug需要5个小时内完成。怎么办呢?...还好,Git还提供了一个stash功能,可以把当前工作现场 ”隐藏起来”,等以后恢复现场后继续工作。如下: ? 所以现在我可以通过创建issue-404分支来修复bug了。
在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?..." 我认为这个测试策略不正确,因为根据bug分散性原理,发现bug越多的模块越容易产生新的bug。 如何测试一个 纸杯?"...其目的是找出可能影响软件产品质量、开发过程、维护工作的适用性和环境方面的设计缺陷,并采取补救措施,以及找出在性能、安全性和经济方面的可能的改进。 你认为做好测试计划工作的关键是什么?...工作原理:Client向Server提交一个请求;Server则使用一些方法处理这个请求,并将效果返回给Client。...产品上线之后出现了bug,相关负责人过来质问,“为什么测试的时候没有发现这个bug”?
本文作者 Florian Ernst Ernst 撰写博客详细描述了他发现这个 bug 的过程,以下是博客原文。...我首先运行 Lightning 的分析器来找出问题所在。 基础分析器给了我一个起点:大部分时间都花在运行一个 epoch 上;高级分析器没有给我更多信息。...默认情况下,Pytorch 在两个 epoch 之间会 kill 掉运行中的进程(worker)并重新加载,因而需要重新加载数据集。 在我这个例子中,加载数据集非常慢。...可以确定的是 Pytorch Lightning 错误地重置了 _iterator,从而导致了这个问题。...我将发现的这个 bug 报告给了 Lightning 团队,他们对问题进行了修复并在第二天推送了修补程序。我随后更新了库,更新后发现他们的修复确实有效。
我常常会一开始就根据自己的编程思想,一头扎进去研究,但是这可能会导致麻烦,如果事情不像原先设想地那样顺利的话。 已经有很多次在我启动一个项目之后,陷入了困境,然后只好寻求博客和其他论文的支持。...我发誓这是真的,而且这是没有任何意义的事情——也许是其他程序正在运行缓存版本? 有很多次你更新了一丁点代码,却导致了整个程序崩溃出错,完全停止了工作。...恢复到最近可工作的复制文件,然后从那里开始一步步前进。 13.“算了,我还是从头再开始吧。”...作为开发就和我们成人一样看到问题总是以自己的世界观来理解,导致理所当然的就这样就对了,而真正的真相就被隐藏了。 当程序员面对 Bug 的时候,如何机智甩锅?...当你面对 Bug 时,切勿慌张,以下措施教你轻松应对 Bug 带来的困扰。 ? 1.打死不承认,这代码不是我写的,将锅甩出去。 ? 2.睁眼说瞎话,在我电脑上是正常的呀,超级无辜。 ?
Git是什么,为什么从SVN迁移到Git? Git就是一个免费托管开源代码的远程仓库,你可以理解它就是一个大型文件服务器,在上面放置了N多代码文件。...1、git有强大的分支管理能力 分支是什么: 在 SVN这类的版本控制系统上,分支(branch)是一个完整的目录,且这个目录拥有完整的实际文件。如果工作成员想要开启新的分支,那将会影响“全世界”!...完全不需担心妨碍其他工作成员。只要我不合并及提交到主要版本库,没有一个工作成员会被影响。等到我不需要这个分支时,我只要把它从我的本地版本库删除即可,无痛无痒。...如果想要看当前版本的文件和一个月前的版本之间有何差异,Git 会取出一个月前的快照和当前文件作一次差异运算。...而Git 只是获取文件的每个版本的元素,然后只载入主要的分支(master)在我的经验,克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约1500个文件的 SVN,耗了将近一个小时!
开发应用程序是一个非常有压力的工作。没有人是完美的,因此在这个行业中,代码中出现 bug 是相当普遍的现象。...我常常会一开始就根据自己的编程思想,一头扎进去研究,但是这可能会导致麻烦,如果事情不像原先设想地那样顺利的话。已经有很多次在我启动一个项目之后,陷入了困境,然后只好寻求博客和其他论文的支持。...而且这是没有任何意义的事情——也许是其他程序正在运行缓存版本?有很多次你更新了一丁点代码,却导致了整个程序崩溃出错,完全停止了工作。恢复到最近可工作的复制文件,然后从那里开始一步步前进。 ? 22....然而,数据备份提供了允许我们回过头去修改的踏脚石。这在实时的服务器环境中尤为有用,因为有什么变化会立即执行。以防万一,我们应该记得保存网站文件和数据库的本地副本!...虽然这会是一个恼人的任务,但其恼人程度远远比不上重建损坏的 SQL 数据库。 27.“让它正常工作的最快解决办法是什么?” 在花费数个小时苦苦思考自定义的解决方案之后,很明显你需要一种新的方法。
背景: 一家主要是做一款APP的公司,公司技术部门有三个组:爬虫组、服务端组和APP客户端组。 事实回放: 1)每次运营或产品提出一个BUG给到测试工程师后。...当测试工程师拿到一个BUG时,可以通过APP抓包和查找数据库表的方式排查这个问题到底是那个开发工程师的。 举例:在APP上有一张图片无法正常呈现出来,而这个图片是由爬虫工程师采集过来的。...2)如果这个图片URL是有值的,并且这个URL可以正常打开,但是这个URL的格式不是OSS的格式(服务端会把外面的图片保存到我们的OSS环境中),那么这个问题就是服务端在保存图片时出了问题,找出共性和规则给到服务端工程师去处理...另外,测试人员在完成测试计划、测试用例以后,会邀请开发、产品一起评审测试用例,在这个环节,由于测试人员把每个需求如何细化测试都体现在了用例里面,就相当于再次把需求分析了个透,往往还能发现很多需求的漏洞。...这也是提早发现需求漏洞的有效环节。 质控二:下游工作质控 在产品完成了测试以后,就是发布的环节了,测试人员在发布的环节也能发挥作用。
综合起来看我认为我是胜任这个工作的。 4、测试的目的是什么? 测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。当然软件测试是不可能找出全部错误的。 5、测试分为哪几个阶段?...还有在配置管理中,有一个很重要的概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并只有经过授权后才能变更这个标准。...17、在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?...如果我怀疑开发的解答,我觉得是bug,开发坚持不是bug,我就要咨询我们组长或者开发组长,让他们判断一下。 假如发现了一个BUG,跟开发本身没什么关系,涉及到理念,需求问题,如何解决?...万一因为自己的错误导致工作发生问题,首先应该把问题上报给领导,争取把问题的影响降到最低程度。 给你一个模块测试,只有一个星期的时间你如何有效率地完成?
为了保证的可读性,本文采用意译而非直译。 1. 你最喜欢的 Git 命令是什么 个人比较喜欢 git add -p. 这增加了“补丁模式”的变化,这是一个内置的命令行程序。...它遍历了每个更改,并要求确认是否要执行它们。 这个命令迫使咱们放慢速度并检查更改文件。作为开发人员,咱们有时常常急于提交,我自己也经常这样,做完运行 git add ....还可以使用 git reset 来撤消最近的提交,并将它们的更改放入工作索引中,然后将它们的更改分离到新的提交中。 33.有没有办法查看已修复的提交?...checkout 可能更健壮,因为它不仅允许撤消当前更改,而且还允许通过检索文件的旧版本撤消一组更改。 默认情况下,reset更适合于更改工作索引中更改的状态。因此,它实际上只处理当前的变化。...git reset HEAD -- file;清空 add 命令向暂存区提交的关于 file 文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
我常常会一开始就根据自己的编程思想,一头扎进去研究,但是这可能会导致麻烦,如果事情不像原先设想地那样顺利的话。 已经有很多次在我启动一个项目之后,陷入了困境,然后只好寻求博客和其他论文的支持。...我发誓这是真的,而且这是没有任何意义的事情——也许是其他程序正在运行缓存版本? 有很多次你更新了一丁点代码,却导致了整个程序崩溃出错,完全停止了工作。...恢复到最近可工作的复制文件,然后从那里开始一步步前进。 13.“算了,我还是从头再开始吧。”...作为开发就和我们成人一样看到问题总是以自己的世界观来理解,导致理所当然的就这样就对了,而真正的真相就被隐藏了。 当程序员面对 Bug 的时候,如何机智甩锅?...当你面对 Bug 时,切勿慌张,以下措施教你轻松应对 Bug 带来的困扰。 ? 1.打死不承认,这代码不是我写的,将锅甩出去。 ? 2.睁眼说瞎话,在我电脑上是正常的呀,超级无辜。赚取同情分 ?
领取专属 10元无门槛券
手把手带您无忧上云