软件测试基础理论体系学习2-软件开发和测试的过程
Posted 虫无涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试基础理论体系学习2-软件开发和测试的过程相关的知识,希望对你有一定的参考价值。
2-软件开发和测试的过程
1 软件开发过程
1.1 软件产品的组成
- 软件产品需要多少投入
- 客户需求
- 产品说明
- 设计文档
- 测试文档
- 开发进度
- 其他组成部分
1.2 软件开发项目组
一般情况下软件开发项目组由下列人员组成,并承担相应的工作:
1.2.1 项目管理员
全程负责整个软件开发项目,通常负责编写产品说明书、管理进度、进行重大决策。
1.2.2 设计师或系统工程师
担任软件小组的技术专家,需要具有丰富的经验,可以胜任设计整个系统构架或软件构思。
1.2.3 程序员
负责设计、编写并修复软件中的缺陷。他们与项目管理员和设计师密切合作生产软件,然后与项目管理和测试员密切合作修复软件缺陷。
1.2.4 软件测试员
负责找出并报告软件产品的问题,与小组全部成员在开发过程中密切合作,进行测试并报告发现的问题。
1.2.5 技术作者、用户助手、用户培训专员、手册编写人员或者文案专员。
负责编制软件产品附带的文件和联机文档。
1.3 软件开发基本过程
软件开发的基本过程可以分为需求分析、设计、编码、测试和维护阶段,即通常所说的“传统生命周期”,也就是“瀑布模型”。
1.3.1 需求分析
根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。
1.3.2 设计
根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。
1.3.3 编程
将设计转换成计算机可读的形式。
1.3.4 测试
对设计、编程进行验证和用户需求确认的过程
1.3.5 维护
维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。
1.4 软件开发模型
- 瀑布模型
- 原型模型
- 快速应用开发(RAD)模型
- 改进的V模型
- 螺旋模型
- 增量模型和迭代模型
- 构件组装模型
- 并发模型
- XP模型
2 软件测试过程
- 软件测试过程是一种抽象的模型,用于定义软件测试的流程和方法。
- 开发过程的质量决定了软件的质量,同样测试过程的质量将直接影响测试结果的准确性和有效性。
- 软件测试过程和软件开发过程一样,都遵循软件工程原理,遵循管理学原理。
- 随着测试过程管理的发展,软件测试专家通过实践总结出了很多很好的测试过程模型。
- 这些模型将测试活动进行了抽象,并与开发活动有机的进行了结合,是测试过程管理的重要参考依据。
2.1 软件测试过程模型
2.1.1V模型
V模型反映出了测试活动与分析设计活动的关系。图中从左到右描述了基本的开发过程和测试行为,非常明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系。
2.1.2 W模型
相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。如图W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
2.1.3 H模型
H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来。
2.1.4 其他模型
待补充~
2.2 测试过程管理理念
2.2.1 尽早测试
- “尽早测试”是从W模型中抽象出来的理念。我们说测试并不是在代码编写完成之后才开展的工作,测试与开发是两个相互依存的并行的过程,测试活动在开发活动的前期已经开展。
- “尽早测试”包含两方面的含义:第一,测试人员早期参与软件项目,及时开展测试的准备工作,包括编写测试计划、制定测试方案以及准备测试用例;第二,尽早的开展测试执行工作,一旦代码模块完成就应该及时开展单元测试,一旦代码模块被集成成为相对独立的子系统,便可以开展集成测试,一旦有BUILD提交,便可以开展系统测试工作。
- 由于及早的开展了测试准备工作,测试人员能够于早期了解测试的难度、预测测试的风险,从而有效提高了测试效率,规避测试风险。由于及早的开展测试执行工作,测试人员尽早的发现软件缺陷,大大降低了BUG修复成本。但是需要注意,“尽早测试”并非盲目的提前测试活动,测试活动开展的前提是达到必须的测试就绪点。
2.2.2 全面测试
- 软件是程序、数据和文档的集合,那么对软件进行测试,就不仅仅是对程序的测试,还应包括软件“副产品”的“全面测试”,这是W模型中一个重要的思想。需求文档、设计文档作为软件的阶段性产品,直接影响到软件的质量。阶段产品质量是软件质量的量的积累,不能把握这些阶段产品的质量将导致最终软件质量的不可控。
- “全面测试”包含两层含义:第一,对软件的所有产品进行全面的测试,包括需求、设计文档,代码,用户文档等等。第二,软件开发及测试人员(有时包括用户)全面的参与到测试工作中,例如对需求的验证和确认活动,就需要开发、测试及用户的全面参与,毕竟测试活动并不仅仅是保证软件运行正确,同时还要保证软件满足了用户的需求。
- “全面测试”有助于全方位把握软件质量,尽最大可能的排除造成软件质量问题的因素,从而保证软件满足质量需求。
2.2.3 全过程测试
- 在W模型中充分体现的另一个理念就是“全过程测试”。双V字过程图形象的表明了软件开发与软件测试的紧密结合,这就说明软件开发和测试过程会彼此影响,这就要求测试人员对开发和测试的全过程进行充分的关注。
- “全过程测试”包含两层含义:第一,测试人员要充分关注开发过程,对开发过程的各种变化及时做出响应。例如开发进度的调整可能会引起测试进度及测试策略的调整,需求的变更会影响到测试的执行等等。第二,测试人员要对测试的全过程进行全程的跟踪,例如建立完善的度量与分析机制,通过对自身过程的度量,及时了解过程信息,调整测试策略。
- “全过程测试”有助于及时应对项目变化,降低测试风险。同时对测试过程的度量与分析也有助于把握测试过程,调整测试策略,便于测试过程的改进。
2.2.4 独立的、迭代的测试
- 我们知道,软件开发瀑布模型只是一种理想状况。为适应不同的需要,人们在软件开发过程中摸索出了如螺旋、迭代等诸多模型,这些中需求、设计、编码工作可能重叠并反复进行的,这时的测试工作将也是迭代和反复的。如果不能将测试从开发中抽象出来进行管理,势必使测试管理陷入困境。
- 软件测试与软件开发是紧密结合的,但并不代表测试是依附于开发的一个过程,测试活动是独立的。这正是H模型所主导的思想。“独立的、迭代的测试”着重强调了测试的就绪点,也就是说,只要测试条件成熟,测试准备活动完成,测试的执行活动就可以开展。
所以,我们在遵循尽早测试、全面测试、全过程测试理念的同时,应当将测试过程从开发过程中适当的抽象出来,作为一个独立的过程进行管理。时刻把握独立的、迭代测试的理念,减小因开发模型的繁杂给测试管理工作带来的不便。对于软件过程中不同阶段的产品和不同的测试类型,只要测试准备工作就绪,就可以及时开展测试工作,把握产品质量。
【特别说明】:知识来源于网络、各种资料、书本、网站等,本文仅用于学习使用,不做他用,如果涉及版权问题,请联系博主删除,谢谢
以上是关于软件测试基础理论体系学习2-软件开发和测试的过程的主要内容,如果未能解决你的问题,请参考以下文章
软件测试体系学习及构建(11)-测试基础之软件测试定义及流程
软件测试基础理论体系学习4-单元测试的目的?概念是什么?过程是什么?