软件测试的学习心得

来源:互联网 发布:无线信道测试软件 编辑:程序博客网 时间:2024/04/28 12:00

软件测试是软件质量保证的重要手段,虽然在国外,软件测试技术已经发展到了比较高的水平,但是在国内还没有一个能够适用于中、小型软件公司的软件测试过程规范,导致了这些占中国软件行业很大比重的中、小型软件公司生产出来的软件,质量无法从过程上进行控制,极大的制约了中国软件行业的发展。 

    近年来,由于信息技术的飞速发展,使软件产品应用到社会的各个领域。软件产品的质量自然成为人们共同关注的焦点。质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,造成公司信誉下降,继而冲击股票市场。在一些关键应用 (如民航订票系统、银行结算系统、证券交易系统、自动飞行控制软件、军事防御和核电站安全控制系统等) 中使用质量有问题的软件,还可能造成灾难性的后果。

接触软件测试已经有一段日子了,这些日子里经历了许多坎坷,但是自己也慢慢地从这些挫折中更加深刻地了解了软件测试。

软件测试是伴随着计算机软件的产生而产生的。我们都知道,测试的过程其实并不简简单单是测试的事情,这个过程依然包含了开发的任务(BUG的解决),也就是说测试周期必须充分评估测试时间以及开发修复的时间。

软件测试是为了更快、更早地将软件产品或软件系统中所存在的各种问题找出来,并促使程序员尽快地解决这些问题,最终及时地向客户提供高质量的软件产品。软件测试是软件开发过程中的重要内容之一,是软件质量保证的关键。软件测试贯穿软件开发的整个开发生命周期——软件项目一开始,软件测试也就开始了,从软件产品的需求分析审查到最后的验收测试、安装测试结束。

软件测试的目的就是为寻找和纠正软件中的故障,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。 “测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度。:“测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个生命周期过程。”

测试是所有工程学科的基本组成单元,是软件开发的重要部分。软件测试的目的决定了如何去组织测试。随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就显得更加困难。然而,为了尽可能多地找出程序中的错误,生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。在测试工作中还要选择适当的测试方法。

一套完整的测试应该由五个阶段组成:
    1.测试计划
    首先,根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求报告,即制订黑盒测试的最高标准,以后所有的测试工作都将围绕着测试需求来进行,符合测试需求的应用程序即是合格的,反之即是不合格的;同时,还要适当选择测试内容,合理安排测试人员、测试时间及测试资源等。
    2.测试设计
    将测试计划阶段制订的测试需求分解、细化为若干个可执行的测试过程,并为每个测试过程选择适当的测试用例(测试用例选择的好坏将直接影响到测试结果的有效性)。
    3.测试开发
    建立可重复使用的自动测试过程。
    4.测试执行
    执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、组合测试、集成测试、系统联调及回归测试等步骤组成,测试人员应本着科学负责的态度,一步一个脚印地进行测试。
    5.测试评估
    结合量化的测试覆盖域及缺陷跟踪报告,对于应用软件的质量和开发团队的工作进度及工作效率进行综合评价。

然而,传统的测试技术和方法,对面向对象技术开发的的软件多少显得有些力不从心。鉴于此,提出了面向对象的测试技术!面向软件测试技术是新兴的软件测试技术,是专门针对使用面向对象技术开发的软件而提出的一种测试技术。面向对象软件测试是根据面向对象的软件开发过程结合面向对象的特点提出的。它包括分析与设计模型测试技术、类测试技术、对象交互测试技术、类层次结构测试技术、面向对象系统测试技术等。

当然给软件带来错误的原因很多,具体地说,主要有如下几点:①交流不够、交流上有误解或者根本不进行交流 ②软件复杂性 ③程序设计错误 ④需求变化 ⑤时间压力等等。要解决这些错误就应该做好测试工作, 尽早的开始测试工作,并且测试工作贯穿于软件开发的整个生命周期。必须认真地做好每一步测试工作。当需要运行的测试多于现有资源所能运行的测试用例的测试时,一定要考虑分层增量测试。要学会采用软件测试工程化的思想,要求建立正式的测试组织、明确测试的目标和流程、确定测试的活动、对测试的过程和活动进行监控,从而保证软件测试的质量.

随着软、硬件技术的发展,计算机的应用领域越来越广,而其中软件的功能也越来越强大,软件也越来越复杂。这就使保证软件的质量,保证软件的高度可靠性,面临巨大的挑战。特别是诸如军事、航空航天、通讯、交通医疗等行业,软件的微小瑕疵就可能造成对生命安全、天文数字的巨额财产、甚至对国家安全严重威胁。 因此对软件产品质量的度量、评估和保证,是软件开发中非常重要的问题。基于这些原因,国际上的标准化和认证组织已经制定了一些软件标准。对于软件的开发过程即可通过这些标准进行约束和度量。 随着InternetIntranet/Extranet的快速增长,Web已经对商业、工业、银行、财政、教育、政府和娱乐及我们的工作和生活产生了深远的影响。许多传统的信息和数据库系统正在被移植到互联网上,电子商务迅速增长,早已超过了国界。范围广泛的、复杂的分布式应用正在Web环境中出现。Web的流行和无所不在,是因为它能提供支持所有类型内容连接的信息发布,容易为最终用户存取。

在基于Web的系统开发中,如果缺乏严格的过程,我们在开发、发布、实施和维护Web的过程中,可能就会碰到一些严重的问题,失败的可能性很大。而且,随着基于Web的系统变得越来越复杂,一个项目的失败将可能导致很多问题。当这种情况发生时,我们对WebInternet的信心可能会无法挽救地动摇,从而引起Web危机。并且,Web危机可能会比软件开发人员所面对的软件危机更加严重、更加广泛。

Web工程过程中,基于Web系统的测试、确认和验收是一项重要而富有挑战性的工作。基于Web的测试与传统的软件测试不同,它不但需要检查和验证是否按照设计的要求运行,而且还要测试系统在不同用户的浏览器端的显示 是否合适。重要的是,还要从最终用户的角度进行安全性和可用性测试。然而,InternetWeb媒体的不可预见性使测试基于Web的系统变得困难。因此,我们必须为测试和评估复杂的基于Web的系统研究新的方法和技术。 而自动化测试就是希望能通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。自动化测试的目的在于发现老缺陷。而手工测试的目的在于发现新缺陷。自动化测试涉及到测试流程、测试体系、自动化编译、持续集成、自动发布测试系统以及自动化测试等方面的整合。也就是说让测试能够自动花,不仅是技术、工具的问题,也是一个公司和组织的文化问题。

当然这只是我对软件测试的表面了解,在以后的学习中一定要多看书,首先要有更多的理论知识,再将其运用到实践当中,两者结合,才能将自己本身的潜能发挥出来。为自己今后的人生打下坚实的基础。自己给自己打气,加油。我相信我能做得到,为了将来不断的努力!奋斗!永不言败!!

 

0 0
原创粉丝点击