测试基础
-
正向思维、逆向思维
正向思维:出发点是使自己确信产品是能够正常工作的,评价一个程序和系统的特性或能力,并确定它是否到达期望的结果,软件测试就是以此为目的的任何行为
逆向思维:测试是为发现错误而执行的一个程序或者系统的过程。测试是为了程序有错,而不是证明程序无错
一个好的测试用例在于它能发现以前未发现的错误
一个成功的测试是发现了以前未发现的错误的测试 -
软件测试的定义
IEEE定义的测试:
1)在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面给出评价
2)分析软件项目的而过程:检测现有状况之间的不同,并评价软件项目的特性。
广义软件测试的定义
软件测试是软件形成过程中的所有工作产品(包括程序以及相关文档)进行的而不仅仅是对程序的运行测试
确认(Validation)通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现。
(强调有没有这个功能)
验证(Verification)通过检查提供客观证据来证实指定的需求是否满足
(需求有没有得到满足 ) -
软件测试的目的
1)以最少的人力、物力和时间找出软件中潜在得到各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。
2)同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误。
3)采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量。 -
软件的生命周期
需求分析-概要设计-详细设计-编码-测试-验收
- 软件生命周期模型
1、瀑布模型
瀑布模型:最早提出的软件开发的过程模型
1)存在的问题;
A)强调时间顺序的严格执行,前端不完成,后阶段不开始
B)将测试放在了编码之后,没有体现出测试贯穿软件生命周期的原则。
测试在代码完成之前的好处:可以避免需求的问题一直延续到代码完成才能暴漏或者被发现。
2)优点
A)为项目提供了按阶段划分的检查点
B)当前这一阶段完成后,只需要关注后续阶段。
3)缺点
A)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
B)线性开发,用户等到整个的末期才能见到开发结果,从而增加了开发风险
C)瀑布模型不适用于用户需求的变化
2、螺旋模型
是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及爆发模型的系统化于严格监控。
1)引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。
2)螺旋模型更适合大型的昂贵的系统级的软件应用。
3、迭代模型
迭代包括生产产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必须的而所有元素,强调开发的深入。
在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计
实施坏人测试工作流程。
优点:
降低了在一个增量上的开支风险
降低了产品无法按照既定进度进入市场的风险
加快了整个开发给你咯工作的进度
迭代过程这种模式使适应需求的变化会更容易些。
3、敏捷模型
敏捷宣言——敏捷软件开发宣言,证实西安不了对四种核心价值观和十二条原则,可以指导迭代的以人为中心的软件开发方法。
十二条原则
灵活体现在:个体和互动
增量模型:把软件分割成独立的模块,分批次的完成和交付。
缺点:打破原有的软件结果和框架,可能会带来一定风险。
增量模型一般会和迭代模型一起运用。
1)软件增加了新功能 ——是增量模型的使用
2)优化了…功能
3)修复了某些…未知/已知bug
4、快速原型模型
典型应用和工具:Axure——用来制作原型