[故障,规则,技术]基于关联规则的软件多故障定位技术
AI技术在故障诊断中的创新应用方法

AI技术在故障诊断中的创新应用方法一、AI技术在故障诊断中的创新应用方法介绍故障诊断是许多行业和领域的重要环节,对于设备和系统的正常运行至关重要。
传统的故障诊断方法通常依赖于人工经验和专业知识,但这种方法存在着准确性低、效率低等问题。
随着人工智能(AI)技术的发展,越来越多的创新应用方法被引入到故障诊断中,提高了诊断准确性和效率。
本文将介绍AI技术在故障诊断中的创新应用方法,并探讨其优势和挑战。
二、智能数据分析在故障诊断中的应用1. 异常检测:利用机器学习算法对设备运行数据进行监测和分析,通过发现数据中的异常点来辨别潜在的故障。
例如,在工业生产线上,通过分析温度、压力和振动等传感器数据,可以快速检测到异常状态,并及时预警。
2. 特征提取:利用深度学习模型从大量原始数据中获取有意义且具有代表性的特征信息。
这些特征可以用于故障类型的分类和诊断,从而为故障处理提供准确和及时的指导。
例如,在机械设备维护中,通过训练卷积神经网络模型,可以提取出不同频率振动信号中与特定故障相关的频谱特征。
3. 故障诊断:基于机器学习和深度学习技术,构建故障模型,并通过比对现场数据与模型来判断具体的故障类型。
与传统方法相比,AI在诊断过程中能够自动识别复杂模式和关联规则,减少人工干预并提高诊断精度。
例如,在电力系统中,借助神经网络算法分析电流、电压以及设备状态等信息,并结合历史数据进行故障分类与定位。
三、辅助决策支持系统在故障诊断中的应用1. 数据可视化:将大量复杂的数据以直观、易理解的方式展示出来,帮助操作人员快速掌握整个系统运行状态。
这包括制作实时监控仪表盘、生成趋势图表和报警提示等功能。
通过数据可视化,操作人员能够更加直观地发现故障迹象,及时采取措施避免产生不可预知的后果。
2. 故障诊断支持:构建基于专家知识的决策支持系统,提供智能化的故障诊断和排除方案。
该系统能够根据设备、环境、历史维修记录等多个因素进行数据分析,并结合先进的AI技术为操作员提供精确且可行的解决方案。
控制系统的故障诊断与容错控制技术

控制系统的故障诊断与容错控制技术故障诊断与容错控制技术在控制系统领域有着重要的应用。
控制系统是用于监测、控制和调节工业过程的设备和系统。
然而,由于各种原因,控制系统可能会出现故障,导致系统性能下降甚至完全失效。
因此,故障诊断与容错控制技术成为确保控制系统可靠性和鲁棒性的重要手段。
一、故障诊断技术故障诊断技术是通过对系统的状态进行监测和分析,识别出系统存在的故障并确定其位置和原因的过程。
常见的故障诊断技术包括模型基于故障诊断方法、专家系统、神经网络、模糊逻辑等。
1. 模型基于故障诊断方法模型基于故障诊断方法是利用数学模型描述系统的动态行为,通过与实际测量值进行比较,检测和诊断系统故障。
该方法的优点是能够提供准确的故障诊断结果,但需要精确建立系统的动态模型。
2. 专家系统专家系统是模拟人类专家决策能力和知识的计算机系统。
基于专家系统的故障诊断方法通过将专家知识和规则嵌入系统中,实现对系统故障的自动诊断。
该方法不依赖系统的动态模型,具有较强的实用性。
3. 神经网络神经网络是一种模拟人脑神经元网络的计算模型。
基于神经网络的故障诊断方法利用网络的学习和泛化能力,通过对系统传感器数据的分析,实现对系统故障的自动诊断。
该方法适用于系统故障模式较复杂的情况。
4. 模糊逻辑模糊逻辑是一种扩展了传统逻辑的数学工具,用于描述不确定和模糊的情况。
基于模糊逻辑的故障诊断方法将模糊集合理论应用于故障诊断过程,通过对模糊规则的推理和模糊匹配,实现对系统故障的判断和诊断。
二、容错控制技术容错控制技术是指在控制系统出现故障时,通过改变系统结构或控制策略,使系统仍能维持一定的性能和稳定性。
常见的容错控制技术包括冗余设计、重构控制和适应性控制等。
1. 冗余设计冗余设计是指在系统中引入冗余元件或冗余部件,在故障发生时通过自动或人工切换,实现对故障元件或部件的容错。
冗余设计可以提高系统的可靠性和鲁棒性,但也会增加系统成本和复杂性。
2. 重构控制重构控制是指在系统出现故障时,实时地调整控制策略或参数,使系统继续满足性能要求。
基于故障树和规则推理的穿梭车故障诊断研究

基于故障树和规则推理的穿梭车故障诊断研究基于故障树和规则推理的穿梭车故障诊断研究本文从网络收集而来,上传到平台为了帮到更多的人,如果您需要使用本文档,请点击下载按钮下载本文档(有偿下载),另外祝您生活愉快,工作顺利,万事如意!0 引言穿梭车作为自动化物流系统中一种智能型轨道导引搬运设备,在自动化物流系统中的应用日益广泛。
它具有沿着固定路径动态移载的功能,可实现物料在不同站点之间的传送,使得自动化输送系统的设备布局更加紧凑、简捷。
然而,实际工程应用中穿梭车的正常运行完全依赖于各组件装置的固有可靠性,对穿梭车缺少有效的状态监测与故障诊断,时常出现故障误报、漏报等现象,而且一旦发生故障,维修人员只能凭借个人经验逐一排查找出故障原因,故障处理效率低下,严重影响了整个物流系统的工作效率。
故障诊断技术已越来越多地在自动化物流系统领域得到应用。
章採品等研究了基于故障树分析法的堆垛机故障诊断专家系统,重点阐述了专家系统知识获取与表示方式;李小平等建立了一种基于Internet、OPC以及故障树技术的堆垛机远程故障诊断及维修系统,对堆垛机信息的采集、传输、故障分析等相关技术进行了介绍;聂峰提出运用上位和下位监控系统对穿梭车在应用过程中发生的常见故障进行诊断分析,并通过监控系统和设计的作业跟踪与设备任务管理功能进行故障定位的方法,该方法实现了穿梭车故障远程诊断功能,但是对于故障原因分析仍需要人工查询确认,存在故障定位不精确、故障报警信息不明确等缺陷。
本文针对某卷烟厂出入库穿梭车时常因当前站点信息丢失或激光脱靶等故障而无法正常运行的实际问题,提出了一种组合条码识别与激光测距的冗余定位方法,以增强定位的可靠性;设计了一种基于故障树与规则的穿梭车故障诊断系统,以实现故障自诊断功能,使用Visual Studio2010和Microsoft SQL 2008开发的原型系统在该卷烟厂穿梭车的故障诊断中得到了成功应用。
1 定位技术分析定位技术作为穿梭车控制技术中的关键技术,直接关系着穿梭车的安全性和运行效率,一旦定位出现偏差、错误等故障,极易导致物料出入库不正常、物料跌落损毁等事故的发生。
基于大数据的网络异常检测与预警

基于大数据的网络异常检测与预警随着互联网的普及和发展,网络异常问题也变得越来越复杂和严重。
大数据技术的迅猛发展为网络异常检测与预警提供了新的解决方案。
本文将重点讨论基于大数据的网络异常检测与预警的原理、方法和应用。
一、概述网络异常检测与预警是指在网络运行过程中,通过收集、分析和处理大量的网络数据,及时发现和预测网络中的异常行为和问题,以保障网络的正常运行、安全性和稳定性。
传统的网络异常检测方法往往需要人工干预和固定的规则,难以适应复杂多变的网络环境。
而基于大数据的网络异常检测与预警可以自动化、实时化地识别异常,并对可能的风险提前预警,从而提高网络安全性和效率。
二、基于大数据的网络异常检测与预警原理1. 数据采集与处理:大数据的网络异常检测与预警首先要进行大规模数据的采集和处理。
这些数据包括网络流量数据、日志数据、用户行为数据等。
通过数据清洗、去除冗余和融合等技术,将海量的异构数据整合成可供分析使用的格式。
2. 特征提取与选择:在数据采集和处理之后,需要从原始数据中提取关键的特征信息。
常用的特征包括网络流量的大小、频率、时延等,也可以结合机器学习技术挖掘更复杂的特征。
特征选择则是根据重要性和相关性对提取的特征进行筛选,以减少维度和提高计算效率。
3. 异常检测与分类:在特征提取和选择之后,接下来是通过建立模型和算法对网络异常进行检测和分类。
常用的方法包括聚类分析、异常值检测、关联规则挖掘等。
这些方法可以从大数据中发现异常行为和异常模式,从而快速识别网络中潜在的异常情况。
4. 预警与响应:当检测到网络异常后,需要及时进行预警和响应。
预警可以通过短信、邮件、推送等方式向相关人员发送警报信息。
响应则包括及时处理异常问题、修复漏洞和完善网络安全机制等措施。
三、基于大数据的网络异常检测与预警方法1. 基于机器学习的方法:机器学习是大数据网络异常检测与预警中常用的方法之一。
通过训练模型,使机器能够从已有的数据中学习到异常模式和规律,并能够对新的数据进行预测和分类。
改进关联规则方法在电力设备故障预测中的应用

改进关联规则方法在电力设备故障预测中的应用班淑珍;韩俊峰【摘要】针对传统电力设备故障预测方法在对关联维特征提取时,存在故障信息冗余、误差较大的缺点,提出基于改进关联规则特征分析方法的电力设备故障预测算法.采用平均互信息方法和虚假最近邻点方法进行电力设备故障信息相空间重构,在高维相空间中,将电力设备的故障信号模拟为一个非线性时间序列波形,构建故障信号关联规则指向性特征约束函数,提取故障信号关联维特征,通过关联规则指导实现故障预测改进.仿真结果表明,该算法在进行电力设备故障预测时,能有效反应电力设备故障信号的关联内部特征信息,实现对电力设备故障类别的诊断,对提高电力设备故障类别诊断的准确率有现实意义.【期刊名称】《电网与清洁能源》【年(卷),期】2015(031)010【总页数】6页(P83-88)【关键词】电力设备;故障信号;改进关联规则【作者】班淑珍;韩俊峰【作者单位】包头轻工职业技术学院能源工程学院,内蒙古包头014035;包头职业技术学院电气工程系,内蒙古包头014035【正文语种】中文【中图分类】TM762大型电力设备结构复杂且工作环境恶劣,属于多发性故障的高技术系统工程。
目前的故障检测和预测方法无法保证大型电力设备绝对在无故障状态下运行。
随着现代电力系统和自动化技术的不断发展,保障电力设备的无故障运行成为工业与信息化技术发展的必然需求。
电力设备系统处于复杂的工作环境中,控制参数复杂且不确定,导致电力设备系统中故障频发,需要进行更有效的电力设备系统的故障预测和监测,保障电力设备网络的安全稳定运行。
电力设备系统分析发电、输电和配电3大组成系统,电力设备的自动控制系统是实现电力分配和电力调度的智能管理关键技术。
大型电力设备的故障诊断和预测技术是现代工业文明发展的产物,电力设备故障诊断的本质特点是通过使用一定的信号处理方法从而确定对故障部位的定位和发现,挖掘电力设备的故障信息特征,得出相关故障产生的性质和机理,实现对电力设备故障的准确预测和诊断。
利用告警关联分析技术实现网络故障定位

利用告警关联分析技术实现网络故障定位摘要电信网络的规模和复杂程度越来越大,每时每刻,网络上都会发生很多各种各样的故障,每个故障都会导致系统发出一个或多个告警通知网络运行维护人员,面对这些海量的告警数据,必须快速定位故障来源,本文主要研究利用告警关联分析技术实现快速故障定位,更好更快的处理解决故障,提升电信服务的品质。
关键词告警关联:关联规则:集中告警1引言电信运营公司为了降低企业的运营成本,提高服务质量,以谋求企业的竞争优势,必须有效地管理好自己的网络,使网络安全,稳定、高效地运行。
但是,随着电信网规模的不断扩大,电信设备、网络结构复杂度的不断提高以及网络带宽的迅速增长,电信网产生的告警数量也不断增多,使得对网络的实时监控和故障管理变得更加困难,面对故障处理反应迟钝,对于问题的处理往往都是采用被动响应式的管理模式,其主要特征是:一般是客户觉察到业务故障,相电信的业务部门投诉和告警(这时往往发生故障有一段时间),业务部门通知后台运行维护部门被动地采取诊断措施。
直到最后故障的解决。
其显著的特点是,由于故障发生到采取恢复措施之间的时间差,导致业务中断的时间较长,效率相对低,对于客户的SLA服务水平不够。
这就必须要有,机制和系统能够接受到海量告警后,及时进行告警关联分析,以最快的速度定位故障。
通信设备作为统一的整体,各个部分相互协作实现各项功能,设备某一部分出现问题影响到功能的实现时,设备中其他相关部分也不能很好的完成预定功能,这些相关部分就会各自发出相关告警,这些告警虽然发生在不同网无之上,发生时间也有一定的先后顺序,但实际上表述的是同一个故障源引发的故障,表达了相同或者相近的意思,因此可以合并成一条或几条,以便于维护人员从浩如烟海的告警中迅速分析出故障发生原因,快速定位故障和解决故障,这就是告警的关联分析技术。
2故障与告警2.1故障与告警的基本关系首先要说明的是故障和告警不是同一会事情,告警是一个事件的通知。
软件维护中的缺陷定位与修复方法研究

软件维护中的缺陷定位与修复方法研究随着计算机技术不断发展,软件应用也成为了现代人必不可少的工具。
然而,由于软件开发复杂度高、代码量大等原因,软件中时常会出现各种问题,如漏洞、异常、缺陷等。
对于软件开发者来说,及时定位和修复这些问题显得尤为重要。
本文将从软件维护中的缺陷定位与修复方法两个方面进行探讨。
一、缺陷定位1.1 日志跟踪法在软件应用中,日志文件可以记录软件运行过程中的各种信息,包括错误信息。
通过查阅日志文件并定位到错误信息所在位置,可以较为快速地找到代码的潜在问题。
在软件组件之间,通过消息传递机制也可以将错误信息传递回去,以便定位。
1.2 断言法断言法在软件开发中被普遍使用,它可以检查程序的前置条件、后置条件和不变量,并在运行时验证它们。
在代码出现问题后,断言会抛出异常,帮助开发者定位到出现问题的代码。
1.3 调试器法调试器是软件工程师在软件开发中常用的工具之一。
开发人员可以在程序运行时设置断点,在断点处暂停程序的执行,分析程序的执行过程,找到问题所在。
二、缺陷修复2.1 直接修改直接修改是一种最简单的修复方法。
当开发者找到错误所在时,可以直接修改错误代码来修复错误。
然而,在修改代码时需要十分谨慎,以免引起更严重的问题。
2.2 代码补丁代码补丁是为修复软件中已知错误而制定的一种方法,开发者在修复错误后可以将补丁发布给用户或其他开发者使用。
虽然代码补丁可以快速解决问题,但使用过多补丁会导致代码的混乱和不可读性,应谨慎使用。
2.3 重构如果软件中出现了多个错误,使用补丁可能行不通。
此时,需要对代码进行重构。
通过对软件进行整体性的代码重构,可以减少错误发生的概率,并增加代码的可读性、可复用性和可维护性。
三、总结随着软件开发的不断发展和应用的不断普及,出现错误也成为了不可避免的问题。
为了保证软件的质量和稳定性,开发者需要掌握优秀的缺陷定位和修复方法。
本文介绍了日志跟踪法、断言法、调试器法在缺陷定位中的应用,以及直接修改、代码补丁和重构在缺陷修复中的实践方法。
基于云计算的智能故障诊断技术研究

基于云计算的智能故障诊断技术研究智能故障诊断技术是一种基于机器学习和人工智能的新兴技术。
随着云计算的发展,越来越多的企业开始探索云计算在智能故障诊断技术中的应用。
本文将探讨基于云计算的智能故障诊断技术研究。
一、智能故障诊断技术的定义与意义智能故障诊断技术是指通过计算机系统分析设备运行数据,检测故障并给出诊断建议的一种技术。
这项技术在各种产业领域都得到了广泛的应用,比如车辆、工业设备以及电子产品等。
它的意义在于提高设备的可靠性和可维护性,降低设备修理成本和停机时间。
二、智能故障诊断技术的研究现状目前,智能故障诊断技术的研究存在以下几个问题:1. 数据质量和数据量问题数据质量和数据量是智能故障诊断技术研究中的两个重要问题。
因为智能故障诊断技术的精度和准确性取决于所使用的数据的质量和数量,而不同产业领域的设备数据质量和数量具有时变性和复杂性,这对研究带来了很大的挑战。
2. 模型选择和建模问题在智能故障诊断技术中,选择合适的模型和建模方法也是一个非常重要的问题。
通常,所使用的模型应该是可解释性强、准确性高、可扩展性强的,并且能够适应不同的产业领域和设备类型。
但是,目前还没有一个通用的模型和建模方法。
3. 算法设计和应用问题在智能故障诊断技术中,算法的设计和应用也是一个重要的问题。
不同的算法在不同的应用情况下,其性能和效果也不同。
因此,需要根据实际情况选择适宜的算法,并进行优化和改进。
三、基于云计算的智能故障诊断技术的研究随着云计算的发展,越来越多的企业开始将智能故障诊断技术移植到云计算平台上,以提高技术效率、计算速度和应用范围。
基于云计算的智能故障诊断技术主要包括以下几个方面:1. 云端数据预处理在基于云计算的智能故障诊断技术中,云端数据预处理是一个非常重要的环节。
数据预处理的目的在于去除噪声和冗余信息,提高数据准确性和提高模型的可读性。
常用的数据预处理方法包括标准化、归一化和填充缺失值等。
2. 分布式计算和任务调度在基于云计算的智能故障诊断技术中,由于数据量较大并且需要进行大量的计算和处理,因此需要使用分布式计算和任务调度技术来提高计算效率和实时性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于关联规则的软件多故障定位技术摘要:为了提高软件故障的定位效率,提出一种基于关联规则的软件多故障定位技术。
通过使用聚类方法把失败的测试用例分成针对特定错误的聚类,使用基于交叉表的软件故障定位方法发现软件中的故障,在定位过程中使用关联规则挖掘高可疑代码与软件故障的关系,提高故障定位的效率,最后对Siemens用例集和Tarantula方法进行对比。
实验表明基于关联规则的软件多故障定位技术在软件多故障定位方面效率优于Tarantula方法。
关键词:关联规则;多故障定位;提高定位效率;聚类方法0 引言Jones和Harrold提出了一种并行调试技术[7],通过对可能导致同一个故障的测试用例进行分类,然后结合成功执行的测试用例构造用以测试每个故障的测试用例子集,来同时定位不同的软件故障。
但现有的基于覆盖率的错误定位(Coverage Based Fault Localization,CBFL)方法只是统计代码语句或代码基本块的覆盖率,并没有考虑程序执行的数据依赖和控制依赖,因此会出现定位不准确的情况。
结合以上两点,本文将在并行的基础上使用关联规则挖掘软件故障。
1 相关工作许多该领域的学者提出了不同的软件故障定位技术。
这些技术大多通过收集语句或者谓词等程序实体的覆盖信息,然后对收集到的信息利用相应的怀疑度公式计算每条语句的怀疑度,据此找出软件中的故障。
本文也使用这种方式,同时,结合关联规则的思想来提高软件的多故障定位效率。
1.1 基于交叉表的故障定位技术W.Eric提出了一种基于交叉表的技术进行软件故障定位的方法[4,8]。
该方法的主要思路是:针对每个测试用例的每一条语句构造一个交叉表,通过该交叉表收集语句的覆盖信息和执行结果。
然后,利用每条语句的统计信息计算该语句的怀疑度(Suspiciousness)。
通过这种方式,所有的语句都可以根据计算出的怀疑度来降序排名。
语句的怀疑度越高,该语句越会被优先检查,可以通过排名依次检查语句,直至发现软件的故障。
该技术通过引用一个名为Chi?square test的假设测试来检查测试用例执行结果和语句覆盖信息之间的依赖关系。
Chi?square 的数据通过交叉表中的数据计算而来,同时与Chi?square中的关键值进行对比,决定这个假设(即执行结果独立于与语句的覆盖信息)被接受还是被抛弃,然后,通过计算语句的怀疑度数值[ζ]进行故障定位。
[ζ]的数值越大表示语句的怀疑度越高,怀疑度越高则会被优先检查。
基于交叉表的软件故障定位技术通过计算语句的怀疑度来预测语句包含故障的可能性。
其实验结果表明基于交叉表的软件故障定位技术相比于绝大多数的软件故障定位技术,如Tarantula、Liblit05、SOBER等方法,效果更好。
通常状况下,一个软件出现失效状况下,软件中会包含多个故障,同时软件调试的人员也会不止一个,因此可以通过并行的方式实现软件故障的定位工作,相比于one?bug?at?a?time的方式,并行故障定位会更加高效,通过构造并行工作流,不同的工作人员可以专注于不同的软件故障。
要实现并行的软件故障定位,最重要的问题是如何对任务进行划分和分派,这就需要一种可以把错误的测试用例集从新分配成多个小的与特定故障相关的错误测试用例子集的技术。
Jones和Harrold提出了一种并行调试的技术[7]用以实现解决这个问题。
这种技术会自动把失败的测试用例集分割为针对不同软件故障的测试用例子集。
通过使用测试用例动态运行获取执行结果的行为模型和信息,该技术可以生成一个针对不同错误的失败测试用例子集。
通过把失败测试用例子集和成功的测试用例结合,就得到了一个专注于特定单错误的测试用例集。
这些单错误测试用例集的个数就是对程序中故障个数的预测。
2 关联规则在软件故障定位中的应用在基于覆盖的软件故障定位技术中,现有技术通过收集测试用例执行的覆盖信息计算语句可疑度,进而定位软件故障。
在现有的技术中,往往没有考虑语句间的数据依赖和控制依赖关系,不同语句的覆盖统计是相互独立的,这导致定位的不准确,CBFL方法经常能定位到程序失效时的执行代码,而这些失效时的执行代码多数情况下并不是错误代码[9],文献[9]表明,基于覆盖的软件故障定位计算可疑度得出的高可疑度语句主要分一下几种情况:(1)该语句基本块本身就是故障语句,并且该基本块出现在错误测试用例的概率高于出现在成功测试用例的概率。
(2)该语句基本块本身不是故障语句,但是该基本块的执行会导致故障语句的执行,进而发生故障。
这表明高可疑语句块或者是故障或者会导致故障,因此考虑通过关联规则挖掘高可疑代码与软件故障的关系,提高故障定位的效率。
测试用例的执行路径能够反映出故障代码与高可疑代码之间的关联,即高可疑代码的执行导致故障语句的执行,进而出现故障。
故障语句与高可疑语句表现出了在执行路径上覆盖信息的一致性,然而执行轨迹的路径表示十分复杂和耗时[10],因此采用相对轻量级的覆盖向量来近似表示路径的覆盖信息。
2.1 路径覆盖向量的表示定义1:中间不存在控制跳转的连续代码语句构成一个代码基本块,简称为基本块。
定义3:一个函数在测试用例集下的执行轨迹符号化表示为[EXEM(fi)={B,T,PATH}]。
其中:[B]表示函数[fi]的基本块集合;[T]表示测试用例集的所有测试用例集合,[PATH={path0,path1,…,pathm}]表示针对每个测试用例的覆盖向量集合。
根据程序执行的结果可以将执行轨迹分为成功执行和失败执行,即[EXEMp]和[EXEMf]。
2.2 求解频繁集求解频繁集的算法如下:算法中:[bk]代表目标代码;[fg(bk)]表示与[bk]保持频繁一致性的分量集,即求解出的以[bk]为目标的频繁集。
算法过程为:遍历[bk]不等于0的分量进行与操作,即得到所有的[bk]的频繁集。
通过计算每一条语句块的可疑度,按照可疑度降序检查发现错误,若语句块中不存在错误则检查语句块的频繁集(依据可疑度排序)查找错误,这种方式可提高定位效率。
3 基于交叉表的软件多故障定位技术下面对基于交叉表的软件多故障定位技术进行具体介绍。
图1的程序中包含两个错误,分别是语句行6和语句行9,使用在测试用例集中10组参数组合分别为T1~T10。
图中“√”代表了每条测试用例的语句覆盖信息;在最后一行给出了每个测试用例的执行结果:P代表成功,F代表失败。
图4所示交叉表是一个表示测试用例执行情况和测试用例是否被覆盖的二维表。
表中各个变量的含义分别是:[w]代表程序中的一条语句;[NCS(w)]代表覆盖[w]的成功的测试用例数;[NUS(w)]代表没有覆盖[w]的成功测试用例数;[NS]代表成功的测试用例数;[NCF(w)]代表覆盖了语句[w]的失败测试用例数;[NUF(w)]代表没有覆盖语句[w]的失败测试用例数;[NF]代表失败的测试用例数;[NC(w)]代表覆盖了的测试[w]用例总数;[NU(w)]代表没有覆盖[w]的测试用例数;[N]代表总的测试用例数。
使用图4提供的模板和文献[4]中提供的公式计算每条语句的怀疑度。
针对图2和图3两个测试用例集分别计算怀疑度,给出怀疑度列表降序排名如表1所示。
式中:[Xi]为第i条语句在失败测试用例[X]中的覆盖情况,[Xi]为1代表覆盖,0代表未覆盖;[X]表示失败测试用例[Xi]的覆盖比例;相应的[Y]的含义和[X]相同。
利用图1中的例子可以将失败的测试用例集分类。
给定一个相关性系数的值,比如0.8,当两个失败测试用例的关联系数小于0.8时说明它们关联性不大,即它们针对不同的错误。
计算[r78]=1,这表明T7和T8关联性非常大,针对相同的错误,对T9和T10计算结果也是1,说明它们应该分为一组。
通过循环计算每两个测试用例之间的相关系数,直到类别内任意两个测试用例的相关系数大于0.8时,就说明分类完成。
本文给出的上述方法虽然能够对针对不同错误的测试用例进行分类,但需要对每两个错误测试用例进行计算,所以这个过程相当耗时,开销也是很大。
4 实验及结果分析下面使用本文给出的基于关联规则的软件多故障定位技术和Tarantula方法进行对比来验证本文方法的定位效果。
在此使用Siemens程序集来进行试验的对比工作。
程序集中tacas 程序包含的故障版本数最多,同时可执行的语句数最少,这意味着tacas程序有可能包含多故障,因此选用该程序验证本文的方法。
对文献[4]中的EXAM度量进行扩展,将针对每个故障的[EXAM]相加,形成[EXAMtotal]作为度量的标准。
基于关联规则的软件多故障定位方法与Tarantula方法的对比如图5所示。
5 结语本文提出了基于关联规则的软件多故障定位方法,并且与Tarantula方法进行了对比,结果表明本文的方法效率较高。
不过本文提出的方法也存在一些不足,并没有考虑把测试用例划分为针对不同故障的测试用例的效率,同时也没有考虑失败测试用例分类的效果进行验证。
在Siemens测试集上通过实验验证了基于关联规则的软件多故障定位的效率,结果证明本文的方法能有效地发现软件的故障。
参考文献[2] JONES J A. HARROLD M J. Empirical evaluation of the Tarantula automatic fault?localization technique [C]// Proceedings of the 20th IEEE/ACM international Conference on Automated Software Engineering. Long Beach, CA, USA: IEEE, 2005:273?282.[3] LIU C,FEI L,YAN X,et al. Statistical debugging: A hypothesis testing?based approach [J]. IEEE Transactions on Software Engineering, 2006, 32(10): 831?848.[5] LIBLIT B, NAIK M, ZHENG A X. Scalable statistical bug isolation [C]// Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation. 2005: 15?16.[7] JONES J A, BOWRING J F, HARROLD M J. Debugging in Parallel [D]. London,UK: Georgia Institute of Technology, 2007.[8] WONG E,WEI T,QI Y,et al. Crosstab?based statistical method for effective fault localization [C]// Proceedings of the 2008 International Conference on Software Testing,Verification,and Validation. Lillehammer,Norway, 2008: 42?51.[10] BALL T, LARUS J R. Efficient path profiling [C]// Proceedings of the International Symposium on Microarchitecture. Paris,France:[s.n.],1996:46?57.。