答案:关键词:软件测试;软件安全性;故障树分析;Petri网自从数字计算机产生以来,软件在运行和控制危险,以及安全关键的功能中持续地起着越来越重要的作用。近15年来,工程界不愿意放弃由人工来控制系统危险操作的情况已大为减少。如今,几乎在每个重要的技术系统中,无论是商用系统还是政府系统,都由数字计算机系统自动控制。而这些计算机的运行逻辑,也就是计算机的思维完全取决于软件的运行状态,因此,软件的安全性是这些安全关键系统种至关重要的一个环节,那么软件安全性测试自然就成为保证这一环节的重要手段。为了明确本文的研究范围,文章首先明确了系统安全性和软件安全性的一些相关概念,综合国内外文献资料,将软件从安全性的角度分类,并进一步明确本文的研究范围是软件系统测试阶段的安全性测试方法。随后,本文分别阐述了利用SFTA和Petri网进行安全分析和测试的过程,基于SFTA分析的安全性测试方法是利用了经典的SFTA分析以及最小割集分析,由系统危险出发,分析出导致危险的基本事件并由最小割集计算来缩减基本事件集,由此设计软件安全性测试用例。此后,本文提出了基于Petri网正向和逆向分析的软件安全性测试方法,在正向分析的测试方法中,本文采用了Petri网的可达图分析,建立完整的Petri网模型及其可达图,在可达图中找出相应的危险状态,然后根据可达图找出该状态与初始状态之间的路径,据此设计测试用例;在逆向分析的方法中,本文提出了利用Petri网中基于线性不变量的分析方法,主要是根据实际的Petri模型进行分析,利用其实际逻辑分析出各个库所间的互斥性,联合危险条件,建立线性方程组,然后将各个库所分类并在线性方程组的约束条件下进行组合,由此可得其可能到达的危险状态,并分析其与初始状态之间的变迁路径,这样就避免了建立整个可达图,减少了测试分析的工作量。最后,为了验证其可行性,本文将基于SFTA分析和Petri网分析的安全性测试方法都应用到实际的工程中,统计了测试用例和测试结果,并将两种方法的优劣进行了对比。