软件可信性测试方法及装置制造方法及图纸

技术编号:7843158 阅读:182 留言:0更新日期:2012-10-13 01:33
本发明专利技术提供一种软件可信性测试方法及装置。其中,方法包括:获取软件代码中待检测的对象的名称、所有状态以及状态变迁条件,状态变迁条件为状态之间的转换关系;根据对象的名称、所有状态以及状态变迁条件,在用自然语言描述的对象的缺陷中进行提炼和语义转换,生成用测试语言描述的对象的缺陷,测试语言为符合软件代码的语义的描述方式;根据用测试语言描述的对象的缺陷,在软件代码中对对象进行缺陷检测。本发明专利技术技术方案基于缺陷的测试技术可以深入软件代码的内部结构,通过对缺陷进行抽象建模,从内部结构出发,检测软件代码中的缺陷,有利于提高软件代码的可信性。

【技术实现步骤摘要】

本专利技术涉及软件测试技术,尤其涉及一种软件可信性测试方法及装置
技术介绍
随着结构日趋复杂的网络化,信息系统变得越来越脆弱,安全性(Security)、可靠性(Reliability)和可用性(Availability)等问题日益凸显,常常使得信息系统不能以用户所期望或信任的方式工作。在互联网发展过程中,由于可信性问题引发的麻烦、损失甚至灾难不胜枚举。如何确保软件为人们提供可信赖的服务,如何提高软件的可信度,是值得深入思考的问题,尤其是像通信这种与用户体验密切相关的软件,更要具有较高的可信度。 软件可信性在本质上是传统的软件质量概念在互联网时代的延伸,但与传统的软件质量研究的关注点有所不同,它更关注使用层面的综合化的质量属性及其保障。然而,目前可信软件构造技术、可信性度量与评价方法严重缺乏,使得软件产品在推出时就含有已知或未知的缺陷,对软件的运行造成了一定的威胁。因此,软件的服务质量及其可信度成为用户使用软件的主要准则和服务商竞争合作的主要指标。要想提高软件的可信性,必须对软件进行深入的测试。目前常见的软件测试主要包括功能测试、性能测试、界面测试,这些测试是用户看得见的、和用户使用体验密切相关的,是保证软件可信性的必要手段,但这些只是软件的外部表现测试。软件的外部表现测试主要是保障用户体验方面的测试,忽略了软件内部结构的重要性。而且外部表现测试往往依赖于内部结构,只有内部结构正确,才能保证外部表现测试的顺利进行。现有技术中较为常见的是使用白盒测试技术,例如基于测试用例的单元测试,对软件内部结构进行测试,但是由于测试用例、测试数据、测试环境等的影响,测试很难彻底,100%的分支覆盖、代码覆盖等很难达到,因此软件中仍可能存在深层次的缺陷,导致软件的可信性较低。
技术实现思路
本专利技术提供一种软件可信性测试方法及装置,用于实现对软件缺陷的测试,提高软件的可信性。本专利技术提供一种软件可信性测试方法,包括获取软件代码中待检测的对象的名称、所有状态以及状态变迁条件,所述状态变迁条件为状态之间的转换关系;根据所述对象的名称、所有状态以及状态变迁条件,在用自然语言描述的所述对象的缺陷中进行提炼和语义转换,生成用测试语言描述的所述对象的缺陷,所述测试语言为符合所述软件代码的语义的描述方式;根据用测试语言描述的所述对象的缺陷,在所述软件代码中对所述对象进行缺陷检测。本专利技术提供一种软件可信性测试装置,包括获取模块,用于获取软件代码中待检测的对象的名称、所有状态以及状态变迁条件,所述状态变迁条件为状态之间的转换关系;生成模块,用于根据所述对象的名称、所有状态以及状态变迁条件,在用自然语言描述的所述对象的缺陷中进行提炼和语义转换,生成用测试语言描述的所述对象的缺陷,所述测试语言为符合所述软件代码的语义的描述方式;检测模块,用于根据用测试语言描述的所述对象的缺陷,在所述软件代码中对所述对象进行缺陷检测。本专利技术提供的软件可信性测试方法及装置,通过获取软件代码中待检测对象的名称、状态以及状态之间的变迁条件,并基于此对用自然语言描述的对象缺陷进行提炼和语义转换,生成用测试语言描述的对象缺陷,并基于此在软件代码中对待检测的对象进行缺 陷检测。本专利技术技术方案基于缺陷的测试技术可以深入软件代码的内部结构,通过对缺陷进行抽象建模,从内部结构出发,检测软件代码中的缺陷,有利于提高软件代码的可信性。附图说明图I为本专利技术一实施例提供的软件可信性测试方法的流程图;图2为本专利技术另一实施例提供的软件可信性测试方法的流程图;图3为本专利技术一实施例提供的软件可信性测试装置的结构示意图;图4为本专利技术另一实施例提供的软件可信性测试装置的结构示意图。具体实施例方式图I为本专利技术一实施例提供的软件可信性测试方法的流程图。如图I所示,本实施例的方法包括步骤101、获取软件代码中待检测的对象的名称、所有状态以及状态之间的变迁条件。本专利技术各实施例的执行主体为软件可信性测试装置,其可以是计算机等设备。在现有技术中,大多数的软件测试都是软件的外部表现测试,而忽略了对软件代码的内部结构的测试。即使有些测试是针对软件代码的内部结构的,也很难达到100%的分支覆盖、代码覆盖等,测试很难彻底,例如软件代码中仍有可能存在空指针,内存泄露,死代码等,使得软件的可信性仍然较低。所谓死代码是指程序中永远执行不到的语句,其存在可能会给攻击软件打开通道,或者影响软件的执行效率。基于此,本专利技术实施例提出一种基于缺陷的测试方式。基于缺陷的测试可以深入软件代码的内部结构,是通过对缺陷进行抽象建模,从软件代码的内部结构出发来检测软件代码中的缺陷的测试。其中,软件代码中的不同对象的表现形式变化万千,但是都具有三个基本要素,SP名称、状态和状态变迁条件。其中,状态变迁条件是指状态之间的转换关系。举例说明,对于一个变量对象来说,通常包括声明(declare)、初始化(initialize)和使用(use)三种状态;从声明状态可以转换到初始化状态,从初始化状态可以转换到使用状态,而不能直接从声明状态转换到使用状态。其中,从声明状态可以转换到初始化状态,从初始化状态可以转换到使用状态即为两种变迁条件。在本实施例中,允许测试人员使用自然语言自行定义缺陷。本实施例的软件可信性测试装置可以根据待检测对象的三个基本要素对用自然语言描述的缺陷进行语义转换,从而生成测试语言描述的缺陷。其中,自然语言是指测试人员可以看懂的语言描述方式,而测试语言是相对自然语言来说的,主要是指符合软件代码的语义的描述方式。因此,本实施例在进行软件可信性测试时需要获取软件代码中待检测的对象的三要素,即对象的名称、所有可能出现的状态以及状态变迁条件(即状态之间的转换关系)。可选的,本实施例的软件可信性测试装置可以向测试人员提供用户界面,允许测试人员通过用户界面输入待检测的对象的名称、所有状态以及状态变迁条件等。相应地,本实施例的软件可信性测试装置会接收测试人员通过用户界面输入的对象的名称、所有状态以及状态变迁条件。步骤102、根据获取的对象的名称、所有状态以及状态之间的变迁条件,在用自然语言描述的对象的缺陷中进行提炼和语义转换,生成用测试语言描述的对象的缺陷。在获取对象的名称、所有状态以及状态变迁条件之后,根据获取的信息从用自然语言描述的对象的缺陷中提炼相应的信息并进行语义转换,生成用测试语言描述的对象的缺陷。在一个实施方式中,软件可信性测试装置可以根据所述对象的所有状态以及状态变迁条件,从用自然语言描述的对象的缺陷中提取出所述对象的错误的状态以及错误的状态变迁条件;然后用测试语言对对象的名称、所述对象的错误的状态以及错误的状态变迁条件进行描述,生成用测试语言描述的对象的缺陷。下面以一个简单的未初始化变量为例进行说明,未初始化变量对应变量的一种缺陷为对任何变量的使用出现,如果其未被定义过,则报错;其对应的自然语言描述为when the current variable is not initialized, and it was used, then report an error0由于这样的自然语言描述很难被程序所识别,因此需要对自然语言描述的缺陷进行约束,即确定待检测对象,对象可能出现的状态及状态变迁条件。对于一个变量来说,可以用其变量名(本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种软件可信性测试方法,其特征在于,包括 获取软件代码中待检测的对象的名称、所有状态以及状态变迁条件,所述状态变迁条件为状态之间的转换关系; 根据所述对象的名称、所有状态以及状态变迁条件,在用自然语言描述的所述对象的缺陷中进行提炼和语义转换,生成用测试语言描述的所述对象的缺陷,所述测试语言为符合所述软件代码的语义的描述方式; 根据用测试语言描述的所述对象的缺陷,在所述软件代码中对所述对象进行缺陷检測。2.根据权利要求I所述的软件可信性测试方法,其特征在于,所述获取软件代码中待检测对象的名称、所有状态以及状态变迁条件包括 接收测试人员通过用户界面输入的所述对象的名称、所有状态以及状态变迁条件。3.根据权利要求I或2所述的软件可信性测试方法,其特征在于,所述根据所述对象的名称、所有状态以及状态变迁条件,在用自然语言描述的所述对象的缺陷中进行提炼和语义转换,生成用测试语言描述的所述对象的缺陷包括 根据所述对象的所有状态以及状态变迁条件,从用自然语言描述的所述对象的缺陷中提取出所述对象的错误的状态以及状态变迁条件; 用所述测试语言对所述对象的名称、所述对象的错误的状态以及状态变迁条件进行描述,生成用测试语言描述的所述对象的缺陷。4.根据权利要求3所述的软件可信性测试方法,其特征在于,所述根据用测试语言描述的所述对象的缺陷,在所述软件代码中对所述对象进行缺陷检测包括 根据用测试语言描述的所述对象的缺陷中的所述对象的名称,获取所述对象在所述软件代码中的状态以及状态变迁条件; 判断所述对象在所述软件代码中的状态以及状态变迁条件是否属于用测试语言描述的所述对象的缺陷中的所述对象的错误的状态以及状态变迁条件; 如果判断结果为是,确定所述对象存在缺陷; 如果判断结果为否,确定所述对象不存在缺陷。5.根据权利要求4所述的软件可信性测试方法,其特征在干,所述获取软件代码中待检测的对象的名称、所有状态以及状态变迁条件之前包括 对所述软件代码进行外部表现测试,获取所述软件代码的外部表现评价值。6.根据权利要求5所述的软件可信性测试方法,其特征在于,所述根据用测试语言描述的所述对象的缺陷,在所述软件代码中对所述对象进行缺陷检测之后还包括 生成并输出缺陷测试报告,所述缺陷测试报告包括所述软件代码的内部结构评价值,所述内部结构评价值为根据对所述对象的缺陷检测结果对所述软件代码的内部结构做出的评价。7.根据权利要求6所述的软件可信性测试方法,其特征在于,还包括 根据公式D=wl*ES+w2*IS,计算所述软件代码的整体可信性; 判断所述软件代码的整体可信性是否大于预设整体可信性指标; 如果判断结果为否,返回执行对所述软件代码进行外部表现测试,获取所述软件代码的外部表现评价值的操作以及后续的操作;其中,D为所述软件代码的整体可信性; ES为所述软件...

【专利技术属性】
技术研发人员:杨学红王国环
申请(专利权)人:中国联合网络通信集团有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1