测试基础
一 计算机基础
二 前端知识
三 后端知识
四 软件测试理论
1 软件测试目的和原则
目的:用最少的人力,财力,物力找到软件中的问题并修复,从而降低商业风险
二八原则:20%的模块中存在80%的缺陷,缺陷存在集群现象
杀虫剂现象:不要同一个人一直测一个项目,换着思维来
2 软件开发模型
瀑布模型:
- 特点:线性模型,每个阶段执行一次 / 文档驱动
- 优点:开发各个阶段比较清晰,当前阶段完成后,只需关注后续阶段
- 缺点:不适应需求的变化 / 风险往往延至后期才显露,失去及早纠正的机会
快速原型模型:
- 特点:快速构建软件原型 / 支持用户参与
- 优点:减少由于软件需求不明确带来的项目开发风险
- 缺点:不适合大型系统的开发(适合开发小型的、灵活性高的系统)
螺旋模型:
- 特点:引进了风险分析活动
- 优点:一种风险驱动的方法体系
- 缺点:采用该模型需要有丰富的风险评估经验和专门知识
迭代模型:
敏捷开发模型:
3 软件测试模型
V模型
- Paul Rook在20世纪80年代后期提出
- 软件开发模型中瀑布模型的变种,反映了测试活动与分析和设计的关系
- 表明了测试过程中本身存在的不同阶段,从左到右,描述了开发过程和测试过程间的阶段对应关系
- 优点:包含了底层测试又包含了高层测试
- 缺点:当需求变更时将会导致返工工作量大
W模型
- 测试伴随着整个开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试
- 优点:测试伴随开发,更早发现缺陷并且进行修复
- 缺点:对于测试技术要求高,实践起来困难
4 软件质量模型
ISO 9126软件质量模型,评价软件质量的国际标准,这个模型是软件质量标准的核心,6个特性,27个子特性
5 软件测试分类
按测试阶段划分:
- 单元测试(模块测试):针对软件设计中的最小单位-程序模块,进行正确检查。单元测试需要从程序内部结构出发设计测试用例 ,多个模块可以平行地独立进行单元测试
单元:C中的一个函数,Java中的一个类 - 集成测试(组装测试):单元测试的基础上,将所有程序模块进行有序的,递增的测试
- 系统测试: 将整个软件系统看为一个整体进行测试,测试的依据是软件需求说明书
- 回归测试 :
- 验收测试:检验软件是否符合用户需求的测试
α \alpha α测试:内测版本 / 软件开发者内部交流 / 用户不安装,bug多
β \beta β测试:公测版本,对所有用户开放的测试版本 / 通过一些专业爱好者测试,将结果反馈给开发者,开发者们再进行有针对性的修改
γ \gamma γ测试:软件正式发行的候选版
按是否覆盖源代码:黑盒测试 / 白盒测试 / 灰盒测试
- 黑盒测试(数据驱动测试 / 逻辑功能测试 / 业务功能测试):不考虑内部结构和内部特性,注重于测试软件的功能需求,只关心软件的输入数据和输出数据(检查程序功能是否按照需求规格说明书的规定正常使用)
- 白盒测试(结构测试 / 透明盒测试 / 逻辑驱动测试 / 基于代码测试):打开盒子,研究源代码和程序结构
- 白盒测试类型:语句覆盖 / 判定覆盖 / 条件覆盖 / 路径覆盖
- 灰盒测试:介于白盒和黑盒之间的测试,不仅关注输出、输入的正确性,同时也关注程序内部的情况
按是否运行:静态测试 / 动态测试
- 静态测试:不实际运行被测软件,静态地检查程序代码,界面或文档中可能存在的错误过程是
- 动态测试:实际运行被测程序,输入相应的测试数据,检查实际输出结构和预期结果是否相符
按是否自动化:人工测试 / 自动化测试
- 人工测试(手工测试):测试人员手动去进行的测试
- 自动化测试:利用代码或者工具帮助人工进行测试
其他:冒烟测试 / 回归测试 / 随机测试 / 探索测试
- 冒烟测试:对系统进行最基本功能的测试,保证基本功能和流程能走通
- 回归测试:当修复一个BUG后,把之前测试用例在新的代码下进行再次测试
- 随机测试:对被测软件的一些重要功能进行复测,包括测试当前用例没有覆盖到的部分
- 探索测试:同时设计测试和执行测试,测试人员通过测试来不断学习被测系统
6 软件缺陷
- 软件或程序中存在的各种问题及错误,会导致软件产品在某种程度上不能满足用户的需求
- 判定标准
- 产生原因
- 产生根源
- 缺陷类型
7 测试用例Test Case
- 为特定目的而设计的一组测试输入,执行条件和预期结果的文档
- 8大要素:
用例编号
用例标题
测试项目
用例级别
预置条件
测试输入
执行步骤
预期结果 - 测试用例模板:
ID
标题
模块
优先级
测试数据
执行条件
执行步骤
预期结果