第一章 绪论
1.1 研究背景及意义
1.1.1 研究背景
作为我国国民经济影响颇深的银行系统,在二十世纪末就开始引入计算机系统。近年来,随着网上银行、手机银行业务的大量开展,软件开发在银行系统中的地位越来越重要。如何按照需求开发出高质量、可靠性强、性能好的软件系统是困扰银行软件开发的重要难题。
敏捷开发自诞生以来,在信息产业界迅猛发展,尤其是在各大公司和企业推广普及势头较好。不管是百度,阿里巴巴,谷歌,微软,亚马逊,IBM等国内外计算机界巨头,还是刚起步的创业小公司,都在采纳或尝试敏捷开发方法。大公司因为其业务的复杂性,往往是一个部门的一个团队先采用敏捷开发模式,然后再向部门,公司推广的方式。小公司由于其天然的灵活性要求,敏捷开发模式与其公司运作方式完美匹配,得到了极大的应用。
敏捷开发概念最早出现在国外,国内的普及发展较晚,初期只有极少数的公司使用敏捷开发方法,主要集中在跨国公司的中国分公司,例如IBM,微软等。随着我国互联网技术的快速进步,软件开发技术的传播在中国越来越快,敏捷开发方法已经被中国大量公司所采纳,诸如腾讯、网易游戏等软件公司都大规模的应用。特别是 2015 年以来,大众创新热潮袭来,各种微创IT公司的问世,其产品迅速的更新换代,大多数都采取的是敏捷开发模型,即开发出测试版本,放开用户使用,收集用户使用状况信息,迅速迭代推出新产品。
......................
1.2 国内外相关研究综述
原型化开发是指软件开发人员针对用户提出的需求设计实现一个原型系统并测试,客户通过使用提出问题,开发人员再修改测试,上述过程反复进行,直到客户满意为止。原型化开发的核心思路就是以用户为中心,通过反复沟通协商,递进式的改进软件系统,达到用户满意的目的。这种开发模型的优点就是开发成本较低,目标明确,缺点是无法适应大规模软件的开发,维护成本较高,客户沟通依赖性较高。
螺旋模型结合了原型化开发和瀑布模型的优点,将整个系统分为多个中间阶段,每个阶段都可以看做一个成品,从整体上看属于原型化开发。而每个中间阶段的开发又严格遵循“瀑布模型”,按照不同阶段进行开发,稍微不同的是瀑布模型每个阶段开始之前引入了必要的风险分析。这种螺旋模型非常适合大型复杂的系统级的软件,在迭代的每个中间阶段再次评估风险,确保系统的风险控制在范围内。
软件工程研究的进步,带动软件开发方法提升的同时,相应带动了与之相适应的软件测试技术的发展。敏捷测试就是敏捷开发环境下进行的软件测试。高效的软件测试技术对提高软件的整体质量,优化开发效率具有关键影响,同时可以促进软件开发方法的进一步研究。
国外软件产业对软件测试较为重视,软件开发与软件测试协同发展,随着软件规模的扩大,软件测试的重要性日益突出。软件质量是软件开发的生命线,所以为确保软件可靠性和高质量,软件公司无论是人力还是物力上都进一步加大了软件测试方面的投入。例如自动化工具的研究和使用,极大的缩减了简单重复的测试任务,使测试人员有更多的时间投入到软件不足和缺陷的测试工作。
..........................
第二章 敏捷测试的理论综述
2.1 敏捷测试的基本理论
作为敏捷开发的重要组成内容,敏捷测试是遵守敏捷开发方法原则,即“敏捷宣言”背后所蕴含的 12 条原则[20],其中最重要的几条原则是:
1) 面对变化更坦然,不管是开发初期还是开发后期,拥抱客户的一切变化,具有较好的竞争优势。
2) 为了更好地进行迭代开发,每个迭代周期都是完成一个具有完整功能的软件系统,且每个迭代周期时间较短。
3) 测试人员需要与其他团队紧密合作,每天进行沟通交流。
4) 团队注重面对面的探讨交流,促进思想的共鸣。
5) 进度的标准是软件的功能完整性。
6) 因为要求不停的迭代,所以要求软件保持最简洁的特性。
从Dave Thomas的总结中,我概况为三个核心要素:第一,敏捷测试要强调变化。敏捷开发本事就是一个变化的过程,客户的需求可能随时变化,系统的功能设计也可能随时变化,因此敏捷测试就要适应这种变化。第二,敏捷测试要简单轻量级。变化的本质要求了敏捷开发的系统不能过于庞大,需要简单,便于及时调整。第三,敏捷测试要以人为本。敏捷开发的最终目标是开发出客户满意的软件,因此核心原则是软件客户认可。
.......................
2.2 敏捷测试方法
软件工程中软件测试的重要性日益凸显,特别是国产软件领域突飞猛进时期,大部分企业意识到软件测试对最终产品的质量起着关键性作用。从起初作坊式软件开发到目前软件工程理念的应用,软件测试技术也取得了长足的进步。软件测试人员不再沉浸于繁琐的重复劳动,越来越投入软件质量的思考和实践。软件测试技术依赖于软件工程的发展,与软件开发模型紧密结合,两者密切协作共同保障软件工程的成功实施。软件测试的目的主要是寻找系统错误,确保软件安全可靠。本节重点讲述传统软件测试方法和敏捷测试方法及其对比。
2.2.1 传统软件测试方法
在介绍软件测试方法之前,先简要讲解软件测试的模型,与软件开发模型一样是测试人员长期探索研究的成果。常见的测试模型有 V 模型、W 模型和 H 模型。
V 模型在上世纪八十年代由 Paul Rook 提出,可以说是最具代表性的测试模型。V 模型的主要观点是,单元测试以开发人员的编码级别的测试为主,集成测试则是把不同的功能模块组合在一起,测试各个模块之间的接口和模块之间的功能执行情况,系统测试则是验证整个软件系统的功能是否符合软件的设计要求和标准。其缺点在于,V 模型与瀑布开发模式相对应,软件测试需要严格按照软件开发流程,即代码编写完成之后才能进行测试工作,不利于漏洞的及时发现,造成漏洞积累。
随着软件工程技术的发展,基于 V 模型的 W 模型被提出。W 模型着重强调开发与测试的并行关系,指出在开发的初期就进行测试的观点。这种模型解决了测试工作滞后的缺点,有效地避免了开发初期的重大漏洞累计到后期造成不可避免的损失。W 模型的特点就是测试与开发同步进行,便于开发人员及时掌握软件的状态,提高软件开发的针对性和有效性。另外,这里的测试内容也不再单单是软件功能和性能的测试,由于整个开发过程中都伴随测试,所以测试内容涵盖了需求、文档和设计等。其缺点在于,W 模型以开发工作人员为核心,测试主要为开发人员服务,帮助其发现问题,督促其解决问题,而且整个开发过程结束才能生产出一个完整的功能齐全的软件。
........................
第三章 S银行软件项目的敏捷测试实施现状及问题分析..................22
3.1 S银行概况 .........................22
3.2 S银行软件项目的敏捷测试实施现状 .............23
第四章 S银行软件项目的敏捷测试实施流程改进...............34
4.1 敏捷测试组织结构和会议形式的优化 ......................34
4.2 敏捷测试流程和策略优化...................41
第五章 S银行软件项目的敏捷测试质量评估及分析.....................51
5.1 测试质量评估体系建立 .....................51
5.2 评价分析 ..........................54
第五章 S 银行软件项目的敏捷测试质量评估及分析
5.1 测试质量评估体系建立
S 银行软件项目测试评估包括模块验收入口条件的评估,投资价值评估,风险评估,测试对象评估四大内容。通过这四个部分的评估,可以建立起 S银行软件项目的敏捷测试质量整体评估体系。
5.1.1 模块验收评估
在迭代验收测试开始之前,测试人员首先要对迭代交付的模块进行初步的评估,包括对于代码 review、代码覆盖率等指标的评估。
模块验收评估主要指标包括代码行数、设计情况、回归测试、代码覆盖率等。测试人员需要对整个代码的行数进行统计,确定该模块的难度和复杂度。另外,开发人员是否需要结对编程,功能设计是否已经提交管理服务器,本次迭代是否涉及资料文档的检测,持续集成环境自动检测出的代码覆盖率和代码质量属性。
.........................
第六章 结论
6.1 主要结论
本文在绪论部分简要分析了我国银行行业内软件系统的普及与发展情况,国内外软件开发的研究概况,并介绍笔者的研究内容和方法。首先,详细描述了敏捷开发测试的相关理论知识,包括敏捷测试的基本理论、传统测试的基本理论、敏捷测试与传统测试的对比、基于 Scrum 的敏捷测试和敏捷测试的特点。其次,阐述了 S 银行软件项目的敏捷测试实施情况和问题分析,并提出了实施流程改进方案,例如敏捷开发组织结构和会议形式的优化、敏捷测试流程和策略优化、敏捷测试 bug 管理优化。最后对敏捷测试方法进行了评估和分析,得出结论:敏捷测试对本项目具有明显的提高。下面,介绍项目期间的主要工作:
1.学习研究了现有的软件工程知识,熟悉了传统的软件开发模型和软件测试方法,认识到敏捷测试开发管理的必要性和优越性,掌握了基于 Scrum的敏捷测试方法。