


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选word文档 下载可编辑软件开发心得总结有感于网盘开发过程有感于网盘开发过程.1一、软件开发个人体会.2二、做软件开发我觉得要明白.2三、在开发中遇到问题应该怎么去解决?.2四、怎么样才能提高自身的能力?.2五、怎么样才能做好软件开发?.2六、文档的重要性.3七、我的收获.3八、网盘项目开发的最大体会.4九、软件测试(单体测试和连接测试).4常熟理工学院sig小组3/28/20一、软件开发个人体会软件领域中的知识在于积累。做软件开发,就类似算数学题和世界杯足球赛一样重在结果,而不在乎过程。软件服务于人类,软件是在解决一些生活中的问题和错误,问题决定解决方案。二、做软件开发我觉得要明白职业的
2、乐趣(a)用自己的智慧去创建新事物的快乐(b)开发对别人有用的东西(c)不断学习来充实自己职业的苦恼:(a)总是追求完美(b)所有要实现的功能由他人而定(c)概念设计计是有趣的,但找bug总是很苦恼的三、在开发中遇到问题应该怎么去解决?不明白就多问,不要自已一直去琢磨。一个问题如果30分钟还没有解决就应该考虑是不是问问别人。一个问题在没有用过3种以上的方法解决过就不要去问别人。解决问题思路是关键相信问题总归有解决的办法,就算连技术上都没法实现的问题,相信通过良好的沟通终究也会有解决的方法。解决问题的前提是理解别人的意思,理解别人的需求,多沟通,及时给客户反馈信息。四、怎么样才能提高自身的能力?
3、程序员怎么样进步最快?理论结合实践不要怕出错,不怕遇到错误,有错误就有挑战,这样才可以进步,但不要让同一个石头把你绊倒2次。五、怎么样才能做好软件开发?首先要明白解决的问题是什么,理解问题,其次再决定怎么解决这个问题碰到很复杂的问题,我们就简单想,把问题简单化,细化到能够实现为止常熟理工学院sig小组3/28/20出了问题,我们要先分析问题,然后知道引起问题的原因,最后并想出问题的解决办法我们应该从2个方面去把握一个项目从业务角度和项目的关键问题上去把握一个项目(a)从不同的系统场景(b)从不同的用户角色(充当什么角色)(c)从不同的系统使用角度(拥有那些权限)其实我觉得开发人员说实在应该要比
4、使用系统的人更了解系统需求,只有真正彻底的了解了项目的业务需求,我们才能做真的做好这个项目六、文档的重要性记得我当初刚开发项目的时候都是写个大致的需求说明书,做一个e-r图,画几个大致的数据流程图,然后建立数据字典和表结构关系。再接着搭建一个开发环境,配置几台服务器,划分一下模块,分工,我们就可以coding了,一直到项目结束了,也没有完整的设计文档,更没有完整的测试文档,虽然这样的确是很快的完成了coding工作,感觉上好像节省了好多成本和开发时间,但后期的维护和bug就是经常出现的事。小项目没有文档关系不大,但如果遇到一个大项目的时候,那这样的开发方式就很有问题很危险的。大项目没有文档首先
5、维护就很麻烦,也很乱,写的代码,过几天都不知道它是完成什么功能的了,其次系统的稳定性和可靠性也让人怀疑,扩展性就不用说了。七、我的收获a.程序员大多都不喜欢写文档,我们以前也是特讨厌,记得以前都是系统开发完了,为了应付项目验收,就匆匆忙忙的一组人在那里补文档。在我们的思想里,所谓的文档就是一些废话,一句话硬是用十句话来代替的无聊透顶。b.代码风格要规范以前做项目,我们都是不怎么去注意代码风格和写代码的规范,都是稍微想一下就直接开始写代码了。注释也很少用,总感觉我们自己写的代码,我们怎么会不知道它做了些什么事呢?总觉得我们自己写的代码我们怎么会不知道它是用来做什么的呢。一直都不相信这是个事实,但
6、事实上,项目验收后,系统刚开始使用的人少,也就不会出现潜在的错误,随着时间的增加,久而久之,当大量用户并发访问的时候,系统的bug就暴漏出来了,那时你再用熟悉的eclipse打开整个项目的源码时,再去看自己写的代码的时候,真的发现,我们定义的这个变量名是什么意思啊?我们的这个flag是用来判断什么的啊?我们的if()中条件不知道是判断什么?function()也忘记是什么功能了?想想好可怕啊。难道真的都忘记了吗?回答是肯定的真的忘了。c.心得体会:通过做该网盘项目,在这2年的锻炼中,我们才真的体会到,良好的文档是正规研发流程中非常重要的环节,一个好的程序是先写好设计文档再进行编程的,在设计文档
7、的指导下,才能写出安全的代码。如果你不写文档,一开始就写程序,这样你就不会按已设计好的路线走,而是想到哪写到哪。小功能还好说,要是大功能,就容易混乱.常熟理工学院sig小组3/28/20刚开始我们还很不习惯这一系列的编程风格,很多的规范,尤其是命名,方法和注释,都有这着很多限制,让我们觉得真罗唆,写个程序完成功能不就可以了吗,明明1小时做完的事情非得让人用3、4个小时去做,我们现在真的明白这样做的好处了,我们已经习惯这样的编程风格了,这也养成了我们的一个编程习惯了,深有体会啊。最忙的时候就是我们成长和收获最多的时候。八、网盘项目开发的最大体会我们觉得项目开发的开始时候,应该由项目负责人很好的对
8、项目是什么项目,具体大概做什么事情,是谁提出来的,目的是解决什么问题,以及里面用到的很多专有名词做个细致的说明,而不是从一开始就分几本式样书,给个静态html的demo看看,然后搭建好开发环境就按照式样设计书来开发。九、软件测试(单体测试和连接测试)我们首先认为,编写程序的时候不要想出了问题再解决,而是要想如何不会出现问题,要根据经验来预测可能出现的问题,然后避免出现。测试,说的直接点就是给软件找错误。很多人认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的测试,实际上我们不这么认为。我们觉得对开发人员来说,我们要把测试出来的bug都应该做个分析,知道错的原因之后,我们就应该在
9、下个项目中防止类似的错误发生,而真正来提高我们开发的效率。常熟理工学院sig小组3/28/20扩展阅读软件开发心得(设计篇)论文题目软件测试摘要.2第一章介绍.31软件测试简介.31软件测试的概念.32软件测试的原则.32软件测试的心理学.53软件测试的内容.74软件测试的分类.85软件测试模型.136软件测试职业发展前景.177软件测试的误区.188软件测试的前景.20第二章软件测试工作的经验和心得.211软件测试用例的规范.212自动化测试.253测试中的问题.281测试运用的是认识论.282测试无法发现所有的程序问题.28参考资料.29论文信息.摘要随着软件产业的发展,软件产品的质量控制
10、与质量管理正逐渐成为软件企业生存与发展的核心。几乎每个大中型it企业的软件产品在发布前都需要大量的质量控制、测试和文档工作,而这些工作必须依靠拥有娴熟技术的专业软件人才来完成。软件测试工程师就是这样的一个企业重头角色。目前的现状是一方面企业对高质量的测试工程师需求量越来越大越大,另一方面国内原来对测试工程师的职业重视程度不够,使许多人不了解测试工程师具体是从事什么工作。故写此论文,对软件测试的概念、理念、方法、技术等进行一下表述,并总结一个多月中软件测试工作的心得和经验。论文主要分两个部分讲述了软件测试第一章,从理论上介绍软件测试的定义、理念等。第二章,从一个多月的软件测试工作中获得的经验和心
11、得。第一章介绍1软件测试简介软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。1软件测试的概念使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别.它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness)、完全度(completeness)和质量(quality)的软件过程;是sqa(softwarequalityassur
12、ance)的重要子域。软件测试工程师grenfordj.myers曾对软件测试的目的提出过以下观点:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试。然而,这种观点指出测试是以查找错误为中心,而不是为了演示软件的正确功能.但是只从字面意思理解,可能会产生误导,认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的测试,实际上并非如此!(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进
13、;(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法2软件测试的原则软件测试的几大原则软件开发人员即程序员应当避免测试自己的程序不管是程序员还是开发小组都应当避免测试自己的程序或者本组开发的功能模块。若条件允许,应当由独立于开发组和客户的第三方测试组或测试机构来进行软件测试。但这并不是说程序员不能测试自己的程序,而且更加鼓励程序员进行调试,因为测试由别人来进行可能会会更加有效、客观,并且容易成功,而允许程序员自己调试也会更加有效和针对性。应尽早地和不断地进行软件测试应当把软件测试贯穿到整个软件
14、开发的过程中,而不应该把软件测试看作是其过程中的一个独立阶段。因为在软件开发的每一环节都有可能产生意想不到的问题,其影响因素有很多,比如软件本身的抽象性和复杂性、软件所涉及问题的复杂性、软件开发各个阶段工作的多样性,以及各层次工作人员的配合关系等。所以要坚持软件开发各阶段的技术评审,把错误克服在早期,从而减少成本,提高软件质量。对测试用例要有正确的态度第一,测试用例应当由测试输入数据和预期输出结果这两部分组成;第二,在设计测试用例时,不仅要考虑合理的输入条件,更要注意不合理的输入条件。因为软件投入实际运行中,往往不遵守正常的使用方法,却进行了一些甚至大量的意外输入导致软件一时半时不能做出适当的
15、反应,就很容易产生一系列的问题,轻则输出错误的结果,重则瘫痪失效!因此常用一些不合理的输入条件来发现更多的鲜为人知的软件缺陷。人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象。不要以为发现几个错误并且解决这些问题之后,就不需要测试了。反而这里是错误群集的地方,对这段程序要重点测试,以提高测试投资的效益。严格执行测试计划,排除测试的随意性,以避免发生疏漏或者重复无效的工作。应当对每一个测试结果进行全面检查。一定要全面地、仔细地检查测试结果,但常常被人们忽略,导致许多错误被遗漏。妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用。在遵守以上原则的基础
16、上进行软件测试,可以以最少的时间和人力找出软件中的各种缺陷,从而达到保证软件质量的目的。2软件测试的心理学人类行为具有高度目标性,确立一个正确的目标有着重要的心理学影响。软件测试的心理学问题就是如何摆正测试的两个目标的关系,使得测试活动更加富有成效。程序测试的过程具有破坏性每当测试一个程序时,人们总希望为程序增加一些价值。利用测试来增加程序的价值,是指通过测试,找出并修改尽可能多的程序缺陷,从而提高程序的可靠性或质量。因此,不要只是为了证明程序能够正确运行而去测试程序。相反,应该一开始就假设程序中隐藏着错误(这种假设几乎对所有的程序都成立),然后测试程序,发现尽可能多的错误。事实上,如果把测试
17、目标定位于要证明程序中没有缺陷,那么就会在潜意识中倾向于实现这个目标。也就是说,测试人员会倾向于挑选那些使程序失效的可能性较小的测试数据。另一方面,如果把测试目标定位于要证明程序中存在缺陷,那么就会选择一些容易发现程序缺陷的测试数据。而后一种态度会比前者给程序增加更多的价值。因此,大多数测试专业人员都赞同myers对测试的定义测试是为发现错误而执行程序的错误。这个定义意味着程序测试的过程是具有破坏性的,甚至是一个施虐过程。开发人员可能不愿意这么做,因为人们总是倾向于建设而不是破坏。这个定义还暗示了对于一个特定的程序,应该如何设计测试用例(测试数据)、哪些人应该而哪些人又不应该执行测试。事实上,
18、如果在测试某个程序段时发现了可以纠正的缺陷,或者测试最终确定在没有其他缺陷,则应将这次合理设计并得到有效执行的测试称作是成功的。而所谓不成功的测试,仅指未能适当地对程序进行检查,未能找出程序中潜藏缺陷的测试。因为软件中不可能没有缺陷,没有找出它们,当然测试是不成功的。软件测试就是证明软件不存在错误的过程。对几乎所有的程序而言,甚至是非常小的程序,这个目标实际上是无法达到的。因为即使程序完全实现预期要求,仍可能包含有缺陷。也就是说,如果程序不按要求工作,它显然有缺陷,但如果程序做了不要它做的事,它也有缺陷。心理学研究告诉我们,当人们在干一件已经知道是不合适的或不可能做到的事时,往往他们的表现就相
19、当糟糕。把程序测试定义为在程序中找出错误的过程,就使测试成了可以做到的任务,从而克服了心理上存在的问题。虽然这看起来像是个微妙的文字游戏,但对成功地进行软件测试有很大的影响。总之,软件测试更适宜被视为试图发现程序中错误(假设其存在)的破坏性的过程。一个成功的测试,通过诱发程序发生错误,可以在这个方向上促进软件质量的改进。当然最终人们还是要通过软件测试来建立某种程度的信心软件做了其应该做的,而没有做其不应该做的。程序员应避免测试自己的程序由开发人员来测试自己的代码是一件很不妥当的事情。开发和测试生来就是不同的活动。开发是创造或者建立某种事物的行为,如一个功能模块或整个系统。而测试的重要目的是证实
20、一个模块或者一个系统工作不正常。这两个活动之间有着本质的矛盾。一个人不太可能把两个截然对立的角色都扮演地很好,因此应当限制开发人员在测试中的参与,给他们比较合适的任务是进行最底层的测试单元测试。当一个程序员完成了设计与编写程序的建设性工作后,要一夜之间突然改变他的观点,设法对程序形成一个完全否定的态度,那是非常困难的。所以,大部分程序员都由于不能使自己进入必要的精神状态(不是抱着要揭露出自己程序中错误的态度),就不能有效的测试自己的程序。除了这个心理学问题之外,还有一个重要的问题程序中可能包含由于程序员对问题的叙述或说明的误解而产生了错误。如果是这种情况,当程序员测试自己的程序时,往往还会带着
21、同样的误解致使问题难以发现。程序设计组织不应测试自己的程序在宏观意义上,一个程序设计组织或一个工程项目是个有生命的有机体,它同样有心理学问题。在大多数情况下,人们都以在给定日期内,以一定代价完成程序编制任务的能力来衡量程序设计组织和项目管理人员的。这样做的理由是时间和成本指标便于衡量,而程序的质量很难度量。要程序设计组织在测试自己的程序时持客观态度是很困难的,因为如果用正确的定义看待测试,就不大可能按预定计划完成测试,也不大可能把耗费的代价限制在要求的范围以内。软件生产的三个最重要的因素是质量、进度和费用。由于费用和进度的限制,要开发一种高质量、快速交付和低成本的软件产品并不容易。也就是说要同
22、时达到三个目标是困难的。因此在软件产品的开发中要权衡它们之间的关系,是软件的特性能满足用户的要求,这意味着软件产品的特性的度量和预计是必要的。软件测试由独立测试机构承担有很多好处。独立测试是指软件测试工作由在经济上和管理上独立于开发机构的组织进行。独立测试可以避免软件开发者测试自己开发的软件,由于心理学上的问题,软件开发者难以客观、有效的测试自己的软件,要找出那些因为对问题的误解而产生的错误就更加困难。独立测试还可以避免软件开发机构测试自己的软件,软件产品的开发过程受到时间、成本和质量三者的制约,在软件开发的过程中,当时间、成本和质量三者发生矛盾时,质量最容易被忽视,如果测试组织与开发组织来自
23、相同的机构,测试过程就会面临来自于开发组织同一来源的管理方面的压力,使测试过程受到干扰。采用独立测试方式,无论在技术上还是管理上,对提高软件测试的有效性都具有重要意义。客观性对软件测试和软件中的错误抱着客观的态度,这种客观的态度可以解决测试中的心理学问题,既能以揭露软件中错误的态度工作,也能不受发现的错误的影响。经济上的独立性使测试有更充分的条件按测试要求去完成。专业性独立测试作为一种专业工作,在长期的工作过程中势必能够积累大量实践经验,形成自己的专业知识。同时软件测试也是技术含量很高的工作,需要有专业队伍加以研究,并进行工程实践。专业化分工是提高测试水平、保证测试质量、充分发挥测试效应的必然
24、途径。权威性由于专业优势,独立测试工作形成的测试结果更具信服力,而测试结果常常和对软件的质量评价联系在一起,专业化的独立测试机构的评价,更客观、公正和具有权威性。资源有保证独立测试机构的主要任务是进行独立测试工作,这使得测试工作在经费、人力和计划方面更有保证,不会因为开发的压力减少对测试的投入,降低测试的有效性可以避免开发单位侧重软件开发而对测试工作产生不利的影响。3软件测试的内容软件测试主要工作内容是验证(verification)和确认(validation),下面分别给出其概念验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(
25、dotherightthing)确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程;评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(doitright)静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的对
26、象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。4软件测试的分类从是否关心软件内部结构和具体实现的角度划分a.白盒测试b.黑盒测试c.灰盒测试从是否执行程序的角度a.静态测试b.动态测试。从软件开发的过程按阶段划分有a.单元测试b.集成测试c.确认测试d.系统测试e.验收测试*测试过程按4个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。*开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。*集成测试把已测试过的模块组装起来,
27、主要对与设计相关的软件体系结构的构造进行测试。*确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。*系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。单元测试(unittesting)*单元测试又称模块测试,是针对软件设计的最小单位程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。*单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。单元测试的内容*在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的i/o条件和模块的逻辑结构,主要采用白
28、盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。(1)模块接口测试*在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致;*在做内外存交换时要考虑文件属性是否正确;open与close语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写输入错误,io错误是否检查并做了处理。(2)局部数据结构测试*不正确或不一致的数据类型说明*使用尚未赋值或尚未初始化的变量*错误的初
29、始值或错误的缺省值*变量名拼写错或书写错*不一致的数据类型*全局数据对模块的影响(3)路径测试*选择适当的测试用例,对模块中重要的执行路径进行测试。*应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。*对基本执行路径和循环进行测试可以发现大量的路径错误。(4)错误处理测试*出错的描述是否难以理解*出错的描述是否能够对错误定位*显示的错误与实际的错误是否相符*对错误条件的处理正确与否*在对错误进行处理之前,错误条件是否已经引起系统的干预等(5)边界测试*注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。*
30、如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。单元测试的步骤*模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。驱动模块(driver)桩模块(stub)存根模块*如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。*对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。集成测试(integratedtesting)*集成测试(集成测试、联
31、合测试)*通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。在单元测试的同时可进行集成测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。*子系统的集成测试特别称为部件测试,它所做的工作是要找出集成后的子系统与系统需求规格说明之间的不一致。*通常,把模块集成成为系统的方式有两种一次性集成方式增殖式集成方式
32、一次性集成方式(bigbang)*它是一种非增殖式组装方式。也叫做整体拼装。*使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。增殖式集成方式*这种集成方式又称渐增式集成*首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统*在集成的过程中边连接边测试,以发现连接过程中产生的问题*通过增殖逐步组装成为要求的软件系统。(1)自顶向下的增殖方式*这种集成方式将模块按系统程序结构,沿控制层次自顶向下进行组装。*自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。*选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功
33、能。(2)自底向上的增殖方式*这种集成的方式是从程序模块结构的最底层的模块开始集成和测试。*因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。*自顶向下增殖的方式和自底向上增殖的方式各有优缺点。*一般来讲,一种方式的优点是另一种方式的缺点。(3)混合增殖式测试*衍变的自顶向下的增殖测试首先对输入输出模块和引入新算法模块进行测试;再自底向上组装成为功能相当完整且相对独立的子系统;然后由主模块开始自顶向下进行增殖测试。*自底向上-自顶向下的增殖测试首先对含
34、读操作的子系统自底向上直至根结点模块进行组装和测试;然后对含写操作的子系统做自顶向下的组装与测试。*回归测试这种方式采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,再自底向上测试。关键模块问题*在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。*关键模块的特征满足某些软件需求;在程序的模块结构中位于较高的层次(高层控制模块);较复杂、较易发生错误;有明确定义的性能要求。确认测试(validationtesting)*确认测试又称有效性测试。任务是验证软件的功能和性能及其它特性是否与用户的要求一致。*对软件的功能和性能要求在软件需求规格说明书中已经明确规定。它包
35、含的信息就是软件确认测试的基础。进行有效性测试(黑盒测试)*有效性测试是在模拟的环境(可能就是开发的环境)下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。*首先制定测试计划,规定要做测试的种类。还需要制定一组测试步骤,描述具体的测试用例。*通过实施预定的测试计划和测试步骤,确定软件的特性是否与需求相符;所有的文档都是正确且便于使用;同时,对其它软件需求,例如可移植性、兼容性、出错自动恢复、可维护性等,也都要进行测试*在全部软件测试的测试用例运行完后,所有的测试结果可以分为两类测试结果与预期的结果相符。这说明软件的这部分功能或性能特征与需求规格说明书相符合,从而这部分程序被
36、接受。测试结果与预期的结果不符。这说明软件的这部分功能或性能特征与需求规格说明不一致,因此要为它提交一份问题报告。软件配置复查n软件配置复查的目的是保证u软件配置的所有成分都齐全;u各方面的质量都符合要求;u具有维护阶段所必需的细节;u而且已经编排好分类的目录。n应当严格遵守用户手册和操作手册中规定的使用步骤,以便检查这些文档资料的完整性和正确性。验收测试(acceptancetesting)*在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。*验收测试是以用户为主的测试。软件开发人员和qa(质量保证)人员也应参加。*由用户参加设计测试用例,使用生产中的实际数据进行测试。*在
37、测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。*确认测试应交付的文档有确认测试分析报告最终的用户手册和操作手册项目开发总结报告。系统测试(systemtesting)*系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。*系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。5软件测试模型软件测试若使用经典的v模型阶段可以分为单元测试集成测试系统测试v模
38、型是最具有代表意义的测试模型。v模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系。从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。左边依次下降的是开发过程各阶段,与此相对应的是右边依次上升的部分,即各测试过程的各个阶段。用户需求验收测试需求分析和系统设计确认测试和系统测试概要设计集成测试详细设计单元测试编码v模型问题测试是开发之后的一个阶段。测试的对象就是程序本身。实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。整个软件产品的过程质量保证完全依赖于开发人员的能力和对工
39、作的责任心,而且上一步的结果必须是充分和正确的,如果任何一个环节出了问题,则必将严重的影响整个工程的质量和预期进度w模型w模型由evolutif公司公司提出,相对于v模型,w模型增加了软件各开发阶段中应同步进行的验证和确认活动。w模型由两个v字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。w模型强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。w模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解
40、项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。但w模型也存在局限性。在w模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,w模型并不能解除测试管理面临着困惑。h模型h模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。这个示意图演示了在整个生产周期中某个层次上的一次测
41、试微循环。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。h模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。h模型指出软件测试要尽早准备,尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。x模型x模型也是对v模型的改进,x模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。x模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试
42、,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。由图中可见,x模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。6软件测试职业发展前景随着我国软件业的发展,专业的软件测试人员成为了众多知名公司追逐的对象,软件测试有着广阔的发展前景,具体可以分为初级测试工程师初级职位,开发测试脚本,
43、执行测试测试工程师/程序分析员编写自动测试脚本程序高级测试工程师/程序分析员确定测试过程并指导初级测试工程师测试组负责人监管1-3人工作,负责规模/成本估算测试/编程负责人监管4-8人,安排和领导任务完成,提出技术方法测试/质量保证/项目经理负责8名以上人员的一个或多个项目,负责全生存期业务/产品经理负责多个项目的人员管理,负责项目方向和业务盈亏7软件测试的误区市场对软件质量重要性的认识逐渐增强。所以,软件测试在软件项目实施过程中的重要性日益突出。但是,现实情况是,与软件编程比较,软件测试的地位和作用,还没有真正受到重视,对于很多人(甚至是软件项目组的技术人员)还存在对软件测试的认识误区,这进
44、一步影响了软件测试活动开展和真正提高软件测试质量。(1)误区之一软件开发完成后进行软件测试人们一般认为,软件项目要经过以下几个阶段需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元
45、测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。(2)误区之二软件发布后如果发现质量问题,那是软件测试人员的错这种认识很打击软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简
46、单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。(3)误区之三软件测试要求不高,随便找个人多都行很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国金属绞接顶梁数据监测研究报告
- 部编版一年级下册语文试题 第五单元过关卷 (含答案)
- 语言学汉语古代文学试题及答案
- 北塔二中分班考数学试卷
- 服务器虚拟桌面基础设施规范
- 人工智能技术应用进展记录表
- 三农村公共服务设施无障碍建设与改造方案
- 文言词语与古代文化鉴赏教学计划
- 专业石渣运输合同
- 湖北省武汉市硚口区2024-2025学年度第一学期10月九年级物理试题(含答案)
- 2025国家电力投资集团有限公司应届毕业生招聘笔试参考题库附带答案详解
- 2025年个人所得税赡养老人费用分摊协议模板
- 2025年内蒙古兴安盟单招职业适应性测试题库附答案
- 2025人教版(2024)小学美术一年级下册教学计划、教学设计及教学反思(附目录)
- 医疗器械使用安全和风险管理培训课件
- 2025年新疆生产建设兵团兴新职业技术学院单招职业倾向性测试题库带答案
- 2025年江西工业贸易职业技术学院单招职业技能测试题库带答案
- 雷锋的故事春锋十里暖童心小小雷锋在学习课件
- 语文-云南省师范大学附属中学2025届高三下学期开学考试试题和答案
- 英语学科核心素养下小学英语绘本阅读教学现状及对策研究
- 外周静脉解剖知识
评论
0/150
提交评论