文章目录
一、什么是软件?
软件是计算机系统中程序、数据、文档的总称。
二、什么是软件测试?
通过手工或工具的手段来运行软件系统,以校验软件系统是否满足预期结果,对软件质量进行评估的过程。
IEEE定义的测试:
- 在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面给出评价。
- 分析软件项目的过程:检测现有的状态和所需状态之间的不同,并评价软件项目的特性。
电气和电子工程师协会(IEEE)是一个美国的电子技术与信息科学工程师的协会
广义软件测试:
- 软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试。
- 确认(validation):通过检查和提供客观证据来证实特定目的的功能或应用是否已经实现。
- 验证(verification):通过检查和提供客观证据来证实指定的需求是否满足。
三、什么是软件缺陷?
- 软件未实现需求文档上要求的功能。
- 软件出现了需求文档上指明不应出现的功能。
- 软件实现了需求文档上未要求的功能。
- 软件未实现了需求文档上虽未明确提出但应该实现的功能。
- 软件难以理解、不易操作、运行缓慢或(从测试角度来看)最终用户认为不好。
所有不符合需求或超出需求的都是缺陷。
没有不存在缺陷的软件,只有迄今为止未被发现的缺陷。
四、软件测试的目的?
- 以最少的人力、物力和时间找出软件中存在的各种缺陷,并保证缺陷得以修复,避免软件发布后因潜在的缺陷带来商业风险。
- 以测试过程中得到的测试结果,为决策提供数据支持,同时避免在将来的项目开发中重复同样的错误。
- 采用更加高效的测试管理手段,提高软件测试效率和产品质量。
五、正向思维与反向思维
- 正向思维:使自己确信产品是能够正常工作的,评价一个程序和系统的特性或能力,并确定它是否达到期望的结果,软件测试就是以此为目的的任何行为。
- 反向思维:测试是为了发现错误而执行一个程序或系统的过程。测试是为了证明程序有错,而不是证明程序无错误。
六、测试和调试
- 在主体、目标、方法和思路上有所不同。
- 测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的事件开始,结束的过程可能不可预计。
- 测试可以计划,可以预先制定测试用例和过程,工作进度可以度量;描述调试的过程或持续时间相对比较困难。
- 测试对象包括软件开发过程中的文档、数据以及代码;而调试的对象一般来说只是代码。
测试 | 调试 | |
---|---|---|
主体 | 测试人员 | 开发 |
目标 | 找bug | 将错误修改为正确 |
方法 | 等价类、边界值。。。 | 程序和逻辑算法 |
思路 | 反向思维 | 正向思维 |
七、软件生命周期
1、瀑布模型
最早提出的软件开发的过程模型。
1、存在的问题:
- 强调时间顺序的严格执行。前阶段不完成,后续阶段不开始。
- 将测试放在了编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求的问题一直延续到代码完成才暴露或者被发现。
- 不适用用户需求的变化。
2、优点:
- 为项目提供了按阶段划分的检查点。
- 当前一阶段完成后,只需要去关注后续阶段。
3、缺点
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发的工作量。
- 瀑布模型不适应用户需求的变化。
2、螺旋模型
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
- 引入了其它模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减少损失。
- 螺旋模型更适合大型的、昂贵的、系统级的软件应用。
3、迭代模型
- 迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必须的所有其他元素,强调开发的深入。
- 在某种程度上,开发迭代是一次完整的经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。
- 迭代过程具有以下优点:
- 降低了在一个增量上的开支风险。
- 降低了产品无法按照既定进度进入市场的风险。
- 加快了整个开发工作的进度。
- 迭代过程这种模式使适应需求的变化会更容易些。
4、敏捷开发模型
敏捷宣言,也叫敏捷软件开发宣言,正式宣布了对四种核心价值观和十二条原则,可以指导迭代的以人为中心的软件开发方法。
八、软件测试流程
1、V模型
- 优点:揭示了开发与测试各阶段的对应关系
- 不足:V模型仅是把测试工作放在了最后一个阶段,忽视了测试对需求分析和系统设计的验证;到了后期验收阶段才能验证需求是否满足;没有体现“尽早地、不断地进行测试”的原则。
2、W模型
由两个V模型组成,分别代表着开发、测试过程,明确显示出开发与测试的并行关系。
- 优点:测试与开发同步进行;测试对象不仅仅是程序,还包括需求和设计;尽早发现缺陷可以降低软件开发成本。
- 缺点:在W模型中,需求、设计、编码是串行的,无法支持灵活的迭代。
3、H模型
- 将测试活动完全独立出来,清晰地体现出测试准备活动和执行活动,形成一个完全独立的流程。
- H模型指出测试要尽早准备、尽早执行,只要某个测试到达了准备就绪点,测试执行活动就可以开展,并且不同的测试活动可以按照次序先后进行,也可以反复进行。
4、X模型
- X模型是对V模型的改进,提出对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最后合成可执行的程序。
- 定位了探索测试,这是不进行事先计划的特殊类型测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的缺陷。
九、软件测试原则
- 所有测试的标准都是建立在用户需求之上。
- 软件测试必须基于“质量第一”的思想去开展工作,当时间与质量冲突时,时间要服从质量。
- 事先定义好软件的质量标准,只有有了质量标准,才能根据测试结果,对产品的质量进行分析和评估。
- 软件项目一启动,软件测试就要开始,而不是等程序写完才开始进行测试。
- 穷举测试是不可能的。
- 第三方测试更客观、更有效。
- 软件测试计划是做好测试工作的前提。
- 测试用例是设计出来的,不是写出来的,所以要根据测试的目的,采用相应的方法去设计用例,从而提高测试效率,更多的发现错误,提高程序的可靠性。
- 对发现错误较多的程序模块,应进行更深入