美文网首页
测试开发笔记一(测试流程与理论)

测试开发笔记一(测试流程与理论)

作者: 提摩太_e9ec | 来源:发表于2020-03-11 12:10 被阅读0次

01 | 软件开发流程与项目管理


软件开发步骤

  • 需求分析
  • 概要设计:描述系统的处理流程、组织结构、模块划分、功能分配、接口设计、运行设计、数据接口设计、异常处理设计,为详细设计提供基础
  • 详细设计:描述具体模块的主要算法、数据结构、类的层次结构和调用关系、说明每个模块或子程序的设计考虑如何
  • 编码:理想项目中,编码时间应占用整个研发时间的三分之一左右,不要超过二分之一
  • 测试
  • 软件交付:安装手册、设计指南、测试报告等
  • 验收
  • 维护:监控软件运行的情况

软件开发流程演变

传统瀑布模型>>敏捷开发模型>>DevOps开发模型

敏捷开发模型(Scrum)

产品BACKLOG:按照商业价值排序的需求列表,体现形式为用户故事

SPRINT计划会议:经讨论、分析、估算产出SPRINTBACKLOG,即任务列表

3个角色:产品负责人(Product Owner)、Scrum Master、开发团队

3个工件:产品Backlog、SpringBacklog、产品增量

5个事件:Sprint(迭代周期,包含后面4个事件)、Sprint计划会议、每日站会、Sprint评审会议、Sprint计划会议

5个价值:承若(愿意对目标作出承诺)、专注(把你的心思和能力用到你承诺的工作上去)、开放(项目中的一切开放给每个人看)、尊重(每个人都有他独特的背景和经验)、勇气(有勇气作出承诺,履行承诺、接受别人的尊重)

DevOps开发模型

重视开发人员(Dev)和运维(Ops)之间沟通合作。通过自动化“软件交付”和“架构变更”的流程,使得构建、测试、发布软件能够更加快捷、频繁和可靠。

持续开发:用到的工具有jira、git/svn、Ant/Maven/Gradle

持续测试:用到的工具有Selenium、Appium、Pytest、TestNG、Docker

持续集成(Continuous integration,缩写为CI):新功能代码与现有代码集成的阶段。每次集成都通过自动化的构建(编译、发布、自动化测试),根据测试结果确定新代码和原有代码能否正确集成在一起。

持续部署(Continuous delivery,缩写为CD):将代码部署到生产环境。让软件的构建、测试、发布更快及更频繁,减少软件开发的成本与时间。

持续监控:监控软件的性能来提高软件的质量,工具有ELK Stack。

02 | 测试流程体系


单元测试>>集成测试>>冒烟测试>>系统测试>>验收测试

单元测试(开发人员)

  • 模块接口测试:验证所测模块参数的个数、属性、顺序
  • 局部数据结构测试:保证临时存储在模块内的数据在程序执行中完整、正确
  • 路径测试:测试模块中重要的执行路径
  • 错误处理测试
  • 边界测试

集成测试(开发人员)

软件系统集成过程中所进行的测试,目的是模块间的接口是否正确。

  • 验证穿越各模块接口的数据是否丢失
  • 验证各模块组织起来后能否达到预期的功能
  • 验证一个模块的功能是否对另一个模块的功能产生不利影响
  • 验证全局的数据结构是否有问题
  • 验证单个模块的误差积累起来是否会放大

冒烟测试(测试人员)

对软件基本功能快速验证的策略

系统测试(测试人员)

  • 功能测试
  • 性能测试
  • 安全测试
  • 兼容测试

验收测试(用户/需求方)

  • 验证功能是否正确
  • 安全可靠性
  • 易用性
  • 兼容性
  • 埃尔法测试(内部测试)
  • 贝塔测试(公测)

软件测试模型

  • V模型


    image.png
  • W模型(测试贯穿整个研发周期,测试范围不局限于软件程序,还包括需求、UI)


    image.png
  • H模型(要求比较高,很少用)


    image.png

系统测试工作流程

用例评审:需两轮,第1轮是组内评审,第2轮是产品与研发共同评审


image.png

bug管理流程


image.png

测试左移

往测试之前的开发阶段移

质量保障手段:

  • 代码评审:同行评审,偏人工
  • 代码审计:发现程序错误、安全漏洞、违反编码规范,偏自动化
  • 单元测试
  • 自动化冒烟测试:测试人员为开发人员提供自动化测试脚本
  • 研发自测:测试人员为开发人员提供冒烟用例

测试右移

往发布之后移

线上监控:

  • 闭环的线上问题反馈-检查-解决-更新流程
  • 更便捷的日志查看、回传服务
  • 丰富有效的log,便于问题的快速定位
  • 丰富的监控指标(如业务异常点指标)
  • 业务监控(如短信发送)
  • 关键指标每日监控(服务器指标)
  • 生产数据监控(报警)

03 | 测试技术体系


接口测试内容

  • 业务逻辑功能:正常场景、异常场景
  • 边界值分析测试:业务规则边界分析、输入输出参数边界分析
  • 参数组合测试
  • 异常情况测试:重复提交、并发测试、事物测试、分布式测试、环境测试
  • 性能测试:响应时间、吞吐量、并发数、服务器资源使用率
  • 安全测试:敏感信息是否加密、SQL注入

04 | 常用测试平台


建议用例和bug管理用同一个平台

中国80%的公司用Jira,其他20%的公司用redmine、禅道等,腾讯的TAPD也不错,我们公司用的就是TAPD。

05 | 黑盒测试方法


黑盒测试方法

  • 等价类划分法
  • 边界值分析法
  • 错误推测法:基于经验和直觉推测有可能存在的错误,如输入空格、0
  • 因果图法(很少用)
  • 判定表驱动法:适合于检查程序输入条件的各种组合情况
  • 决策树
  • 探索式测试

06 |白盒测试方法


代码覆盖率常见概念

  • 语句覆盖:每行代码都要覆盖至少一次
  • 判定覆盖:判定表达式的真假至少覆盖一次
  • 判定/条件覆盖:判定与条件都必须覆盖
  • 条件组合覆盖:判定表达式中的所有条件组合都需要覆盖
  • 分支覆盖:控制流中的每条边都要被覆盖一次
  • 路径覆盖:所有的路径都要尽量覆盖
  • 指令覆盖:一行代码会被编译为多条指令,尽可能的覆盖所有指令
  • 方法覆盖:每个方法至少要被覆盖一次
  • 类覆盖:每个类至少被覆盖一次

覆盖率统计的工具

  • emma
  • cobertura
  • jacoco:java最流行的覆盖率统计工具

流程覆盖

...

精准化测试

  • 代码调用链与黑盒测试用例的关联
  • 根据代码变更自动分析影响范围
  • 黑盒测试过程中借助代码流程覆盖数据知道探索式测试
  • 利用线上数据推导有效测试用例
  • 代码流程分析与覆盖率统计

07 | 测试经典书籍


  • 《全程软件测试》
  • 《探索式软件测试》
  • 《探索式测试》
  • 《google测试之道》
  • 《持续交付1.0》《持续交付2.0》
  • 《不测的秘密》

08 | 实战1


质量保证工作实施的三大阶段

  • 测试左移:研发阶段的质量保证
  • 测试:测试阶段的测试流程
  • 测试右移:发布后的质量监控

app交付策略

  • 内部交付
    1.Jenkins自动打包
    2.提供内部网站下载入口
  • 灰度交付
    1.使用fir.im bugly testflight 服务
  • 正式发布
    1.Android:渠道包打包推送
    2.IOS:上传app store

常见后端发布机制

不同的环境对应不同的代码分支

  • 代码编译和发包构建
    1.后端打包 mvn rpm docker
    2.移动端打包 gradle cocospod
  • 环境构建
    1.docker等容器技术
    2.Jenkins等自动构建和部署平台
  • 测试推送
    1.后端升级自动触发接口测试
    2.测试结果自动推送运维平台决策

建立测试准入机制

代码合并到测试分支,打tag时,持续集成根据打的tag自动打包并自动化测试

一般两周发布一个版本,测试时间通常只有3天,时间很紧张,故新功能我们靠人工解决,老功能靠自动化解决

  • 建立测试的准入机制
    1.自动对研发、测试分支进行打包
    2.自动对研发和测试分支进行冒烟测试
    3.打回 or 接受
  • 建立版本管理机制
    1.版本号的使用规范 三位+四位
    2.根据版本号和commit定位和对比代码
    3.对每个版本的变更自动采集提交记录

什么时候编写自动化测试用例呢?

若提测前能够接触到研发中版本,可以在提测前编写自动化测试用例;若接触不到,后期补上也可以,用作回归测试

09 | 实战2


测试前沟通与分析

  • 业务知识梳理
    1.业务架构:业务模块之间的关系
    2.技术架构:使用的技术栈(语言、框架、数据库、通讯协议等)
    3.组织架构:协作团队的组织关系
    4.数据架构:数据的关联关系(如用户有多少属性)
  • 测试架构
    1.业务架构:业务架构与流程图分析
    2.测试活动管理:测试用例管理平台、测试执行分析、bug管理平台、测试报告与测试分析图表
  • 测试分析工具
    1.vscode + plantuml;https://plantuml.com/zh/;时序图(重要)、用例图、活动图(最重要)、组件图
    2.思维导图:思维导图可以很好的覆盖功能,但无法很好的覆盖流程时序

测试计划

以邮件或wiki方式通知相关人

1.项目概述


对该项目业务需求做简要描述,项目的主要功能及实现方式,项目名称、版本、背景

2.测试目标


对项目的业务需求做简要描述(如:要达到的功能/性能的概述,功能、性能、稳定性和进度上需要满足的要求)

3.测试范围和重点


以项目的角度分析测试范围和重点

4.测试策略


对于每种测试,制定测试策略时都需要考虑思路、方法、工具、技术等。
对于不能测试的功能点需列明,是否有替代的解决方案(比如开发自测、产品或服务人员协助测试)

4.1功能测试

功能测试策略。

4.2性能测试

性能测试策略。

4.3自动化测试

自动化测试策略,包含测试工具开发。

5.项目里程碑


任务 开始时间 结束时间
需求了解
UC评审
设计评审
测试用例设计
TC评审
自动化开发/测试工具开发
冒烟测试
功能测试
性能测试
第一轮回归测试
第二轮回归测试
预发布验证
发布

6.测试资源


6.1人力资源

列出此项目的测试参与人员及角色

6.2环境资源

1.列出此项目所涉及到的测试环境,包括测试机名名称及用途
2.测试环境部署方案:如果项目涉及环境多且复杂,有需要特殊说明的内容。如环境统一更新时间,部署顺序,注意事项等

7.风险列表


序号 风险描述 影响范围 风险系数 预防方案 备注
1 高/中/低

测试用例管理

  • 搭建jira,在dockerhub上搜索jira,两条命令就能搭建
  • 在jira上配置用例与bug的状态及工作流并关联

10 | 实战3


  • 用思维导图梳理测试需求的注意事项:
    1.部分功能可用接口mock辅助测试
    2.注意测试的范围,不要掺杂其他功能的测试,导致测试重点偏离
    3.思维导图可通过编程的方式,自动生成用例和流程图
    4.不要在case中设计大量针对于输入框的异常用例,如大量的特殊字符,只需一两种异常情况即可;偏离业务流程、正常用户不会遇到的场景用例尽量少设计
    5.不要按页面划分模块,要按功能划分模块
    6.文字描述不要太多

  • jira配置
    1.问题类型、工作流、界面、字段的配置
    2.基于jira强大的自定义功能,我们可以搭建bug流程管理、用例流程管理、上线流程管理

相关文章

  • 测试开发笔记一(测试流程与理论)

    01 | 软件开发流程与项目管理 软件开发步骤 需求分析 概要设计:描述系统的处理流程、组织结构、模块划分、功能分...

  • 04 测试理论以及职场尝试

    一、测试理论(软件测试硬技能) 1.一本书籍:探索性测试,google的软件测试之道等 2.测试流程:开发模式瀑布...

  • 面试2

    A、测试基础 1、测试理论及流程(测试类型及优缺点,流程及细节) 2、测试思想(测试设计方法等) 3、测试场景设计...

  • (一)测试流程与理论

    1.软件开发流程与项目管理 软件开发流程的演变 传统瀑布模型->敏捷开发模型->DevOps开发模型 瀑布模型 瀑...

  • 测试流程---TP01(20170607)

    目前所在公司的测试流程: 背景: 创业的小公司,目前50人 整体的测试流程: 理论上:产品组织需求评审会,开发推进...

  • 为什么准入在测试环境和为什么要做准入

    一般的流程是测试环境与开发环境一致,开发员在测试环境执行准入用例,扫除无法测试的问题,然后将代码与开发环境一致,测...

  • 移动APP测试流程及测试点

    移动APP测试流程及测试点 APP测试基本流程 1.1.测试周期 测试周期可按项目的开发周期来确定测试时间,一般...

  • TDD前端测试驱动相关知识

    一.与传统开发的区别 正常的开发流程:先开发界面或类,然后在进行编码测试 即:项目代码开发 -> 编写测试用例 ...

  • APP测试基本流程及测试点总结

    标签:APP测试 1 测试流程 1.1 流程图 1.2 测试周期 测试周期可按项目的开发周期来确定测试时间,一般测...

  • 性能测试技术要求

    测试工具 Jmeter loadRunner 测试基础知识 性能测试理论 自动化测试理论 测试开发 服务器性能诊断...

网友评论

      本文标题:测试开发笔记一(测试流程与理论)

      本文链接:https://www.haomeiwen.com/subject/dcmkdhtx.html