zoukankan      html  css  js  c++  java
  • 测试流程注意事项

     
     
     
    一 需求分析阶段
     
    1.业务修改
    现有业务修改是否清晰 核心逻辑是否遗漏
    有无业务冲突
     
    2.用户体验和影响
    交互是否合理
    会不会拉长交易流程
    干扰用户选择
    下单和支付响应时长
     
    3.周边业务线的影响 是否清晰描述上下游系统的影响
     
    4.安全
    黑白名单
    反作弊
    开关
    规则和阈值
     
    5.旧数据兼容
     
     
    二 设计分析阶段
     
    系统结构:
    针对项目需求,结合业务现状来评估RD设计的系统修改点是否合理
    模块、系统间使用了什么接口、中间件进行通讯(http、dubbo、mq、缓存、数据库、定时任务等),是否合理,例如dubbo循环依赖等
    - 画出当前的系统结构图
    - 标注出系统结构的改动点
     
    数据流:
    能不能拿到自己想要的数据,做出的修改是否会对现有系统造成负面影响,例如数据结构不兼容,缓存结构不兼容等
    - 接口和接口字段的CUD(增、改、删)
    - 数据存储的变化(表、字段)

     
    三 开发联调自测阶段
     
    1.根据需求和设计文档进行case设计和评审(后续自动化case同步进行?)
     
    2.测试环境准备
    分支 sql ng 权限配置等
     
    3.跨团队项目的上下游沟通
     
    测试计划沟通
    和上下游模块沟通各自负责的测试计划安排、测试范围、测试重要场景、跨团队 测试数据的构造、配合的方式,把团队间的影响降到最低。
    环境对接
    我们需要了解上下游关系,相互之间接口的调用问题,接口是否沟通清楚,接口是否满足需求等,确保联调环境的进度。
    熟悉业务
    跨团队项目需要了解对方的业务、申请权限等,避免后续影响测试进度。
     
    4.测试策略沟通
     
    提测方式
    核心功能的单元测试
    测试工具提供(dubbo、定时任务封装http,异步转同步,后门工具等)
     
    注:关注联调阶段出现的问题
    在后面测试阶段有可能遇到的问题,绝大部分都会在这个阶段暴露,并对case进行补充
     
     
    四 提测阶段
     
    1.开发自测case执行,pm测试前置?
     
    2.自动化通过
     
    3.code review通过
     
    4.code diff 前置?
     
    1、为什么要code diff?
     
    评估影响面
    补充测试点
    确认需求实现
    提前发现问题
    确认发布步骤
    QA加深对技术实现的理解
     
    2、何时进行code diff?
     
    code diff 需要贯穿整个测试过程,主要是一下三个时间点。
    提测时:得到本次代码的改动范围、使用branch代码与master代码全量diff
    改bug后:确认开发代码的提交量、测试的回归量,使用修改前后打出的btag进行增量diff
    发布前:确保本次发布的代码与测试代码一致,使用测试通过的btag与master代码全量diff
     
    3、code diff关注点
     
    接口变更
    提供方,入参和返回值发生变化需要,确认所有调用方是否可以满足
    调用方,调用新接口。需要注意是否添加异常处理?是否重试?超时时间是否合理?
     
    代码层面
    循环结构、递归调用,要检查退出条件,避免死循环
    全局考虑代码实现是否与需求文档一致,功能是否都已经覆盖,条件分支结构,结合业务判断是否有遗漏分支;逻辑是否都是完整闭合的,注意边界值,条件判断语句参数为空是否发生空指针异常
    运算表达式,需注意精度计算问题
    针对复制了一段代码,确认业务逻辑
    某个数据对象改了, 需要找到该数据对象被用在哪些地方,验证其展示、存储、对对外接口的影响;尤其考虑模块下游是否有影响,是否也应该做相应的变更。
    基础类修改,要检查所有调用方,一层一层直到找到对应可进行验证的UI或系统功能,补充对应的功能测试点
    缓存使用,补充测试点
    有没有多改(搭车无关代码),少改(少改方法、少改入口等等)?
     
    配置相关
    确认第三方服务的配置,包括dubbo、mq、地址、超时时间等
    prod配置是否正确。包括被调用方的地址,数据库地址
    beta的配置禁止使用的线上地址,反之亦然
    pom.xml文件,版本号是否正确,线上不能有snapshot版本
     
    监控
    监控通常分为系统监控和业务监控,在diff时需要与开发和产品充分讨论哪些事件发生是需要技术/运营实时知道或每隔一段时间都需要了解状态的
    系统监控:通常虚机提供时,无需在代码中添加
    业务监控:通常在关键业务节点上添加,比如常见的接口调用次数、响应时长、任务成功/失败/异常监控
    dubbo监控:需要在代码中添加dubboFilter对dubbo的调用进行监控(增加dubbo的Filter)
    其他需求:通常不方便进行测试或线上验证的业务场景,可以考虑添加监控验证
     
    日志
    业务日志:一般在请求入参、出参处都要打印日志方便排查问题,线上日志需考虑性能相关问题(数据量、磁盘io问题、清理时间等)
    异常日志:需要在diff过程明确catch住可能存在异常的部分,打出异常堆栈以及重要参数,注意空指针;如果是正常业务的异常分支,那么就需要有明确的业务输出或记录,而不是抛出exception
    分级:日志分级别,调试使用debug,运行时日志使用info,系统遇到问题使用warn,系统遇到异常使用error
     
    发布相关
    第三方服务发布、以及权限申请
    上线前发布依赖jar包不含snapshot
    根据调用依赖关系,确认发布和回滚顺序
     
    安全
    日志、数据库、缓存中不允许出现身份证号、手机号等敏感信息
    鉴权,是否需要再校验
     
    异常
    需要在diff过程明确catch住可能存在异常的部分,打出异常堆栈以及重要参数,注意空指针
    如果是正常业务的异常分支,那么就需要有明确的业务输出或记录,而不是抛出exception
     
    性能
    代码中多重循环和if判断不要超过三次
    获取大量数据时,分批次获取;尽量采用批量SQL语句
     
    4、code diff产出
     
    测试范围/checklist
    bug
    发布和回滚步骤
    系统结构设计改进意见
     
     
    五 测试执行
     
    业务
    1.检查工具或者抓包工具看接口
    2.服务器日志
    3.数据库和缓存变化
     
    接口
    方法:http postman等。 dubbo 业务覆盖、转http、单元测试、工具
     
    测试点:
    功能:
     
    数据
    类型
    a. 类型使用是否正确(尤其是http接口),例如使用String还是原始类型
    b. 枚举的常量选项是否正确
    精度
    a. 是否符合要求,通常金额为2位小数
    b. 得到的数据是否会自行调整精度(截断或者四舍五入不可取,应该直接校验传入的精度)
    时间
    a. 该使用日期(2015-11-12), 还是时间(2015-11-12 14:00:00), 还是时间戳(1449849600000)
    b. 时区:服务器的日期是否会根据请求者的时区进行转换;或者在request中和response中直接带上时区信息
    单位
    a. 时间单位时秒还是毫秒
    b. 金额单位是分还是元
     
    长度 是否够长,超过部分是否截断还是发出警告
     
     
    数据流
    通过系统结构和数据流了解数据的流向、转换、落地等,考虑数据传递过程中的转换、封装、组装、数据丢弃、精度丢失等情况
    1. 数据库到bean
    2. bean处理后(例如,filter)向下层吐数
    a. bean之间的转换
    b. dubbo之间的传递
    等等
     
    接口异步和无序
    对于一些依赖前后接口返回的逻辑,考虑接口异步、读写库时间差、读写接口时间差是否造成业务异常
     
    兼容和影响
    前后端兼容(字段变更、返回值变更、枚举等)
    接口上下游兼容(包括外部系统的影响)
    安全
    权限
    水平越界
    垂直越界
    敏感信息
     
    mq消息
    1.发送的mq消息内容是否正确
    2.消费者是否成功
    3.重复消费的幂等
    4.消息无序
    5.消息的积压
     
    缓存
    缓存的更新时机有哪些(task定时更新、MQ消息推送、业务操作触发、手动触发后门接口、重启应用加载等),是否存在未更新缓存时出现脏数据
    缓存数据是否正确
    缓存是否生效
    缓存有效和失效时,业务是否正常
    缓存的失效时间
    缓存被击穿后的处理
    内存缓存多部署机器的数据同步
    缓存容量
    缓存的命中率
     
     
    性能
    1.正常的性能测试
    2.分析:从业务量估算接口的调用次数,通过上线前监控得到的接口访问次数、时间、服务器负载,分析本次上线增加的调用量是否有性能问题
     
    定时任务
    测试点无需过多阐述
    需要考虑的点:
    1.执行时间
    2.被打断后,业务是否允许
     
     
    六 上线阶段
     
    过程中一般是开发观察日志、QA关注监控和业务数据
     
    上线阶段一般考虑的点:
     
    1.ng
    2.sql(确保跟测试环境一致)
    3.db redis 申请或者执行
    4.洗数据脚本
    5.topic申请
    6.菜单/权限等配置
    7.收权限 周知相关人等
    8.接口或者机器白名单
    9.机器权限 发布权限等
    10.btag检查
    11.模块发布步骤
    12.验证步骤
    13.回滚步骤
     
     
    七 运营阶段
     
    1.核心监控和报警(新上线业务 数据稳定后检查报警是否合理添加阈值)
    2.日志、功能巡检或者邮件报警
    3.问题反馈渠道
    4.业务数据变化
     
     

  • 相关阅读:
    点击按钮,回到页面顶部的5种写法
    node知识积累
    Python3基础 str ljust-rjust-center 左、右对齐 居中
    Python3基础 str : 对字符串进行切片
    Python3基础 str : 字符串的逆序
    Python3基础 str __add__ 拼接,原字符串不变
    Python3基础 运算 加减乘除、取余数
    Python3基础 只有int类型,没有long类型
    Python3基础 complex 声明复数
    Python3基础 complex real imag __abs__ 取复数的实部 虚部 模
  • 原文地址:https://www.cnblogs.com/zhangxue521/p/10690486.html
Copyright © 2011-2022 走看看