1.测试理论-1
1-软件生命周期(软件的开发流程)
计划阶段 - 项目经理 - 项目计划书 - 开发范围,时间,人员安排
需求分析 - 需求工程师/产品经理 - 需求文档/需求规格 - 分析并整理前端收集到的零散需求,并形成文档,经过需求+开发+测试等评审通过后,做为后续开发与测试工作的业务标准
概要设计 - 架构人员 - 概要设计说明书 - 对系统整体框架的设计,确定系统模块,模块与模块之间的关系,编写核心代码,确定系统与子系统的关系
详细设计 - 资深开发人员 - 详细设计说明书 - 对模块内部的算法及逻辑结构进行详细设计,包括类,方法,函数,数据库,表等
编码 - 开发人员 - 程序代码 - 根据需求,概设文档,详设文档,通过代码将业务实现出来
测试 - 测试团队 - 参见测试流程
发布 - 发布负责人(产品经理,项目经理,专人) - 程序+数据+文档
运维 - 运维人员 - 负责客户或用户使用软件过程中的问题
项目组的三大核角色:开发,测试,需求
2-软件开发模型
# 边做边改模型
# 快速原型模型 - 在需求阶段,通过原型不断和客户沟通需求,最终确定需求,再进行系统的整体设计与开发
# 瀑布模型 - 把生命周期中的各个环节确定下来,但是环节不可逆,测试滞后
计划->需求->设计-》编码-》测试-》发布-》运维
# V模型 - 为每个开发活动对应相关测试活动
用户需求 验收测试
需求分析 系统测试
概要设计 集成测试
详细设计 单元测试
编码 代码走查
-----------V模型的工作模式--------------
(1)用户提出用户需求
(2)需求人员根据用户需求编写需求规格
(3)架构人员做概要设计
(4)资深开发做详细设计
(5)开发人员开始编码
开发写了注册模块内部的第1个算法 ----- 单元测试
开发写了注册模块内部的第2个算法 ----- 单元测试
开发写了注册模块内部的第n个算法 ----- 单元测试
注册的每个单元都完成之后,整合成一个注册功能 ---- 对是否整合的合理,正确进 行
测试 ---- 集成测试
每个功能依次完成,整合成整个系统
-------------------------
------------双V模型的工作模式-------------
(1)用户提出用户需求
测试可以针对验收测试进行测试测试设计
(2)需求人员完成需求规格
测试人员可以针对需求规格进行系统测试设计
(3)架构人员完成概要设计
测试人员就可以对集成测试进行集成测试设计
(4)资深开发人员完成详细设计之后
测试人员可以进行单元测试设计
(5)开发编写代码,完成一个单元内部的代码,
测试基于单元测试设计,测试每个单元
(6)当开发编写代码,完成一个模块的集成后,开发会基于模块的集成验证详细设计是正确的
测试基于集成测试设计,进行集成测试
(7)当开发编写完整个系统的代码,开发会基于系统集成验证概要设计是正确的
测试基于系统测试设计,进行系统测试
当系统测试完成后,测试再基于验收测试设计,完成验收测试
-------------------------
# 增量模型 - 按照功能点开发
每一个增量是一个流程,开发,测试,需求可以并行工作
--------增量模型的工作模式举例------------
增量模型:
微信项目组现有的功能模块如下:
注册(QQ号注册,手机号注册)
登录(登录时可以记住密码)
朋友圈(发朋友圈【文字,图片,视频】,点赞,评论)
通讯录(增加好友,删除好友,查看好友信息,修改好友)
支付(零钱支付,银行卡支付,提现)
现在要开始开发微信8.0,以下功能将会被添加或修改
注册功能模块增加微博号注册
朋友圈增加朋友分组,再增加设置三天,半年,一年可见
通讯录增加拉黑功能
修改朋友圈的点赞功能,原来最多点1000,现在支持2000
tip:
假定现在有一个需求人员,当他完成微博号注册的需求后,开发不需要等待其它需求完成,可以直接针对微博号注册进行设计,编码,(需求可以继续进行下一个,如朋友圈分组的需求编写),测试也不需要等待其它功能的代码完成后才测,可以先测微博号注册
假定朋友圈分组的需求完成后,开发可以马上介入设计及编码,测试在完成编码后马上测试
--------------------------------
3-测试分类 - 按照不同维度分类
按照测试级别(开发阶段)
单元测试 - UT
集成测试 - IT
系统测试 - ST
验收测试 - UAT
非正式验收测试有两种
阿尔法测试 - 在贝塔测试之前,在开发环境下(早期的,不稳定的环境),由开发人员进行的非正式的验收测试
贝塔测试 - 在阿尔法测试之后,在用户使用环境下(相对比较稳定),由实际用户进行的非正式的验收测试
系统测试的类型
功能测试-手工/自动化
界面测试(GUI - Graphic User Interface)
性能测试
压力测试
负载测试
兼容性测试
安全测试
健壮性测试
安装卸载升级测试
文档测试
流量测试
电量测试
容量测试
集成测试
接口测试
按照测试技术分(代码是否可见)
白盒测试 ---单元
灰盒测试 ---系统
黑盒测试 ---集成
按照是否运行程序
静态测试
动态测试
其他测试相关开概念
回归测试
冒烟测试
国际化测试 - I18N 本地化测试 - L10N
随机测试
探索性测试
4-系统测试过程 ======
什么是软件测试
使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
测试与调试的区别
测试 - 由测试人员完成 - 破坏性的
调试 - 由开发人员完成 - 建设性的
5.测试的七大原则
通过测试可以显示缺陷的存在(体现了测试的必要性)
穷尽测试是不可能的(体现了方法的重要性)
测试要尽早介入(体现了测试介入时间的重要性)
缺陷的集群效应(体现的是一些测试的策略安排的重要性)
杀虫剂悖论,同样的测试用例被重复执行多次后将很难发现新的缺陷
测试依赖于具体的商业背景(体现的业务的重要性)
没有缺陷的系统并不代表是有用的系统(体现需求的重要性)
6.系统测试过程/系统测试流程/测试生命周期
制定测试计划 - 测试组长/主管/经理 - 测试任务,时间,人员的安排
制定测试方案 - 测试管理人员/测试工程师 - 如何测试的指导性文档,包括测试类型,测试策略的安排
分析测试需求 - 测试工程师 - 基于软件需求文档,分析测试点
设计并编写测试用例 - 测试工程师 - 将分析的测试点转换为企业标准的测试用例
评审测试用例 - 开发+测试+需求人员
搭建测试环境(Linux,Windows)- 测试工程师/专门负责环境的人
执行测试用例,提交并跟踪缺陷 - 测试工程师
撰写测试报告 - 测试工程师 - 针对负责的功能模块,用例执行情况,缺陷分布情况等
测试总结 - 测试组长/主管/经理 - 总结用例执行情况,缺陷分布情况,最终的测试结果等
7.一个优秀的测试工程师需要具备的技能
素质:专业、性格、逻辑、情感
能力:测试基础、标准与规范、测试流程、测试工具、测试方法
管理:管人、理事
行业经验:业务、测试与行业背景结合越来越紧密
英语:外企、国外项目
性格:开朗、交流、团队合作、追求完美、怀疑精神、善于说服
8.测试工程师的职业发展前景
功能测试工程师
技术
高级测试工程师
自动化测试工程师
性能测试工程师
Linux运维
DBA(数据库管理员)
开发
单元测试工程师
接口测试
运维
业务
需求工程师/产品经理
各行业的业务专家(银行,证券,供应链,ERP)
管理
测试组长、主管、经理
测试总监
项目经理
运维经理
作业:
1、熟记软件生命周期(软件开发流程)
2、熟记测试流程
3、能够说出主要的系统测试类型