zoukankan      html  css  js  c++  java
  • 测试人员代码走查基础要点

    代码走查,是测试人员了解代码逻辑,进行测试设计的重要环节。并且有很多bug并非需要到运行程序进行测试才能发现。通过合理的代码走查方法能提前发现相当多的BUG。除常见的业务逻辑与程序逻辑不符外,本文收集了在过往工作中的经常能发现BUG的走查要点,以供参考。


    走查要点:一段代码存在多个副本

    [释义]

    相同的代码段,在程序的不同地方复制和粘贴。

    甚至同一项目,复制出多个副本。

    [问题表现]

    修改好的bug,一直反复出现。

    由于存在多个副本,如果代码段中有bug,就需要修复多个副本。其修复难点在于:如何确定找到所有的代码副本。如果无法确定修复了所有副本,极易导致漏测。看似减轻工作的复制粘贴给后期维护带来了极大工作量和风险。


    走查要点:初始化对象或返回值为空

    [释义]

    在实例化对象时(例如,从数据库中取出一条订单数据,实例化一个订单对象),某些字段字段为空。而后面定逻辑需要使用这个字段时,没有进行判空。或者在一些远程调用过程中,返回的对象有可能是空,或者某些字段为空,在后面的使用中,没有判空。

    [问题表现]

    空指针异常NullPointerException


    走查要点:数据定义被破坏

    [释义]

    在处理各种数据时,由于某些数据的定义(类型、长度、必填、范围及其他性质)被破坏,例如,某接口需要接受三个都为必填项的参数,由于未对是否必填进行校验,导致数据库中的数据与预期的定义不符。应尽早检查数据的定义。

    [问题表现]

    代码运行好好的,突然就发生一些问题,之后又没问题了。完整的数据任务都没有问题,只有当程序运行到不完整数据时,才会报错。


    走查要点:资源(内存、文件或数据库连接)未被正确释放

    [释义]

    程序的一些执行路径没有完成它们应该做的工作,或者持有不再使用的对象。

    [问题表现]

    资源未能正常释放,导致连接被用完、文件打开过多、FGC


    走查要点:接口定义不一致

    [释义]

    接口定义与实现不一致,导致调用接口出错。

    [问题表现]

    当使用某个接口时,处理结果与接口定义的结果不一致,甚至直接报错异常。


    走查要点:消息队列能否补发消息、对补发消息的处理

    [释义]

    生产者发出消息时发生异常,导致消费者无消息可用。需要能够补发消息。而消费者在处理消息时(或者回调),是否能处理重复的消息(重复的回调通知)。特别是在多线程的情况下,对数据的修改,需要对线程进行分析。

    [问题表现]

    消费者端无响应

    少数数据处理出错,而大部分都正常。


    走查要点:不恰当的日志

    [释义]

    日志中的敏感信息:卡号、手机号、密码、cvv、有效期等

    关键的操作步骤没有日志(修改状态,异常报错)

    日志量过大,打印无效日志,导致无法查问题。

    [问题表现]

    泄漏用户信息

    无法查错


    走查要点:查询SQL的底线

    [释义]

    查询的sql语句,需要有条件限制,不能无条件的查询数据库。常见的约束:时间范围,数据量限制。

    [问题表现]

    查询出的大数据量的结果集,导致数据库和应用的性能问题。


    走查要点:缓存

    [释义]

    (1)集中缓存,还是分布式缓存

    (2)分布式缓存如何保证缓存间的一致性,不一致时,如何影响流程。

    (3)缓存如何与数据库的数据保持一致性,不一致时,如何影响流程。

    (4)如果缓存失效,如何影响流程

    [问题表现]

    修改了配置,但有的服务器更新了,有的没更新。

    集中式缓存服务挂了,没有备份,直接查数据库,导致数据库压力过大。


    走查要点:系统间调用的保护

    [释义]

    同步调用外部系统,必须有超时时间的设置,防止线程池涨满影响其他业务。考虑用异步调用替代同步调用。

    [问题表现]

    由于被调用系统的性能瓶颈,导致调用系统的响应也下降。


    走查要点:异常处理

    [释义]

    异常是否得到明确的定义

    是否有未捕获到异常

    捕获异常后,是否有合适的处理,后续代码是否能正常执行

    [问题表现]

    异常未能正确定义,导致问题无法快速定位

    未捕获异常,导致信息泄漏、系统处理异常

    未能正确处理异常,导致后续流程错误

  • 相关阅读:
    237. Delete Node in a Linked List
    430. Flatten a Multilevel Doubly Linked List
    707. Design Linked List
    83. Remove Duplicates from Sorted List
    160. Intersection of Two Linked Lists
    426. Convert Binary Search Tree to Sorted Doubly Linked List
    142. Linked List Cycle II
    类之间的关系
    初始化块
    明确类和对象
  • 原文地址:https://www.cnblogs.com/jack1989/p/8274988.html
Copyright © 2011-2022 走看看