基础知识
软件
概念:软件是计算机系统中,与硬件相互依存的另一部分,包含程序,数据及相干文档的残缺汇合
- 程序:按当时设计的性能和性能要求执行的指令序列或者代码构造
- 数据:使得程序能失常操纵信息的数据结构(数据来自数据库)
- 文档:与程序开发,保护和应用相干的图文材料,是测试所需的根据内容
个性
- 状态个性:有形的、不可见的逻辑实体
- 智能个性:是简单的智能产品,它的开发凝聚了人类的大量脑力劳动,体现了常识实际和人类的智慧,具备肯定的智能。能够帮忙咱们解决简单的计算、剖析、判断和决策问题
- 开发个性:软件开发中依然蕴含相当份量的个体劳动,使得这一大规模知识型工作充斥了个人行为和集体因素
- 品质个性:因为开发个性存在,所以不存在齐全没有缺点的软件
- 生产个性:与硬件相比,软件一旦开发进去,如果须要提供多个用户,其复制非常简略,老本也极为无限
- 治理个性,相比于传统行业,更为独特
环境个性:软件对于计算机系统的环境有着不可解脱的依赖性,它的开发和运行都离不开相干的计算机系统环境,包含反对它的开发和运行的相干硬件和软件;
- 不同语言开发的程序,要搭配不同的运行环境来兼容
- 保护个性:软件投入使用当前,须要进行保护,但与传统产业产品的保护不同,它体现在降级、优化、性能更新等,甚至能够重构
- 废除个性:次要是不能满足市场和用户需要而导致的废除
- 利用个性:利用极为宽泛
软件分类
系统软件:负责管理计算机系统中各个独立的硬件,使其能够协调工作
- 服务性程序
- 语言程序
- 操作系统
- 数据库管理系统
- 应用软件:为了某种特定用处而开发的软件。能够是一个特定的程序,也能够是一组性能分割严密,相互协作的程序的汇合
软件的生命周期
定义:又称为生存周期,它是按开发软件的规模和复杂程度,从工夫上把软件开发的整个过程(从打算开发开始到软件报废为止的整个历史阶段)进行合成,造成绝对独立的几个阶段
同时每阶段又分解成几个具体的工作,而后按规定程序顺次实现各个阶段的工作并规定一套规范的文档作为各个阶段的开发成绩,最初生产出高质量的软件
软件的毕生
问题定义 — 可行性剖析 — 需要剖析 — 概要设计 — 具体设计 — 编码和单元测试 — 综合测试 — 软件维护
这一个过程会随着我的项目的迭代降级,一直循环
软件开发模型
倒退经验:
边做边改
- 毛病:随着我的项目变得复杂,管控越来越难
瀑布模型:
- 流程:打算 – 需要剖析 – 设计 – 编码 – 测试 – 运行保护
- 特点:软件开发的各项流动严格依照线性形式进行;以后流动承受上一项流动的工作后果;以后流动的工作后果须要进行验证
毛病:
- 因为线性开发,减少了开发的危险
- 晚期的谬误可能要等到开发前期阶段能力发现,谬误老本大
原型模型:客户与开发公司紧密联系,开发周期长,会受到需要变更的影响
- 特点:实现客户与零碎的交互;进一步细化待开发软件需要;开发人员能够确定客户的真正的需要
螺旋模型:制订打算 – 危险剖析 – 施行工程(需要确认、软件需要、软件产品设计、设计确认与需要、具体设计、开发、测试)– 客户评估
特点:
- 螺旋模型是将瀑布模型与疾速原型模型联合起来
- 强调了其余模型所漠视的危险剖析
- 每次螺旋包含 4 个步骤,一直递进:制订打算 – 危险剖析 – 施行工程 – 客户评估
- 毛病:过于强调危险剖析,但要求许多客户承受并置信这种剖析,减少了操作难度
麻利模型:一种以人为外围、迭代、循序渐进的开发方法
特点:
- 短周期开发
- 增量开发
- 由程序员和测试人员编写的自动化测试来监控开发进度
- 通过口头沟通、测试和源代码来交换零碎的构造和用意
- 测试后行:编写代码前,先写测试代码
毛病:
- 团队的组建较难,人员素质要求较高
- 对测试人员要求齐全把握各种脚本语言编程,能执行单元测试、自动化测试
DEVOPS
:须要做到更强的继续集成,更强的自动化工具的应用
软件开发文档
需要剖析文档
概要设计文档
具体设计文档
测试设计文档
测试用例
测试报告
我的项目各阶段的测试相干工作
编程阶段:单元(白盒)测试,以开发为主,须要测试参加;关注覆盖率
编程实现:开发联调(集成测试),以开发为主
提测:冒烟测试(自动化为主,手工为辅)- 测试执行
测试阶段:零碎测试(黑盒功能测试为主,自动化 / 接口测试为辅,依据我的项目进行性能、平安测试)
验收阶段:验收测试,配合用户或需要
软件测试
定义:是应用人工或者主动的伎俩,来运行或测定某个软件系统的过程,其目标在于,测验软件是否满足规定的需要,或弄清楚预期后果与理论后果之间的差异
目标:发现问题,查看零碎是否满足需要
分类
生命周期,各种测试方法比照
软件测试罕用术语
C/S : C 代表客户端,S 代表服务器端;这种软件是基于局域网或者互联网的,须要一台服务器来装置服务器端的软件,每台客户端都须要装置客户端软件。
B/S : B 代表浏览器,S 代表服务器端;这种软件同样是基于局域网或者互联网的,区别在于不须要装置客户端,只须要浏览器就能够间接应用。例如常见的门户网站
缺点(bug/defect
):软件中不合乎用户需要的问题
测试环境:软件运行的平台,包含软件、硬件、网络的汇合。
- 测试环境 = 软件 + 硬件 + 网络
测试用例(test case):在测试执行之前设计的一套具体的测试计划,包含测试环境、测试步骤、测试数据和预期后果
- 测试用例 = 输出 + 输入 + 测试环境
冒烟测试(smoke testing):在对一个新版本进行零碎大规模地测试之前,先验证软件的基本功能是否实现,是否具备可测性
α 测试:由用户、测试人员、开发人员等独特参加的内部测试
β 测试:内测后的公测,即齐全交给最终用户测试
软件测试常见模型
V 模型:是瀑布模型的改良,在软件开发的生存期,开发流动和测试流动简直同时开始,两个并行的动静的过程就会极大的缩小 bug 和 error 的呈现几率
W 模型:绝对于 V 模型,更迷信,开发和测试同时进行,有利于及早发现问题;减少了软件各开发阶段中应同步进行的验证和确认流动,明确示意出了测试和开发的并行关系
H 模型:将测试流动齐全独立进去,造成一个齐全独立的流程,将测试筹备流动和测试执行流动清晰体现进去
X 模型:探索性测试的模型,可迭代、可继承;对测试人员的教训要求较高
目前,应用更宽泛的是 W 模型的改良(相当于 W 模型 与 H 模型的联合),各方面的测试内容,以 W 模型 为准,测试的周期,测试的办法,测试的进度,以 H 模型 作为领导
软件测试覆盖率
用来度量测试完整性的一个伎俩,同时也是测试技术有效性的度量
覆盖率 =(至多被执行一次的 item 数)/ item 的总数
作用:
- 检测测试是否充沛
- 剖析出测试的弱点
领导设计可能减少覆盖率的测试用例,进步测试品质
- 不能一味谋求覆盖率,因为测试老本会随着覆盖率的减少而减少
规范
对于黑盒测试:需要笼罩、用例笼罩
需要笼罩:在测试中,有哪些函数被测试到,其被测试到的频率有多大,这些函数在零碎所有函数中的占比有多大通过设计肯定的测试用例,要求每个需要点都被测试到
- 需要笼罩 = 被验证到的需要数量 / 总的需要总数
用例笼罩:次要体现在咱们每轮测试验证通过的用例数在总用例中的比重
- 用例笼罩 = 被验证到的用例数量(包含手工和自动化测试用例)/ 总的用例总数
测试覆盖率的使用
简略的测试覆盖率:本次测试执行的用例数 / 所有用例数
- 基于认为总用例数编写全面,个别对于大型零碎测试要求覆盖率达到 100%
- 覆盖率审核:抽样验收
基于产品的测试覆盖率:已测试需要点 / 设计所有需要数
- 以产品、需要维度统计,无论大型项目或是小需要迭代,都要求覆盖率达到 100%
- 覆盖率审核:抽样验收
基于白盒的测试覆盖率:大多工具判断语句笼罩;单元测试代码笼罩代码行 / 总代码行
- 更多时候要求覆盖率达到 80% 以上
- 缺点:只能代表测试过哪些代码,不能代表是否测试好这些代码;容易脱漏逻辑、判断等场景
基于自动化的测试覆盖率:自动化笼罩的测试场景 / 所有测试场景
- 用处:侧重于回归验证,没必要谋求过高的覆盖率,而要思考用例设计
测试覆盖率的意义:
- 利用最多的中央在测试进行规范
- 在瀑布模型中,测试覆盖率并不重要
- 在螺旋式、麻利开发模型中,因为一直迭代累加,很难确定哪些模块在开发过程中没有给予足够的测试
- 在短迭代,
DevOps
中,更强调单元测试覆盖率来评估一直减少的代码数量
常识体系
基础知识
流程
测试用例设计办法
兼容性测试 / 易用性测试
缺点治理
测试工具应用:自动化、性能、平安
测试文档编写
素质
虚浮仔细
积极主动
好奇心、狐疑所有
良好的交换能力
自我晋升和总结的能力
责任感
测试准则
- 所有测试都应追溯到用户需要
- 尽早启动测试工作
- 帕累托法令
- 穷尽测试是不可能的
软件测试越多,其对测试的免疫力越强
- 软件测试人员必须一直编写不同的,新的测试程序,对程序的不同局部进行测试,以便找出更多软件缺陷
后退两步,后退一步
- 每次修复之后,必须从新运行先前的所有测试用例,从而确保零碎不会以荫蔽的形式被毁坏
- 见异思迁:仔细、信念、急躁;团队单干的沟通意识,时刻放弃狐疑态度且有缺点预防意识
软件工程规范
国内通用:ISO9000
, CMM
ISO9000
:外围规范是质量保证规范和品质治理规范
- 根本思维:管制与预防
CMM
:软件能力成熟度模型,是向软件组织提供如何减少对其开发和保护软件过程的控制能力
- 侧重于软件开发和改良过程