软件测试范文

时间:2023-03-01 03:27:12

软件测试

软件测试范文第1篇

关键词:软件测试;测试概念;软件测试现状;挑战

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)02-0320-02

近年来,信息技术的飞速发展,使得软件产品应用到社会的各各行业。随着人类对计算机应用的逐步深入,软件质量的要求也逐步提高,从而软件测试越来越重要。虽然国内软件测试起步叫较晚,但也越来越被人们重视,据有关资料显示,软件测试费用相当于软件开发总费用的45%左右, 对于一些较高要求的软件,其测试费用很有可能是整个软件项目开发所有费用的3.~5倍,当然随着软件规模的日益增大,测试问题也日益突出。软件最终是否为人所用,没有经过测试的软件产品,你就无法知晓它是否满足用户的需求,有缺陷的软件在极端情况下可能会导致用户财产生命安全。

1 软件测试的概述

软件测试是软件质量的保证,是使用自动化工具或人工来运行系统程序的过程,进而来发现现所运行得到的结果和产品要求的条件之间的差别,并以此来评价。通俗的讲,测试的目的是为了发现软件中存在的错误,同时对软件质量进行度量和评价,而不是证明该软件是成功的,没有错误的软件世间难求。软件测试要以用户需求至上为基本原则,通过用最少的人力、物力、财力和时间找出软件中的各种错误与缺陷,并且通过进一步改正这些错误和缺陷来提高软件的质量。既然软件测试是人为的,因此就不能至善至美,也不可能穷尽测试,软件测试不可能揭示所有的缺陷。其实换一种说法,我们可以把测试过程看作是对软件质量的“探索”过程,这个探索不是“盲人摸象”的过程,它有一个基线即所有的测试都应该追溯到用户需求。

2 基于测试技术的测试方法

传统的人为测试是在编码阶段,甚至是在编码后都是错误的。需求分析,概要设计,详细设计及程序编码实现等各阶段所得的文档都是软件测试的对象,所以说软件测试是贯穿于整个软件定义期和开发期间的,从技术上划分为黑盒测试,白盒测试及灰盒测试。

2.1白盒测试

它是基于源程序或代码内部逻辑结构来设计测试用例而进行的测试。它相当于一个打开的盒子,测试人员可以依据所看到了解的代码结构来设计测试用例。白盒测试分为两种,一种静态一种动态。静态的方法就是直接检查只要按一定步骤进行,包括桌面检查、代码审查等。这种方法一般是由有经验的测试人员做,只是初步大致的来检查系统中存在的错误。动态的方法就必须要生成测试用例来运行程序发现错误,包括有基本路径测试、条件测试数据流测试等。白盒测试一般由有经验的软件测试人员和开发人员进行,因为要需要了解产品的内部工作,关注程序的结构和内部逻辑。

2.2 黑盒测试

它是相对于白盒测试而言,它是基于产品的需求和功能性而不是基于系统的内部设计和代码的任何知识,通过软件的外部表现来发现其缺陷和错误。同样可以把黑盒测试的对象看作是一个封闭的黑盒子,测试人员要根据规格说明在不考虑其程序内部结构和和处理过程,以用户视角进行的测试。黑盒测试是配合白盒测试发现其他错误,它并不是白盒测试的替代品。黑盒测试试图发现的错误主要有:系统功能对不对或者有没有遗漏、界面错误、数据结构或外部数据访问是否错误、性能错误以及初始化和终止错误。所以说一般黑盒测试主要在测试后期执行,而白盒测试一般在早期执行。常用的黑盒技术有边界值分析、因果测试、等价划分等。

2.3灰盒测试

灰盒测试是介于白盒测试和黑盒测试间的一种有效的软件测试技术,结合了是两种测试的有点,它即关注与程序的内部高层逻辑结构,也关注与程序运行时的外部得表现,然而这种关注不需要像白盒那样详细、完整,仅是通过一些表面的现象、事件、标志来判断其内部的运行状态,有时候输出是正确的,但内部实际是错误的,这种情况很常见,如果每次都是通过白盒测试进行操作,结果效率会大大降低,因此采取灰盒测试是一种有效的补救方法。

3 软件测试现状

就国际而言,国际的软件测试领域已基本成熟,在软件业比较发达的国家,无论从投入的人力和时间上看,软件测试都受到了公司的极大重视,他们有严格的测试工作标准和范围规定,软件测试被公司认为不可或缺的。已美国为例,据说美国软件测试市场已作为软件产业中的一个独特市场,不仅是软件开发企业还是设有软件开发部门的公司,软件测试单位的设置都是必不可少的,其中软件测试人员的数量更是占软件开发工程师的75%左右。软,每一个开发人员都会配备一名测试人员,也就是说开发人员和测试人员的比例是1:1,并且这些测试人员的水平是很高的,往往负责软件测试质量的质量保证经理的职位和软件开发经理是平行的。美国几乎垄断了全球的软件市场,终其原因,当然是很多发面的综合因素,但更重要的一点的是当今美国的信息化水平非常高,人们对产品的质量更高,残酷的竞争更迫使各企业在产品质量方面加大投入,一定要在产品出厂前把质量把关好,美国 的软件工厂概念已经完全形成,已CMM为标志的适应大规模生产的软件流程管理体系已经非常完备,使得软件行业真正成为制造业。

就国内而言,国内的软件市场才刚刚起步,虽然国家对软件业给了很多的鼓励政策,软件业在国内也有很大的发展,但是多数软件公司还是注重代码开发,而忽略代码质量,忽视了测试在整个软件工程项目的重要性,认为测试只是开发的附属品,即使有公司认识到测试的重要性但也是停留在认识阶段,只是做做简单的黑盒测试,功能性测试等。为什么国内的软件市场的表现令人担忧呢?首先很多人认为国内的产品大多数是基于互联网的,软件大部分是在服务器端的,更新的成本大幅降低了,可以一味的借助网络更新,在使用中发现错误然后去弥补。即使有一些已经成规模、有一定的研发的大企业,也没有一套完整的测试流程体系,他们可能花费大量的人力、物力来通过CMM,ISO的认证,却不能踏实的做好测试,在他们眼里,认证才是公认的公司实力的体现,测试则只是一个可有可无的过程。说到底这是对测试重要性的理解还不够透彻。另一方面费用问题也较突出,开发方在支付软件开发费用后,就不愿意再为软件测试支付费用而增加新的成本,这其中也包含了测试工具的价格,有些软件公司即使他们有那个心也没那个力,昂贵的测试工具会立即扼杀他们抓测试的信心,即使有的项目有意委托第三方测试,可是开发方也会考虑到需要提供源代码,担心知识产权受到侵犯。软件公司较为缺乏专业测试力量也是重要原因之一,严格来说,专业的测试人员要懂的技术甚至比开发的要高的多,这又要追溯到对测试的态度观念问题。总的来说,价格,技术和企业愿望是目前测试发展缓慢的原因。

4 挑战

诚然,价格,技术和企业愿望是目前国内测试走的很难的原因,当今快速发展的企业信息化进程导致软件测试面临着诸多挑战,产品的多样性,复杂化使得软件测试在技术上面临着挑战。随着复杂的分布式应用技术的快速发展,电子商务应用的部署结构日益复杂,所涉及的协议和接口标准日益增多,对应用部署的性能评价要求也越来越严格,这就导致了测试的复杂性增加了,同时迫于市场的压力,产品开发周期变的越来越短,应用系统更新、升级越来越频繁,在这种情况下必须特别关注整个应用的完整性和可靠性。另一方面的挑战来自软件测试工程师的素质。测试团队核心人物的人数可能因为产品的的测试组织机构不同而有所不同,测试工程师的综合素质体现在:责任心、综合技术水平、学习和解决问题的能力,还有对软件业发展趋势的了解。

5 总结

虽然中国的测试领域才刚刚开始,我们还有很多东西要学,可是该如何推动我们的软件测试业,不是靠你和我,而是靠全名总动员,树立正确的软件测试观,大家要培养这个意识,并把这个意识贯穿在研发的全过程中,将软件项目管理和软件测试结合起来,使得软件测试业不断发展和成熟,总有一天中国的软件质量会在世界上有属于自己的一席之地的。

参考文献:

[1] Ron Patton .软件测试[M].北京:机械工业出版社,2001.

[2] 郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1999.

[3] 郁莲.软件测试方法与实践[M].北京:清华大学出版社,2008.

[4] 刘浩.软件测试简述与展望[J].江苏现代计量,2008.

[5] 吴小红,杨海涛,王万良.基于Web 的远程控制实验系统的设计[J].浙江工业大学学报,2004,132(6):700-705.

[6] 毕波.嵌入式Web 服务器的远程监控系统的实现[J].重庆职业技术学院学报,2004,13(2):138-140.

[7] 毛志雄.软件测试理论与实践[M].北京:中国铁道出版社,2008.

[8] 贺平.软件测试教程[M].北京:电子工业出版社,2007.

软件测试范文第2篇

重开发、轻测试,让软件系统故障频发。

为什么经过测试的软件系统还是会出现问题?测试与业务有着怎样错综复杂的关系?软件测试的瓶颈究竟是什么?国内软件测试将呈现怎样的发展趋势?

借助中国测试平台网对1066家企业的一手调查,以及中国计算机报记者对10位业内人士的独家采访,让我们层层揭开软件测试的迷局。

测试 软件不能承受之轻

捷克作家米兰•昆德拉告诉我们,生命中有太多事情看似轻如鸿毛,却让人难以承受。在IT应用中,软件测试就是如此。

2007年10月30日,奥运票务系统因无法承受瞬间达到每小时800万次的流量而宕机,这也许是美国票务系统提供商史上最没面子的时刻。这家公司是2004年雅典奥运会票务独家供应商,其系统技术已经经过市场的考验。据说在2008年奥运会的票务系统中,他们已经提高了峰值流量的预设值,可是没想到还是估计不足,才出了大问题。

2009年11月22日,eBay网站长时间宕机,造成卖家蒙受相当于当天销售额80%的损失。已经不止一次的宕机事件让eBay CEO脸面无光,不得不对eBay的系统负载能力重视起来。

另据业内人士透露,拥有600多家分店、18家配送中心,每天向全球180万客户提供种类繁多的设备维护、修理和运作产品的工业品分销商固安捷(Grainger)曾在SAP系统实施过程中,由于系统功能性故障损失了2300万美元,使其无法完成当季收入指标。

“测试时候不把好关,后期上线后应用就会出现大的问题。” 清华大学教授、中国软件行业协会系统与软件过程改进分会常务副会长郑人杰在接受中国计算机报记者采访时表示,近20年来他一直在关注软件质量的问题。

通过剪报等方式,郑人杰收集了这方面的诸多新闻素材,其中包括:上世纪90年代海湾战争时期美国部队由于导弹系统故障炸了自己军营;2003年美国出现史上最严重的大面积停电,影响1/4国土面积的居民;2008年英国航站楼系统故障,导致15000件行李积压;2006年ATM机故障,造成轰动一时的许霆案;近期不断出现的ATM“双倍吐钱”等问题还不断出现。

相信这些系统上线前是经过了测试的。那么,为什么经过测试的系统还是会出现问题呢?

“业务需求不清楚,以及现有软件测试能力有限,导致了上述问题的发生。”中国惠普企业业务集团软件及解决方案部技术总监于志伟在接受记者采访时表示,软件测试已经不只是一个IT问题,它和业务息息相关。

软件质量问题不只造成了上述有特别恶劣影响事件出现,中国软件评测中心金融电信测试部总经理罗文兵向《中国计算机报》记者介绍说,众多项目的上马时间一推再推,以及软件产品面临层出不穷的更新,背后都是软件质量的问题,而软件测试问题是矛头所指。

现在,软件测试已经不是传统意义上软件产品交付前单一的“找错”过程,而是软件正常交付、应用提升的一大利器。它贯穿于软件生产过程的始终,是一个科学的质量控制过程。从一个软件项目的需求调研、设计、编码、验收,直到运行维护,整个过程都需要有软件测试工程师的介入和把关。

罗文兵介绍说,根据执行体的不同,目前他们把测试分为三类:第一方测试,指的是软件开发商、系统集成商内部的测试;第二方测试,指的是用户单位的测试,即用户委托他人开发了一套系统或者购买了软件产品后,需要对系统或产品进行验收测试;第三方测试,指的是独立的机构或者单位进行的测试,像中国软件评测中心这样的第三方检测实验室,以及惠普等IT巨头,都有独立测试部门为客户提供测试服务。测试外包本质上等同于第一方测试,因为整个测试的要求和管理都是由第一方负责的。

从被测内容角度看,软件测试涵盖了单元测试、集成测试、系统测试等不同内容。罗文兵介绍,从软件生命周期来看,单元测试、集成测试更偏重于代码级测试,一般主要是由第一方测试来实现,少量依靠第三方。用户测试和第三方测试做的更多的是系统级测试,主要是从业务执行角度,来看软件能不能完成业务要求。系统测试层次更高,全面的系统测试包括系统的功能测试、性能测试、安全测试等。

“软件测试的重要性不言而喻。微软做Windows产品开发时,测试人员与开发人员的比例是1∶1,甚至达到了2∶1。他们边开发边测试,测试是贯穿整个开发过程的。”某IT领域资深人士对记者说。

罗文兵强调,现在对于电子商务、金融、电信等行业企业而言,系统和业务是一体的,因为其信息化依赖程度很高,信息系统的质量直接决定着经营能力,它们的产品创新都是依赖后台的信息系统来实现出来。如果它们的软件测试做得不好,对业务的影响是显而易见的。

那么,测试工作怎么才能更贴近业务?细化行业分工和提升测试能力是两条关键的途径。

三方测试 一个都不能少

“第一方、第二方、第三方,三方测试都是必要的,一个都不能少。”罗文兵说,“软件测试链条中的各个角色,必须各司其职:软件开发商和系统集成商必须自己做好严格的测试,为用户提供高质量、可信的软件产品;用户要根据自己的需求,做好自开发和所购买产品的验收测试;第三方测试机构则更是要一丝不苟地为第一方的产品质量把关,让用户方放心。”

阜外心血管病医院信息中心主任赵|对此有相同的看法。他认为,软件测试应该做到谁的东西谁负责:软件供应商应该做好测试,保证自己的产品质量;阜外心血管病医院也要根据自身的需求,做好自行开发系统以及所购买产品和系统的测试。赵|介绍说,阜外心血管病医院有80多个系统,有自己开发的,也有直接购买的标准产品,各系统之间需要进行很好的集成。赵|指出,金融、电信等行业因为拥有巨大的并发用户数和数据量,实时性要求很高,而对测试环境要求非常高,但对于软件测试而言,医院属于小行业,因此测试环境的要求也就不那么高。他介绍说,阜外心血管病医院信息中心的测试部门有4人,他们应用的基本是虚拟机,甚至用一些旧机器,就可以搭出测试环境,完成产品、系统的测试。虽然,对测试环境要求不高,但医院的软件测试却有自己的特点,那就是要求测试人员必须对医院业务非常熟悉。鉴于目前第三方测试机构的行业积累还比较低,赵|认为,目前医院还是自己来测试比较靠谱。

某金融机构的测试工程师朱倩在接受记者采访时表示,她所在公司的主要业务是从纽交所等国外金融机构购买金融信息,提供给国内的一些诸如像大智慧这样的金融市场行情软件提供商。他们每天要保障海量金融数据的准确性,必须做好数据库系统的测试,因为行情软件提供商也要用他们的软件来进行数据分析和。“我们必须不断地测试,以保障我们的数据库数据的准确性。” 朱倩说。

对于任何类型的测试执行主体而言,无论是产品级还是系统级的测试,都是需要衡量成本收益的。测试团队的建立、测试环境的搭建、测试工具的选择、测试过程的管理、外包与否,企业都要根据自己需求和实际情况来衡量后再做决定。

北京中原地产信息技术部经理王雨在接受记者采访时表示,他们现在没有独立的测试部门,测试基本是由开发人员与业务人员组队完成,或者是通过内部用户小范围试用来完成测试,“如有需要,我们会考虑将软件测试外包给第三方,因为这样对我们来说投入产出最合适。”

于志伟介绍,软件测试与开发同样重要,必须从测试需求、测试工具、测试环境等方面提升软件测试的专业性,更好地保证软件质量。另外,于志伟强调,测试具有非常强的行业特征,比如同样是客户关系管理系统,电信行业和金融行业测试的重点是不一样的。因此,于伟认为,第三方测试将走向更独立、更专业、更细化的行业分工是必然的趋势。

罗文兵也强调,第三方测试机构必须专注于行业。“与软件开发一个道理,做金融开发的集成商是相对固定的,不会随意跳转行业,因为只有通过更多的积累才能对行业需求了解得更透彻。中国软件评测中心之所以成立金融电信测试部,就是顺应这种市场需求。这样,我们天天做金融或者电信业务的测试,会更加熟悉被测软件的业务特点。如果对业务的了解不到位,就会出现漏测等问题,会最终影响业务的正常开展。”罗文兵说。

高端人才 不只是找BUG高手

葛优在《天下无贼》里那句话说得好,“21世纪最缺的是什么?人才!”

君不见“我国软件测试人才缺口已达20万、30万、40万”之类的新闻频频见于报端,各类测试工程师培训机构如雨后春笋般冒出,测试工程师已经成为各大招聘网站中最热门、活跃的职业之一。

测试工程师的进入门槛看似很低,实际上要做一名合格的、高层次的测试工程师并非易事。而目前国内的测试领域最缺的就是高端测试人才。

那么,到底什么是高端的测试人才呢?

于志伟用围棋中的段位形象地向记者做了说明。“10个测试工程师中有5个可能是业余级别的最高段位。他们不是专业级别的。”于志伟进一步描述说,“类似业余级别的一般测试人员更关注‘测’,对测试工具运用得淋漓尽致。如果发现了BUG,该测试人员会兴高采烈地跟开发人员说有一个BUG,但是开发人员也不知道应该怎么修改处理。为什么呢?因为该测试人员有本事把BUG找出来,但对BUG的描述不到位,也就是不能告诉开发人员这个BUG具体是什么,究竟是什么原因造成的等细节。他们不能提供一个合适的路径让开发人员直接找到BUG。开发人员还得来回测才能确定BUG。可见,这样的测试人员只是一个找BUG的高手,但是他不能解决问题。”

“要做好软件测试并不容易。软件测试是一个终生的职业,越老越吃香。”郑人杰认为,行业业务经验的积累和专业测试能力的提升,是成就一个出色的软件测试工程师的两个同等重要的条件。

于志伟认为,目前,软件测试领域最受关注的都是工具的应用等具体测试问题,而高端测试人才更应该关注如何做好从测试需求、测试计划、测试流程、测试执行,到将测试结果很好地展现在报告上,进而追踪问题,并最终解决问题的全过程。

同时,高端测试人才还要有更先进的理念,即不只是关注测试,而是要更加关注软件质量。“也许有时候及时发现了BUG也不应改动,因为它对客户体验没有影响,而改动后会带来更大的影响,并增加成本。但怎么判定这个BUG该不该动呢?现在市场上缺的就是能够做出正确判断的高端测试人才。他们具有先进的理念,掌握科学的方法论。”于志伟分析说。

怎样才能培养出大量的高端测试人才呢?

通过第三方的测试平台,把先进测试的理念、更专业的测试方法和工具传达给喜欢测试的fans(热衷者),让他们吸收更多的最佳实践,不断提升自身的测试技能,借此来实现对高端测试人才的培育和储备,这是中国惠普培育软件测试市场的一条尝试途径,也是它们与中国信息主管网合作建立中国测试平台网的初衷所在。

中国测试平台网

测试fans的资源池

“当前,信息化正在改变IT角色,IT已成为企业发展的重要支撑元素。企业在IT建设中,必须缩短开发周期,快速响应业务需求。然而,IT项目愈是‘短、平、快’,愈是容易在一定程度上降低系统的可靠性。 IT链条的牢固程度取决于其最薄弱环节――软件测试的疏漏。”作为中国测试平台网项目负责人,中国信息主管网副总编杨春晖介绍,“当软件质量成为软件产业新的核心竞争力时,作为软件质量‘把门人’――软件测试人才自然成为企业争抢的稀缺资源。软件测试人才已成为2010年IT业就业的主力,其职业具有极大发展潜力。”

正是在这样的背景下,中国信息主管网联姻软件质量管理领域的龙头企业――中国惠普,共同建立了软件测试领域的专业技术网站――中国测试平台网。 “中国测试平台网坚持以报道软件测试专业技术为核心,关注软件测试领域的前沿技术和管理思想,定期举办各种在线活动以推动软件测试相关领域的交流,力求为中国广大软件厂商、系统集成商、IT渠道,以及IT专家、测评专业人士、热心网友等提供一个软件测试、专家问询、交流沟通的在线互动平台。”杨春晖说。

“中国测试平台网也会为软件测好者提供很多职业发展的机会。惠普现在就很需要高端的测试人才。”于志伟向记者透露。

除了用中国测试平台网这个平台网聚、培育软件测试人才,惠普也在逐渐向其大量的高端客户渗透软件测试的一些先进理念,以得到他们的认同并付诸实践,从而带动上下游的公司形成良好的市场环境,促进产业内软件测试工作的进步。

当记者提到现在由于企业没有成套考核体系来评估软件测试人员,所以没有足够动力推进软件测试工作更上一层楼时,于志伟笑了笑说:“这确实是目前大家迷茫的地方,大家都不知道软件测试的评估、考核该怎么做,但这也恰恰是体现惠普优势的地方。”

于志伟介绍说,惠普拥有先进的测试生命周期管理、应用生命周期管理的方法和最佳实践,并且在这个领域完成了很多成功项目,能够明确测试的定位、测试与开发的关系,知道哪些指标应该分给开发,明白不同的测试项目中这些指标应该怎么调整,从而帮助企业一步步走向更高水平的软件测试,或者更准确地说是保障软件质量。“这需要一个过程。要通过先进的理念和经验的积累,才能慢慢摸索出测试的考核、评估办法。”

中国惠普企业业务集团软件及解决方案部华东、华南售前经理,测试专家王慧慧向记者介绍了惠普的应用质量管理(AQM)的质量成熟度模型。王慧慧说,该模型不仅参考了已有IS09000、ITIL、CMM等行业标准,而且总结了惠普客户的实践经验,将企业软件质量保障情况从最基础的第一步到最高级的最后一步CoE(Center of Excellence),分为5个阶段,模型中涉及测试人员的素质,外界对测试人员的认可度,测试人员自身的定位,测试的组织架构、流程、绩效考核等制度问题,还涵盖了测试的先进方法。

“对用户而言,这个成熟度模型是其衡量自己软件测试水平的一个标杆。通过比对,并且在惠普的专家、产品和服务的帮助下,企业可以在现有状态的基础上一步一步提升,最终走向CoE。”王慧慧说,“这个模型不是静止的,而是在不断充实、改进中。每个用户在改进的投入、时间、步骤等方面都会不同。对于某一用户,惠普专家会为其做出评估,量身定制出一条适合用户自身情况的改进路径。”

软件测试七大戒律

记者手记

软件要控制人的思维,但思维是不可控的。这决定了没有BUG的软件是不存在的。“测试是要被终止的”,这是测试圈内一条原则性的定律,意思是说软件测试要适度,不能不问代价一测到底,过分追求没有BUG的完美软件。通过大量的采访,受到业内多位专家的启发,记者认为当前我国软件测试领域有七个趋势:

一、 不只是为了测试,软件测试工作应有更高的定位,那就是提升软件质量。测试人员的工作目标不仅仅是找BUG,而是与开发人员、业务人员协作,以得到质量更高的软件。

二、 对任何类型的执行主体而言,软件测试都是一项需要衡量投入产出、成本收益的工作,因此测试团队的建立、测试环境的搭建、测试工具的选择、测试过程的管理、外包与否,企业都要根据自己的需求衡量决定。

三、开发与测试是对立统一的整体,二者的工作内容和考核都不可能严格分开。企业可以从管理学和心理学的角度加强对测试管理的研究和实践。

四、测试工作的专业分工将更加细化,测试工程师岗位分工和测试机构行业分工趋势将显现。

五、当前我国测试人员的能力有待提升。我们除了需要熟练的找BUG高手,还需要能站到更高层面,从开发、测试的整体层面掌握测试需求、设计、流程和结果展现的人才。这要求测试工程师掌握更新的测试理念、更高的测试技能,具备更深的业务积累。

六、已经渗透至整个软件开发生命周期的测试管理工作是一个有机的整体,缺陷管理、测试需求管理、测试环境管理、测试用例管理、测试执行管理是组成木桶的木板,任何一块都不能短。

软件测试范文第3篇

众所周知,由于通用计算机或芯片在各种系统中的广泛使用,在工程中系统实现各种功能都离不开软件来实现应用功能,因而软件重要性越来越显突出,随着软件工程的发展,目前软件的规模也逐渐越来越大,软件的质量已成为决定各种工程或武器系统的质量乃至成败的最重要因素之一。因此有必要更加重视软件的质量问题。而软件测试作为软件工程的一项重要组成部分也越来越受到重视。

1 对软件测试的定义

在这里我们只讨论狭义上的软件测试。软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码实现的最终审查。通常对软件测试的定义有两种描述:

定义1:软件测试是为了发现错误而执行程序的过程。

定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以及发现错误的过程,即执行测试步骤。

2 软件测试流程和策略

2.1 软件测试流程

软件测试的流程可以细分为四个阶段:单元测试,集成测试,确认测试(有效性测A试)和系统测试。单元测试针对软件设计的最小单元A程序模块,进行正确性检验的测试工作。它的目的在于发现各模块内部可能存在的各种差错。集成测试在单元测试的基础上,将所有模块按照设计要求组装成为系统进行测试。确认测试(有效性测试)验证软件的功能、性能和其它特性是否与用户的要求一致。系统测试将测试的软件作为整个计算机系统的一个元素与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行组装测试和确认测试。

2.2 软件测试的策略和技术

软件测试的策略就是测试将按照什么样的思路和方式进行。如采用什么技术,什么步骤等。而软件测试技术可以按照以下几种方式来进行分类:

(1)黑盒(功能性)测试和白盒(结构性)测试。

(2)静态测试和动态测试。

(3)传统测试方法和面向对象测试的方法。

(4)特定环境及应用的测试。

2.2.1 黑盒测试和白盒测试

(1)黑盒测试。黑盒测试又称功能性测试、数据驱动测试、基于规格说明的测试。它 在已知软件所应具有的功能的基础上,检查程序功能能否按需求规格说明书的规定正常使用,功能是否有遗漏,性能等特性要求是否满足。在进行黑盒测试时只需参照规格说明检查软件,不要求考察代码,从用户视角来对软件进行测试。黑盒测试的目的在于检测软件功能是否正确和完整,检测是否有人机交互和数据访问错误,检测软件行为和性能是否满足需求以及检测软件初始化和终止过程是否有错误。

黑盒测试要遵循以下的步骤:首先需要先根据规格说明书来生成测试用例,然后执行测试并分析覆盖标准,最后再根据所得结果来作出结论。

(2)白盒测试。白盒测试又被成为结构性测试、逻辑驱动测试、基于程序的测试。它的与黑盒测试的区别在于我们在进行白盒测试的时候会将程序的执行表现与编码意图作比较,并且关心软件内部设计和程序实现,而主要测试依据是代码和设计文档,这就能够支持严格定义、数学分析和精确度量,从而更加准确的来评价一个软件。

2.2.2 静态测试和动态测试

(1)静态测试。静态测试广义上包括了人工代码检查,软件度量,程序结构分析(自动审查)和自动编程规则检查这些内容。

(2)动态测试。动态测试包括覆盖测试分析和运行时的错误检测。

2.2.3 路径测试

路径测试是指根据路径设计测试用例的一种技术,经常用于状态转换测试中。基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。

2.2.4数据流测试

前面的测试针对程序的控制流路径,检查程序在各种条件值、各种决策下是否有错。数据流测试主要测试程序中的数值流(覆盖值传递路径),检测变量定义与使用的情况。它比较容易发现下列类型的错误:变量被定义,但是从来没有使用;所使用的变量没有被定义;变量在使用之前被定义两次;其它定义不当或使用不当的情况。

2.2.5 面向对象软件测试

面向对象技术开发出的程序更需要测试且对其进行测试将更复杂。面向对象软件与传统的软件存在不同的软件结构,不同的开发方法且每个开发阶段都有不同以往的要求和结果,针对面向对象软件的新特点,应有一种新的测试模型

3 结论

软件测试是一项非常重要的工作。有些观点认为测试是极简单的工作,谁都能进行软件测试,还认为软件测试技术要求不高,比编程容易多了,测试就是把数据输进程序,看结果对不对,甚至认为测试是就体力活而已。这些观点其实都是不正确的。软件测试是一项非常需要智慧,耐心,协调以及沟通能力的一项工作,它包涵的内容不光有深层次的技术性问题,也有管理方面的问题。如何才能做好软件测试,光有技术上的水平仍然是不够的,还必须要有好的团队合作和细致的工作能力和态度。

软件测试虽然能够发现软件中的问题,但是它并不能证明软件中已经不存在其它的问题了,因此要提高软件的质量,光靠软件测试也还是不够的,还需要全面的履行和落实软件的质量控制,这样才能最大限度的减少软件问题所引起的损失。

参考文献

[1]徐世波.张健关于软件质量保证模型的研究[J].数字技术与应用,2010(09).

[2]张瑶.白晓颖.张任伟.陆皓一种基于模型的测试充分性评估方法[J].计算机科学,2013(02).

[3]徐冰霖.李战怀基于数据操作的航天测控软件测试复用模型[J].飞行器测控学报,2012(02).

作者单位

软件测试范文第4篇

【关键词】动态测试 静态测试 自动化测试技术

1 Android国内外测试现状

发达国家,尤其是美国,软件测试在软件公司占有重要地位,在谷歌,一个典型Android开发项目组中测试工程师数量比软件工程师多的多,花费在测试上的时间要比花费在编码上的时间多很多。在中国,1990年成立部级中国软件测评中心,Android行业软件测试则起步更晚,无论是Android软件测试理论研究,还是Android测试实践,和国外发达国家存在不小的差距。

2 常用Android测试技术分析

Android测试技术可以分为静态测试技术和动态测试技术。静态测试技术是对程序源代码的语法、结构、接口等进行非运行的检查;对软件设计说明书、需求规格说明书等软件周期产生的文档进行评审和验证。动态软件测试技术是对运行程序进行检查、分析程序的执行状态和程序的外部表现,验证运行结果与预期结果的差异,分析软件的性能等指标。

2.1 静态测试技术

Findbugs是一款典型的静态测试工具,它通过检查类或JAR文件,对字节码与缺陷模式尽行比较,试图检索可能的问题,Findbugs可以帮助Android程序员在不运行代码的情况下查找代a缺陷,并在检测完毕后生成一份详细的报告,统计代码中存在的高优先级报警和低优先级报警,对所有报警进行归类,并进行详细罗列。Findbugs使用节点包括开发阶段和维护阶段。研发工程师完成独立模块编写后,准备模块整合阶段,通过该工具对Java文件进行第一次扫描,用以检测自身不易发现的赋值、比较和循环等错误,整个项目组完成所有功能后,执行第二次扫描,经过两轮扫描,去除掉所有典型BUG,系统的稳定性会更上一层楼。所产生的Findbugs报告可以作为一项输出文档用于存档,以备后续相关人员查验。

2.2 动态软件测试技术

2.2.1 Monkey

Monkey测试是Android SDK自动化测试命令行工具,向系统发送伪随机用户数据(模拟用户触摸屏、按键输入等)使用随机重复的方式去对开发的应用进行压力测试,Monkey测试过程中系统所产生的日志保存在Android设备数据目录下,发生系统崩溃、无响应或者强制关闭时,分析日志文件,能够有效帮助开发人员锁定问题发生位置,更快找到解决办法。Monkey命令参数组合很复杂,主要划分为常用选项、事件选项、约束选项和调试选项四大类,测试人员通过配置这四大类中的参数来确定Monkey测试命令。Monkey测试所有事件都是随机的,不带任何人的主观性,而且可以长时间不间断自动测试,在一定程度上解放了测试员的双手。

2.2.2 UiAntomator

UiAntomator是一款主流安卓用户界面自动化测试框架,改革了测试人员通过点击每个控件元素,对比输出结果是否符合预期的测试方法,该框架通过自动创建功能UI测试示例,允许测试工程师在一个或者多个安卓设备运行测试程序,测试原生的安卓应用用户界面,测试用例可以跨越不同进程,可以大大提高界面测试效率,这款工具要求测试工程师掌握Java软件编程,需要编写UiAntomator测试案例,通过调用UiAntomator提供的API从主界面模拟用户操作。该框架也存在一些局限性,仅支持API16或者更高级别的版本,不能支持Web视图测试,无法直接访问安卓对象。

2.2.3 Robotium

Robotium是安卓之初使用最广泛的安卓测试框架,扩展于JUnit开源库,提供非常强大的自动化黑盒测试范例,它提供与安卓相似的框架,支持控制控件的各种API,使测试变得非常简单。通过该框架可以编写单元、系统和验收等测试方案,应用非常广泛。但是这款测试框架也存在硬伤,就是使用该框架的测试工程师要了解Android基本组件,并且该框架不能支持跨应用测试。

3 结束语

Android软件测试技术发展很快,但是仍然跟不上Android软件技术发展的步伐,未来Android软件测试仍面临巨大挑战。当下,Android软件测试行业正处于一个飞速发展的阶段,Android软件测试的重要性越来越得到人们的重视,相信经过一段时间的努力,我们会逐渐缩小与国外发达国家的差距,带动整个Android软件产业的健康发展。

参考文献

[1][阿根廷]迭戈D.(Diego Torres Milano)Android应用测试指南[M].人民邮电出版社,2016-04-01.ISBN 978-7-115-41708-4.

软件测试范文第5篇

【关键词】快速测试;软件质量;测试策略

0 概述

(1)软件测试现状

随着软件的快速发展,软件产品质量面临着前所未有的挑战,提高测试的效率、降低测试的成本,对软件产品提高质量和应对日趋激烈的市场竞争有着重要意义,而软件质量的提升主要靠软件测试来实现。

统计表明,在典型的软件开发项目中,软件测试的工作量往往占到总工作量的40%以上,而在总成本中,测试成本要占30%~50%。尽管目前大部分公司已经非常重视软件测试,但软件质量提升的实际效果不尽人意,一部分原因是软件测试方面的投入不足,更大一部分原因是软件开发人员、甚至软件测试人员的测试意识不足,测试时间不足,导致无法展开快速、有效的软件测试。

(2)软件测试面临的问题

首先,国内软件相对起步较晚,现在在软件开发上投入了大量的人力物力,相对而言在软件测试方面]有引起足够的重视,更没有进行成熟的软件测试研究,软件测试环境等测试资源国内暂时没有形成完善的氛围。

其次,软件测试人员较少,难以投入足够的人力展开大规模的、规范的软件测试,甚至在大部分公司软件测试人员地位收入要低于软件研发人员,软件测试远远没有引起重视。

第三,软件时间紧凑,开发时间紧张,测试时间就会被大大缩短。测试的效果会大打折扣。

软件日益复杂,软件错误日益增多,软件测试手段不成熟,测试人员不足,测试时间紧张等种种原因导致目前国内测试水平较差,软件测试没有完全展开。针对现状思考,综合考虑测试时间和测试效果兼顾,制定程序静态扫描的单元测试与探索性测试的系统测试相结合,先进行程序静态扫描的单元测试,通过后再进行探索性测试的系统测试的快速测试策略。

1 快速软件测试策略

软件测试是为了更快、更早的将软件产品中存在的缺陷找出来,并敦促软件开发人员尽快解决软件缺陷,向客户提供高质量的产品。确定有效的软件测试策略可快速找出软件中的缺陷。

1.1 单元测试

单元测试是检查软件单元是否正确实现了详细设计中的各项功能、性能要求,发现软件单元内可能存在的各种缺陷。

1.1.1 测试策略

针对单元测试目的,结合实际开发现状,拟采用静态测试工具对源代码进行程序静态扫描。

程序静态分析是:在不运行代码的前提下,通过词法分析、语法分析、控制流等白盒测试技术对软件源代码进行扫描,验证源代码是否满足规范性、安全性的一种代码分析技术。

1.1.2 常用静态分析技术

1.1.3 程序静态扫描的优缺点

程序的静态分析与动态分析是相对应的两种代码分析技术,主要实现方式是通过对程序代码的自动扫描发现隐含的程序缺陷,主要具有以下两条优点:

a)不执行程序,对源程序不会产生任何破坏。程序静态扫描不运行源代码,只是通过静态扫描对源代码进行语法、结构等方面的分析;

b)执行速度快、效率高。成熟的程序静态分析工具每秒可完成上万行代码的扫描,具有执行速度快、效率高的特点。

程序静态扫描的缺点也比较明显:误报率比较高,目前国际最好的程序静态分析工具误报率在5-10%之间,还是比较高的一个状态。

在软件程序实现的过程中使用程序静态分析工具对程序进行扫描,有助于快速发现代码缺陷,提高代码的质量,是一种在节省人力物力的前提下快速的提升源代码质量的有效手段。

1.2 系统测试

系统测试的目的是:在真实或者仿真环境下检验软件程序是否满足“软件研制任务书”和“软件需求规格说明”规定的功能、性能等要求。

1.2.1测试策略

针对系统测试目的,结合人员紧张、开发时间短的实际开发现状,拟采用使用探索性测试的测试策略对软件程序进行功能、性能的合格性验证。

探索性测试首先假设软件存在某缺陷,然后对提出的假设进行逐步验证。在进行探索性测试的过程中,学习知识、测试设计和测试执行是在同一时间交叉进行的。探索性测试的核心是依据测试的实际情况,即时设计测试用例并在软件程序上进行验证,测试结束后将测试的结果整理形成“软件测试报告”。

1.2.2探索性测试常用方法

探索性测试是对传统测试技术的补充,它的关注点更多是有目的性地验证程序是否存在某个缺陷。所以,探索性测试适用于所有的系统测试,但作为一种新兴的软件测试理论,它有着自己独特的测试方法和管理方式。一般使用如下两种方法来进行测试:

(1)结对测试法

结对测试的一般测试形式是两名测试人员共同对一套软件程序或者一台机器展开测试。它要求必须有一名测试组长来负责统筹测试全程,进行合理的测试安排。测试组长制定合理的软件测试计划,依据计划,测试成员两两组队,分工合作。在测试过程中,两位测试人员各有分工,一位进行测试操作,另一位主要负责提出建议、记录测试发现的缺陷、提出测试过程中对程序的探索性问题等。

结对测试要求测试人员都能清晰地进行交流,因为当一名测试人员将自己的探索性想法与其他测试人员进行沟通时,极有可能会触发其他测试人员的灵感,这种发散性的交流方式会碰撞出更多的思维火花,设计出更加准确、完整、符合实际测试情况的的软件测试用例,这比传统测试中要求测试人员按照固定的测试计划进行软件测试更有效率。除了以上优点,结对测试还有以下优点:

a)轻松的测试环境:轻松的测试环境将避免测试过程中测试人员产生的的枯燥和无聊情绪,明显提高软件测试效率;

b)良好的连续性:结对测试中,两位测试人员分工明确,一名软件测试人员专注于执行测试,另一名软件测试人员负责记录及文档整理,分工明确将大大增加测试的连续性,使测试具有更好的可持续性;

c)降低外界干扰:两人组成一个小的团队,其他无关人士前来打扰测试的机会将会大大降低,排除外界干扰 ,提高工作效率;

d)清晰的报告测试结果:结对测试中一人专注负责记录和整理测试结果,这将使测试报告的数据清晰完整;

e)有利于培养新的测试人员:结对测试,两两结对,有经验的测试前辈趁此机会将探索性测试中规律性的经验传授给新的测试人员,新的测试人员一边学习一边实践,帮助新人快速成长,提升测试技能。

(2)会话测试法

探索性测试的创始人James Bach提出过另一种有效的测试方法:会话测试法。这种测试方法的优点是既不影响探索性测试灵活性和探索性的特点,又能避免探索性测试人员松散不服从统一管理。目前是探索性测试所有方法中比较公认的一个有效的测试方法。

会话测试法中的会话主要包括两部分:一部分是明确的测试主题,另一部分是可以被检查的测试过程。“测试主题”指的是测试中想要发现的软件缺陷或计划完成被测试的功能。“可以被检查”是指阶段性的软件测试报告,该软件测试报告来表征会话测试期间的工作成果。

持续时间1.5小时的会话测试为最优会话测试,但这不是绝对的时间限制,一般而言小于45分钟的会话测试称之为短会话测试,大于2个小时的会话测试称之为长会话。一般情况,每天可以使用会话测试法对软件程序进行三轮测试。

会话测试中没有固定的模式对测试步骤及测试用例进行规定和限制,依据测试人员和测试主题来进行灵活选择和执行,例如测试人员可能会从某项功能开展测试,也有可能从频繁出现的缺陷打开测试入口。

1.2.3 探索性测试的优缺点

探索性测试最大的特点是具有强大的缺陷发现能力,作为一种高效率的测试方法,主要具有以下优点:

a)测试方式灵活、富有创造性和主观能动性。它比传统的测试方法更加灵活,例如探索性测试对测试文档的要求没有传统测试那么严格,但是它能够发现正常测试用例执行以外的缺陷,更有效地发现隐性缺陷,发现很多正常途径无法发现的缺陷也能够激发测试人员的创造性和主观能动性。

b)测试时间短,执行效率高。测试学习、测试设计和测试执行交叉进行,只对测试缺陷进行详细的记录,会大大缩短测试时间,为项目的整体开发节省大量时间。据统计,有经验的测试人员在使用探索性测试方法进行测试时,执行测试的时间能占到测试总时间的80%,而测试设计只占总测试的20%。

探索性测试的缺点也是显而易见的:对软件测试工作没有一个整体的规划,不利于测试的规范化、标准化;重复性测试的几率比传统测试要大很多,很难确定哪些测试已经执行过。

在测试时间短、测试资源不充足的情况下,使用探索性的测试策略展开系统测试,可以有效快速地发现软件缺陷,提高软件质量。

2 结论

软件质量是软件的生命,由于软件缺陷而造成经济损失、导致严重后果的事例屡见不鲜,软件测试作为软件质量保证的重要手段一直都是软件工程研究和应用的热点。在有限的人力物力情况下,如何展开有效的软件测试,显著提升软件质量更是每个软件研发人员的关注重点。

程序静态扫描提升源代码质量、探索性测试保证软件功能的合格性,二者有效地结合,在极短的时间内,节省开发人员精力的前提下,可以有效地_到软件测试的目的,是一种有效的测试策略。

【参考文献】

[1]张晓明,黄琳译.软件测试的艺术,机械工业出版社.

[2]朱少民编.软件测试方法和技术,清华大学出版社,2005.

[3]汪颖译.人月神话,清华大学出版社.

[4]吕灵,鲍臣礼.测试之美,机械工业出版社.

[5]“Parasoft C++test用户手册” Parasoft Corporation.

软件测试范文第6篇

【关键词】软件测试 历程 模型 黑盒 白盒

一、引言

信息技术的发展对各行各业都带来了巨大的影响,推动了产业的进步,软件作为其中重要的构成部分,起着至关重要的作用,软件的创新与更新速度逐步加快,无论是类型还是规模都是空前的,因而要保证软件的实用性与稳定性等指标,软件测试技术能够有效减少软件故障,弥补缺陷,使软件不断得到完善。软件的安全与可靠性被当作软件的命脉,其质量受到广泛的重视,随着软件测试技术的成熟,自动化与半自动化的测试对于软件测试方法、故障模型等内容形成了系统性的研究应用,推动软件产业取得了长足的进步,软件测试已经成为了一门系统化的产业链,对软件技术的贡献有目共睹,而该行业的从业人员逐渐增加,研究得到进一步拓展。笔者结合近年的工作经验,将从软件的发展背景、故障模型和测试技术等方面进行探讨。

二、软件测试技术的介绍

(一)软件测试的发展

信息化进程推动了软件技术的快速发展,但同样软件系统中的设计缺陷也会造成许多故障,并且可能性比较高,远远超过了硬件技术所引发的故障,鉴于软件技术开发当中其质量要求,研究人员提出了软件测试技术,来减少软件运行中的故障缺陷,提高软件的稳定性与可靠性。早期的软件测试技术的内容仅仅是局限在程序调试方面,但到了上世纪70年代,软件测试被引入了软件设计的生命周期中来,成为软件技术当中不可或缺的一部分,影响软件的实际应用。并随着测试技术逐渐成熟,软件测试已成为一门系统性的学科,形成了注入面向对象测试、模型过程测试、面向目标测试等多种分支,并且新的方法一直在探索当中,学科内的知识更新也非常迅速,推动者软件测试技术的向前发展。

(二)软件缺陷的危害

软件设计当中细小的失误都有可能造成灾难性的危害,由于软件技术已经融入了几乎所有的行业,特别是对社会影响重大的领域中,如医疗、军事、航空等关键领域中,软件的故障很容易导致操作失败,如医疗当中仪器的误操作对患者的生命健康产生危害,航天探测器语言成语的错漏导致发射失败、导弹试射错误程序导致飞行轨迹发生偏离等情况在以往都出现过,而且造成的损失是非常巨大的。而这些失误往往只是源于微小的细节方面的缺陷,因而,提前对软件进行测试,在运行当中今早发现错误,并针对性的修改,甚至有时必须推倒重来,对于保证软件运行的安全可靠都是十分有必要的,也符合软件发展的实际需要,更好的服务于人类的社会生活,推进社会的良好发展。

三、软件故障

(一)软件故障的分类

软件故障的是不以人的意志为转移的,但通过对其存在形式进行分类,提出针对性的测试改良方法能起到立竿见影的效果。软件的分类有多种形式,如故障的性质分类、软件开发过程错误、故障形成的原因等。软件开发的过程错误主要包含需求分析错误、设计错误、编码错误和测试错误等内容;故障性质主要包含功能性的分析和开发错误、数据错误、结构错误、系统结构错误、程序编译错误等内容;故障原因主要包含程序语法、语义错误、文档错误、函数错误和测试错误等内容。此外,还有根据软件规模与质量的重要性,以经济效益为评估方式的错误程度的分类方式,即将错误造成的损失分为具体的等级。软件错误的分类具体要看实际应用的需要,侧重其中心需求,对测试过程中的软件完善有很强的指导性作用。

(二)软件的故障模型

软件的故障模型是软件测试的基本形式,在模型当中,其与实际应用中的故障有很大的相似度,可以对故障很好的模拟作用。虽然由于故障的复杂与多样性,难以取得一种统一的故障模型,但实际应用中的针对性的故障模型有多种,并且取得了良好的效果。目前的故障模型主要有单故障模型、系统崩溃的故障模型、覆盖测试故障模型等几种,其中覆盖故障模型的应用非常广泛,包括分支覆盖、路径覆盖、语句覆盖、应用覆盖等形式,由于其复杂程度低、可操作性强,成为了基本的软件测试方法。除此之外,故障模型的相互结合的测试方式能够弥补各种测试的不足,其相互之间的融合与改进也是一种新的探索方向。

四、软件测试技术

(一)白盒测试技术

白盒测试技术主要包含以下内容:

1.程序路径分析

一个程序中的路径数量的规模非常庞大,依靠路径覆盖来达到完全性测量,但实际操作性的可能非常渺茫,而且实践表明其效果也不理想。

2.分域测试

分域测试是将程序中的空间进行划分,将整体分成若干个测试单位,其中要注意在单位划分时保证边界不会出错误。或尽量减少错误的发生,重要的措施往往通过测试点的选取。

3.程序插装和覆盖测试

软件程序中有许多内容可以划分,如分支、路径、语句和数据等形式的划分,白盒测试可以针对这些内容进行覆盖。软件中的编程主要有代码和数据的集成,软件成型之后,会有相应的功能。操作者输入指令或数据时,软件会有对应的相应,而输入的数据所涵盖的范围可以称作输入域,通过程序插装,当输入大量的信息之后,对响应进行收集,信息收集的过程即是对软件测试运行的监控。

4.结构测试数据生成

软件的结构测试包含多方面的内容,主要有面向路径、面向目标和随即测试几种方法,在测试当中利用生成的数据,进行分析,发现软件运行中可能出现的缺陷和不足。

(二)黑盒测试技术

软件形成之后,根据其内部的定义会有映射关系,即包含了输入与输出之间的函数关系,但如果要分析软件内部具体的结构,既耗费时间,也有操作的困难,对分析人员的专业水平要求很高,而黑盒测试技术针对这一情况,在测试中避免了对内部结构的详细分析,而是直接反映输入与输出之间的关系来评估软件的可靠性与稳定性,并可以验证数据的正确性,黑盒测试技术主要包含以下几方面的内容:

1.组合测试

组合测试的实际应用非常广泛,其优点是利用很少的测试用例但能够取得良好的效果,极大的减少了测试耗费的时间与精力,准确性也能得到保证。所谓组合测试,即是利用两两联合的覆盖表的生成算法,实现对数据参数的缺陷发掘,其理论是以软件故障的实际分布为根据的,据统计,软件故障中由两个参数引起的占总数的绝大部分,达到了70%左右,单个参数和三个或三个参数以上引起的故障都明显低于前者,因此,组合测试技术有非常现实的实用价值。

2.形式规格说明的测试

软件测试当中,要保证识别的精确性,避免语言、语义出现歧义性的认识,可以对软件形式提供规范的语言符号,并且具有业内公认的性质,这样易于机器对软件的程序或内容进行统一的处理,减少误判或模糊的现象,通过软件工具的应用,提高机器的识别能力,进而达到对形式规格的各种推理或证明,分析软件中各种可能的故障缺陷。

3.统计测试

软件测试当中,不同的测试方法或输入域所产生的结果会有很大的差异性,尤其是当软件的复杂性高、功能齐全、规模大的时候,测试往往难以覆盖到所有的运行可能,各种情况都有可能出现,其出现的概率也有差异,所以,利用统计方法,对运行结果进行记录分析,以便在测试当中更能直观的通过数据的分布来判断其稳定性与可靠性。

五、结束语

软件技术是当今社会发展的重要推动力量,融入到了各行各业,其所引起的效应也是不可估量的。但软件的好坏,运行的可靠性、稳定性与安全性等指标影响其效能的发挥,软件测试技术是针对软件形成过程中的故障研判、分析改进的重要手段,在软件研发过程中扮演着至关重要的角色,我国在推动信息化、科技化的发展当中,对软件技术的依赖愈发明显,深入研究软件测试技术,探索新的内容,对我国的产业结构的升级具有非常深远的意义。

参考文献:

[1]齐治昌,谭庆平,宁洪.软件工程[M].北京:高等教育出版社,2001.

[2]Weyuker EJ.Axiomatizing software test data adequacy.IEEETrans.on Software Engineering, 1986,12(12):1128-1138

[3]赵亮,王建民,软件测试准则的有效性度量研究[J].计算机研究与发展,2006,43(8):1457-1463

[4]虞翊,吴芳美.黑箱条件下的软件测试充分性与揭错能力分析[J].计算机工程,2001,27(6):74-76

软件测试范文第7篇

关键词:Web;软件游览;体系结构;方法

0 引言

随着Intemet的普及和电子商务应用的深入。Web应用程序得到越来越广泛的应用,B/$架构也逐渐代替C/S架构成为主流的应用模式。与传统软件相比,Web应用程序具有分布式、并发、多用户异构等特点,这些特点对软件测试提出了新的要求。Web测试是保证Web应用程序质量的有效手段,目前在Web测试的方法和技术以及相关工具等方面的研究已进行了一些尝试。软件测试的自动化技术有助于开发出更高质量的产品,并且可以节省开发时间和开支。

1 Web软件体系结构

Web应用程序采用B/S结构,它是伴随着Intemet技术的不断进步,由C/S结构改进和发展起来的新型体系结构。B/S结构利用不断成熟和普及的浏览器技术实现原来需要复杂专用软件才能实现的强大功能。是一种全新的软件系统构造技术。这种结构已成为当今应用软件开发的首选体系结构。

Web系统的基本工作过程是:在客户端,用户通过浏览器向Web服务器中的控制模块和应用程序输入查询要求,Web服务器将用户的数据请求提交给数据库服务器中的数据库管理系统DBMS;在服务器端,数据库服务器将查询的结果返回给Web服务器,再以网页的形式发回给客户端。在此过程中,对数据库的访问要通过Web服务器来执行。Web系统的基本体系结构及工作过程如图1所示。

从上面的体系结构可以看出,Web测试应该分为三个层次,客户端测试、服务器端测试和数据库测试。客户端主要测试用户浏览器的基本功能和页面现实情况;服务器端主要测试用户请求响应情况;数据库端主要测试数据一致性和输出错误。

2 Web软件测试的主要特点与难点

Web软件由于其分布式应用、具有各种运行时行为、涉及多种标准协议,可能在硬件、软件、通信、对象管理等环节出现各种缺陷。其体系结构和应用的复杂性,以及技术和规范不断地发生变化,对测试提出了新的挑战。Web软件测试的特点与难点主要体现在以下几个方面:

(1)Web软件的开发环境与其应用环境有很大的不同,在之前,很难对其实际的运行场景进行预测,如用户类型、并发用户数量、Web服务调用的装载模式和访问方式等,这些差异和应用的不确定性都增加了Web服务测试的困难。

(2)Web软件测试主要基于软件接口进行设计和实现,因此必须采用自动化测试方法,与传统的需要大量人工干预的测试方法截然不同。

(3)Web软件由于其分布特征,会出现大量用户通过不同的环境访问同一个服务的情形,因此,性能和可扩展性是Web软件测试的重要方面。

(4)Web软件及软件集成的、发现和绑定都是动态完成的,其过程的不确定性和不可见性增加了测试难度。

(5)Web软件访问接口和访问方法后增加了Web软件的安全隐患,提高了被系统攻击的机会。此外,对于所调用的分散、异构的外部Web服务的安全性的管理也非常困难。如何提高Web软件的安全性也是测试者要考虑的重要问题。

(6)Web软件的应用通常涉及到软件提供者、者和使用者三种角色,都需要参与到测试的不同阶段,其分布式合作的特征使得测试的组织、缺陷管理、结果评估等活动都更加困难。

目前。针对Web软件的测试方法和技术的研究还处于初始阶段,代表性的研究主要有基于形式化方法对协议及规格说明的验证(如WSFL验证技术、SOAP验证)和Web服务的集成测试。

3 传统软件测试与Web软件测试

传统软件测试经常是静态、离线的测试,尽管这些传统的测试技术也可以应用到Web服务的测试当中,然而相当有意义的一部分Web软件测试都必须是动态的和在运行时间内的即时测试。Web软件这种动态和即时测试对传统的测试理论提出了新的挑战和要求。表1比较了传统软件和Web软件测试的差别。

4 Web软件测试的内容和方法

Web测试主要目标是确保提交高质量的Web软件。对于错综复杂的Web软件,从什么地方开始测试。哪些方面是测试的核心,有限的测试资源如何分配,这些都是Web软件测试需要重点考虑的问题。下面介绍Web软件测试的主要内容和方法。

4.1 功能测试

链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些不知道地址的页面的主要手段。链接测试可分为三个方面:①测试所有链接是否按指示的那样确实链接到了该链接的页面。②测试所链接的页面是否存在。③测试Web应用系统上有无孤立的页面。所谓孤立页面是指没有链接指向的页面,只有知道正确的URL地址才能访问。

表单测试 单元当用户给Web应用系统管理员提交信息时,就需要使用表单操作。例如用户注册、登陆、信息提交等。在这种情况下,我们必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。例如:用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等。

Cookies潮试Cookies通常用来存储用户信息和用户在某应用系统的操作。当一个用户使用Cookies访问了某一个应用系统时,Web服务器将发送用户的信息,把该信息以Cookies的形式存储在客户端计算机上,这可用来创建动态和自定义页面或者存储登录等信息。如果Web应用系统使用了Cookies。就必须检查Cookies是否能正常工作而且对存储的信息已经加密。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,刷新对Cookies有什么影响等。

设计语言测试 Web设计语言版本的差异,例如使用不同版本的HTML等,可以引起客户端或服务器端严重的问题。在分布式开发环境中,开发人员都不在一起,这个问题就显得尤为重要。除了HTML的版本问题外,不同的脚本语言,例如Java、JavaSeript、ActiveX、VBScript或Perl等也要进行验证。

数据库测试 数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。在使用了数据库的Web应用系统中,一般情况下,可能发生两种错误,分别是数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确而造成的,而输出错误主要是由于网络速度或程序设计问题等引起的。针对这两种情况,可分别进行测试。

4.2 性能测试

网站的性能测试对于网站的运行而言异常重要,但是目前对于网站的性能测试做得不够,我们在进行系统设计时也没有一个很好的基准可以参考,因而建立一整套网站的性能测试方案将是至关重要的。

连接速度测试 用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。连接速度太慢。还可能引起数据丢失,使用户得不到真实的页面。

负载测试 负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。例如:Web应用系统能允许多少个用户同时在线;如果超过了这个数量,会出现什么现象。

压力测试 压力测试是指实际破坏一个Web应用系统,测试系统的反映。压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。

4.3接口测试

服务器接口 第一个需要测试的接口是浏览器与服务器的接口。测试方式一般是,测试人员提交事务,然后查看服务器记录,并验证在浏览器上看到的正好是服务器上发生的。测试人员还可以查询数据库,确认事务数据已正确保存。

外部接口有些Web系统有外部接口,例如,网上商店可能要实时验证信用卡数据以减少欺诈行为的发生,测试的时候,要使用Web接口发送一些事务数据,分别对有效信用卡、无效信用卡和被盗信用卡进行验证。

错误处理 最容易被测试人员忽略的地方是接口错误处理。通常我们试图确认系统能够处理所有错误,但却无法预期系统所有可能的错误。为此,可以尝试在处理过程中中断事务,看看会发生什么情况,订单是否完成,尝试中断用户到服务器的网络连接,系统能否正确处理这些错误。

4.4 兼容性测试

平台测试市场上有很多不同类型的操作系统,最常见的有Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样,就可能会发生兼容性问题,同一个应用可能在某些操作系统下能正常运行,但在另外的操作系统下运行可能会失败。因此,在Web系统之前,需要在各种操作系统下对其进行兼容性测试。

浏览器测试 浏览器是Web客户端最核心的构件。来自不同厂商的浏览器对JavadavaScript、ActiveX或不同的HTlML规格有不同的支持,例如,ActiveX是Microsoft的产品,是为Intemet Explorer而设计的,JavaScript是Netscape的产品,Java是Sun的产品等等。测试浏览器兼容性的一个方法是创建一个兼容性矩阵,在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。

4.5 安全测试

景登 现在的Web应用系统基本采用先注册,后登录的方式,因此,必须测试有效和无效的用户名和密码。要注意到系统是否对大小写敏感,可以试行登录多少次,是否可以不登录而直接浏览某个页面等。

日志文件为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。

安全漏洞 服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。

5 结束语

软件测试范文第8篇

关键词:软件;测试;设计;技术

中图分类号:TP311.52文献标识码 A 文章编号:1009-3044(2007)17-31323-02

Technique of Software Test and Design

GUO Qun

(Liaoning University of Intemational Business and Economics,Dalian 116024,China)

Abstract:Software test, the straightforward and rapid way to improve the quality of software, is the necessary condition for the improvement of the software quality. This paper, introducing the common concept, method and step of the software test, gives the solution to the software test.

Key words:software; test; design; technique

1 引言

在大型软件开发过程中,人们使用了许多保证软件质量的方法分析、设计和实现软件。但由干问题的复杂性,人们对客观事物认识的局限性及软件开发人员配合不协调等因素,因而在软件开发过程中难免有各种各样的错误。如果在软件投入生产性运行之前,没有发现并纠正软件中的大部分错误,则这些错误迟早会在生产过程中暴露出来,那时不仅改正这些错误的代价更高,而且往往会造成很恶劣的后果。因此,一定要高度重视软件测试工作。软件测试是为了发现故障而执行程序的过程。其目的是以尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷。所以,在软件投入运行之前必须进行软件测试,以尽可能多地发现软件中的故障,提高软件可靠性。

2 软件测试定义

软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。正确认识软件测试的定义是十分重要的,它决定了测试方案的设计。软件测试只能查找程序中的错误;不能证明程序中没有错误。

3 软件测试方法

怎样对软件进行测试呢?有两种方法。一种称为黑盒测试:如果知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正确使用,也叫功能测试;它是在程序的接口进行的,把软件看成是一个黑盒,测试时仅仅关心如何寻找出使程序不按要求运行的情况,是最基本的测试法。另一种称为白盒测试:如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行,也叫结构测试。它是把软件看成装在一个透明的白盒子里,就是完全了解程序的结构和处理过程,按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按规定要求正确工作。

4 软件测试步骤

一个大型软件系统通常由若干个子系统构成,每个子系统又由若干个模块构成。软件测试分以下几个步骤:

(1)单元测试:又称模块测试,是针对软件设计的最小单位――程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行的独立进行单元测试。

(2)组装测试:又称集成测试,通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来时,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。

(3)确认测试:又称有效性测试。它的任务是验证软件的功能和性能及其他特性是否与用户的要求一致。首先要进行有效性测试以及软件配置复审,然后进行验收测试和安装测试,在通过了专家鉴定之后,才能成为可交付的软件。

(4)系统测试:是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的组装测试和确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方。

5 软件测试的策略

测试过程按4个步骤进行,即单元测试、组装(集成)测试、确认测试和系统测试。如图1所示。

图1 软件测试的过程

开始是单元测试,集中对用原代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。然后,把已测试过的模块组装起来,进行组装测试,主要对与设计相关的软件体系结构的构造进行测试。为此。在将一个一个实施了单元测试并确保无误的程序模块组装成软件系统的过程中,对正确性和程序结构等方面进行检查。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。最后是系统测试,把已经经过确认的软件纳入实际运行环境中,与其他系统成分组合在一起进行测试。

6 结束语

软件测试是保证软件可靠性的主要手段,是软件开发过程中最艰巨、最繁重的任务。软件开发人员要明确软件测试的目标,掌握软件测试的方法、策略,选用最少量的高效测试数据,做到尽可能完善的测试,从而尽可能多地发现软件中的问题。降低软件测试的成本,提高软件测试效率。开发出用户满意的高质量的软件。

参考文献:

[1]张海藩.软件工程导轮[M].北京:清华大学出版社,1992.6.

[2]郑人杰,等.实用软件工程[M]. 北京:清华大学出版社,1997.4.

[3]古乐,史九林,等.软件测试案例与实践教程[M]. 北京:清华大学出版社,2007.2.

软件测试范文第9篇

乙方(供测方)_________

甲乙双方经过平等协商,在诚信友好,充分地表达各自意愿的基础上,根据《中华人民共和国合同法》的规定,达成如下协议,双方共同遵守。

第一条 合同性质

本合同属于软件测试合同。

第二条 合同内容

乙方为甲方提供《_________软件》的测试。

以下的测试款项,甲方在购买正式的软件时,可作为正式购买软件预付款的一部分抵扣,同时,测试期结束,此合同失效。

第三条 测试方式,费用及支付方式

测试方式为:账号的测试;_________提供测试服务器测试;客户出服务器,_________提供测试软件。

支付方式:a.账号的测试:合同签订后,乙方提供2个带有_________的账号(每个账号有30分钟的话费)话机或网关,提交甲方测试,测试的费用只收硬件的押金即可。测试结束,乙方按硬件的借侧合同执行。b._________提供测试服务器测试:由乙方提供整套的已装有_________软件带有公网ip地址的服务器,其管理权由甲方控制,测试期为一个月,测试费用:_________元,合同签订后一次付清,即可将服务器的地址与密码交予甲方。测试结束后全部收回。c.客户出服务器,_________提供测试软件:客户按照乙方的要求将服务器,中继网关配好后,提交乙方安装_________软件,具体的条款见本合同的第四、五、六、七条。测试期为_________个月,费用为_________元人民币,合同签订后一次性付清。

第四条 合同执行期限

交货:甲方将所需要的全部硬件设备配好后(硬件设备配置必须符合乙方系统的要求);乙方应于甲方通知乙方安装系统之日起_________个工作日内完成软件系统的安装和调试。

第五条 验收标准及时间

乙方安装和调试竣工资料(包括用户手册和/或维护手册等)

甲方接到乙方验收通知后在现场安排验收,验收合格后,甲方以书面方式签收。

第六条 系统培训

甲方参加系统培训的人员的基本的要求:熟悉并具有电信操作及运营经验,熟悉英特网及宽带网的协议及设计,能熟练操作msie6.0linux9.0cis,熟悉计算机及服务器系统的维护及简单维修。

第七条 软件服务内容

7.1 在_________网关及_________接通并通过_________验收后,_________在_________个工作日内完成远程_________网关软件安装及调试工作。

7.2 在服务器及完整的linux9.0操作系统安装完毕并通过_________验收后,_________在_________个工作日内完成远程软件安装及调试工作。

7.3 在以上两项工作完成之后,_________科技在5个工作日内完成远程综合调试工作并提交综合测试报告。

7.4 售后服务条例:对于使用_________系统服务平台的运营商,乙方提供许可软件的售后服务支持

7.5 售后服务指标体系:乙方在接到甲方反映的技术问题30分钟内电话联系一级技术支持并开始工作。经常性问题在60分钟内解决,为解决的问题提供120分钟进展报告。有难度问题(在24小时内不能解决的问题),提供每12小时进展报告。

7.6 系统的安装,调试及维护原则上由乙方负责。

7.7 乙方提供的技术支持为_________.

第八条 不可抗力

甲乙双方的任何一方由于不可抗力的原因不能履行合同时,应及时向对方通报不能履行或不能完全履行的理由,在取得有关主管机关证明以后,允许延期履行,部分履行或者不履行合同,并根据情况可部分或全部免予承担违约责任。

第九条 争议解决方式

在合同履行过程中发生争议,双方应当协商解决。协商解决不成,双方商定,采用向合同签订地仲裁委员会仲裁。

第十条 合同生效

本合同正本一式二份,甲乙双方各执一份,经双方签字盖章后生效。

甲方(盖章)_________ 乙方(盖章)_________

授权代表(签字)_________ 授权代表(签字)_________

_________年____月____日 _________年____月____日

签订地点:_________ 签订地点:_________

软件测试范文第10篇

软件问题报告包括头信息、简述、操作步骤和注释。

头信息包括:测试软件名称、版本号、缺陷或错误类型、可重复性、测试平台、平台语言、缺陷或错误范围。要求填写完整、准确。

简述是对缺陷或错误特征的简单描述,可以使用短语或短句,要求简练、准确。

操作步骤是描述该缺陷或错误出现的操作顺序,要求完整、简洁、准确。对命令、系统变量、选项要用大写字母,对控件名称等加双引号。

注释一般是对缺陷或错误的附加描述,一般包括缺陷或错误现象的图像,包括其他建议或注释文字。

书写专业软件问题报告的技巧

书写软件问题报告的目的是为了正确地重复缺陷或错误,从而在后续工作中可以准确验证并加以处理。因此,基本要求是准确、简洁、完整、规范。为了正确书写专业的软件问题报告,应该注意以下要点:

每个软件问题报告只书写一个缺陷或错误

这样可以每次只处理一个确定的错误,定位明确,提高效率,也便于修复错误后方便的进行验证。

对错误的描述要做到简洁、准确、完整,揭示错误实质

描述要准确反映缺陷或错误的本质内容,简短明了。为了便于在答数据库中寻找,包含错误发生时的用户界面是个良好的习惯。例如记录对话框的标题、菜单、按钮等控件的名称。

明确指明错误类型和严重程度

根据错误的现象,总结判断错误的类型和严重程度,例如,是功能错误?还是界面布局错误?该错误是属于特别严重的错误还是一般错误?是否影响软件的后续开发和?

每一个步骤尽量只记录一个操作

简洁、条理井然,容易重复操作步骤,以便确认、修复、验证该错误.

复现的操作步骤要完整,准确,简短

保证快速准确的重复错误,完整即没有缺漏,准确即步骤正确,简短即没有多余的步骤。

附加必要的错误特征图像

为了直观的观察缺陷或错误现象,通常需要附加错误出现的界面,作为附件附着在记录的附件部分。为了节省空间,又能真实反映缺陷或错误本质,可以捕捉缺陷或错误产生时的全屏幕,活动窗口和局部区域。

附加必要的测试用例

如果打开某个特殊的测试用例而产生的错误,则必须附加该测试用例,从而可以迅速再现缺陷或错误。为了使错误修正者进一步明确缺陷或错误的表现,可以附加修改建议或注解。

尽量使用短语和短句,避免复杂句型句式

上一篇:施工图设计范文 下一篇:智商测试范文