网站优化可以做哪些优化竞价网站怎么做seo
目录:
- 软件测试基础概念 
- 软件测试:
 - 软件测试作用:
 - 软件缺陷:
 - 软件测试原则:
 - 软件测试对象:
 - 测试用例
 
 - 软件开发流程 
- 软件:
 - 软件生命周期:
 - 软件开发流程:
 - 瀑布模型:
 - 瀑布模型优缺点
 - 敏捷开发模型: 
- XP - 极限编程:
 - SCRUM:
 
 - DevOps:
 - DevOps 生命周期:
 - DevOps 对发布的影响
 - CI/CD
 - CD 与 DevOps 的关系
 
 - 测试流程体系 
- 软件测试模型: 
- V模型
 - W模型
 - H模型:
 
 - 软件测试工作流程: 
- 传统测试流程:
 - 系统测试流程:
 - Bug管理流程:
 
 - 测试左移和测试右移 
- 测试左移
 - 测试左移-质量保障手段(方法)
 - 测试右移
 - 测试右移-线上监控
 
 
 - 软件测试模型: 
 - 测试技术体系 
- 软件测试分类:
 - 黑盒测试:
 - 白盒测试:
 - 自动化分层测试体系
 - 单元测试
 - 接口测试:
 - 接口测试方法:
 - UI 测试:
 
 - 常用测试平台 
- 测试用例管理平台 
- JIRA 测试用例管理
 - Xray Test Management
 - RedMine 系统
 - TestLink
 
 - Bug 管理平台
 - 代码管理平台 
- GitLab
 
 - 持续集成管理平台 
- Jenkins 平台
 
 
 - 测试用例管理平台 
 - 流程管理平台 
- JIRA 管理平台
 - JIRA 中的基本概念
 - JIRA 管理测试用例流程
 - JIRA 管理 Bug 流程
 
 - 项目管理与跨部门沟通协作 
- 项目管理:
 - 需求阶段:
 - 设计阶段
 - 开发阶段:
 - 集成测试阶段
 - 系统测试阶段
 - 软件项目管理的方法
 - 跨部门沟通协作 - 与产品沟通
 - 跨部门沟通协作 - 与研发沟通
 - 跨部门沟通协作 - 上下游测试配合
 - 项目实例
 
 - 测试经典书籍拆分讲解 
- 全程软件测试
 - 探索式测试
 - Google测试之道
 - 持续交付
 - 不测的秘密
 
 
1.软件测试基础概念
软件测试:
- 通过手工或者工具对 “被测对象”进行测试
 - 验证实际结果与预期结果之间是否存在差异
 
软件测试作用:
- 通过测试工作可以发现并修复软件当中存在的缺陷,从而提高用户对产品的使用信心
 - 测试可以降低同类型产品开发遇到问题的风险
 
软件缺陷:
- 软件缺陷被测试工程师和开发工程师们称作 bug
 - 软件缺陷会导致软件不能正常运行,它的存在会在一定程度上导致软件不能满足用户的需求,甚至有可能破坏或泄漏用户的重要数据
 
软件测试原则:
- 测试显示缺陷的存在
 - 穷尽测试是不可能的
 - 测试尽早介入
 - 缺陷集群性(2/8原则)
 - 杀虫剂悖论
 - 测试活动依赖于测试内容
 - 没有错误是好是谬论
 
软件测试对象:
- 需求分析阶段:需求文档、接口文档
 - 编码实现阶段:源代码
 - 系统功能使用:软件程序
 
测试用例
- 为特定的目的而设计的一组测试输入、执行步骤和预期的结果,以便测试产品否满足某个特定需求的文档
 
2.软件开发流程
软件:
- 软件是与计算机系统操作有关的计算机程序、可能有的文档及数据。
 

软件生命周期:
- 定义问题
 - 软件开发
 - 软件维护
 
 
软件开发流程:
- 为了使软件开发的工作系统化并且可控制;
 - 需要采用合适的软件开发模型和开发过程管理所有的活动。
 

瀑布模型:
- 软件开发的各项活动严格按照线性方式进行。
 - 当前活动接受上一项活动的工作结果。
 - 当前活动的工作结果需要进行验证。
 
 
瀑布模型优缺点
- 优点: 
- 开发的各个阶段比较清晰。
 - 强调早期计划及需求调查。
 - 适合需求稳定的产品开发。
 
 - 缺点: 
- 早期的错误可能要等到开发后期的阶段才能发现。
 - 由于开发模型是线性的,增加了开发的风险。
 
 
敏捷开发模型:
- 适用于需求频繁变化和需要快速开发的场景。 
- XP
 - SCRUM
 
 
XP - 极限编程:

SCRUM:

敏捷模型总结
- 增量迭代
 - 小步快跑
 
DevOps:

DevOps 生命周期:
- 持续开发
 - 持续测试
 - 持续集成
 - 持续部署
 - 持续监控
 

DevOps 对发布的影响
- 减少变更范围
 - 加强发布协调
 - 自动化
 
CI/CD
- 持续集成(Continuous Integration,缩写为 CI): 
- 一种软件开发实践。
 - 团队开发成员每天可能会发生多次集成。
 - 每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证。
 - 根据测试结果确定新代码和原有代码能否正确地集成在一起。
 
 - 持续交付(Continuous Delivery,缩写为 CD) 
- 是一种软件工程手法。
 - 让软件产品的产出过程在一个短周期内完成。
 - 保证软件可以稳定、持续的保持在随时可以发布的状况。
 - 目标: 
- 让软件的构建、测试与发布变得更快以及更频繁。
 - 减少软件开发的成本与时间,减少风险。
 
 
 
CD 与 DevOps 的关系
- DevOps 的范围更广: 
- DevOps 是软件交付过程所涉及的多个团队之间的合作。
 - 并且将软件交付的过程自动化。
 
 - 持续交付是一种自动化交付的手段: 
- 关注点在于将不同的过程集中起来。
 - 并且更快、更频繁地执行这些过程。
 
 - 总结:DevOps 可以是持续交付下的一个产物,持续交付的成果直接汇入 DevOps 模型。
 
3.测试流程体系
软件测试模型:
V模型
- V模型是瀑布模型的一种改进
 - V模型标明了测试过程中的不同阶段
 

V模型的优缺点
优点
- 既有底层测试又有高层测试。
 - 将开发阶段清楚的表现出来,便于控制开发的过程
 
缺点
- 容易让人误解为测试是在开发完成之后的一个阶段。
 - 由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些bug可能不容易找到其根源,并且代码修改起来很困难。
 - 如果需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大。
 
W模型
- W模型明确表示出了测试与开发的并行关系
 - W模型中测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试
 
 
W模型的优缺点:
优点
- 将测试贯穿到整个软件的生命周期中,且除了代码要测试,需求、设计等都要测试。
 - 更早的介入到软件开发中,能尽早的发现缺陷进行修复
 - 测试与开发独立起来,并与开发并行。
 
缺点
- 无法支持迭代的开发模型
 - 对有些项目,开发过程中根本没有文档产生,故W模型无法使用。。对于需求和设计的测试技术要求很高,实践起来很困难。
 
H模型:
- 软件开发中需求、设计、编码等活动被分阶段执行、但是实践中,他们并不是完全串行的,它们之间更多时候是交叉进行的,更多的是迭代执行
 - 把测试活动完全独立出来,形成一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
 
 
优点
- 软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行。
 - 软件测试活动可以尽早准备、尽早执行,具有很强的灵活性
 
缺点
- 测试就绪点分析困难
 - 对于整个项目组的人员要求非常高
 
软件测试工作流程:
传统测试流程:

系统测试流程:

Bug管理流程:

测试左移和测试右移
测试左移
- 左移是往测试之前的开发阶段移
 - 测试团队在软件开发周期早期就开始介入。
 - 对代码进行测试
 - 从发现bug到预防bug
 
测试左移-质量保障手段(方法)
- 代码评审(code review)
 - 代码审计
 - 单元测试
 - 自动化冒烟测试。研发自测
 
测试右移
- 右移是往发布之后移。
 - 产品上线后进行线上监控。
 
测试右移-线上监控
- 闭环的线上问题反馈-检查-解决-更新流程
 - 更便捷的日志查看、回传服务
 - 丰富有效的log,便于问题的快速定位。
 - 丰富的监控指标(例如业务异常点指标)。
 - 业务监控(例如短信发送等)
 - 关键指标每日监控(服务器指标)。
 - 生产数据监控(警报)
 
4.测试技术体系
软件测试分类:

黑盒测试:
- 黑盒测试又称数据驱动测试。
 - 完全不考虑程序内部结构和内部特性。
 - 注重于测试软件的功能需求。
 - 只关心软件的输入数据和输出数据。
 
 白盒测试:
 
- 白盒测试研究产品内部的源代码和程序结构。
 - 单元测试就是白盒测试的一种。
 
自动化分层测试体系
- 70% 单元测试。
 - 20% 服务测试。
 - 10% 用户界面测试。
 
单元测试
- Java 
- JUnit
 - TestNG
 
 - Python 
- unittest
 - pytest
 
 

接口测试:
- 接口全称 Application Programming Interface,一般称作 API。
 - 接口测试是针对软件对外提供服务的接口的输入输出进行测试。 
- 检查接口参数传递的正确性。
 - 接口功能实现的正确性。
 - 输出结果的正确性。
 - 对各种异常情况的容错处理的完整性和合理性。
 
 
接口测试方法:
- Charles、Fiddler
 - postman
 - Jmeter
 - loadRunner
 - python:Requests、HttpRunner
 - Java:HttpClient、RestAssured
 
 
UI 测试:
- 手工方法:人工查看、操作。
 - 自动化方法: 
- Web:Selenium
 - App:Appium
 
 

5.常用测试平台
测试用例管理平台
- JIRA:推荐方案,定制性很强。
 - RedMine:推荐方案,开源,活跃,定制性很强。
 - TestLink:流行的测试用例管理平台,体验不太好。
 - 其他:Tapd、云效、禅道、GitLab、在线协作文档。
 - 无协作模式:Excel、思维导图。
 
JIRA 测试用例管理

Xray Test Management

RedMine 系统

TestLink

Bug 管理平台
- 通常与用例管理平台一致。
 - 测试用例、Bug 都可以使用 issue 表达。
 - 关联关系设定。
 - 测试用例与 Bug 的属性设定。
 
代码管理平台
- GitLab:可本地部署的 Git 代码管理平台,行业标准。
 - SubVersion:SVN 管理,已经过时。
 - GitHub:开源项目运作。
 - BitBucket:与 JIRA 同属一家公司 Altassian。
 
GitLab

持续集成管理平台
- Jenkins:持续集成与持续交付的主流平台。
 - GitLab Runner:GitLab 的持续交付方案。
 - GitHub Action:GitHub 的开源方案。
 - 自建 DevOps 平台:企业定制平台,Tapd、云效等。
 
Jenkins 平台

持续集成与持续交付:
- 研发: 
- 构建、单元测试 + 覆盖率分析。
 - 自动化代码审计。
 
 - 运维:自动化部署。
 - 测试: 
- 接口测试。
 - UI自动化测试。
 - 专项测试自动化。
 - 性能测试、安全测试。
 
 
6.流程管理平台
JIRA 管理平台
- 推荐方案。
 - 定制性很强。
 

JIRA 中的基本概念
- Project 项目
 - Issue 问题
 - Field 字段
 - Workflow 工作流
 - Screen 视图
 
 
JIRA 管理测试用例流程
- 创建测试用例管理项目。
 - 录入用例。
 - 测试用例状态转化。
 
 
JIRA 管理 Bug 流程
- 创建 Bug 管理项目。
 - 从用例关联到 Bug。
 - 在项目中录入 Bug。
 - Bug 状态转化。
 

7.项目管理与跨部门沟通协作
项目管理:

需求阶段:
| 项目经理 | 产品 | 研发 | 测试 | 
|---|---|---|---|
| 活动 1. 在项目管理工具中建立项目目录 2. 分析项目所需资源、风险等 3. 预估项目周期  | 活动 1. 收集整理需求  | 参与 1. 需求分析 2. 环境分析  | 参与 1. 需求分析 2. 环境分析  | 
| 产出 1. 项目计划(大致时间规划)  | 产出 1. 需求文档  | 
设计阶段
| 项目经理 | 产品 | 研发 | 测试 | 
|---|---|---|---|
| 活动 1. 监控项目进度 2. 组织安排本阶段的评审 3. 任务分解,责任到人 4. 细化项目计划  | 活动 1. 系统功能设计  | 活动 1. 系统功能技术设计 2. 数据库设计  | 活动 1. 组织测试计划评审  | 
| 产出 1. 项目计划(具体到各个功能)  | 产出 1. 系统说明书  | 产出 1. 概要设计文档 2. 详细设计文档  | 产出 1. 测试计划  | 
开发阶段:
| 项目经理 | 产品 | 研发 | 测试 | 
|---|---|---|---|
| 活动 1. 监控项目进度 2. 调整人员安排 3. 跟踪解决技术难点  | 参与 1. 需求细节沟通  | 活动 1. 具体功能开发 2. 组织 code review 3. 单元测试  | 活动 1. 编写测试用例 2. 组织测试用例评审  | 
| 产出 1. 项目计划(更新进度) 2. 项目报告进度  | 产出 1. 功能代码 2. 单元测试代码  | 产出 1. 测试用例  | 
集成测试阶段
| 项目经理 | 产品 | 研发 | 测试 | 
|---|---|---|---|
| 活动 1. 监控项目进度 2. 跟踪解决技术难题  | 参与 1. 需求细节沟通 2. Bug 修改方案  | 活动 1. 集成测试 2. 修改 Bug  | 活动 1. 支持研发进行集成测试 2. 准备测试数据 3. 准备自动化测试用例  | 
| 产出 1. 项目报告进度  | 产出 1. 集成测试报告 2. 部署测试环境  | 
系统测试阶段
| 项目经理 | 产品 | 研发 | 测试 | 
|---|---|---|---|
| 活动 1. 分配 Bug 2. 跟踪解决技术难题  | 参与 1. 需求细节沟通 2. Bug 修改方案  | 活动 1. 支持测试 2. 修改 Bug  | 活动 1. 测试环境搭建 2. 补充测试数据 3. 功能测试 4. 自动化测试  | 
| 产出 1. 项目报告进度  | 产出 1. 系统测试报告(执行报告) 2. 缺陷报告  | 
软件项目管理的方法
- 制定项目计划。
 - 执行该计划并监控跟踪管理。
 - 项目风险应对与问题解决。
 - 项目收尾。
 
跨部门沟通协作 - 与产品沟通
- 需求评审会。
 - 在分析需求阶段。
 - 在测试用例编写阶段。
 - 在测试过程中。
 
跨部门沟通协作 - 与研发沟通
- 在分析需求阶段。
 - 在测试用例编写阶段。
 - 在测试过程中。
 - 在线上监控发现 Bug 时。
 
跨部门沟通协作 - 上下游测试配合
- 测试计划沟通。
 - 环境对接。
 - 熟悉业务。
 
项目实例

8.测试经典书籍拆分讲解
全程软件测试
- 测试行业的经典书籍 
- 测试方法
 - 测试策略
 - 领域测试
 - 主流测试技术
 - 涵盖了软件测试的流程与方法体系
 
 

探索式测试
- 探索式测试的经典代表性书籍
 - 探索式测试是业务测试和手工测试实践中的一个方法论
 

Google测试之道
- 高级测试工程师与架构师必读
 - 讲解google的测试策略与方法
 - 以及google对软件开发与测试的理解
 

持续交付
- 持续交付的经典书籍
 - 现代化软件研发与测试的启蒙 
- 持续交付 1.0
 - 持续交付 2.0
 
 

不测的秘密
- 腾讯TMQ出品
 - 精准化测试代表性书籍
 

