• 0
  • 0
分享
  • BUG总是无法重现?解决方案这不就来了!——软件测试圈
  • 恬恬圈 2023-01-31 13:50:07 字数 1179 阅读 1395 收藏 0

  作为一个程序猴子,最怕遇到的事情就是程序出现BUG,特别是线上系统出现BUG,生产环境可不能直接上服务器来调试。

  这种办法最多只能够定位问题,因为像apache和nginx的错误日志只是显示某个请求是200还是500这样子,不过通过这简单的日志我们可以分析出有没有接口出现过错误,从而知道程序有没有BUG。主动记录业务操作信息

  记录日志真的很重要,可以直白的说一句,出了问题之后唯一可以拯救你的就是日志。那你也许会问该记录那些信息呢?我只能说这个得根据自己的业务来定。

  例如:

  (1)发送验证码,我会记录下什么时间向哪个号码发送什么验证码,服务商返回结果是什么。

  (2)如果是完成任务,我会记录下什么时间,用户完成了什么任务,获得什么奖励。

  (3)一个敏感信息操作,我会记录下,哪个用户什么时间修改,修改前数据,修改后数据分别是什么?

  出错的函数调用过程和原因一定要记录

  一个出错的例子:

1.png

  例如上图,一看到这种数据就可以分析出出错的原因,而通常记录这种信息是非常简单的,很多框架只需要简单配置即可。但是请注意,这个仅仅是让我们知道在哪里发生了一个错误,错误类型是什么,我们通过这个信息还不足以重现错误。用户请求的数据和获取到的数据要记录。

  这个很重要,因为很多时候出现错误都是我们没有处理好边界值问题。我们记录下用户发送的数据,我们就可以模拟用户的请求,然后通过打断点分析出问题所在。请注意一个小小的问题,由于每一次请求都需要记录下这个信息,是会影响程序性能的,所以建议通过异步写入或者先放进内容再慢慢存储。慢着,这个看似不错的方案还存在一点点缺陷,模拟毕竟是模拟,有没有想过在出错的那次某些外部数据可能跟现在已经不一样了呢,这个时候就没法重现BUG了喔!记录出错的时候调用的函数顺序及每个函数在调用前后的变量如果每一步都把数据记录下来,那么不就可以看到出错时候的情形了吗,不就很清楚的定位到问题所在了吗?并且只需要在出错的时候才捕捉所有的数据,那么其实一个系统出现错误的次数一般不会太多,所以总的来说对应用效率影响不大,也不用再跟用户说你来在我面前重现问题这么坑人了。要记录下这些信息,我们只需要在出错的时候遍历函数的调用栈幁,记录下数据即可。我自己写了一个python的库来实现这个需求:https://github.com/yubang/python_debug

  自己的一些线上开发debug做法

  1. 凡是核心业务都是上日志,并且这些日志从不删除。

  2.用户的输入输出都记录,错误信息和栈堆也记录,这个办法已经帮我解决无数的问题,每当有人说这里有问题喔,我都可以默默看看日志,然后定位问题所在。


作者:yubang    

来源:http://www.51testing.com/html/61/n-7792661.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1、什么是兼容性测试?兼容性测试侧重哪些方面?兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。兼容和配置测试的区别在于,做配置测试通常不是Clean OS下做测试,而兼容测试多是在Clean OS的环境下做的。2、我现在有个程序,发现在Wi...
            12 12 826
            分享
          •   情景说明  小S是一名工作多年的软件测试工程师,工作中,对待他人的诉求能积极响应,也有一定的技术功底,但个人影响力需要提升:实际工作中默默地做了很多工作,也产出了不少工具,但他人感知不多,也缺少在各种场合进行推广和运营。  辅导过程  小Z:在多个场合,大家提及了你的个人影响力需要提升,今天聊一聊你在这方面的卡点是什么,看看需要我提供什么帮助?  小S:这是老毛病了。  小Z:怎么理解?  小S:知道自己有这个问题,是自己没有主动地寻求变化,让影响力持续提升。  小Z:那你知道影响力小和大这两者的差别吗?  小S:知道;有的事儿也会去提升影响力,但确实大多数事儿,没有产生好的影响效果。  ...
            0 0 533
            分享
          •   身处在IT这个行业,时不时就能听到别人说:“我们这行过了35岁就不好做了”。  为什么不好做了,是不是我们做测试、开发的人过了35岁就没有出路了?  其实不然,事事无绝对,一切全靠自己。  35岁是道坎没错,也许我们会有家庭上的烦恼,会有孩子学习教育上的苦恼和担忧。但这不是我们这一行不行的理由。  只要我们还是健康的,我们就可以继续做下去,年龄也只不过是一个数字而已。  那些过35岁的测试和开发们  从运维人员到业务线总经理,他成功迈过35岁的坎  这是我的一个前同事,我刚进公司的时候他和我是一个组,是我们测试组的运维人员,而在我离开这家公司的时候,他已经是我们业务线总经理了,分管我们那个...
            0 0 1096
            分享
          • 前言JMeter在请求时,肯定会需要参数传递,参数值如果不变动或者不需要加解密这些操作,则操作上都是比较简单。如果参数值不固定,而且需要加解密正确的时候该如何操作呢?先说一下我这个接口大概的需求:该接口主要实现获取出符合要求的二维码链接;请求参数通过RSA加密,需要生成符合要求的RSA加密值;不知道加密具体机制,但是有源码可以直接调用。实现1、生成jar包这一步很重要,如果自己熟悉java,则需要自己读懂开发的java代码,提取出我们需要的方法,对其进行修改,并且进行打包。如果不行,则可以找开发帮忙。这里不能贴出我写的源码,毕竟每个公司需求也不一样。这个步骤,我主要是对传入参数进行了修改,只需...
            0 0 1370
            分享
          •   OpenAI 今天宣布与"常识媒体"(Common Sense Media)建立合作伙伴关系。"常识媒体"是一家非营利性组织,负责审查和评定各种媒体和技术是否适合儿童使用。希望借此通过与致力于减少科技和媒体对儿童、学龄前儿童和青少年伤害的组织合作,赢得家长和政策制定者的信任。  OpenAI 首席执行官 Sam Altman 表示,作为合作关系的一部分,OpenAI 将与 Common Sense Media 合作,根据 Common Sense 的评级和评估标准,在 OpenAI 的 GPT 市场 GPT Store 上策划"家庭友好型&...
            0 0 927
            分享
      • 51testing软件测试圈微信