测试规划

规划 #

蓝图
    规范 & 稳定
        用例规范,测试方案规范,自动化代码规范,工单处理标准,提测准人/出标准,Bug规范
        线上异常监控,PPE环境监控,发布接管,线上问题对接,线上告警,自动巡检
    内容
        基础:功能测试,兼容性测试,性能测试,数据治理,安全测试,线上问题,环境治理,故障演练
        提效:API自动化,框架&测试代码自动生成,自动部署&持续集成,数据工厂,UI自动化,Doom引流
        赋能:测试用例开放,代码质量度量,story_QA,测试工具&平台开放,自由组装case场景,精准推荐
        探索:探索性测试,契约测试,AI技术赋能测试
    度量
        线上:发布次数,紧急发布/回滚,工单预警数,生产冒烟数,线上工单数,复盘数
        线下:代码质量数据,缺陷修复效率,Bug打回数据,自动化通过率,项目进度度量,Story owner度量

基础 #

功能测试
    业务梳理:业务结构图,服务调用图,数据流,特殊逻辑时序图
    用例设计:模板化,框架化
安全测试
    清扫漏洞: 敏感信息,接口安全问题
    工具:BurpSuite, 自研代码安全扫描工具
    常态化: 下沉QA流程,研发流程加入
兼容性测试
    包括:App,H5,操作系统,Web浏览器,API
线上问题治理
    工具:工单系统
    线上反馈线上化:钉钉机器人接入,Bug自动转移
    数据沉淀及可视化
    FAQ
        运营自查:->QA->开发产品
        问题解决
            功能缺陷类: 开发解决->QA->运营
            答疑问:加入自查文档
            功能优化类:指派给产品
    问题规约
        宣导:线上群公告,线下组织文档操作和业务培训
        问题分类和定级
        1/5/30原则:1分钟感知,5分钟响应,30分钟解决
        FAQ持续转化输出

提效 #

API测试
    工具: Jenkins+Newman, JMeter, 
    思想: 模块化,测试库,数据驱动,关键字驱动,BDD
    框架
        Jenkins+Python(UnitTest/Pytest, Requests, HTMLTestRunner/Allure) 
        Jenkins+Java+Maven+JUnit/TestNG+HttpClient/RestAssured+ExtentReport/Allure
    框架思想
        框架分层解耦: 用例层,组件/业务层,API层,公共基础层
        数据分类处理: 公共数据,隔离数据,运行时数据
        多协议封装: 接口协议,接口定义及调用
        多环境处理: 发布流,框架管理(切换、可维护性可扩展性)
    结果自动验证
        框架扩展: Pytest
        对比策略
        数据库设计: 自动化用例nodeid,请求URL,运行环境,用例路径,request_id,请求体,cURL,Response
        对比引擎设计:JSONPath匹配对比策略
    API覆盖率统计
        分类
            白盒覆盖率: 代码
            灰盒覆盖率:接口
            黑盒覆盖率:需求
        实践
            分子:结合日志,生成RequestID扩展py.test
            分母:代码,文档系统
自动生成框架
    底层代码生成
        核心层
        逻辑封装层: 自动获取接口信息,建立模板机制,数据解析器,建立自动触发机制
        用例层: 用例自动转化代码(XMind SDK)
    冒烟代码生成
        步骤: 获取接口信息,拼装请求并验证
场景化改造
    Journey模式:用户角色为中心
    方案:梳理场景需求,实例化故事场景,转化为自动化验收代码
    框架设计: Actor
        复用基础层、API层: 公共基础层引入Actor为中心的设计模式
        组件层对基础层Actor写业务测试逻辑代码: 主要调用API层
        用例层不变
FSM场景化代码,动态组合
    FSM生成自动化用例
    步骤
        业务建模
        动态绘制流程图: Graphviz
        构建FSM转化器
            解析器: 节点函数,解析多叉树与节点内容
        用例组合

赋能 #

数据工厂
    手工化
    脚本化: RESTful API转向SOA API
    平台化
    服务化
持续集成
    代码零库存管理: 代码尽早提交,feature分支尽早集成,功能尽早测试,代码尽早得到反馈
    工具:Doom, Sonar
    节点
        本地IDE: sonarLint, findbugs, P3C, checkstyle, unit test
        提交: fundbugs, P3C,checkstyle,unit test, 集成测试,安全检查,集成测试覆盖率,代码构建
        环境部署: 集成测试,全量代码质量检查
        pull rquest: 新增代码质量预览,测试覆盖率
        PRE: 验收测试
        PROD: 冒烟检查
    自动化
        feature分支合入时:接口自动化用例,增量代码扫描用例,流量回放用例
        环境部署:全量API自动化用例测试和流量引流测试
代码质量
    属性:清晰度,可维护性,注释,重构,充分测试,可扩展,效率
    内容:代码规范,持续集成,度量
    建设步骤:标准化,数据化,流程化
Story QA
    项目经理
        作用:培养大家的全局视野,锻炼大家的软性能力
        职责:记录技术方案,站会,汇报,验收,把控风险,协调,跟踪
    度量体系: 各维度打分
    工具化制度化
        奖惩:级别,措施

探索 #

流量回放
    工具:jvm-sandbox-repeater, RDebug, goreplay
    mock处理: DefaultMockStrategy, Parameter-MatchMockStrategy
契约测试
    微服务测试模式: 单元测试,接口测试,契约测试,集成测试
    特性:一致性,测试前移,覆盖API的各种调用场景
    实施:服务消费者,服务提供者,契约文件,契约验证
    相对mock有期望请求响应的契约内容
    框架:Pack,Srping Cloud Contract
探索性测试
    理念:边学习,边设计,边执行,持续优化
    全局探索性测试
        商业区: 核心特性
        娱乐区: 辅助功能
        旅馆区: 软件“休息”时要持续保持的功能
        历史区: 历史遗留功能,曾经经常出现的问题
        旅游区: 老用户不太使用,新用户着重使用
        破旧区: 对软件破坏来测试稳定性
    流程
        反馈收集,持续监控和跟踪
        客户/项目需求
        技术/测试设计
        技术/测试用例/代码评审
        单元/集成/系统测试
        上线
    思维
        策略模型: 质量标准、项目环境、产品元素 -> 测试技术 -> 观察到的产品质量
        基于测程的测试管理

管理 #

团队管理
    团队画像
        定格局
        团队文化:专业,高效,靠谱
        认识自我
        向心力
    技术分享
        方案
            课题制度:每人一领域
            学习形式:阶段性、周期性
            学习周期:每周以小组形式,一小组2人
            落地推行:有demo
    个人发展
        方向:抓住当下,关注自身本体,技术体系构建(横向、纵向)
        工作习惯:内容合理分配,多关注业界的思路及方案,总结反思
项目管理
    难点:掌控项目进度,合理协调资源,保证整体线上质量
    三部曲
        序幕
            仪式感:同步背景,熟悉相关人员,明确关键时间节点,理清各自边界及上下游依赖
            粮草:排期,数据准备及测试用例,环境资源 ,工具资源
        高潮
            把控进展:定期站会,同步进度风险预警,制定原则
            集成测试:重点跟进核心链路,小黑屋即时响应,每天测试报告
            线上质量:明确上线顺序、灰度、回滚策略,小规模集成测试,线上压测及演练
        终章
            线上灰度跟进
            项目总结
            文档沉淀
            沟通一致
            风险评估和预案
            技术改动
            工具化自动化
            用人不疑疑人不用

纲领 #

代码门禁
    公共分支只能pull request,执行检验
        编译
        单元测试
        接口级别功能测试
        静态代码扫描
        人员检查
    优化门禁工具
        缩短时间
            10分钟内
            mariadb4j
            精准测试
        提高稳定性
            90%成功率
    更多用途
        Bug Jail不允许开发名单
        组件升级检查
测试的本质: 反馈
    测试演进
        平台建设
            自动化回归、造数
        质量监控
            线上监控报警、资损演练、红蓝对抗、线上引流
            基于风险的测试全方位深入
            智能化提速: 判断测试范围、测试用例范围
            API生成测试框架和代码
            专项测试平台使测试结果 可持续沉淀
            可视化质量看板
        赋能
            测试工具全员可运行
    质量反馈
        代码门禁的结果: 代码是否可接受
        功能回归结果: 是否推进到预发布
        预发布和灰度验证结果: 是否上线
    反馈能力:缩短反馈时间,降低成本,提高可信度
缩短反馈弧
    方面
        反馈前置等待时间
        反馈本身耗时
    方法
        持续集成
提升稳定性
    高频:持续打包,发布,证书和密钥更新,容灾演练,缩短反馈弧,变主动验证为被动
    隔离 
        TiP(Testing in Production)
        用完即抛
        不自动重跑
提升有效性
    防止注水
    测试测试代码
    变异测试和Bug注入
提升充分性
    用例自动生成
    业务覆盖率
从测到不测
    防错: Poka-yoke
        第一时间校验输入值
        线上线下权限隔离
        视觉辨识度
        代码写错:易混淆的类和方法
        事情没按正确的方式做
    静态代码分析和Bug自动识别

大促场景 #

全链路压测
    全链路影子体系: 各中间件切流
    压测模型与施压能力
    常态化智能压测
全链路功能
    统一环境隔离:流量隔离,时间控制,预案开关推送
    全链路影子数据: 生成,使用
全民预演
预案开关:大促预案,日常预案
全链路预热: 系统预热,数据预热,预热场景编排
快速扩/缩容:水平,垂直
风险识别引擎压测

移动App场景 #

工具
    自动化工具
        云测平台
        框架
        用例生成
        数据Mock
    专项测试: 启动、崩溃、卡顿、发烫等
    稳定性测试: 智能化Monkey方案
        基于遗传算法
        基于用户操作
    兼容性测试
标准
线上保障
    监控
        监控方案:定义监控指标、监控方式、监控维度
        监控度量:版本趋势,版本对比,年度趋势,业务趋势
        告警分析
        异常监控
    性能分级与降级

大数据 #

测什么
    功能性验证
    数据更新的实时性
    数据请求响应的及时性
    算法的效果验证
    AI算法系统的线上稳定性
    工程效率方向
算法系统
工程系统
效果评估

AI系统 #

语音类
计算机视觉类

云计算 #

专有云质量定义
高可用
性能容量
热升级
用户场景测试

金融类 #

风险防控
资损风险防范
资损风险识别
资损风险应急
资损防控文化: 红蓝攻防,常态化演练

物流类 #

通用技术
仓储实操机器人
末端IoT设备
全球化物流骨干网

安全生产 #

资金安全
故障快恢
灰度发布
信息安全风险
突袭演练