1.软件的定义
广义:程序文档和数据的集合
狭义:实现某种功能的代码,也叫程序
2.软件的测试模型 V H W(由V演化来的)
3.软件测试的定义
正向:是一种验真(建设性)的过程,验证软件是否做了它该做的事,在范围内
反向:是一种验假(破坏性)的过程,验证软件是否做了它不该做的事,在范围外
4. 软件测试的目的
1.在足够少的成本(时间,人力)下, 发现软件中的缺陷,保证缺陷被修复,提升软件的质量,降低企业的风险
2.软件测试能够提供质量改进的经验和教训
3.不断提升测试技术(禅道,自动化)和管理经验,保证软件的质量
5. 软件测试的原则
1. 测试不能穷尽原则
2. 尽早测试原则
3. 82原则(8020)
4. 缺陷的集群原则
5. 杀虫剂悖论
解决方法: 1.交叉测试
2.增加新的测试用例
3.引入新的测试方法和工具
6. 过多或过少的测试都是有风险的
7. 测试无法发现所有的潜伏缺陷
7. 并不是所有缺陷都需要被修复
6.测试和调试的区别:
测试:一般开发软件过程中,将错误语法的代码(借助IDE工具)发现并修复的过程,不可计划,不可预期,对象是程序
调试:验真+验假,是可以计划,可以预期的,是有标准的(SRS),对象是软件
7.测试的开发周期(测试周期)
项目立项:某个主体需要某个软件承载某些
需求收集,整理和分析:产品经理
项目设计:开发设计文档,测试设计文档
项目开发:开发人员进行编程实现
项目测试:测试人员进行测试执行,提交bug并回归
回归测试:测试人员发现bug并反馈给开发人员,开发人员修复bug,测试人员重新测试,直到没有bug后提交
项目发布上线
8.测试的生命周期(立项到下线)
项目立项 需求,设计,开发和测试 项目上线 新的需求,设计,开发和测试 项目上线 ...... 没有新的需求,用户不需要,不用在维护,就下线了
9.软件测试的分类
(1)开发阶段
单元测试:参考的是详细设计 对象是程序中的方法或函数
集成测试:参考的是概要设计 对象是程序中的方法和方法之间的交互,也就是接口
系统测试:参考的是系统需求 在软硬件环境部署完成 对UI界面,功能测试
验收测试:参考的是客户需求 看客户需求的功能是否实现
(2)测试技术
黑盒:只关注输入的数据和步骤,以及输出的结果,不关注是如何实现的
白盒:关注代码的实现逻辑,通过输入数据和输出结果来判断正确性 是基于代码的测试
灰盒:白+黑
10.软件的开发模型
瀑布模型 适合国防,金融,电信类的项目
螺旋模型 对各个阶段评审和监控,根据风险来驱动下一步的任务
迭代模型 以一个或者多个需求功能的实现作为一次迭代,这样避免了一次性完成大量需求的风险
敏捷模型 四个核心价值观:
1.个体和互动 高于 流程的工具
2.能够工作的软件 高于 详尽的文档
3.客户的合作 高于 合同的谈判
4.响应变化(需求,计划) 高于 遵循计划
11. 缺陷: 不管是bug还是缺陷,在软件测试中都是 不符合需求的功能设计
缺陷的定义:
1.软件实现了和软件需求不一致的功能
2.软件没有实现软件需求需要的功能
3.软件实现了软件需求不需要的功能(敏感词汇)
4.没有明确功能,但是属于隐性需求,没实现(身份证号码)
5.难以理解,运行速度慢,不好使用等功能
缺陷的严重等级:指的是缺陷对系统的影响等级,一般等级越高,破坏性越大
s1:致命级: 系统的主要功能未实现,数据丢失,系统崩溃,死记,甚至影响人身安全
s2:严重级:主要功能部分缺失,数据丢失但可以恢复,次要功能完全丧失
s3:缺陷级(一般):次要功能实现不完整,实现和需求不完全一致
s4:瑕疵级(使用习惯/UI):用户使用体验,UI设计不美观
s5:建议级:对产品质量提升的有效建议
缺陷的状态:
激活:缺陷提交确认后,进入缺陷的处理过程
确认:测试经理、项目经理复查缺陷,确认之后才指派给对应的开发去改
修复:开发确认并修复缺陷
关闭:修复的bug,测试进行回归,问题不存在了,则关闭掉该缺陷
重新打开:回归测试是发现的问题没有被修复,则重新打开让开发继续改
延迟修复:延迟的下个版本修复,没有时间了
重复:已经有人提交
设计如此:开发拒绝修复