论文部分内容阅读
进入二十一世纪以来,信息技术以更加迅猛的速度飞速的向前发展,软件产品在社会各个领域的应用也越来越广泛,软件产品的质量自然成为人们共同关注的焦点。不论软件的生产者还是软件的使用者,均生存在竞争的环境中,软件开发商为了占有市场,必须把产品质量作为企业的重要目标之一,以免在激烈的竞争中被淘汰出局。用户为了保证自己业务的顺利完成,当然希望选用优质的软件。质量不佳的软件产品不仅会使开发商的维护费用和用户的使用成本大幅增加,还可能产生其他的责任风险,造成公司信誉下降,继而冲击股票市场。在一些关键应用(如民航订票系统、银行结算系统、证券交易系统、自动飞行控制软件、军事防御和核电站安全控制系统等)中使用质量有问题的软件,还可能造成灾难性的后果。然而时至今日,软件质量的问题仍未得到根本解决,还必须依靠以软件测试为中心的软件质量保障技术,因而软件测试在软件生产实践中得到了迅速发展。软件测试的目的在于揭示软件中存在的错误,从而提供高质量的软件。软件测试在整个软件生存周期中所花费的成本往往超过50%,然而与软件工程中其他研究方向相比,无轮是投入的人力和还是取得的研究成果,都是大大落后的。
我本人长期以来一致在金融系统从事信息技术工作,在工作中一直苦苦探索提高软件质量的途径,然而因为对软件测试工作重视和研究不够,在实践中吃了不少苦头,耗费了大量的时间、精力,甚至耽误了开发进程。因为上述原因,使我深深感到软件测试对于软件质量的保障起着十分重要的作用。也因为这一点,本文主要是结合在金融系统的工作实践,对现代软件测试技术领域中的若干问题进行了研究,因为本人的工作环境和工作背景的限制,本文着重讨论分析了结构化测试、面向对象测试、软件测试模型、软件测试方法及组织等问题内容。
结构性测试的主要技术有控制流测试和数据流测试。覆盖充分性准则是这些技术的关键。控制流测试技术的充分性准则包括从语句覆盖、段覆盖直到路径覆盖等准则。数据流测试技术则采用引用覆盖直到环境覆盖等准则,数据流覆盖基于附加了数据引用关系的控制流程图,以测试程序中数据的定义和使用的正确性。目前提出的数据流覆盖准则包括定义-引用关系覆盖、引用覆盖、定义-引用覆盖、2元交互链覆盖,计算环境覆盖、所有谓词引用/部分算计引用覆盖等等准则。测试数据生成也是结构性测试的重要问题,我们详细介绍了一种路径覆盖测试生成算法。
面向对象语言具有信息隐蔽、封装、继承和动态绑定等特点。这些特点给软件测试带来了新的困难。面向对象测试主要有两种方法,基于规格说明和基于程序。基于规格说明的测试使用类的正确性和对象的观察等价性等概念构筑了一个新的测试框架。基于程序的测试利用类的继承关系进行层次式增量测试,或者利用类流图提出新的覆盖充分性准则。我们注意到基于规格说明的测试方法的缺点在于缺乏充分性准则和测试评估的手段、测试实例长度值的选择难以确定等等,而测试覆盖分析的缺点在于对缺失功能的不敏感性、缺乏错误检测、缺乏测试实例生成手段等等。我们提出了一种新的测试想法,该想法基于规格说明测试方法和测试覆盖分析这两种技术,避免了上述种种缺点,从而达到了优势互补的目的。
V模型在软件测试模型方面是最广为人知的模型,通过对V模型的深入探讨,分析其不足之处,我们建议对V模型进行适当改造,如在部分阶段延迟进行单元测试和集成测试,在不同阶段上提前进行测试设计,这些改造在一定程度上使得V模型能更好的指导测试工作。在V模型的基础上我们研究了X模型,其关注解决交接和频繁集成的周期的问题,着力于避免把大量时间花费在测试文档编写上面,目的是把时间真正用于测试的项目上。在X模型的基础上我们深入探讨了前置测试模型,该模型很好的把开发和测试结合起来,对每一个交付内容进行测试,通过反复交替的开发和测试,前置测试模型给需要使用测试技术的开发人员、测试人员、项目经理和用户等带来很多不同于传统方法的内在的价值。
软件测试要想取得好得效果,理论上不仅取决于从单元测试到验收测试的每一个步骤,在工作实践中我们认为还应时刻注意软件测试过程中常见的一些问题,只有处理好了这些问题,软件测试才可能取的好的结果,也因为此,软件测试过程的组织从来都不是一个小问题,必须要有很好的人员组织和详细软件测试计划;在实际测试过程中,我们还感觉到硬件配置是一个不可忽视的方面,软件的安装测试和软件的兼容性测试也是软件测试中很重要的方面,重视软件每一个过程和每一个方面的的测试是软件测试人员的宝贵经验。软件测试自动化能够帮助测试人员进行更加彻底的测试,降低软件测试的成本,帮助提高软件质量并且有可能使原来一些手工不能测试的工作得以进行。自动化测试之所以能在很多大公司如金融企业中实施起来,往往因为它有适合自动化测试的特点和高的投资回报率。在实际过程中有很多情况是适合自动化测试的,也有许多情况是不适合自动化测试的。
中国太平洋保险公司作为中国最大的商业保险公司之一,追求高质量的软件产品一直是公司的目标和任务。在实际工作中,我作为一名信息技术人员多次参加太保公司多个软件系统的测试,在工作中我深感测试模型的选择对测试工作起着至关重要的作用。在经过南大工程硕士班的学习之后,结合我在工作中的实践设计了CPC模型,并应用该模型完成了对太平洋保险公司新车险系统的测试。