软件可靠性测试中不确定性问题研究

Connie ·
更新时间:2024-11-10
· 881 次阅读

  摘要:介绍了软件可靠性测试的现状,然后重点对现有可靠性理论进行了分析和总结,在此基础上,提出了基于不确定性理论的软件可靠性测试的一些新思路。探讨了为解决测试中的不确定性所采用的复用技术。结果表明,该方法可以在一定程度上缩短测试周期,降低测试成本,提高测试的可靠性以及测试效率,具有可行性。

  关键词:软件测试;可靠性测试;

  引言

  目前主流的软件可靠性研究方向是基于随机系统假设的传统软件可靠性理论,其在应用时存在严重的不一致性问题。因此,改变传统可靠性建模思路,采用新的观点方法和新的数学工具来研究软件失效过程,摆脱传统建模理论假设的束缚,不受其制约,才有可能建立较普适的软件可靠性模型。事实上, 有许多学者已经意识到传统可靠性理论可能存在不足。文中总结了一些不确定性可靠性研究理论或方法,例如模糊可靠性理论、未确知可靠性建模、混沌可靠性建模。针对当前软件测试过程中存在的不确定性问题,提出了解决的方法。

  1、现有软件可靠性理论的分析

  1.1 传统可靠性理论

  基于随机系统假设的传统软件可靠性理论认为系统是随机系统,系统的失效符合特定的统计规律,比如二项分布或泊松分布。在这种理论下,根据对系统失效强度变化的不同分布假设可得到不同的软件可靠性模型。目前已经提出的软件可靠性统计模型近百种,但其应用过程中的不一致性问题一直是该理论难以解决的问题。产生软件可靠性模型应用不一致性的根源在于模型建立的前提假设各不相同,每种可靠性模型都有关于故障过程中失效强度变化规律的假设。只有在软件失效强度按假定规律变化时,模型的精度才比较高,相反,一旦软件的失效强度与假设的情况有所出入,模型的预测精度难以保证。

  1.2 模糊可靠性理论

  无论是系统还是环境、人都存在模糊性,因此在可靠性研究中引入了模糊方法,并根据系统辨识的两个基本假设,对可靠性理论进行了分类。基于这种理论提出的软件可靠性模型也得到一些成功的验证。

  1.3 未确知可靠性建模

  未确知软件可靠性研究基于未确知数学理论。未确知数学理论主要研究表达和处理未确知信息。这种信息的特点在于:它的不确定性主要不是客观的,而是决策者主观的、认识上的不确定性。这种由于主观或客观原因,决策者不能完全认识事物的真实状态或确定的数量关系,在心目中产生的主观认识上的不确定性,称为未知性。具有这种未确知性的信息称为未确知信息。

  由于软件系统对测试者存在不确定信息,例如程序中的Bug、软件输入组合对于测试者都不确定,因此可将未确知数学理论应用于可靠性研究。未确知软件可靠性模型虽然在一些实验中具有较高的预计精度和较好的适应性。但没有从理论上证明新模型的预测能力和适用性优于经典模型, 因此不能说明新模型的优越性具有普适性。因此, 在这方面尚待做进一步研究。

  1.4 混沌可靠性建模

  混沌指在确定的系统中出现的一种貌似无规则或类似随机的现象, 是普遍存在的复杂运动形式和自然现象。它表现了系统内部的复杂性、随机性和无序性, 但它无序之中又有序, 具有结构的分形性,标度的不变性, 对初始条件的敏感依赖性。混沌方法对软件可靠性进行了建模。

  2、不确定系统

  随机、模糊、未确知、混沌理论是目前软件可靠性研究主要使用的理论基础。但无论是随机系统还是模糊、未确知、混沌系统,本质上都是不确定性系统。因此可以总结得出,目前的软件可靠性理论都构建在不确定系统的基础上。事实上, 除了上述不确定性系统外,还有其他类型的不确定性系统。不确定性系统除了随机、模糊、未确知系统外,还有粗糙、灰色和泛灰系统。

  粗糙系统中的粗糙集理论,是波兰学者Pawlak 提出的用来刻画不完整性和不确定性数据的工具。它能有效地分析和处理不精确、不一致和不完整信息。从中发现隐含的知识,揭示潜在的规律。自提出以来,特别是近几年,粗糙集理论得到了长足的发展。不仅建立了严格的数学模型和完整的理论体系,在数据挖掘、机器学习、决策分析、故障诊断、智能控制等领域也取得了众多成功的应用。

  灰色系统理论由邓聚龙提出。按照人们对信息系统的知晓程度,通常可以将信息系统分为3 类,即白色系统、灰色系统和黑色系统。完全未知的信息系统称其为黑色系统;完全确知的系统称其为白色系统;而介于两者之间的部分信息已知、部分信息未知的系统称为灰色系统。灰色系统理论通过已知的信息,研究和预测未知领域,从而达到了解整个系统的目的。

  总的来看,各种不确定性理论侧重不同的方面,但又相互关联,具有走向统一的可能。

  3、不确定性问题的解决方法

  针对当前软件测试过程中存在的不确定性问题,解决的途径有两方面,一方面使软件测试工程化,在软件测试过程中建立模型,建立软件测试的流程,并对流程中的每个过程规定其相应的活动,使软件的测试活动由个人的不确定活动转向软件测试的工程化;另一方面,利用软件测试的复用技术解决测试人员经验不足的问题,从而比较全面地解决了软件测试中的不确定性问题。

  3.1 软件测试工程化

  软件测试工程化的主要思想是要求建立正式的测试组织和测试成熟度模型,明确测试的目标和流程、确定测试的活动,对测试的过程和活动进行监控,从而保证软件测试的质量。

  3.2 面向复用的软件测试模型

  软件复用是将已有的软件及其有效成分用于构造新的软件或系统。它不仅是对软件程序的复用,还包括对软件生产过程中其他劳动成果的复用,如项目计划书、可行性报告、需求分析、概要设计、详细设计、编码(源程序) 、测试用例、文档与使用手册等等。

  这个测试模型中描述了可复用测试构件的生成过程和基于复用的测试构件生成过程。首先,对被测软件进行分析,挖掘测试复用的机会,然后在测试构件库查找可以复用的测试构件,复用软件测试构件库中的测试构件生成对该软件的测试方法, 根据该方法对软件进行测试,生成测试结果。后,对一个项目的测试产生的测试资源要作为可复用的测试构件,必须对其进行抽象,使其与被测项目的相关度降到低,在这个模型中对测试过程中生成的测试方法和测试结果进行抽象,产生新的可复用的构件存入测试构件库中。详细过程如图1所示。

  软件测试的核心任务是生成和执行软件测试用例,以验证软件的质量。测试用例的选择是测试工作的关键所在。一个好的软件测试包能够体现软件测试思想、技巧,同时还保存有大量的测试数据,结果以及测试过程纪录。如果能有效地将这些资源复用,将极大地提高软件测试的效率。由于软件的多样性和复杂性,测试用例的复用会有不同程度的风险。为了实现测试用例的复用,需要有一个系统化的方法和实现策略,下面给出生成可复用测试用例的过程。该模型中对于被测试软件经过测试层次划分、分析公共需求、测试用例设计和评审四个阶段后,将测试用例存入测试用例库中,为以后的测试项目提供可复用的测试用例。基于复用的测试用例生成过程,是在传统的测用例生成过程基础之上,充分利用可复用测试用例库生成新的测试用例,提高了测试用例的生成效率,节省了测试用例的生成时间。图2给出了基于复用的测试用例生成过程。

  基于复用的测试用例生成过程经历了系统分析、提取查询信息、查询、复用四个阶段。在系统分析阶段,分析被测系统的各种类型需求,挖掘可以复用的公共模块。系统提取分析的查询的信息,然后在测试用例库中进行查询,后复用查询结果中满足要求的测试用例,对其进行适当修改以满足被测系统的要求。

  4、结束语

  软件可靠性本质上囊括了人为、系统等诸多不确定因素,这些不确定因素需要通过不确定性理论进行刻画。基于未确知、模糊、混沌等理论上的软件可靠性实践取得了一些成功,这表明随机理论并非的选择。事实上,目前软件可靠性测试遇见的困难恰是由随机理论引起的,这是根源问题。进行软件可靠性测试的研究,应当首先思考其理论基础,否则,所做的工作可能是舍本逐末。各种不确定理论都可能成为软件可靠性测试的理论基础。在总结各种不确定性理论的基础上,提出了对不确性问题的具体解决模型。将软件复用的思想应用到软件测试过程中,可以解决由于测试人员经验不足造成的问题,提高软件测试的效率,从而比较全面地解决软件测试的不确定性问题。



可靠性测试 可靠性 软件可靠性 测试 软件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章