测试与调试

读书笔记-调试九法 别人写的调试方法,可以利用一下从而形成自己的体系

排查困难问题的方法总结

  1. 输入,比如这次这个新人出现价格异常,肯定是修改这个字段的地方出了问题,那么要么是删除没成功,要么是有错误的入口
  2. 影响范围:看只是影响一个人还是都影响了,判定影响范围有利于猜测问题根源的形态,比如必现问题一般是代码逻辑错误,偶现则可能是数据库同步等问题(如果我早看这一点,就不会从数据库同步的角度去看这个问题,而是直接看代码逻辑了)
  3. 时间范围:如果可以找到问题产生的时间点,就可以通过查询线上提交代码的方式找到问题原因,这个太有用了,这回就是通过这个手段找到的(因为我之前压根没想到是代码逻辑错误,因为我之前默认其是运行正常的)

有时候必须从更大的角度去看待这些问题,如果像我刚开始一样只专注于一个人,那么可能会一叶障目,当然这是针对复杂的问题,如果问题很简单,那直接查这个人就行了,如果在测试环境,也分析不了发生的范围和发生的时间

反正发生问题,首要的步骤的精准定位这个问题,你首先要知道问题究竟是什么,知道得越清楚,肯定耗费的时间就越多,但是解决的难度也就越低。

整理一下测试及debug的方法

更新:测试函数既要检查流程有没有走通,不管是主流程还是分支流程,还要检查流程附带的结果有没有实现

2017-07-29

  1. 异常处理:对于所有外源信息的处理以及可能出错的任务都进行异常处理,处理时还需要考虑是本级处理还是上抛异常
  2. 调试:几种方法
(1)print:实在太low,千万别用
(2)logging:第一个作用是用debug级代替所有需要print的地方,第二个是用error级来捕捉所有程序运行过程当中的错误信息,并对这些错误信息做针对化的处理,比如进行持久化存储
(3)pdb,有点麻烦,不过也可以稍微学一下,在终端当中进行调试,目前肯定是不会去用它的
(4)pycharm设断点debug,极其方便,进行web开发的时候可以广泛使用,但是不要太过依赖于断点,最好还是自己写之前都设想好,防止出现问题
  1. 单元测试:主要针对于大型项目,目前对于稍大型的项目都应当用这个
  2. 文档测试:先略微了解一下,使用的话还是之后再说吧

总结一下,目前就使用logging打印常规的信息(需要在写代码的时候就确定好哪些信息是需要在debug模式下打印出来的,使用pycharm做断点调试,单元测试和异常处理是必须的

单元测试

  1. 如果使用全面的单元测试的话,那么一旦出现功能测试中测出来的bug,就需要写一个单元测试去浮现这个bug,以此来强化你的单元测试
  2. 测试的秘诀其实是测试你最担心出错的部分,这样你从测试工作中获得的边际收益也是最大的。因为测试是风险驱动的
  3. 测试的一项重要技巧就是寻找边界条件和特殊情况