zoukankan      html  css  js  c++  java
  • 白盒测试-code review

    1、code review的意义和价值

    • 开发改动代码并未知会测试,这部分改动可能会存在风险
    • 可以完善测试分析、提前发现bug、降低质量风险和测试成本
    • 学习开发的技术,提升自己的代码能力,提升自己的职业竞争力
    • 开发人员没有进行有效的单元测试,带着一大堆问题提交;
    • 代码没有进行Code Review,带着一大堆问题入库;
    • 版本没有提测标准,带着一大堆问题到测试环境

     

    2、code review的思路和精髓

    • 拿到需求文档,架构文档、时序图后,自己对这个需求及逻辑有一定的理解,最好能思考自己会选择怎样实现。
    • 接着去了解开发对这个开发的理解以及实现,过程中可以思考存在的风险。开发对于需求实现的设计方案,了解架构图、流程图、时序图
    • 再次了解工程设计的层次结构,找到程序的入口,根据找到的入口,就可以从上往下,层层展开,阅读代码就变得容易了
    • 学会阅读代码

    3、怎么做code review,或者说code review的重点在哪?

         3.1、多个地方调用到的,影响面大的公共方法,即底层代码

         3.2、影响主流程跑通的类和方法

         3.3、涉及金额的代码

         3.4、常规检查点:NPE、异常处理、内存泄露、数组越界、资源浪费、精度问题、文件路径权限、

                                        隐私安全、参数校验、多线程问题、全局资源、除零错误、缓存问题。

               参数校验:

                   3.4.1、对照接口文档、重点关注对应的request类是否对参数进行了必传、长度、取值范围、类型的校验

                   3.4.2、注意是否继承了某个类,父类中是否存在对参数的校验

                   3.4.3、方法参数如果不能为空时,是否做了判空处理,或者在方法调用者传入参数时是否确保了不为空

                   3.4.4、当被调用的方法(如下游系统方法)返回为null时,调用者是否有进行判空处理

                   3.4.5、使用的对象是否在使用的时候时已经被初始化

                   3.4.6、方法是否有返回null的情况,如果有是否可以改成为返回一个空白对象(如没有元素的列表等)

                   3.4.7、某些赋值或条件,如果不进行适当的健壮性处理,会存在空指针的隐患

               异常处理

                   1、任何可能出错的函数调用(语句),必须加异常处理。包括但不限于网络交互(超时)、数据库交互(连接是否成功、超时)、

                         读取请求数据包(判断返回值、脏数据)、文件系统操作

                   2、对于异常的处理,需要注意异常处理一定要充分、异常判断的时机、条件一 定要正确      

              内存泄露

                   1、线程对象使用完毕是否正常结束

                   2、各种数据库、网络连接和文件IO被打开后,是否正确关闭

                   3、图片资源是否正确释放

                   4、缓存对象要有一定大小控制,且有明确的释放策略

              资源浪费

                    1、对变量赋值,而该变量从未使用

                    2、对象无意义的new了一个实例

                    3、字符串大量使用+连接

               精度问题

                    1、float、double这类浮点数经常出现精度问题,尤其在类型转化的过程中容易导致精度丢失

                    2、互联网金融一般使用BigDecimal,BigDecimal有三个构造函数,看到使用了BigDecimal(double val)时,需要谨慎,

                          可能会存在精度问题。尽量使用int、String的构造函数

              多线程问题

                     1、识别全局资源

                     2、看到资源的读写和更新,必查加锁

                     3、看到加锁操作,必查加锁范围

                     4、看到资源的获取和访问之间有时间间隔,必查资源是否会被更新

                     5、识别线程不安全函数(Arraylist、hashmap、StringBulider、HashSet、simpledateformat、DateFormat)

             文件路径 、权限问题

                      1、对服务器进行读写文件的操作时,需考虑各个测试环境,对这个路径的权限问题隐私安全

                      2、对于金融产品涉及的账密、证件、手机、银行卡等敏感信息是否进行了脱敏处理

              除零错误

                       1、除法或者取模操作,必加除数为零的判断

                       2、浮点转整型会丢失小数部分,特别需要关注0.*变成0的情况

              数组越界

                        1、访问数组时,如果访问了数组定义之外的范围,即下标落在区间[0, size-1]之外,会导致程序运行错误

                        2、当下标存在加减时,需判断改变的下标是否越界

                        3、如果是分割字符串产生的数组,取数组的值前一定要判断下标是否在数组长度范围内

                        4、取数组或列表时,需要先判断数组或者列表的长度不为0

              逻辑函数

                        1、对条件组合判断,特别是超过两个时,或者为||、&&组合使用个时很容易出错

                        2、是否所有分支都得到了合理的处理,如没有写出了的else以及switch的default分支中途返回

                        3、在运行过程中,达到某种条件,使程序中途return的情况。需要注意是否存在return导致某些逻辑不能正确执行到的情况

              SQL问题:

                        1、业务层面,需检测操作的数据,如查询的数据是否符合业务预期。性能方面,需检测该语句是否存在性能问题

              参数校验:

                        1、重点关注Controller层的方法入参,是否如接口文档设计进行了必填项、取值范围、长度、类型等校验;

     

  • 相关阅读:
    apache多端口映射
    mark
    一些注册表值
    jsp URL中文处理的几种方式
    【引用】雨林木风Ghost XP SP3系统
    CentOS常用命令
    查看ie8临时文件夹
    卡塔兰数
    大数问题
    不会做的题目
  • 原文地址:https://www.cnblogs.com/forfreewill/p/13631095.html
Copyright © 2011-2022 走看看