• 0
  • 0
分享
  • BUG总是无法重现?解决方案这不就来了!——软件测试圈
  • 恬恬圈 2023-04-11 13:12:49 字数 1179 阅读 1008 收藏 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在小程序上线之前,我们是需要先给小程序进行的,小程序只有通过测试之后,才可以上线。小程序要测试的内容有权限测试、功能测试、界面测试、渗透测试、小程序加固以及安全检测等,接下来就先了解下渗透测试、小程序加固以及安全检测。小程序测试在进行小程序渗透测试,通过模拟黑客攻击的形式,对小程序业务系统进行渗透测试,发现可导致业务数据泄露,资产受损、数据被篡改等各类安全风险。在测试阶段发现高风险漏洞,提早进行修复,尽早避免因代码漏洞造成的安全风险及资产损失,针对小程序业务逻辑安全以及WEB框架安全进行深度漏洞挖掘。安全检测安全检测是专门针对小程序前端和后台Web端整体的提供的自动化风险检测工具,覆盖前台代码...
            0 0 1088
            分享
          •   一、接口的产生  1、接口的定义  一般来说,接口分为硬件类接口和软件类接口。银行系统的接口一般指的是软件接口,软件接口分为两种:  (1)程序内部的接口:方法与方法、模块与模块之间的交互,程序内部抛出的接口,用于模块与模块之间的交互,使用于自身的系统。  (2)系统对外的接口:与银行别的业务系统之间的交互。由于对方系统不会提供数据库共享,只提供一个写好的方法,让其对接,业务系统需通过这个写好的方法,来获取自身系统想要的数据。这个写好的方法,就是对外的接口。  2、接口的分类  接口一般分为两种:  (1)webService接口:走soap协议通过http传输,请求报文和返回报文都是xm...
            0 1 1234
            分享
          • 也许大家在面试的时候碰到测试电梯,测试笔,测试伞的呀,小编就都罗列出来,大家可以看一看,碰到测试其他东西的,大家主要是思路,流程清晰就可以的。参考答案:伞功能测试伞是否可以正常打开,关闭,是否可以正常使用;伞是否可以折叠,伞的尺寸是否符合使用需求;伞骨与伞柄是否耐用,材质是否符合需求。是否生锈;伞的底座是否结实,是否容易脱落;伞是否能够正常遮阳/挡雨,伞面是否能够承受住风吹日晒。是否防紫外线;收伞的外部捆绑条,长度是否合适,是否结实,暗扣/粘扣的是否能够正常使用;自动伞是否可以正常使用,按钮承受度,使用次数。界面测试伞的类型是否符合需求,手动伞、自动伞;伞的外观、颜色、是否齐全、是否美观。易用...
            0 0 1167
            分享
          •   关于软件测试行业的职业发展方向,在网络上总能看到各种各样的问题。  · 有关注零基础能不能入行的  · 有关注25岁入行晚不晚的  · 还有关注35岁后的职业发展方向的  ······  在此过程中,看到很多行业大佬分享了自己的工作经验,也给出了很多自己的建议——要想在测试行业有更长远的发展,一定要关注自己的职业发展道路,也就是你的晋升之路。为此我做了以下三点总结:  一、软件测试职业发展方向情况  业内人士表示,“由于我国的软件行业已经突破了作为一种工业化产品的阶段,软件测试已经成为软件开发企业不可或缺的质量监控部门。目前,我国软件测试人才的数量相对滞后于产业升级,从而形成了软...
            1 1 919
            分享
      • 51testing软件测试圈微信