软件测试框架1
一、 软件相关知识
1.什么是软件?
软件=程序(源程序,目的程序)+数据+文档
备注:软件测试对象包括以上三部分
2.IT技术部门结构组成
1) 产品部:用户需求文档(预期结果),界面原型图
2) 开发部:编码,得到程序(源程序,目的程序)(实际结果)
3) 测试部:比对实际结果与预期结果之间的差别(得到程序的bug、文档的bug、数据的bug)
4) 运维部:后期运行上线中涉及的数据维护、技术问题等。
3.软件的生命周期(软件是怎么做出来的?)
1) 项目计划
2) 需求(需求规格说明书SRS)
3) 设计(概要设计说明书+详细设计说明书)
4) 编码(源程序,目的程序)
5) 测试(bug)
6) 运行上线
(测试从需求阶段就开始介入)
(瀑布模型中测试在编码之后介入)
4.软件的项目组成人员
1) 项目经理
2) 需求分析人员
3) 设计人员
4) 编码人员
5) 测试人员
6) 运维人员
7) 配置管理人员:
配置项=代码+文档,整个软件研发过程中所有交付件。
8) SQA:软件质量保障工程师
职责:
a) 指定规范,流程
b) 监督项目组成人员按照流程工作,若违反,提出NC项(不符合项)
c)检测评审项目成果,尤其是测试交付件
5.软件研发模型/流程
1) 瀑布模型
100%需求——100%设计——100%编码——100%测试——投入使用
优点:需求稳定,重复工作少,质量高
缺点:项目周期长,成本高
2) 螺旋模型
50%需求——50%设计——50%编码——50%测试——首版本上线
版本迭代,迭代周期4-8个月
3) 敏捷模型(小版本迭代)
20%需求——20%设计——20%编码——20%测试——首版本上线
版本迭代,平均迭代周期1个月左右
优点:项目周期短,小版本迭代,快速上线
缺点:需求不稳定,重复工作多,质量下降
6.软件缺陷引入的原因
1) 需求:50%~60% 不重视需求导致频繁变更
2) 设计:20%
3) 编码:15%
4) 其他:5%
7. 软件缺陷的分类
1) 遗漏:软件未实现需求中明确说明的部分
2) 错误:软件中的实际效果与需求中描述的不一致
3) 额外实现:软件实现了需求中未明确说明的部分
二、测试基础
1.软件测试的定义
使用人工或自动化的手段来运行软件的过程,其目的在于检测他是否满足规定的需求,或是弄清楚预期结果与实际结果之间的差别
2. 软件测试的目的
1) 发现错误 有些错误偶发,有些错误藏很深
2) 检测是否满足功能需求、性能需求、可靠性需求等
3) 软件测试不能证明软件不存在缺陷
3.软件测试的原则
1) 所有的测试工作都应该追溯到用户需求
2) 尽早启动测试工作,需求阶段就介入
3) 穷尽测试是不可能的
4) 测试是有风险的 遗漏
5) 并非所有的缺陷都值得修复
6) 杀虫剂怪事(测试用例对缺陷存在免疫能力)
7) 帕累托法则,28法则
80%缺陷存在于20%的核心业务模块中
8) Bug的群集效应
发现的缺陷越多,说明存在的缺陷越多
A25个bug B6个bug 增强测试谁
9) 前进两步,后退一步
V1.00
5000=500fail+4500pass
V1.01 回归测试
(1)验证缺陷修复是否正确(执行500条用例)
(2)重复测试
——完全重复测试(工作量巨大,考虑使用自动化)
——选择重复测试(主要选择相关功能进行重复测试)
三、测试方法
1.根据测试技术划分(根据是否关注程序内部结构)
1) 黑盒测试:不需要关注程序内部结构
2) 白盒测试:需要分析程序源代码(代码走查,写驱动,打桩)
3) 灰盒测试:白加黑
2.根据是否动态运行软件
1) 静态测试:测试过程中不需要运行软件,包括代码走查、需求评审、文档测试、用例评审
2) 动态测试:测试过程中需要运行软件
3.根据是否使用自动化测试工具
1) 人工测试
2) 自动化测试
四、测试过程
1、 测试阶段
1) 单元测试(UT)
- 测试范围:最小单位,函数或类
- 测试依据:详细设计说明书
- 测试方法:白盒测试
- 评估基准:逻辑覆盖,每个逻辑都测
2) 集成测试(IT,组装测试)
- 测试范围:模块之间的接口,集成后的功能
- 测试依据:概要设计说明书(概设)
- 测试方法:灰盒测试
- 评估基准:接口覆盖
3) 系统测试(ST)
- 测试范围:整个系统的功能及非功能(性能、兼容、安全、界面等等)
- 测试依据:需求规格说明书(SRS)
- 测试方法:黑盒测试
- 评估基准:需求覆盖
4) 验收测试(UAT)
- 三种测试策略
a) 正式验收测试(外包)
——参与人员:以用户为主的测试,参与人员包括项目组人员(产品、开发、测试),用户代表
——验收测试的结果,两种(用户可接受;用户不可接受)
b) α测试:
——用户参与测试,在开发场地开展,旁边有技术人员指导
c) β测试:
——用户参与测试,在用户实际环境展开,无技术人员指导