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

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流程管理、用例流程管理、上线流程管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容