软件测试笔记1
软件测试定义
- 正向思维:使自己确信产品能偶正常工作的——有可取指出
- 反向思维:出发点是为了发现错误而执行一个程序或者系统的过程,为了证明程序有错——怀疑一切
- IEEE定义的测试:在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面给出评价;分析软件项目的过程——整个研发过程
- 广义软件测试:对软件形成过程中的所有工作产品(包括软件以及相关文档)进行测试,而不仅仅是对程序的运行进行测试
确认:通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现;
验证:通过检查和提供客观证据来证实指定的需求是否实现
软件测试的目的
- 以最少的人力、物力、和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复
- 同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误
测试和调试的区别
测试 | 调试 | |
---|---|---|
主体 | 测试人员 | 开发人员 |
目标 | 找BUG | 修改错误代码 |
方法 | 等价类、边界值…… | 程序和逻辑算法 |
思路 | 反向思维(占据主列) | 正向思维 |
- 测试是在已知的条件开始,使用预先定义的过程,并且有与之的结果;调试是在位置的条件开始,结束的过程可能不可预计
- 测试可以计划,可以预先指定测试用例和过程,工作进度可以度量;描述调试的过程或持续时间相对比较困难
- 测试的对象包括软件开发过程中的文档、数据以及代码;调试的对象一般来说只是代码
软件工程
软件工程包含两个方面
- 软件工程包含两方面:软件开发方法学、软件工具和软件工程环境
- 软件项目管理:软件质量、项目估算、进程控制、人员组织、配置管理、项目计划
引起软件危机的主要问题是软件质量问题
软件工程主要解决的就是软件质量问题
软件生命周期模型
需求分析——>概要设计——>详细设计——>编码——>测试——>验收
可以互相反推
瀑布模型
最早提出的软件开发过程模型
定义阶段:计划——>需求分析
开发阶段:需求分析——>设计——>编码——>测试
维护阶段:运行维护
优点:
- 为项目提供按阶段划分的检查点
- 当前一阶段完成后,只需要去关注后续阶段
存在的问题:
- 强调时间顺序的严格执行,前阶段不完成,后阶段不开始
- 将测试放在编码之后,没有体现测试贯穿软件生命周期的原则,从需求方面就开始介入,编码需求的问题一直延续到代码完成才暴露或者被发现
- 瀑布模型不适合用户需求的变化
迭代模型
- 迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他元素,强调开发的深入(一次一次深入),类似于一个环
- 在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试……
优点:
- 降低了在一个增量上的开支风险
- 降低了产品无法按照既定进度进入市场的风险
- 加快了整个开发工作的进度
- 迭代过程这种模式使适应需求的变化会更容易些
增量模型
把软件分割成独立的模块,分批次的完成和交付,一般会和迭代模型一起运用
**缺点:**打破原有的软件结构和框架,可能会带来一定的风险
举例:
- 软件增加了新功能——增量模型
- 优化了……功能——迭代模型
- 修复了某些未知/已知bug——迭代模型(深入研发)
快速原型模型
运用领域越来越多
原型: 模型,可以模拟操作、简单运行
典型应用和工具: Axure——制作原型
工作流程: 产品经理——>客户——>(开始)程序员
螺旋模型
演化软件开发过程模型,兼顾快速原型模型的迭代特征和瀑布模型的系统化与严格监控——引入风险分析,减少损失
敏捷开发模型
▲软件测试
!软件测试流程:
- 需求评审
- 编写测试计划
- 用例设计
- 用例执行
- 缺陷管理
- 测试报告
软件测试过程模型
- 测试过程的质量将直接影响测试结果的准确性和有效性
- 一个标准的软件测试过程中,应当包含但不仅限包含以下测试活动:需求分析、测试计划、测试设计、测试执行、测试总结……
V模型
并不科学有效,仍然认为软件测试是后期的事情,尤其是编码之后的事情
缺点与不足:
- V 模型仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段,忽视了测试对需求分析、系统设计的验证
- 需求的满足情况一直到后期的验收测试才被验证
- 没有体现“尽早地和不断地进行软件测试”的原则
W模型
由两个V模型组成,代表测试与开发过程,明确表示除了测试与开发的并行关系
优点:
- 测试的活动与软件开发同步进行
- 测试对象不仅仅是程序,包括需求和设计
- 尽早发现软件缺陷可降低软件开发成本
缺点
- 在W模型中,需求、设计、编码等活动被视为串行的,这样就无法支持灵活的迭代
H模型
- 测试活动完全独立出来
- H模型揭示了一个原理:软件测试是一个独立的流程
- 尽早准备,尽早执行;测试达到主备就绪点,测试执行活动就可以展开;不同的测试活动可按照某个次序先后进行,也可以反复进行
X模型
X模型也是对V模型的改进,提出针对单独的程序片段进行相互分离的编码和测试
X模型还定位了探索性测试——根据经验不进行事先计划的特殊类型的测试
测试过程工作独立性
由高到低:专门的测试外包公司岗位>企业内部的独立于研发部门的测试岗位>研发团队内部的测试岗位>开发人员自己测试
软件测试过程理论
- 尽早测试:尽早的开展测试执行工作
- 全面测试:对软件的所有产品进行全面的测试
- 全过程测试:测试人员要充分关注开发过程,进行全过程跟踪
- 独立的、迭代的测试:测试活动是独立的,并且是循环往复、不断进行的