软件开发试用期工作(精选5篇)

  • 软件开发试用期工作(精选5篇)已关闭评论
  • A+
所属分类:文学
摘要

作为软件质量控制的一个重要方式,软件测试是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。目前,软件测试正朝着持续的反馈机制方向发展,力争…

软件开发试用期工作(精选5篇)

软件开发试用期工作范文第1篇

关键词:软件测试;软件开发;应用

1 前言

作为软件质量控制的一个重要方式,软件测试是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。目前,软件测试正朝着持续的反馈机制方向发展,力争始终贯穿于整个软件开发的生命周期,及早发现问题,减少开发成本,有效提高软件的开发力度。

2 关于软件测试

2.1 软件测试的对象

软件测试和程序测试不同,它存在于软件开发的整个生命周期,能够保证软件正确地实现了一些特定功能的一系列活动,并证实在一个给定的外部环境中软件的逻辑正确性。软件开发的需求分析、规则、设计书、程序等都是软件测试的对象。

2.2 软件测试的目的和意义

软件测试是软件开发中质量控制的一个重要方式,测试的目的在于找出程序中的缺陷,及早发现并解决问题,完善软件的功能,将软件成分由低层组装到高层,尽量促使软件符合系统定义的技术要求,争取在最少的时间内建立标准的软件质量模型。软件测试能够防止软件开发中的错误,及时谨慎地衡量软件品质,保证出去的产品达到一定的质量标准。

其意义可以从三个方面来说:一是确认软件的质量,即确认软件是否做了需求者所期望的事情,并以正确的方式来做了这个事情;二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息;三是保证整个软件开发过程是高质量的,软件测试不仅测试软件产品的本身,而且还包括软件开发的过程[1]。

2.3 软件测试的方法

软件测试的方法和技术是多种多样的,根据测试是否针对系统的内部结构和具体实现算法可以分为黑盒测试和白盒测试。

黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息的完整性。

白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基本路径测试法等,主要用于软件验证。

3 软件测试在软件开发过程中的应用

软件测试存在于软件开发的整个过程,与软件开发的其他团队共同合作,形成了软件生命周期中的一个整体(图1)。

3.1 测试在软件需求分析阶段的应用

在软件需求分析阶段,软件测试人员要及时参与了解软件的需求分析、仔细评估大概的工作量、估量软件测试风险和可行性、考虑是否接受需求分析的功能等[2]。

所谓需求分析,就是了解客户的对软件的需求,与客户商讨保证软件功能达到一致性,并评估软件风险和该项目的花费代价,形成一个完整的开发计划过程。另外,还要和软件开发人员共同将客户的需求转换成计算机语言,并估量是否可以在现有的技术水平下实现该需求。

进行工作量评估时,先大概计算软件功能测试花费的时间,将其与软件开发时间合并统计,综合评估整个软件开发过程所需的时间,再对比于软件产品经理要求的时间,若不相符则进行沟通商讨,确保一致性。

3.2 测试在软件系统设计阶段的应用

系统设计是软件开发过程中一个极其重要的部分,一旦出现了问题,会导致对一些边界问题无法修复,甚至会导致软件开发过程的失败或者开发出来的软件难以扩展。

软件测试人员在系统设计阶段的工作主要是了解设计模型、评估设计模型的风险、对设计提出建议等,还要编写测试计划[3]。软件测试人员在工作中应该选择良好的系统结构,减少不必要的变更,确保测试设计的稳定性;另外,良好的社会架构能够促使团队内部在实力和能力上存在的差异得到相互弥补,保持其平衡;一些特殊的业务需求可以创建技术边界来满足,保证系统在市场竞争中的可持续性和不可替代性。

测试人员还应该了解软件产品的运行环境,参与到产品逻辑流程、数据库结构、各模块的功能等的讨论中,评估软件在设计阶段可能出现的问题,在后阶段的测试中注意设计的难点部分;还要了解各个模块之间的接口部分和软件产品设计的性能要求,为后面的测试奠定基础。

3.3 测试在软件代码编写阶段的应用

在软件代码编写过程中,软件测试人员应该参与到单元测试、编写测试用例、考虑是否接受代码完成报告和冻结报告等工作,特别是要认真对待编写测试用例。通常情况下,软件开发人员可以独立完成单元测试,但是其相应的测试用例、自动化测试脚本等还得靠测试人员来提供。

3.4 测试在软件测试阶段的应用

在软件测试阶段,软件测试人员的工作是开展软件测试、更新测试用例、观察并处理发现的缺陷、最终质量报告等。这一阶段是软件测试在软件开发过程中最关键的环节,主要进行的是集成测试、确认测试、系统测试三部分,必须根据测试用例的情况来进行。基本上,这些测试只能确保常用功能的正常发挥,而对于一些较特殊、异常的测试用例,却不能保证其正常工作,因此在必要时应该进行“自由测试”,以期发现更多的缺陷[4]。当新的缺陷没有对应的测试用例来覆盖时,应该及时更新测试用例,以保证软件开发的正常运行。跟踪缺陷是按照项目的异同来采取不同的处理方式,如果是一个全新的项目,进行跟踪处理缺陷顺序是新报缺陷、确认缺陷、重现缺陷、修复缺陷、验证缺陷、关闭缺陷,必须严格按照顺序开展。

3.5 测试在软件运行维护阶段的应用

在软件运行维护阶段,测试人员的工作主要是帮助客户进行验收测试、及时处理客户提出的问题以及重新组合测试用例。其中帮助客户开展验收测试是主要工作,处理客户发现的问题是关键性部分,必须高度重视客户提出的问题,采取“3W”的形式,即问题是什么、原因在哪里、怎样解决的方式,仔细分析是否没有从客户角度出发,并认真分析客户真正关心的问题,最后找出在前期测试中没有发现该问题的原因。另外,重新组合测试用例也是不可忽视的,通常会在经过整个软件周期后才发现在设计时没有考虑到一些测试用例的设计,在测试过程中也会添加不少的新用例,因此在软件维护阶段,必须重新组合、更新测试用例。

[参考文献]

[1]王萍.软件测试的重要性[J].软件导刊,2009.4.

[2]朱虹.软件测试在软件开发过程中的应用[J].中国新技术新产品,2009.22.

软件开发试用期工作范文第2篇

软件测试(Softwaretesting)是软件生存期(Softwarelifecycle)中的一个重要阶段,是软件质量保证的关键步骤。通俗地讲,软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码进行最终复审的活动。1983年IEEE提出的软件工程术语中给软件测试下的定义是:"使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别"。这个定义明确指出:软件测试的目的是为了检验软件系统是否满足需求。

从用户的角度来看,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,所以软件测试应该是"为了发现错误而执行程序的过程"。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

二、影响软件测试的因素

影响测试效率的因素除了测试方法之外,主要因素还有人为因素、软件类型、错误类型、测试充分度等。下面对这些因素作一个简要分析。

1.人为因素

软件测试中的许多工作是由人来完成的,因此,人为因素是影响测试效率的一个重要方面。这样的差异并非偶然,这是因为测试人员在应用一个测试方法时具有很大的灵活性,从而使测试人员的经验和学习能力可以有较大的发挥余地。所以只能采用越来越严格的测试方法和过程来有效地避免人为因素对测试效率的影响。

2.软件类型

软件类型也是影响测试效率的一个重要因素。即使是同一个测试者,测试不同类型的软件的效率和发现软件错误的能力也是不尽相同的。测试什么类型的软件的效率较高则因人而异,这往往与测试者的相关知识、经验与专业训练有关。

3.测试充分度

测试充分度反映了一个测试是否得到了良好的执行,它直接关系到测试的效率。1993年Frankl和Weiss发现,只有当充分度十分接近100%时,才能使测试发现错误的能力得到发挥。因此,在测试软件时,必须设法使充分度十分接近100%,否则将难以保证测试质量。

三、加强对测试工作的组织和管理

随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。然而,为了尽可能多地找出程序中的错误,生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。

从软件的生存周期看,测试往往指对程序的测试,这样做的优点是被测对象明确,测试的可操作性相对较强。但是,由于测试的依据是规格说明书、设计文档和使用说明书,如果设计有错误,测试的质量就难以保证。即使测试后发现是设计的错误,这时,修改的代价是相当昂贵的。因此,较理想的做法应该是对软件的开发过程,按软件工程各阶段形成的结果,分别进行严格的审查。

虽然测试是在实现且经验证后进行的,实际上,测试的准备工作在分析和设计阶段就开始了。

1.测试的过程及组织

当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的内容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进行全面测试。

在实现组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:

(1)首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试内容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。

(2)为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试和验收测试。

(3)代码会审:代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组由组长,2~3名程序设计和测试人员及程序员组成。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规范等文件基础上,召开代码会审会,程序员逐句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。例如,对某个局部性小问题修改方法的讨论,可能发现与之有牵连的甚至能涉及到模块的功说明、模块间接口和系统总结构的大问题,导致对需求定义的重定义、重设计验证,大大改善了软件的质量。

(4)单元测试:单元测试集中在检查软件设计的最小单位-模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。由于模块规模小、功能单一、逻辑简单,测试人员有可能通过模块说明书和源程序,清楚地了解该模块的I/O条件和模块的逻辑结构,采用结构测试(白盒法)的用例,尽可能达到彻底测试,然后辅之以功能测试(黑盒法)的用例,使之对任何合理和不合理的输入都能鉴别和响应。高可靠性的模块是组成可靠系统的坚实基础

(5)集成测试:集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。

2.测试的人员组织

为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此,测试人员的组织也应是分阶段的。

(1)软件的设计和实现都是基于需求分析规格说明进行的。需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量,应对其进行严格的审查。

(2)设计评审:软件设计是将软件需求转换成软件表示的过程。主要描绘出系统结构、详细的处理过程和数据库模式。按照需求的规格说明对系统结构的合理性、处理过程的正确性进行评价,同时利用关系数据库的规范化理论对数据库模式进行审查。

(3)程序的测试:软件测试。是整个软件开发过程中交付用户使用前的最后阶段,是软件质量保证的关键。软件测试在软件生存周期中横跨两个阶段:通常在编写出每一个模块之后,就对它进行必要的测试(称为单元测试)。编码与单元测试属于软件生存周期中的同一阶段。该阶段的测试工作,由编程组内部人员进行交叉测试(避免编程人员测试自己的程序)。这一阶段结束后,进入软件生存周期的测试阶段,对软件系统进行各种综合测试。测试工作由专门的测试组完成,测试组设组长一名,负责整个测试的计划、组织工作。测试组的其他成员由具有一定的分析、设计和编程经验的专业人员组成,人数根据具体情况可多可少,一般3~5人为宜。

软件开发试用期工作范文第3篇

 

 

0引言

 

如今,软件产品被广泛应用于各个领域,如航空、机械、电子产品等,软件产品质量成为软件开发中重点关注的方向。在一些对于安全性要求较高的领域,对软件产品的质量要求更高。例如,在2011年温州发生的7.23动车追尾事故,导致212人伤亡;1996年阿里亚娜5型火箭发射39秒后爆炸,直接经济损失3.7亿美元;2002年首都机场电脑系统出现故障,导致6000多人滞留机场等。软件中存在的缺陷是造成这些严重后果的根源。因此,软件测试的重要性不言而喻。

 

传统的软件开发流程越来越无法满足当下软件需求的频繁变动,如传统的瀑布模型,测试人员在一定的控制点之前不能测试,所以在此之前无法找到缺陷。等到所有开发完成,即过了该控制点后再进行测试,缺陷数量会急剧增加,同时任何缺陷的修复都需要对一连串代码进行变动,修复时间难以确定,软件迟迟不能,损失将难以估量。

 

敏捷软件开发是基于一种更接近人类活动现实情况的方法论,采用以人为本、迭代、增量的开发过程,逐步满足软件不断变更的需求[1]。敏捷主要提倡个人为团队所作的贡献,注重各个职位的权利下发,发挥个人的主观能动性,保证随时都有可供交付的软件产品。敏捷开发更容易在项目早期控制缺陷数目。软件测试是保证软件质量与可靠性的重要手段,敏捷开发能充分发挥软件测试的重要作用。

 

1敏捷开发思想

 

敏捷开发是以用户的需求进化为核心,采用逐步迭代、循序渐进的方式进行软件开发。在敏捷开发模式中,软件项目在开发前,先将整体项目切分成多个子项目,迭代过程中根据需要可以对子项目进行拆分或同时进行多个子项目,每一个子项目都要经过测试,保证项目能运行成功。换言之,就是把一个大的软件项目分成许多小项目,每个项目独立完成,但相互之间又有联系,在该过程中软件始终处于可用状态。

 

敏捷开发本身更多的是一种概念,它是一种循序渐进的迭代开发方式,强调团队成员间的沟通。2001年,敏捷开发创始人了敏捷宣言:个体和交互胜过流程和工具,可用的软件胜过完备的文档,客户协作胜过合同谈判,响应变化胜过遵循计划[2]。也即,虽然后半部分的条目也具有价值,但是更看重前半部分的条目。他们希望这将成为成功的软件开发的基础。敏捷开发的方法很多,主要包括快速应用开发(RAD)[3]、极限编程(XP)[4]、动态系统开发方法(DSDM)[5]与Scrum[6]。本文构建的测试模型借鉴敏捷开发过程中的迭代思想,以渐进的方式完成测试工作,不仅可使测试工作具有更好的灵活性,同时也能更好地适用于现有的敏捷开发过程。

 

软件是一种非常特殊的产品,开发出的软件通常会存在一些缺陷,而有些缺陷会造成非常严重的损失。软件测试则成为保障软件质量的一种重要手段[7]。根据不同标准有多种测试方式,如集成测试、单元测试、系统测试、验收测试和回归测试。传统的V测试模型和W测试模型成为指导人们进行测试的方法,而不同于这两种测试模型的H模型,则强调测试的独立性。另外目前很多开发团队已经开始使用敏捷开发方式,敏捷开发方式非常注重客户的交互以及团队中的沟通,同时开发过程中会有许多迭代过程。本文提出的测试模型借鉴敏捷开发中的迭代思想,测试流程是一个渐进的过程。然而,即使有成功的敏捷开发方法,开发人员和测试人员依然要寻求最适合的敏捷方法,并将相关技术融入到自己的敏捷方法中。

 

2敏捷开发中的软件测试

 

2.1敏捷测试

 

敏捷测试没有已经确定的唯一定义,原有的测试定义“通过在规定条件下对程序进行操作,发现错误,衡量软件质量”仍然适用,核心思想可以理解为“遵循敏捷开发的宣言,接纳敏捷核心价值观,基于敏捷开发的软件测试”。敏捷开发宣言中提到敏捷开发的4个核心价值观:简明(Simplicity)、沟通(Communication)、反馈(Feedback)、勇气/决断(Courage)。符合敏捷核心价值观的测试实践活动都可以称为敏捷测试,敏捷不仅是一种过程,更多的是一种理念[8]。

 

2.2敏捷测试方法

 

图1为敏捷开发测试流程,此流程是一个结合了Scrum和XP方法,并加上一些基于计划性流程原则后的产物。虚线箭头两端是开发过程中与软件测试相关的部分,敏捷开发的测试人员全程参与完整的迭代开发。

 

(1)需求分析:测试工程师可以根据测试经验以及需求的测试难度对需求列表提出问题或意见,以期团队能共同提供建议或方案,在之后的实际测试过程中有助于提高测试效率。

 

(2)迭代计划:包括对需求的详细分析以及任务表等,软件工程师和测试工程师对需求进行讨论。

 

(3)迭代启动会议:项目经理、产品经理、软件工程师、测试工程师对此代计划进行讨论、完善。

 

(4)测试计划:测试工程师根据需求以及测试经验完成详细的测试计划书,团队对测试计划进行研讨并确认验收测试。

 

(5)测试驱动开发:测试工程师相当于软件的第一批用户,测试过程中要重视反馈,这也是敏捷开发的原则之一。

 

(6)验收测试:测试工程师对此次迭代的所有功能进行演示,测试产品功能是否合格。如果产品合格,则此次验收通过,可以进入下一环;如果产品不合格,则此次验收失败,重新返回开发阶段,找出失败的原因及bug并解决,并确认下一次验收测试。

 

(7)提交与验证:由测试工程师为产品负责人与参与项目的人进行演示,包括此次迭代的主要功能、产生的未解决bug,然后由产品负责人核准迭代成功。

 

(8)迭代后的研讨:对此次迭代过程中产生的问题进行讨论,对于亮点可以进行表扬,错误要分析原因。

 

从流程图和测试人员参与项目的简单描述中,可以总结出敏捷测试的方法主要有两种:与传统软件测试相似的测试和测试驱动开发(TDD,Test-DrivenDevelopment)。

 

图2展示的是测试驱动开发流程,开发人员在编写产品代码之前,要先编写单元测试代码,在进行单元测试后才能进行产品代码的编写,以保证产品代码能完全符合要求。产品代码编写完成后进行单元测试和集成测试,测试代码和产品代码都要进行代码审查,保证代码的简洁、统一,方便以后维护。在敏捷测试中,测试驱动开发的重要目的不仅仅是测试软件,同时在开发过程中帮助客户和程序员确定需求。测试驱动开发应该运用于每一个迭代中,逐步开发完成所有软件功能。

 

传统软件测试的种类非常多,在敏捷测试中应当根据当前迭代的需求进行测试[9]。某车削软件有这样一个需求,能支持直径40mm的刀具路径生成。该需求一定配备了相应的刀具路径生成方法,然后只需确定刀路生成中的一些参数,然后设计数量足够的不同表面形态的圆面即可。由于TestPart数量过多,可能会用到自动化测试,也有可能会用到一些特殊的TestPart,如圆面面型变化大,甚至不是圆面等。迭代最后一定有整体的性能测试,在整个项目进行过程中,传统的软件测试方法同样适用于敏捷开发。

 

2.3敏捷测试特点

 

在瀑布开发模式中,要求流程规范、文档齐全,测试进行时再根据软件需求总结、测试所有功能点,直到软件中没有明显bug。在传统的软件测试开始时,软件的缺陷会达到顶点,同时如果有需求变化,则需要重新编写文档,可能必须将之前的工作推翻重来,费时费力。而在敏捷测试中,一切都发生了改变。

 

敏捷开发模式中测试不是一个单独阶段,它和编码一样是软件开发的重要组成部分。敏捷开发使用一个“完整团队”的方法来保证软件产品质量。敏捷团队中的测试人员从客户需求中提炼要求,然后与开发团队合作,把这些要求变成可执行的规范,用于指导代码编写。随着测试和编码的逐渐进行与交互,将建立一些产品特性,直到提供足够的产品价值。

 

敏捷测试包括以下几个主要特点:①周期性的迭代开发方式。不同于传统测试的一次性集成或功能测试,敏捷测试在迭代进行过程中要通过及时响应客户反馈来修正软件测试策略,以此修正软件的质量指标;②每日立会,密切沟通。传统测试提供了大量文档描述产品需求,并通过文档进行测试。敏捷测试则需要团队每天进行交流,测试人员与客户持续沟通,以保证产品质量符合客户预期,并与开发人员沟通来确定需求认识的统一;③测试方法多样,贯穿整个项目开发过程。敏捷测试包括测试人员对软件的自动化测试、集成测试、功能测试等,还包括开发人员对代码的单元测试、代码评审等工作,从最底层和基础的测试来保证软件整体质量;④确保客户需求圆满实现。客户需求是敏捷开发中最核心的内容,敏捷测试同样需围绕客户需求实现。

 

2.4敏捷测试优势

 

目前大多数软件项目的共同特点是用户需求变化快、风险高,同时还能快速抢占市场,这刚好是敏捷开发能够解决的。

 

(1)良好的持续沟通可减少缺陷产生,降低风险。在敏捷开发模式下,测试人员的沟通尤为重要。一个迭代从开始到结束,测试人员都需要参与。迭代开始时,所有人都要对该阶段软件的成型有统一认识,满足用户需求的同时还要符合一次迭代的时间要求;迭代进行中,测试对开发人员的反馈非常重要,软件开发初期,测试工具十分缺乏,对测试工作的进行造成很大阻碍,这时需要和开发人员持续沟通,必要时可共同开发一些辅助测试工具,在此期间要把握好迭代进行的时间;迭代后期,也可以作为bug反馈期,测试人员不但要站在用户角度考虑需求,同时能和开发人员站在技术角度讨论问题,达到沟通的目的。

 

(2)合理的测试用例。敏捷最直接的特点就是快速,如果涉及的用例粒度太细,很难开展敏捷测试。一个合理的测试用例不仅能包含所有可能产生缺陷的地方,同时还能快速地响应需求变化。

 

(3)更多人参与测试。敏捷测试中的测试人员不再是一个独立的测试个体,研发人员、产品负责人、用户都可以参与测试。研发人员的测试可以减少编程中的bug,产品负责人的测试可以更好、更全面地把握产品现状,用户的测试则可以提供来自真正用户的反馈,以更好地促进软件开发。

 

3敏捷开发中的软件测试实例

 

本章结合一个具体的软件项目,详细介绍项目中的敏捷测试。

 

3.1项目介绍

 

针对3轴超精密加工车床,提供针对光学自由曲面进行加工的刀路轨迹计算的CAM(ComputerAidedManufacturing,计算机辅助制造)软件。该软件的目标是比UGNX中的相同功能有更快的计算速度和更高的精度。

 

3.2需求分析和项目规划阶段

 

项目经理和产品经理根据客户给定的需求进行分类,包括框架、加工方式、加工质量、刀具选择、仿真等需求,并对项目可能产生的需求进行判断和规划,形成项目计划书。项目计划书包括项目背景、、需求以及预期完成时间。项目计划书完成之后即可开始进行第一个迭代,并以第一个迭代为基础不断进行下去,直到完成所有需求。由于整体项目过于庞大,这里只对第一个迭代进行介绍。

 

项目实例:第一个迭代中有2个需求,同时根据工作量分配任务天数以及每个需求的参与人员,如表1所示。

 

3.3迭代进行阶段

 

迭代开始时,项目经理制定迭代的具体开发任务和测试任务。在迭代启动会议中,每个人都要对此次迭代任务有统一认识,并且能够承载相应的任务量,在需求确定完毕后进行任务分配。

 

.

 

开发人员进行编码时,测试人员的工作重点包括:编写测试计划、测试用例、验收测试以及提交和验证。测试计划和测试用例的编写同时完成,且在迭代初期完成。验收测试一般是在迭代后期进行集成测试,迭代过程中也可以协助开发人员进行单独的功能测试。

 

3.3.1编写测试计划和测试用例

 

测试计划需要具体的操作步骤以及相对完善的测试用例来涵盖需求,因此需要测试人员有比较丰富的测试经验。

 

项目实例如下:

 

表2和表3中的TestParts需要填写测试工件名称。测试计划编写完成后要经过开发人员和项目经理确认,保证开发人员认同并能够达到计划的目标。敏捷开发是不断迭代的过程,对于一些比较简单的功能,尽量设计简洁的测试用例。如果TestParts比较多,可以采用自动化测试,而对于一些比较复杂的功能,可以先采用手动测试,在功能更加完善后再考虑自动化测试。

 

3.3.2验收测试

 

验收测试要严格按照迭代前期写好的测试计划进行,在开发人员开发完此次迭代所有功能后,测试人员对所有功能进行集成测试、功能测试、自动化测试等,完成所有测试工作后形成测试报告。报告内容包括此次迭代基本功能完成情况、缺陷产生情况以及测试过程中的一些详细数据。

 

3.3.3提交和验证

 

团队全体成员参加验收会议,由测试工程师对迭代成果进行演示,产品经理和项目经理进行验收,项目需求全部完成则此次迭代成功,然后再对此次迭代中的不足之处进行讨论和改进,或者提出创新之处。如果项目需求未达标,或产生了过多缺陷,则此次迭代不予通过,全员讨论延后验收或将缺陷完善延后到下一个迭代。

 

项目实例:针对需求R1、R2的基本功能测试达到了计划的标准,框架的视图操作和显示功能以及CAD模型输入功能均正常运行且无缺陷。虽然框架本身存在一些缺陷,仍能满足迭代的基本需求。经过讨论此次迭代成功,产生的bug在下一个迭代进行完善。

 

3.4迭代后研讨和下一次迭代讨论

 

迭代完成后要对迭代过程进行回顾,测试人员需要对bug进行总结,包括测试过程中产生的问题,以及需要改进的地方,然后对下一次迭代的需求进行初步讨论,决定下一个周期的工作内容。

 

4结语

 

敏捷开发中的软件测试应当遵循敏捷开发的基本原则,面对不同的开发方法和应用环境,软件测试方法也不同。敏捷测试作为从敏捷开发中成长起来的测试方法,与敏捷过程密不可分,本文对敏捷开发中的软件测试特点和方法进行了详细描述。然而,真正在面对软件测试时,测试用例的生成与覆盖标准、测试的充分性和有效性、不同阶段的测试关系等,以及如何将传统测试中的一些方法应用到敏捷测试中,需要探讨的问题及方法仍然很多。

软件开发试用期工作范文第4篇

关键词 缺陷跟踪 软件测试 课程建设 教学内容

中图分类号:G424 文献标识码:A DOI:10.16400/ki.kjdks.2015.06.061

Defect Tracking and Test Management Software Curriculum

Development Thinking and Practice

MA Junxia, GU Peipei, DENG Lujuan

(Software Engineering College, Zhengzhou University of Light Industry, Zhengzhou, He'nan 450000)

Abstract For the development and construction of "software defect tracking and test management" curriculum, the teaching status quo analysis, problem solving course discuss location, course objectives, teaching arrangement, teaching materials, teaching design and other aspects, and applied to teaching practice.

Key words defect tracking; software test; curriculum; teaching content

0 引言

软件测试是控制和保证软件产品质量的重要手段。软件生命周期的各个阶段都不可避免地会出现差错,因此软件测试应贯穿于软件开发的各个阶段,对软件缺陷的跟踪管理在软件开发的每一步都可以进行。而随着软件测试技术应用向深度和广度的发展,基于不同管理等级、运用多种质量控制工具来跟踪管理软件缺陷,已经成为软件项目测试管理过程中的一项重要内容,也是软件测试专业人才必须掌握的专业技能。

软件缺陷管理指对软件开发过程中缺陷发现、确认、定位、修改、评审、关闭等行为进行跟踪管理的过程。①软件缺陷管理教学的目标是在学习了软件测试理论和软件功能、性能测试等技术后,帮助学生了解如何在软件开发不同阶段管理测试工作成果,如何跟踪发现的缺陷以保证其得到妥善处理,如何充分发掘缺陷数据价值,如何改进组织的软件测试和软件开发规范以实现缺陷预防、提高软件产品质量等,从而进一步培养学生的工程实践能力。

但是到目前为止,以缺陷跟踪和软件测试管理为教学内容的课程或社会培训很少,多数高校的做法是将其作为软件工程或软件测试课程中的一个章节加以介绍。这样的教学安排容易使学生把对测试工作的理解局限在单纯的“找bug”上,不能深入了解和掌握缺陷跟踪和测试管理的知识和技能,削弱了学生对软件缺陷管理重要性乃至软件质量保证的重要性的认识,不利于培养学生的实践操作能力和软件测试专业管理理念。

并且,由于本课程在其它高校以及培训机构没有开设过,可以借鉴的课程建设经验很少,更没有合适的教材可以选用。而缺陷跟踪与软件测试管理的特点是理论抽象、工程实践性强,传统的教学模式以理论传授和知识阐述为主、实践操作为辅,以教师为主体、学生在教中学,②不利于理论与实践的结合和学生工程实践能力的培养,也不适用于本课程的教学。

为此,我院在软件工程专业软件测试方向开发建设了缺陷跟踪与软件测试管理课程,并从2008级学生开始教学实践。从2011年本课程的第一次教学实施至今,教学团队每年都会根据上一年的教学反馈信息,结合行业应用情况变化,对讲授内容及组织方式进行调整,取得了良好的教学效果。

1 课程标准的制定

通过对企业软件测试过程的调研,针对其工作过程、任务和职责进行分析梳理,明确软件缺陷跟踪、分析及软件测试项目设计、执行、管理等的具体工作任务、工作流程、工作方式,制定了本课程的课程标准。

1.1 课程定位

本课程是软件测试专业的一门核心专业课程,专业必修课程,在软件测试专业课程体系中占有重要的地位。根据国家“卓越工程师教育培养计划”对工程技术人才培养目标的定位,参照国家计算机技术与软件专业软件评测师专业技术资格的专业标准,本课程按照职业岗位的任职要求进行教学,定位于培养应用型人才的软件缺陷跟踪处理和测试管理技能以及软件缺陷度量、分析、预防的基本技能,养成满足企业要求的职业能力和职业素养。

1.2 课程目标

1.2.1 知识目标

(1)软件测试管理知识:了解软件测试流程、策略、方法、技术、工作量估算和风险控制知识;(2)软件缺陷管理知识:了解软件缺陷的基本概念、分类、发现手段、修复策略,理解缺陷产生的原因,了解软件缺陷管理的理念、等级、模型;(3)软件质量保证知识:了解软件质量基本概念、影响软件质量的因素、软件缺陷的度量、分析、预防知识;(4)工具软件相关知识:了解市场占用率较高的若干软件缺陷管理工具及软件测试管理工具,了解工具软件的特点和应具备的功能,理解企业自主开发工具软件的必要性。

1.2.2 技能目标

(1)设计能力:能够针对具体的测试需求分析设计测试项目,裁剪定义测试流程和缺陷处理流程,定义软件缺陷生命周期,确定测试方法、测试策略等,选用合适的软件缺陷管理工具或软件测试管理工具;(2)管理能力:能够有效管控软件测试过程,保证测试流程和缺陷处理流程的正常流转;针对不同方式和技术发现的软件开发各阶段可能出现的缺陷,进行正确判断、描述、提交并跟踪处理,保证所有缺陷最终都得到妥善处理;(3)分析能力:能够根据具体需求选择合适的缺陷度量元及度量方式;能够应用各种软件缺陷分析技术和工具对缺陷度量数据进行定性及定量分析;能够根据缺陷跟踪管理过程和缺陷分析结论,提出适用的软件缺陷预防措施和方法,帮助改进组织的软件工程过程规范;(4)文档能力:能够独立规范撰写和使用软件测试管理和软件缺陷管理过程中涉及到的技术文档、表格。

1.2.3 素质目标

(1)德、智、体全面发展,知识、能力、素质相协调;(2)具有发现问题、分析问题、解决问题的能力;(3)具有自主学习能力和可持续发展能力,能根据工作需要更新专业知识、关注专业发展;(4)具有较高工程素养、工程创新能力和国际竞争力;(5)具有良好的团队协作和沟通能力;(6)具有严谨的工作作风和端正的工作态度。

2 教学设计

教学团队借鉴了美国实用主义哲学家和教育家约翰・杜威的“从做中学”的教学论思想,以情境为载体,采用了项目导向、任务驱动的教学方式。③在教学过程中,将理论知识的学习与具体的项目和工作任务结合,如将缺陷跟踪和测试项目管理的具体职业能力要求与虚拟软件工程项目结合,模拟企业工作岗位,将项目按角色或按阶段划分成多项工作任务,结合工作任务实施教学,带着任务学习不仅能够让学生在实践中掌握抽象的理论知识,提高对课程的学习兴趣和自信心、有效突破课程教学难点,还能培养学生的实际工作能力。具体实施方式为:

(1)结合一个软件测试项目管理工具开展软件测试管理的理论和实践教学。我们目前选用的是上海泽众公司的TestCenter。要求学生使用该软件完成创建项目、组建团队、创建测试计划、创建测试需求等任务,从而理解掌握软件测试过程及其管理流程。在后续知识点的教学过程中,也适时结合工具软件的相应功能来讲授。例如在介绍软件缺陷的生命周期时,可以TestCener或其它缺陷管理软件中具体的功能实现为例来具体讲解。

(2)学生以5~6人的小组为单位,其中一人作为测试经理,其他人为测试员。针对某一常用的开源和商业软件缺陷管理工具,例如BugFree、Mantis、Bugzillia、禅道、QC等,进行简单的功能测试,用TestCenter管理测试过程。要求小组首先通过集体讨论定义测试流程、制定测试计划,然后按照任务分工进行测试,最后提交测试报告。通过完成这样的任务,学生既进一步熟悉了使用TestCener进行软件测试管理的过程,又对其它常用测试管理或缺陷管理工具的使用有所了解,有助于拓展学生的知识面,也能帮助学生在以后的实际工作中根据需要比较选择合适的工具。

(3)学生以5~6人为一组,分别扮演项目经理、测试经理、开发经理、开发人员、测试人员角色,从需求分析开始进行一个小项目的开发和测试。要求学生完成需求规格说明书、测试计划等相关文档的撰写、评审,测试和开发工作同步进行,在前期学习的基础上自选测试管理工具或缺陷管理工具,最后按照测试计划指定的质量标准完成项目开发。要求在不同阶段通过角色交换使每个同学都能承担不同的测试和开发工作。由于我们的主要目的是了解掌握测试管理和缺陷跟踪技能,项目功能实现不是主要目的,因此选用了一些工作量较小的项目,如计算器、简易的学生管理系统、图书管理系统等。

在课程授课的内容上,该课程主要从六方面进行讲解:(1)软件测试管理。介绍软件测试常规流程、软件测试管理的内容、目标等,并通过一个软件测试管理工具的学习使用,使学生首先对软件项目的测试管理过程产生整体认知。(2)软件缺陷概述。介绍软件质量和软件缺陷的定义、关系,分析软件缺陷产生的原因、软件缺陷的来源;需要关注的软件缺陷重要信息、软件缺陷的常用分类依据等。(3)软件缺陷管理。阐述软件缺陷管理的目标和理念,介绍缺陷管理的等级定义、软件缺陷的生名周期、软件缺陷的跟踪处理流程、软件缺陷报告及其提交等。(4)软件缺陷发现。从软件工程各阶段介绍软件缺陷发现的不同方法,重点介绍同行评审、产品过程质量保证等。(5)软件缺陷度量。介绍软件度量、软件缺陷度量相关知识及针对度量数据进行的软件缺陷分析方法和技术。(6)软件缺陷预防。从主动预防的角度出发,介绍软件缺陷的预防模型、方法、技术以及其它有助于预防缺陷产生的相关方法。

3 结语

教学实践表明,缺陷跟踪与软件测试管理课程的教学实施拓展了软件测试专业学生的知识广度和深度,整合、锻炼了学生的软件测试及测试管理技能,增强了学生的就业竞争力,教学效果显著,同时进一步完善了学院软件测试专业课程体系结构。在今后的教学活动中,如何适应“卓越工程师教育培养计划”对具有工程能力、创新能力的工程技术人才的培养要求,进一步改进课程教学模式和评价方式,依然是一个需要长期探讨的课题。

*通讯作者:马军霞

郑州轻工业学院第三批青年教师教学改革与研究项目支持

注释

① 于波,姜艳.软件质量管理实践――软件缺陷预防、清除、管理实用方法[M].北京:电子工业出版社,2008:294.

软件开发试用期工作范文第5篇

为使软件既能高效又能保质保量的完成,近几年来,软件开发单位采用专门的软件管理团队对软件进行规范管理,与此同时改进软件开发技术。软件规范管理从近年的9001B质量体系认证、GJB5000A软件过程改进以及软件工程化等都对软件开发的各个阶段产品进行了规范管理,地面测控软件的管理日益规范,不断改进。另一方面,为大幅度提高软件的研发效率和质量,可以采用软件复用技术。本文结合测控软件开发实践,对复用技术在测控软件中的有效应用进行初步研究。

2软件复用理论

2.1软件复用的概念

为避免程序开发“从零开始”以及重复相同的工作,采用已有的经验和成果,将开发的重点集中在应用系统的新研部分,提高工作效率和软件质量,这就是软件复用。复用形式包括基于构件的复用和基于过程的复用,基于构件的复用是目前主要的复用形式。

2.2软件构件及基于构件的软件开发

软件构件是软件复用的核心和基本单位,具有独立的功能,是可复用的软件组成部分,可供第三方进行软件组装。构件可以是被封装的对象类、类树、功能模块、软件框架、软件构架(或体系结构)、文档、分析件、设计模式等。基于构件的软件开发与传统的软件开发相比,基于构件的软件开发强调使用软件构件对软件系统进行设计开发。基于构件的软件开发方法需要有相应的软件开发过程作为基础,否则,就不会有与该系统相符合的质量特性要求的软件构件。

2.3软件复用的优点

(1)改善软件质量:经过测试以及经过实践的软件往往缺陷更少。(2)降低开发风险:开发新的组件,如果测试不够充分,轻则有效性不高,重则可能是造成软件失败的原因。(3)支持快速原型开发:快速构建实用可操作系统模型,凭借其与用户进行有效沟通,最终获得用户有效意见反馈。(4)提高软件开发效率,缩短软件开发周期,从而降低软件开发成本。

3软件复用在测控软件开发中的应用

近年来,随着任务数量的增多,测控软件的开发团队越来越小,软件开发周期越来越短,软件的研制要求却不断的提高;随着卫星工作模式的增加,地面接收设备也需增加相应的工作模式完成相应的接收任务。因此,测控软件不但需要完成原有工作模式的监控管理功能,还需完成新增工作模式的监控管理功能。测控软件必须有效继承原有成熟的计划管理、自动标校/测试及自动运行管理技术,同时需要开发适合新增工作模式的计划管理、自动标校/测试及自动运行管理技术,并且要为后续其它型号软件提供高效的功能继承。基于软件复用技术的测控软件开发,使用大量的已经过验证的高效软件,对传统瀑布模型的各个研制阶段的产品(如需求分析、软件设计、软件编码、软件测试)进行优化和简化,节省了人力和时间,提高了软件的可靠性,降低了软件成本和开发周期。在软件的研制过程中,需要对软件的复用架构进行设计,对可复用的构件进行适应性修改设计以适应新的软件需求,还需对新研的部件进行软件设计。测控软件对原有成熟的设备监控、计划管理、自动标校/测试及自动运行管理功能的继承,就成为软件的复用的内容。其中包括四个阶段的复用:需求复用、设计复用、代码复用、测试复用。

3.1需求复用

测控软件的变更原因主要有两种:(1)用户需求变更。(2)软件自身技术升级。其中,用户需求变更是导致软件变更的首要因素;软件技术升级的部分工作往往也是为了更好的适应用户的需求。首先,同类任务的需求是逐渐增加的,并且有一定的可继承性,当增加新的需求时,已验证过的任务需求即可成为后续任务需求的可复用的构件。其次,不同的测控任务需求之间同样存在相同或相似的元素。例如,任何一个任务都有相同或相似的任务流程;根据工作计划及自动运行策略进行站前标校、任务宏配置、启动自动运行流程;监控数据的存储、显示、查询等任务需求存在一定的共性,对其通用的任务需求,是完全可以复用或部分复用的。因此,任务需求变更与软件需求变更为因果关系,直至后续的各个阶段活动都受到任务需求变更的影响。从需求分析、软件设计、软件编码直至软件测试,都会因为任务需求的变更而必须进行相应的更动。

3.2设计复用

多年以来,很多任务的测控软件都有相同或相似的软件结构,因此,这一有利条件,在软件结构设计时,得到了充分的利用。从软件复用的角度来说,在进行软件结构设计时,需将软件中相对稳定的部分(如设备监控、数据库管数据库管理、计划管理、用户管理)与新增加的部分不仅从结构上分开,而且要求其接口相对单一稳定。这样,从软件设计到代码开发都可以复用。

3.3代码复用

对程序代码的复用,以设备的监控线程为例介绍如下:目前,测控站内设备通过局域网进行通信,各个设备与测控软件之间的通信接口都已进行了标准化,因此,对不同设备的监控线程可以进行代码复用;如果重新设计代码,不但要耗费大量的人力和时间,延长软件开发周期,而且重新设计的代码必须进行充分的软件测试,否则难以保证其正确性和健壮性。开发者使用以往可复用的程序代码,或全部吸收或加以优化,大大避免了重复性工作,将精力集中于关键技术的攻关,如此设计更加高效可靠的软件系统。

3.4测试用例复用

软件测试复用主要包括测试流程的复用、测试方法的复用和测试用例的复用。其中,测试用例的复用是测试复用中的关键技术。测试用例的复用对于缩短软件的开发周期和降低软件开发成本具有极其重要的意义。

4结束语