概述

本文用于规范测试人员日常测试工作,引导测试工作有计划、有要求、有保证、高效率的开展。

整体流程规范

在每个项目的测试中,测试人员参与的测试活动主要有以下部分,针对每个测试活动会制定具体的规范要求:
全测试流程.png

需求阶段

目的让测试人员熟悉需求,形成和开发、产品统一的业务理解,检查需求是否完善,遗漏,减少测试和开发后期返工。

解读需求、参与需求评审

  • 如果产品提前发出需求和产品原型,测试需要提前解读,并记录疑问点
  • 了解需求背后的业务逻辑
  • 需求评审过程,对需求理解外,还需要尽可能了解该需求对旧功能的影响,以及上下游系统的影响
  • 检查需求是否完善,遗漏,并解决所有对需求的疑问

拆分测试任务、测试计划

  • 根据需求和开发已拆分的story,在LUCP上去拆分测试任务
  • 在LUCP上为每个任务设定一个测试计划,测试人员、测试的开始、结束时间

开发阶段

开发阶段,测试主要围绕测试用例活动,新增、修改用例,进行用例评审和开发共同确定冒烟测试用例。

编写测试用例

  • 可采用Xmind工具或Excel文档编写测试用例
  • 优先编写P0冒烟测试用例,添加标识,并在开发联调之前给到开发做自测参考
  • 基于用户使用场景进行用例设计,避免直接沿用需求、设计的思路
  • 用例尽可能覆盖所有用户使用场景及异常情况
  • 用例编写以把测试点描述清楚为准,不要求详细操作步骤
  • 尽可能复用公共测试用例

用例评审、确定开发自测用例

  • 组织开发和产品参会
  • 详细介绍每个需求点对应的测试用例
  • 讨论并解决用例疑问点
  • 标记用例遗漏点,并会后完善
  • 同开发一起确定需要开发自测的用例,并会后整理成《PMO项管文档》提供给开发

开发自测阶段

主要检查开发是否进行自测,是否达到项目提测标准。

开发自测验收

  • 检查相应《PMO项管文档》

测试环境阶段

检验系统功能是否达到预期和是否存在潜在风险等。

冒烟测试

  • 执行P0冒烟测试用例,快速检查项目是否达到提测标准

    执行测试

  • 如果已经完成自动化,则手动触发脚本校验旧功能是否正常

  • 根据用例逐条对系统进行校验
  • 发现问题按规范提交到LUCP
  • 跟踪问题
  • 如果时间允许,做更多的探索性测试(如安全测试等)
  • 如果项目需要做性能压测,安排性能压测
  • 如果项目需要做异常测试和稳定性测试,安排对应异常测试和稳定性测试

    每日日报、风险评估

  • 每天结束测试时,群发测试进度和是否存在什么风险

    测试日报格式:
    【XX系统V3.1版本测试日报】
    测试进度:65%;
    Bug分析:总bug数61个,待解决bug数3个,待关闭Bug数1个;
    风险问题:需求变更,但不影响上线时间xxxxxxx。

    新功能回归

  • 项目趋于稳定,并未再发现严重bug,对新功能进行整体回归

预发布环境

贴近生产环境的测试,属于集成后的测试,主要校验新功能完善并不影响旧功能,符合上线标准。

冒烟测试

  • 执行P0冒烟测试用例,快速检查集成后的项目稳定

    Bug和新功能回归

  • 检查测试环境发现的bug,再预生产环境没有再次出现

  • 检查P0、P1级别用例,在pre环境稳定可用

    旧功能回归

  • 如果已经实现自动化,则运行自动化脚本校验集成后旧功能未受到影响

  • 未实现自动化则根据回归用例,逐条回归旧功能

上线阶段

检查生产环境新功能正常,并校验业务核心下单功能正常。

新功能验证

  • 执行P0级别测试用例,校验系统上线无误

    下单验证

  • 校验下单流程,确定下单流程不受影响

验收阶段

通过监控查看生产环境真实流量,系统运行状况是否稳定。

次日值班

  • 提前填写版本值班人员:姓名+手机号
  • 针对前一天上线项目,安排对应测试早上值班观察zeus大盘

总结阶段

通过测试总结对测试工作进行反思改进,并且对测试过程中的经验进行固化共享,提高团队的整体经验技能,并维护好回归用例和自动化代码。

业务知识总结

  • 对于要求进行测试总结的项目,需要出具书面的业务总结
  • 总结内容需要包括业务介绍、典型流程、关键数据、操作指导等方面
  • 业务总结内容合入到wiki知识库中

    版本测试回顾总结

  • 可选,对于项目过程中做得好的和做的不好的地方进行总结,固化经验和提出改进计划和建议,落实对应人跟踪

  • 统计该迭代整体测试情况(bug情况,对应开发bug量等)

    测试用例和自动化代码完善

  • 对测试用例基线库进行迭代更新

  • 如果有做自动化,则实现新增P0用例的自动化脚本

用例编写规范

测试用例编写的质量直接影响到整个项目测试的质量,同样测试用例编写的水平、对需求的覆盖率等,也可以很大层面上了解到一个测试员的整体测试水平。测试用例能更好的保证测试人员能有效、有序、合理的对系统进行全面的测试。

整体规范要求

以Xmind编写的测试用例为例子,这个跟excel模板编写的测试用例会有所差异。

  • 测试用例的编写需要严格根据需求功能进行,要求100%覆盖需求功能点
  • 使用统一的用例编写工具平台,暂定Xmind
  • 一条完整用例需要如下内容
    • 功能模块或页面模块
    • 用例级别
      • P0:最高级别,涵盖系统核心流程的用例,用例数控制在5%左右
      • P1:涵盖系统主要功能,用例数控制在5%-10%左右
      • P2:涵盖所有功能点
      • P3:通常该级别用例只需要执行一遍,一旦验证通过后续除非需求变动,否则不需要再次验证。例如UI样式,文本内容,字体大小颜色等。
    • 前提条件
    • 测试用户场景、操作步骤
    • 预期结果
    • 实际结果(可有可无)
    • 通过Xmind标识,标注测试是否执行通过
    • 备注(可有可无)
  • 用例迭代维护,每个迭代后对用例进行归档,下个迭代拷贝一份,基于拷贝后的做增删改
  • 尽可能复用公共用例

    用例设计方法

  • 等价类划分

  • 边界值判定
  • 错误推送发
  • 场景分析法
  • 等等

    规范例子

    image.png

Bug规范

规范的bug管理有助于测试跟踪bug,统计bug和迭代后期总结,同时规范的bug内容编写有助于开发了解问题,定位问题。

Bug 管理规范

  • Bug统一提交到LUCP测试管理模块
  • Bug提交需要关联具体Story

Bug 内容规范

BUG 必须包含如下内容:

  • 选择一个合适的产生缺陷的原因
    • 环境、配置问题
    • 开发代码问题
    • 需求问题
    • 数据问题
    • 建议性问题
  • Bug优先级
    • 紧急:通常指阻碍测试的bug,很大层面上对应P0级别用例或者线上问题
    • 严重:通常指功能未能实现,很大层面上对应P1级别用例
    • 一般:通常指功能虽实现,但可能存在交互等不够友好,一般能对应上P2级别用例
    • 轻微:不影响用户使用,对应上P3级别用例
  • 环境,如果是APP还得写明是哪一端IOS还是Android
  • 指定需要来解决Bug的经办人
  • Bug提交人
  • 期望bug修复日期(可有可无)
  • Bug主题,简单描述Bug
  • 前置条件
  • 操作步骤
  • 实际结果
  • 预期结果
  • 附件(图、log日志文件、录屏等均可)

Bug 生命周期规范

image.png


服务端测试规范

API\RPC 自动测试规范

技术选型

  • 编程语言选择跟开发一样 - Java,便于复用开发代码
  • 相应框架尽可能通用,并可复用:

    • Rest Assured - HTTP\HTTPS 请求发起
    • udubbo - 发起dubbo协议RPC调用
    • Mybatis、Mapper - 数据库操作
    • fastjson、JsonPath - Json解析以及字符串、map、对象等互相转换
    • TestNG - 管理整个用例行为
    • slf4j、logback- Log 打印
    • Lombok - 简化POJO代码量
    • Assured2 - 报告生成,并尽可能报告详细记录每个请求操作步骤和结果
    • Jenkins - 持续集成,定时构建等

      编码规范

  • Java 编码规范遵循公司规范,也可以参考《阿里巴巴Java开发手册》

    代码管理规范

  • 统一放公司gitlab

    脚本用例管理规范

  • 按包名管理项目和模块

  • 每个API\RPC一个class文件,并以API\RPC名称+Test 为结尾命名
  • 每个class文件,编写对应API用例
  • 每个用例:
    • 用 description 进行简单描述
    • 用 Severity 注解进行用例级别划分
  • 用例入参尽可能动态化,避免环境变更等失效
  • 用例结果严格按功能测试验证为标准编写,杜绝状态200就算通过
  • 等价类用例,尽可能采用数据驱动方式组织脚本用例
  • 大数据量入参数据,尽可能做到数据与脚本逻辑分离

    使用场景

  • 开发提测时,快速测试黄金流程运行正常

  • 测试或预发布环境回归测试阶段,快速确认旧功能是否正常

    规范例子

    image.png

性能测试规范

目前绝大多数应用都是基于网络的分布式应用,我们无法知道用户数量,用户场景的不确定性,导致系统测试时,不仅仅是功能,业务逻辑,接口测试,还要测试系统性能。一个用户没问题,但是用户一旦多了就可能出现各种各样的问题,所以需要进行系统性能测试。

压测目的

  • 能够找到系统/模块的极限吞吐量
  • 能活获取影响极限吞吐量的核心因素和关系,指导模块或者系统优化

    测试环境

    pre环境、个别接口放线上环境压测

    压测工具、平台

    暂用Jmeter,后期统一使用全链路压测平台

    压测内容

    所有新增和所有修改的API和RPC接口

    压测指标

    并发数:根据产品或者开发给出的API\RPC调用频率或每日调用量级,计算出接口大概的并发数。
    其余性能指标,如响应时间、吞吐量、事务数、硬件指标等参考性能保障组给定的API和RPC压测指标。

异常、稳定性测试

检查系统如果某块处于某种异常情况下,其余模块是否能正常、稳定运行。

异常场景

  • 服务机器异常:机器宕机、断电、磁盘满、CPU抢占、内存错乱满等
  • 网络异常:网络都懂、丢包、超时、网卡满、DNS故障、断网等
  • 应用服务异常:进程被杀、启动异常、心跳异常、环境配置错误、包错误或损坏、配置错误等
  • 数据库异常:连接池满、数据库主备延迟、数据库宕机、数据同步错误、延迟等
  • 等等

安全测试

检查系统是否存在业务漏洞,防止常见系统漏洞,并通过一些安全软件扫描系统潜在的安全问题。

安全检查项

  • 注入
    • 使用安全的API,避免使用解释起
    • 对输入的特殊字符进行转义处理
    • 权限最小化,减轻被注入的影响
  • 会话管理
    • 使用内置会话管理功能
    • 使用单一的入口点
    • 登录开始就使用ssl保护网页
  • 跨站脚本攻击
  • 不安全的直接对象引用
  • 伪造跨站请求
  • 完全误配置
    • 统一、自动化的部署,减少配置不一
  • 敏感信息加密
    • 用户信息等存放和传输等进行加密
  • 业务安全

    • 业务间是否存在业务漏洞

      工具、平台

  • Appscan

  • Burpsuite
  • fiddler\charles
  • NGS
  • 等等

APP测试规范

API自动化测试规范

同服务端测试规范

性能测试规范

检查APP的整体性能,避免应用耗资源过大,保障APP使用的流畅性等。

性能测试点

  • 相应时间
    • 冷热启动:冷、热启动APP的时间
  • 内存
    • 后台运行下消耗最小内存
    • 中度使用下内存消耗
    • 重度使用下(mokey来测试),检查是否有内存泄露
  • CPU
    • 后台运行下,应用消耗的CPU
    • 中度规格转态下应用对CPU的消耗
    • 满规格下应用CPU的消耗
    • 应用CPU峰值情况
  • 弱网络
    • 模拟各种网络下的APP反应情况
  • GPU
    • 界面绘制情况
    • 屏幕滑动帧速率
    • 屏幕滑动平滑度
  • 功耗
    • 手机安装APP前后功耗是否明显差异
    • 常用场景下,进入待机,电量消耗是否正常范围内
    • 长时间使用APP,是否出现异常耗电现象
  • 耗流量
    • APP首次启动流量值
    • 后台连续运行若干小时流量值
    • APP中负荷的流量值
    • APP高负荷下的流量峰值
  • 等等

测试工具、平台

各种云测平台和Android ADB工具包等等

性能指标

  • 以往数据对比
  • 竞品数据对比

异常、稳定性测试

异常场景

  • API 调用异常
  • 网络异常
  • 设备硬件异常
  • 设备低电量
  • 等等

    兼容性

    统计APP TOP20机型,针对TOP20做兼容测试。

    兼容测试点

  • UI界面兼容

  • 系统版本兼容
  • 分辨率兼容

隐私合规、安全

  • 检查APP是否存在隐私不合规问题
  • 扫描包是否存在安全漏洞
  • 检查包是否能反编译
  • 等等