首页 > 文章中心 > 软件测试

软件测试

前言:想要写出一篇令人眼前一亮的文章吗?我们特意为您整理了5篇软件测试范文,相信会为您的写作带来帮助,发现更多的写作思路和灵感。

软件测试

软件测试范文第1篇

乙方(供测方):_________

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

第一条 合同性质

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

第二条 合同内容

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

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

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

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

支付方式: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 乙方提供的技术支持为_________。

第八条 不可抗力

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

第九条 争议解决方式

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

第十条 合同生效

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

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

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

软件测试范文第2篇

关键词:软件测试;方法;技术

白盒测试也称结构测试或逻辑驱动测试。它是按照程序内部的逻辑结构测试程序,主要关注代码是否能够正确执行。通过白盒测试可以检测出产品内部动作是否按照设计规格说明书的规定正常工作,并检验程序中的每条通路是否都能按预定要求正确工作。白盒测试是把测试对象看作一个透明的盒子,软件测试人员能够依据程序内部逻辑结构等相关信息,设计或选择测试用例,对程序进行测试。通过在不同的节点检查程序的状态,以保证实际的状态和预期的状态一致。

3.灰盒测试

灰盒测试,是介于白盒测试与黑盒测试之间的。可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。

二、 软件测试技术的策略

软件测试并不单是软件开发完成后的一个独立的过程,而是贯穿于整个软件开发的过程,根据软件开发的周期不同,可以将软件测试分为:单元测试、集成测试、确认测试、系统测试和验收测试。

1.单元测试(Unit Testing)

单元测试是在软件开发过程中能够进行的最基础的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。

2.集成测试(Integrated Testing)

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。因此,单元测试后,有必要进行集成测试,发现并排除在模块连接中可能发生的问题,最终构成要求的软件子系统或系统。对子系统,集成测试也叫部件测试。

3.确认测试(Validation Testing)

确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否能够按照需求规格说明书中所要求的工作。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。对软件的功能和性能要求在软件需求规格说明书中已经明确规定,它包含的信息就是软件确认测试的基础。确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。

4.系统测试(System Testing)

系统测试的任务是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性,其目的是检验系统“做得怎样”。这阶段又可分为三个步骤:模块测试,测试每个模块的程序是否有错误;组装测试,测试模块之间的接口是否正确;确认测试,测试整个软件系统是否满足用户功能和性能的要求。该阶段结束应交付测试报告,说明测试数据的选择,测试用例以及测试结果是否符合预期结果。

三、软件测试未来发展方向

目前,软件测试存在4个发展方向。

1.验证技术

验证的目的在于证明在软件生命期各个阶段,以及阶段间的逻辑协调性和正确性。验证技术目前仅适用于特殊用途的小程序。

2.静态测试

正逐步地从代码的静态测试往高层开发产品的静态测试发展。

3.测试用例的选择

什么样的测试用例是好的测试用例?可以从4个特性描述测试用例的质量,即有效性、仿效性、经济性和修改性。

4.测试技术的自动化

这是一个最新的发展方向。自动测试也是一门技术,但与测试技术存在很大的区别。

参考文献:

软件测试范文第3篇

关键词:软件测试;集成测试;调用图;MM-路径

中图分类号:TP317文献标识码:A文章编号:1007-9599 (2012) 03-0000-02

Analysis of Integration Testing of Software Testing

Hou Yanfang,Chu Shulai

(Zhoukou Vocational and Technical College,Zhoukou466001,China)

Abstract:The integration testing plays a very important role in software testing,the concept of integration testing,integration testing strategy and the main types of integration testing (phase) briefly discusses the analysis of several key integration testing.

Keywords:Software testing;Integration testing;Call graph;MM-path

软件测试作为软件质量保证的关键技术之一,其目的就是能够有效地发现软件中的错误或缺陷。集成测试是软件测试中处于组件测试和系统测试之间一个非常重要的环节,这是因为所有组件都经过测试并能正常运行并不意味着这些组件放到一起经过集成后还能正常运行,正是基于这一点,很多大的软件公司成立了专门关注集成测试的测试团队,如能恰当实施,集成测试能大大减少一些在系统测试阶段才会发现的缺陷。

一、集成测试的概念

(一)集成测试的定义

集成测试是构造软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试。其目标是利用已通过单元测试的构件建立设计中描述的程序结构。

(二)集成测试遵循的原则

集成测试遵循的原则主要包括:所有公共接口都要被测试到;关键模块必须进行充分的测试;集成测试应当按一定的层次进行;集成测试的策略选择应当综合考虑质量、成本和进度之间的关系;集成测试应当尽早开始,并已总体设计为基础;在模块与接口的划分上,测试人员应当和开发人员进行充分的沟通;当接口发生修改时,涉及的相关接口必须进行再测试;测试执行结果应当如实的记录;集成测试应根据集成测试计划和方案进行,不能随意测试;项目管理者应保证审核测试用例。

(三)集成测试的任务

集成测试的主要任务包括:将各模块连接起来,检查模块相互调用时,数据经过接口是否丢失;将各个子功能组合起来,检查能否达到预期要求的各项功能;一个模块的功能是否会对另一个模块的功能产生不利的影响;全局数据结构是否有问题,会不会被异常修改;单个模块的误差积累起来,是否被放大,从而达到不可接受的程度。

(四)集成测试的文档

软件集成的总体计划和特定的测试描述应该在测试规约中文档化。这个文档包含测试计划和测试规程,它是软件过程的工作产品,也是软件配置的一部分。

下列准则和相应的测试可应用于所有的测试阶段:接口一致性。当每个模块(或簇)引入程序结构中时,要对其内部和外部接口进行测试;功能有效性。执行的测试旨在发现功能错误;信息内容。执行的测试旨在发现与局部或全局数据结构相关的错误;性能。执行的测试旨在验证软件设计期间建立的性能边界。

测试计划主要包括:集成测试的进度,确定每个阶段的开始和结束时间;附加软件(桩模块及驱动模块)的简要描述侧重于专门进行的工作的特征;描述测试环境和资源;特殊的硬件配置、特殊的仿真器和专门的测试工具或技术也是需要讨论的问题;详细测试规程。

测试规约:集成策略(包含在测试计划中)和测试细节(在测试规程中描述)是最基本的成分,因此必须要有。

二、集成测试的策略

驱动模块(Driver):用来模拟待测模块的上级模块。驱动模块在集成测试中接受测试数据,将相关的数据传送给待测模块,启动待测模块,并打印出相应的结果。桩模块(Stub):也称为存根程序,用以模拟待测模块工作过程中所调用的模块。桩模块由待测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验待测模块与下级模块的接口。

一般可分为非增量集成和增量式集成,其中增量集成指的是程序以小增量的方式逐步进行构造和测试,这样错误易于分离和纠正,更易于对接口进行彻底测试,而且可以运用系统化的测试方法,传统的将增量测试策略分为自顶向下集成、自底向上集成以及三明治集成。

三、集成测试的主要类型(阶段)

(一)基于功能分解的集成

在讨论集成测试时,测试方法都基于采用树或文字形式来表示的功能分解。这类讨论不可避免地要深入到将要集成的模块的顺序。

1.自顶向下集成(从树顶开始向下)。深度优先集成是首先集成结构中主控路径下的所有模块。

2.自底向上集成(从树底开始向上)。自底向上集成是自顶向下顺序的“镜像”,不同的是,桩由模拟功能分解树上一层单元的驱动模块替代。在自底向上集成中,首先从分解树的叶子开始,并用特别编写的驱动模块进行测试。驱动模块中的一次性代码比桩中的少。大多数系统在接近叶子节点时都有相当高的扇出数,因此在自底向上集成顺序中,不需要同样数量的驱动模块,不过代价是驱动模块都比较复杂。

3.三明治集成(前两种方法的某种组合)。三明治集成测试是将自顶向下测试与自底向上测试两种模式有机结合起来,采用并行的自顶向下、自底向上集成方式,形成的方法。三明治集成测试更重要的是采取持续集成的策略。桩和驱动的开发工作都比较小,不过代价是作为大爆炸集成的后果,在一定程度上增加了定位缺陷的难度。

(二)基于功能分解方法的优缺点

1.自顶向下集成,其优点:在于它可以自然地做到逐步求精,一开始就能让测试者看到系统的框架。缺点:需要提供桩模块,桩模块是对被调用子模块的模拟,可能不能反映真实情况,因此测试有可能不充分。

由于被调用模拟子模块不能模拟数据,如果模块间的数据流不能构成有向无环图,一些模块的测试数据便难以生成。同时,观察和解释测试输出往往也是困难的。

2.自底向上集成,其优点:由于驱动模块模拟了所有调用参数,即便数据流并未构成有向无环图,生成测试数据也没有困难。如果关键的模块是在结构图的底部,那么自底向上测试是有优越性的。缺点:直到最后一个模块被加入进去之后才能看到整个程序(系统)的框架。

3.三明治集成测试采用自顶向下、自底向上集成相结合的方式,并采取持续集成的策略,有助于尽早发现缺陷,也有利于提高工作效率。

4.功能分解缺点。为了满足项目管理的需要,而不是为了满足软件开发人员的需要。桩或驱动的开发工作量,此外还有重新测试所需工作量的问题。对于自顶向下集成,需要开发(节点-1个)桩模块;对于自底向上集成,需要开发(节点-叶子)个驱动模块。

(三)基于调用图的集成

基于调用图的集成一般分为成对集成和相邻集成。基于调用图方法的优点:偏离了纯结构基础,转向行为基础,因此底层假设是一种改进;这些技术还免除了桩/驱动器开发工作量;与以构建和合成为特征的开发匹配得很好。缺点:缺陷隔离问题,尤其是对有大量邻居的情况;清除缺陷后,意味着以前测试过的包含已变更代码的邻居,都需要重新进行测试。

(四)基于路径的集成

将集成测试的侧重点由测试单独开发并通过测试的单元之间的接口,转移到这些单元的交互上,即它们的“协同功能”上。接口是结构性的,而交互是功能性的。

MM-路径是功能性测试和结构性测试的一种混合,其优点:它与实际系统行为结合紧密,而不依赖于基于分解和调用图集成的结构性推动。基于路径集成测试也适用于面向对象的软件测试。缺点:需要更多的工作量标识MM-路径。这种工作量可能会与桩和驱动的开发所需工作量有偏差。

(五)面向对象环境中的集成测试

两种不同的策略:

1.基于线程的测试(thread-based testing)。

2.基于使用的测试(use-based testing)。

驱动程序和桩程序:驱动程序可用于测试低层中的操作和整组类的测试。驱动程序也可用于代替用户界面以便在界面实现之前就可以进行系统功能的测试。桩程序可用于在需要类间的协作但其中的一个或多个协作类仍未完全实现的情况下。

四、结语

集成测试既是一种测试类型也是一个测试阶段,因为集成定义为一组交互,因此组件之间的所有已定义的交互都需要测试,体系结构和设计可以提供系统内部的交互细节,但是测试一个系统与另一个系统之间的交互要求对这些系统一起工作的方式有深刻理解,此时的集成测试是一个阶段。由于集成测试的目标是模块之间的交互,这种测试就像白盒、黑盒及其它类型的测试一样,也有一套技术和方法,因此集成测试也被看作是一种测试类型。

参考文献:

[1]周燕,宋敬华.面向对象的集成测试顺序的研究[J].计算机测量与控制,2010,9

[2]张云岗,刘春茂.软件测试技术浅析[J].技术与市场,2011,2

[3]朱家云.浅析软件测试[J].信息系统工程,2011,4

[4王丽达.论软件系统的测试[J].经济研究导刊,2011,14

[5]刘欣.软件测试方法分析与实践[D].北京邮电大学,2009

[6]赵,孙宁.软件测试技术:基于案例的测试[M].北京:机械工业出版社,2011

软件测试范文第4篇

1.1软件测试的含义

软件测试根据用户的使用目的,将成功开发的软件进行相应的纠错动作,从而披露该软件的各种问题及缺失因素,促进研发人员进行相应的改进,从而达到完善软件的目的。

1.2软件测试的关键性阶段

主要有以下两个关键性的检测阶段。第一阶段是软件开发过程中各主要单元模块完成后进行测试。这一阶段测试可以将缺陷控制在最小单元模块内,给研发人员最快的测试反馈,促使其完善单元模块的功能,达到用户的使用要求;第二阶段测试是软件系统全部完成后,进行全方位的综合测试,查找系统在使用过程中可能存在的问题。此时,需要根据系统要实现的功能进行多种测试工具的应用,以其找到系统不符合要求的功能或性能瑕疵。

1.3软件工程中软件测试的方法

对软件工程进行软件测试时,不同软件可以运用不同的测试方法。现阶段,主要以软件测试在测试过程中是否需要将程序进行完全运行来判断测试方法,不需要系统程序运行就能完成测试的方法称为静态方法;需要系统时时传送相应数据,并通过相应程序检测系统是否达到用户的期望值,是否存在运行逻辑上的问题和算法上的缺陷等的测试方法称为动态方法。目前,静态测试方法应用较广的有静态排演法、软件检查法和软件审查法。随着软件测试方法的不断创新和完善,新兴的测试方法如静态自动分析、分析模型等方法不断得到应用;动态测试方法随着精细化测试进程的深入逐渐细分为单元测试方法、集成测试方法、系统测试方法。这些测试方法相较于静态测试方法,具有范围广、测试成功率高、内容覆盖面大、应用程度高等特点。如白盒测试、代码覆盖测试等。

2软件测试在软件工程中的作用分析

2.1软件工程项目需要软件测试进行全方位的辅助管理

所谓软件工程项目就是将用户的要求进行立项管理,通过建立项目组、研究用户的使用目标来确立项目目标,对目标现状进行系统研究与分析、总体目标细分阶段性目标以及规划项目总体方案等,将软件开发过程建立在项目管理过程中。在这一过程中,各阶段性成果都需要软件测试来校验其可行性,从而辅助软件工程项目步入更完善的项目管理中。首先,软件工程项目需要精细化项目管理和集中项目管理两者协调统一。因此,需要设立软件测试机构,能够对项目细分的各阶段、各模块进行软件测试。其次,项目组人员组成和责任落实要依照规章制度实施。要体现软件测试的重要性和实际意义,测试机构负责人为项目组组长的最佳人选。其组员为各项目负责人和其他测试人员组成。软件测试结果必须立即反馈到软件研发人员、程序员及系统分析人员等相关人员手中,以期促进其团结协作,将软件各部分呈现出的问题解决。最终满足用户的使用要求,实现软件设计的目标。可见,软件测试的辅助作用,对于软件工程项目的精细化管理、软件相关技术的综合管理等至关重要。

2.2软件工程项目实施反促软件测试发展

研发一个新的软件系统时,其核心内容包括目标确定、框架设计、分支设计和编码应用等,这些核心内容均需要软件测试来实现其统一性和兼容性。系统目标是软件测试的最终目的,软件测试需要围绕系统目标进行缺陷的发现和反馈,从而实现各阶段测试的统一性和完整性,从而促进系统的协调和完善。经过软件测试的系统,必须保证达到项目目标,且在长时间运行下无重大bug。从这一过程来看,软件测试是在软件工程项目实施中得以发展的。软件测试机构并不是真正意义上的独立,其“独立”仅是功能上的独立。实际上,在进行软件工程项目实施的整个过程中,无论是整体设计还是精细化管理,都需要软件测试参与其中,以测试角度对软件工程项目的设计和实施进行指导和辅助,从而纠正一些设计上的错误和细节上的缺陷。这种参与的直接性促进软件测试必须紧跟项目研发现状,才能提出及时有效的参考意见,促进项目顺利开发。软件编码规范是软件研发团队必须规范执行的,而这种规范的编码刚是软件测试机构的首要任务,制定规范要严肃,执行规范要严格,才能给用户呈现出高质量的软件产品。

2.3软件测试原则

软件测试的原则是在其测试的基本目的和要求下产生的,因此,在进行软件测试时,必须注意其原则性。(1)坚持用户使用目的,坚持项目总体目标和阶段性目标的实现原则;(2)测试“精细化”即细分分支、单元模块、阶段性成果、系统全面测试等随时进行;(3)测试时间要越早越好,频率越高越好;(4)测试中逻辑性检测和算法检测要注重;(5)测试要结合数据检测进行;(6)保证测试的严肃性;(7)测试坚持第三方进行原则;(8)不合理条件值都要进行测试;(9)测试过程、方法、用便、结果、完善等都要记录在案,便于故障定位和日常维护。

3自动化软件测试技术分析

随着智能化技术和自动化技术的不断深入应用,在软件测试中,自动化软件测试技术得到创新和发展,并在软件开发中应用得越来越广泛。所以,人们将各种自动测试的效果进行评估,将成功案例进行相似引用,来判断检测的可行性。最初的自动化测试具有较严格的针对性,运用特定的测试原则和测试方法,将统计指标运用其中,从而得到测试结果,并对其进行全面评估,从而得出自动化测试的严密性。随着自动化测试的不断深入推进和创新,其测试准则和自动测试技术越来越成熟,逐渐过渡到自动测试模型化阶段。逐渐形成自动测试的等级制度,使得自动软件测试技术成为测试控制能力高低优劣的一个重要判断依据。

4结语

软件测试范文第5篇

软件工程目前一直缺少一个明确的定义,但是目前业内专家都一致认为软件工程一般分为需求分析、设计、编码及测试4个环节。其中前面3个环节是整个软件的编写,而最后1个环节的软件测试,则是通过各种专业测试方法来测试软件是否满足软件工程下的10种特性:可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性。

2当前软件测试的现状

从对软件工程的分析来看,软件测试是保证软件最终健壮性的最后一个工序。但是,当前很多软件设计公司,在软件测试方面投入的人力物力都非常低,甚至没有专门的软件测试部门,而是由一些软件设计人员兼职。虽然这样也有了所谓的软件测试这道工序,显然因为软件设计人员本身的先入为主,所以在软件测试的过程中,往往不容易发现潜在的问题。另外有的软件测试人员仅仅把软件推到市场上,部分使用人员来进行测试,虽然这也是一种测试方法,但是这种由用户测试的软件测试环节,更多的是在软件的操作体验的测试,并不能够发现软件潜在的bug,正确的软件测试流程,应该设计专业的测试软件,通过白盒测试的方法来针对软件代码进行测试。而上述的仅仅测试界面和操作,那只是软件测试中的黑盒测试法,只有综合白盒和黑盒,才可能获得更好的软件测试效果。但是,目前能够综合这2种测试方法的专业软件测试部门,还是非常稀缺的。这自然导致了国内整个软件行业的软件健壮性存在缺陷的主要原因之一。

3软件测试重要性分析

3.1软件危机下凸显软件测试的重要性

软件危机一直是IT行业的最重要的话题,其实在软件危机这个名词出来之前,软件工程就已经初步有了核心流程,不过正是因为很多专家有着自己的理论,所以让软件工程这门技术的解释出现了很多不同的版本,不过在众多版本中,软件测试始终占据一个重要的模块。软件危机常见的表现就是因为软件在开发的过程中,成本失控、时间跳水、稳定性和兼容性欠缺等诸多问题,而不得不一而再再而三的重新开发,特别是软件在设计的过程中,对于可维护性、可修复性不重视,导致维护的成本占据了整个软件生存周期的90%以上,这很明显是不正常的。通常而言,软件维护的成本应该是软件生存周期的70%以下,超过70%,这个软件最终的结局一定会失败。软件测试的过程,除了针对软件的运行是否稳定,同样也会对软件的可维护性进行有效的判断,尽可能的避免软件危机的产生,所以从软件危机的角度上来看,软件测试在软件工程中的地位无疑是非常重要的。

3.2软件测试的必要性

(1)是交流的问题,容易导致软件接口处的错误。现代软件设计已经不是单人作战的模式,已经上升到团队甚至全球软件工程师通过互联网这个大平台进行合作,这种方式显然对软件工程规范要求更高。其中交流往往就成了一个很重要的问题,很多软件工程师在设计的过程中,尽可能的将自己负责的模块做到完美,甚至也能够考虑到模块间的借口问题。但是因为交流上的不便,或者忽视交流,往往会产生2个模块接口不兼容,甚至还会发生软件需要重新改写的问题。

(2)软件结构有越来越复杂的趋势。虽然软件开始实施模块化设计方式,将一个软件整体拆解成无数个小的系统模块进行设计,然后将设计好的模块进行统一封装。这种化整为零的软件设计方式的确有效的改善了软件复杂性的问题,但是同样也面临着模块间的兼容问题,不同设计师的设计风格可能会导致软件可维护性降低及可移植性降低,特别是一些软件开发公司,根本就没有软件工程的概念,其研发的软件产品,更是漏洞百出,自然很难保证软件产品的健壮性。

(3)程序代码的设计问题。目前一个软件的诞生,往往会有好几千万行的代码,而且在软件正式代码编写之前,还需要撰写概要设计代码和详细设计代码,这些往往都给错误埋下伏笔。如果程序设计代码撰写不规范,没有相应的注释,没有相应的模块设计,往往计算式发现了软件的错误,最终维护起来,也很难让维护工程师定位,甚至连测试工程师也很难找到错误的地方。

(4)设计文档的组成非常少。一个软件产品的诞生,除了优秀的代码设计之外,还要一份完善的代码文档,包括软件的可行性研究、需求分析、详细设计、代码编写,以及软件测试等工作流程中所需要的一切的代码文档。如果代码文档贫乏,甚至没有,那么一旦在软件测试环节,或者在软件使用环节,出现错误时,那就很难进行维护调试了。这时候的维护成本往往会比重新编写一款软件的成本还要低,可见设计文档的错误撰写给软件健壮性的影响。

(5)一些软件测试工具和开发工具本身的问题,往往导致软件出现严重的bug。而且在设计阶段,还很难发现,因为是本身软件测试工具和软件开发工具引起的,因为软件测试工具和开发工具实际上也是一种软件,如果这些软件的健壮性有问题,自然也会导致测试结果出现偏差,最终影响到软件的健壮性。

3.3软件测试成本过半证明了软件测试的重要性

软件工程虽然在很多专家和权威机构的定义有所偏差,但是无一例外,对于软件成本构成的分析上,软件测试的成本一直占据了主要部分,最低的认为,软件测试成本要占据30%,最高的则认为占据到50%。如果将后期维护成本也放在软件测试板块中,那么这个测试成本就会变得更高。因为软件进入维护期时,一旦出现软件需要进行调试,那么修复后的软件依然要进行软件测试,否则很难保证调试后软件依然能够保证健壮性。作为一个软件系统的所有代码,都是牵一发而动全身,修改了某处代码,可能会影响到另外一个模块的功能,所以在维护期内,对软件的任何变动,都需要进行软件测试,才能够保证软件接下来的健壮性。但很明显,如果将软件测试工作放在软件推出市场之前,就来进行有效的测试,那么对于软件整个生命周期的成本,将能够得到有效的降低。软件测试的成本的高低,往往和软件的质量成正比,而软件质量提升了,后期的维护成本就能够有效的降低,所以综合起来,软件测试这部分的成本支出是非常有必要的。

4软件测试流程分析

(1)建立独立的软件测试部门,测试部门领导应该对这个专业非常精通,而不是简单的由开发人员兼职,这个测试部门需要从可行性研究开始就应该着手对软件研发进行测试,可行性研究的最终确认应该也有软件测试主管部门的签字确认才能够进行下一步的工作。

(2)软件测试工作不是等到软件全部开发完毕才来进行测试,而是跟随软件设计的整改生命周期,针对每一个环节进行测试,软件测试部门应该拥有独立的物理部门和独立于开放环境的测试环境,这样才能够提供更加完善的软件测试,尽可能的将软件bug扼杀在摇篮里。

(3)软件模块测试,因为现在软件设计都已经进入模块化设计标准,比如一个完整的软件是S,它有A、B、C、D等模块构成,那么对于A模块的软件设计过程中,就应该有独立的软件测试人员进行跟踪,直到A模块被测试证明没有隐患。以此类推,分别对B、C、D等模块分别进行测试,合格以后,组装后的软件依然进行测试,这样才能够最终提升软件健壮性。在软件设计的过程中,其实测试人员是和软件开发人员并行工作的,而不是等到软件设计完毕之后,再来对模块进行测试,这种方法才能够提升软件测试的效果。

5结语