CN116627804A - 基于人工智能的测试方法、系统、电子设备及存储介质 - Google Patents
基于人工智能的测试方法、系统、电子设备及存储介质 Download PDFInfo
- Publication number
- CN116627804A CN116627804A CN202310491048.6A CN202310491048A CN116627804A CN 116627804 A CN116627804 A CN 116627804A CN 202310491048 A CN202310491048 A CN 202310491048A CN 116627804 A CN116627804 A CN 116627804A
- Authority
- CN
- China
- Prior art keywords
- test
- artificial intelligence
- code
- tested
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013473 artificial intelligence Methods 0.000 title claims abstract description 77
- 238000010998 test method Methods 0.000 title claims abstract description 26
- 238000003860 storage Methods 0.000 title claims description 14
- 238000012360 testing method Methods 0.000 claims abstract description 329
- 238000004458 analytical method Methods 0.000 claims abstract description 46
- 238000000034 method Methods 0.000 claims description 39
- 230000007547 defect Effects 0.000 claims description 28
- 230000008569 process Effects 0.000 claims description 23
- 238000004422 calculation algorithm Methods 0.000 claims description 22
- 238000012549 training Methods 0.000 claims description 14
- 238000007621 cluster analysis Methods 0.000 claims description 6
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000003909 pattern recognition Methods 0.000 claims description 5
- 238000013079 data visualisation Methods 0.000 claims description 4
- 238000007781 pre-processing Methods 0.000 claims description 4
- 230000006870 function Effects 0.000 description 15
- 238000004590 computer program Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 11
- 238000013522 software testing Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 230000004075 alteration Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 238000012905 input function Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于人工智能的测试方法,方法包括:获取待测源码和测试数据;基于预设人工智能模型对待测源码进行分析,生成待测源码对应的测试用例;基于测试用例和测试数据对待测源码进行测试;基于测试结果对待测源码进行问题分析,并生成测试报告。本发明通过基于预设人工智能模型对待测源码进行分析,生成测试用例并进行测试,得到测试结果,从而实现了软件的自动化测试,降低了人工在自动化测试中的参与度,提升了自动化测试效率和测试的客观性以及准确性,同时本发明还通过基于测试结果对源码进行问题分析,从而实现了测试报告的自动生成,从而进一步降低了测试人员的工作量,进而降低了测试周期以及测试成本,提高了软件的质量。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种基于人工智能的测试方法、系统、电子设备及存储介质。
背景技术
软件测试(Software Testing),描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出之间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
随着计算机技术的高速发展,程序迭代的速度也越来越快,软件测试作为软件质量保证的重要手段之一,也在不断地提高和升级。传统的白盒测试往往需要测试人员编写和执行测试代码,测试效率和质量受到限制。因此,如何进一步提高软件测试的效率和质量是亟待解决的问题。
发明内容
本发明针对现有技术中存在的技术问题,提供一种基于人工智能的测试方法、系统、电子设备及存储介质,用以解决如何进一步提高软件测试的效率和质量的问题。
根据本发明的第一方面,提供了一种基于人工智能的测试方法,包括:
获取待测源码和测试数据;
基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例;
基于所述测试用例和所述测试数据对所述待测源码进行测试;
基于测试结果对所述待测源码进行问题分析,并生成测试报告。
在上述技术方案的基础上,本发明还可以作出如下改进。
优选的,所述基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例的步骤,包括:
对所述待测源码进行格式预处理,得到处理后的初始数据;
将所述初始数据输入至预设人工智能模型中识别,得到所述待测源码对应的代码缺陷和缺陷密度,所述代码缺陷包括格式错误、空值和/或数据类型不匹配;
基于所述代码缺陷和所述缺陷密度生成测试用例。
优选的,所述将所述初始数据输入至预设人工智能模型中识别的步骤之前,包括:
基于预设人工智能算法构建待训练模型,将获取到的代码样本数据输入至所述待训练模型中训练,得到预设人工智能模型。
优选的,所述预设人工智能算法的类型包括基于规则、基于分类、基于聚类的不同人工智能算法。
优选的,所述将获取到的代码样本数据输入至所述待训练模型中训练,得到预设人工智能模型的步骤,包括:
获取代码样本数据,所述代码样本数据包括代码仓库、历史BUG数据和测试数据;
对所述代码样本数据进行语言元素特征提取和程序结构特征提取;
基于提取得到的特征数据集对所述待训练模型进行训练,得到预设人工智能模型。
优选的,所述基于所述测试用例和所述测试数据对所述待测源码进行测试的步骤,包括:
基于所述测试用例和所述测试数据对所述待测源码进行测试,记录测试过程信息,所述测试过程信息包括测试用例是否通过、错误和/或异常信息、测试执行时间和物理资源占用信息;
基于所述测试过程信息与预设期望结果,生成测试结果。
优选的,所述问题分析的类型包括:数据可视化、聚类分析、模式识别和归因分析。
根据本发明的第二方面,提供一种基于人工智能的测试系统,包括:
数据获取模块,用于获取待测源码和测试数据;
代码分析模块,用于基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例;
代码测试模块,用于基于所述测试用例和所述测试数据对所述待测源码进行测试;
问题分析模块,用于基于测试结果对所述待测源码进行问题分析,并生成测试报告。
根据本发明的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现上述第一方面中任一基于人工智能的测试方法的步骤。
根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现上述第一方面中任一基于人工智能的测试方法的步骤。
本发明提供的一种基于人工智能的测试方法、系统、电子设备及存储介质,方法包括:获取待测源码和测试数据;基于预设人工智能模型对上述待测源码进行分析,生成上述待测源码对应的测试用例;基于上述测试用例和上述测试数据对上述待测源码进行测试;基于测试结果对上述待测源码进行问题分析,并生成测试报告。本发明通过基于预设人工智能模型对待测源码进行分析,生成测试用例,再基于测试用例与测试数据进行测试,得到测试结果,从而实现了软件的自动化测试,降低了人工在自动化测试中的参与度,提升了自动化测试效率和测试的客观性以及准确性,同时本发明还通过基于测试结果对源码进行问题分析,从而实现了测试报告的自动生成,从而进一步降低了测试人员的工作量,进而降低了测试周期以及测试成本,提高了软件的质量。
附图说明
图1为本发明提供的一种基于人工智能的测试方法流程图;
图2为本发明提供的一种基于人工智能的测试系统结构示意图;
图3为本发明提供的一种可能的电子设备的硬件结构示意图;
图4为本发明提供的一种可能的计算机可读存储介质的硬件结构示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
传统的白盒测试需要测试人员手动编写测试代码,测试代码的编写和执行过程需要耗费大量的时间和人力资源。此外,测试覆盖率也往往无法满足测试质量的需求。
而本发明则通过使用人工智能进行白盒测试,可以借助机器学习、深度学习等技术,通过智能算法自动生成测试代码,并根据测试结果不断优化测试代码,提高测试效率和测试覆盖率。因此,使用人工智能进行白盒测试可以解决传统白盒测试的时间和资源成本高的问题,同时可以提高测试质量和测试效率,从而减少测试周期和测试人员的工作量。
图1为本发明提供的一种基于人工智能的测试方法流程图,如图1所示,方法包括:
步骤S100:获取待测源码和测试数据;
需要说明的是,本实施例方法的执行主体可以是具有数据处理、网络通信及程序运行功能的计算机终端设备,例如:电脑、平板电脑等;也可以是具有相同相似功能的服务器设备,还可以是具有相似功能的云服务器,本实施例对此不做限制。为了便于理解,本实施例及下述各实施例将以服务器设备为例进行说明。
可以理解的是,上述待测源码可以是指需要进行测试的程序代码,上述测试数据可以是测试人员提前准备的,也可以是从现有应用程序或生成器收集的,还可以是基于历史测试数据进行提取得到的,本实施例对此不作限制。
应理解的是,上述源码通常包括开发语言原文件和配置文件等。
还可以理解的是,上述测试数据通常包括正常和异常情况下的典型输入,以及测试覆盖率分析所需要的大量输入数据,其来源可以是从现有的测试集中获取测试数据,也可以是从实际运行的应用程序中获取对应的测试数据。
在具体实现中,可以通过将上述代码和数据导入至自动化测试工具中,从而在测试工具中建立源代码和目标测试代码之间建立映射关系。
步骤S200:基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例;
可以理解的是,上述人工智能模型可以是用来执行代码分析,通过对代码进行静态代码分析,能够帮助测试人员发现代码问题,同时可以根据分析结果生成对应的测试用例。
进一步的,上述对待测源码进行分析的阶段,预设人工智能模型还可以通过自学习和自动化执行,从而找出所有可能的代码缺陷和潜在的测试用例,从而提高测试的效率。为了进一步贴合用户业务满足业务需求,还可以与具体的测试目标、业务场景进行结合,从而选择对应的人工智能算法构建上述预设人工智能模型,来实现代码分析的自动化。
进一步的,上述生成测试用例的步骤包括:
步骤S200':基于预设人工智能算法构建待训练模型,将获取到的代码样本数据输入至所述待训练模型中训练,得到预设人工智能模型。
可以理解的是,上述预设人工智能算法一般有基于规则、基于分类、基于聚类等不同的机器学习算法可以用于静态代码分析,测试人员可以根据需求选择适应的机器学习算法来分析待测源码,以尽可能准确的发现代码缺陷。
进一步的,上述预设人工智能模型的训练的步骤包括:
步骤S001:获取代码样本数据,所述代码样本数据包括代码仓库、历史BUG数据和测试数据;
在具体实现中,需要收集大量的代码样本数据,包括代码仓库、历史BUG数据以及测试数据等,这些数据作为模型训练的基础,从而对模型进行训练。
步骤S002:对所述代码样本数据进行语言元素特征提取和程序结构特征提取;
在具体实现中,对收集到的代码样本数据还需要进行特征工程,包括代码中的语言元素和程序结构等特征提取。在这一过程汇总,需要通过代码分析技术提取样本特征,并将其输入至人工智能模型中进行训练。
步骤S003:基于提取得到的特征数据集对所述待训练模型进行训练,得到预设人工智能模型。
在具体实现中,利用特征工程处理过的数据集,对待训练模型进行训练,其过程中需要对人工智能算法进行调整、参数优化以及对大数据处理效能上调优,从而最后得到最优的人工智能模型,在模型训练期间,测试人员还可以使用真实的测试案例对模型进行模拟,从而对模型的性能进行跟踪。
步骤S201:对所述待测源码进行格式预处理,得到处理后的初始数据;
在具体实现中,需要将源码转换为模型可以处理的数据格式,可以是将代码转换为类似于标准向量的数值形式,具体的,还可以为每个输入函数提供对应的元数据,如函数参数的名称、类型、返回值和执行路径。
步骤S202:将所述初始数据输入至预设人工智能模型中识别,得到所述待测源码对应的代码缺陷和缺陷密度,所述代码缺陷包括格式错误、空值和/或数据类型不匹配;
在具体实现中,在人工智能模型完成训练以及待测源码预处理后,将初始数据输入至上述预设人工智能模型中对上述待测源码进行分析,以识别代码缺陷,上述缺陷的分类通常为格式错误、空值、数据类型不匹配等多种类型,上述代码缺陷还可以同时发送至开发人员以使开发人员对其进行修复。进一步的还需要在测试过程中对缺陷密度进行统计。
步骤S203:基于所述代码缺陷和所述缺陷密度生成测试用例。
可以理解的是,上述测试用例可以是输出的自动化测试程序需要使用的测试用例脚本,其通过训练好的人工智能模型,产生测试用例数据,这些测试用例数据不仅能够检测代码的正确性和功能性,还能够测试系统的性能。
进一步的,上述测试用例还可以用自动化测试工具自动化执行和覆盖测试用例。通过测试的反馈,进一步优化上述人工智能模型,提高整个测试用例生成的覆盖率。并在有针对性的进行修改和训练后,产出的测试用例的质量和效率会更加出色。
在具体实现中,上述预设人工智能模型可以根据上述代码缺陷和缺陷密度生成测试用例,其具体方法包括:遍历所有可能的代码分支和路线;采用遗传算法等搜索算法来寻找最佳的测试用例;调用自动生成测试用例的工具;基于测试用例历史数据的测试用例生成新的测试用例。
进一步的,人工智能模型生成测试用例的过程中需要利用代码分析技术,提取出代码体征,然后采用机器学习算法进行训练,最终通过训练好的模型生产测试用例,这样能够有效提高测试的覆盖率、测试效率,并进一步提高软件的质量和稳定性。
步骤S300:基于所述测试用例和所述测试数据对所述待测源码进行测试;
可以理解的是,上述对待测源码进行测试可以是自动执行的,还可以是测试人员手动执行的,在自动执行过程中可以减少重复性的测试过程,从而提高测试效率;而手动测试的过程可以让测试人员更加深入了解待测软件的行为和交互方式。
进一步的,上述测试的步骤包括:
步骤S301:基于所述测试用例和所述测试数据对所述待测源码进行测试,记录测试过程信息,所述测试过程信息包括测试用例是否通过、错误和/或异常信息、测试执行时间和物理资源占用信息;
可以理解的是,在上述测试用例执行的过程中,系统会自动记录测试结果,其中包括测试用例是否通过、测试出的错误或者异常情况、测试执行的市场和测试过程中系统资源的占用情况。从而帮忙测试人员进一步了解软件质量的情况,让测试人员及时作出调整和改进。
进一步的,测试人员还可以根据测试结果对测试过程选择进行充实测试,例如:向测试用例中额外添加备选测试场景,或者删除一些不必要的测试用例。充实测试可以提高测试的质量和覆盖面,从而进一步提高待测源码的质量和稳定性。
步骤S302:基于所述测试过程信息与预设期望结果,生成测试结果。
可以理解的是,上述预设期望结果可以是根据本次测试任务规划制定的,其期望指标包括但不限于测试耗时、内存最高占用率、出现BUG数量等。
在具体实现中,测试完成后,需要将测试结果与预期期望结果进行比较,如果测试结果与预期结果有差异,则可以生成测试预警信息发送至测试人员,以使其对测试结果进行详细的分析,找出问题的原因并解决问题,如果测试结果与预期结果一致,则可以认为软件的质量较高,可以发布上线。
进一步的,执行测试的过程可以帮助测试人员深入了解软件的质量和表现,确定软件是否满足特定的要求和需求。通过执行测试和及时记录和对比测试结果,可以使测试人员有效地减少和解决错误,并不断提高软件的质量和可重用性。
步骤S400:基于测试结果对所述待测源码进行问题分析,并生成测试报告。
可以理解的是,上述问题分析可以基于测试结果对待测试源码进行数据可视化分析、聚类分析、模式识别和归因分析。
进一步的,上述数据可视化分析,可以是基于各种预置的可视化图表工具,将测试数据转换成易于理解和分析的可视化图表,例如使用散点图、柱状图或热力图汇总测试结果,从而能够让测试人员更加直观的了解测试结果和软件性能状态。
进一步的,上述聚类分析,可以是将测试结果进行聚类分析,从而分析测试用例与测试结果之间的联系,进而找出可能存在的问题,例如:在某个测试用例总是失败时,则可将相关测试用例归类并进一步分析失败原因。
进一步的,上述模式识别,可以是找出测试用例和测试结果之间的某种模式,例如:如果多个测试用例均出现了相同的问题,则可以将其归类成同一模式想问题,以使测试人员在拿到测试报告后,对其分析原因并解决问题。
进一步的,上述归因分析,可以是使用归因分析技术从测试结果中识别出可能存在的问题,并确定它们的根本原因,例如,如果测试结果表示软件性能低下,则统计出测试耗时较高的代码模块。
进一步的,问题分析是软件测试过程中一个非常重要的步骤。通过数据可视化、聚类分析、模式识别和归因分析等方法,可以帮助测试人员更好地了解测试用例的质量和软件的性能,发现并解决问题,最终提高软件的质量和可重用性。
可以理解的是,基于背景技术中的缺陷,本发明实施例提出了一种基于人工智能的测试方法。方法包括:获取待测源码和测试数据;基于预设人工智能模型对上述待测源码进行分析,生成上述待测源码对应的测试用例;基于上述测试用例和上述测试数据对上述待测源码进行测试;基于测试结果对上述待测源码进行问题分析,并生成测试报告。本发明通过基于预设人工智能模型对待测源码进行分析,生成测试用例,再基于测试用例与测试数据进行测试,得到测试结果,从而实现了软件的自动化测试,降低了人工在自动化测试中的参与度,提升了自动化测试效率和测试的客观性以及准确性,同时本发明还通过基于测试结果对源码进行问题分析,从而实现了测试报告的自动生成,从而进一步降低了测试人员的工作量,进而降低了测试周期以及测试成本,提高了软件的质量。
在一种可能的应用场景中,还包括具体以检测内存泄露的白盒测试,对于内存泄漏问题的白盒测试,人工智能可以通过分析代码的语法和语义,检测内存分配和释放的情况并寻找潜在的内存泄漏问题。
下面具体步骤:
步骤S1:分析代码:首先,预设人工智能模型将分析代码的语法和语义,以便识别跟内存分配和释放有关的代码行。这可能包括分析代码中的变量、指针、内存分配、释放函数、循环结构等等。
步骤S2:检测内存分配:预设人工智能模型会寻找在代码中分配内存的地方,这可能发生在malloc、calloc等函数中。此时,预设人工智能模型会记录下这些内存相关的变量和它们所在的代码行。
步骤S3:追踪内存释放:预设人工智能模型会追踪代码中的内存释放点,并比较释放点和内存分配点之间的关系,以判定是否存在内存泄漏。如果没有释放,就会标记内存为“泄漏”;如果释放太晚或者释放语句没有被执行,那么就会标记内存为“垃圾”。
步骤S4:评估变量生命周期:除了追踪内存分配和释放之外,预设人工智能模型还会评估变量的生命周期,从而确定如果变量在其生命周期结束时没有释放内存,就可能导致内存泄漏。
步骤S5:标记并报告:预设人工智能模型会标记未释放的内存以及导致问题的代码行,并生成报告,供测试人员参考。
本实施例中,内存泄漏的检测可以通过分析代码中分配和释放内存的函数来完成,这些函数将在编译时链接到操作系统或库中。基于这些函数,白盒测试和模型可以检测出内存分配和释放的情况,并在应用程序中追踪内存使用情况,最终发现内存泄漏问题。例如,通过对malloc和free函数进行静态分析,算法可以识别局部变量和动态分配的内存块的特征,同时检查释放内存时是否存在错误或潜在的数据问题。
在一种可能的应用场景中,还包括具体以空指针引用问题的白盒测试,预设人工智能模型可以通过分析代码的语法和语义,检测代码中的空指针引用情况并寻找潜在的空指针引用问题
步骤S11:分析代码:预设人工智能模型将分析代码的语法和语义,以便识别代码中使用的变量和指针。这可能包括分析代码中的变量声明和指针分配操作,以及调用各种函数和操作符。
步骤S12:寻找空指针引用:预设人工智能模型会寻找使用指针的地方,并检查它们是否有潜在的空指针问题。例如,如果指针被分配但未被初始化,或者被释放但未被置空,就可能导致空指针引用错误。此时,算法会在代码中找到这些地方,并记录下关于变量和函数调用的信息。
步骤S13:判断条件分支:预设人工智能模型还会寻找代码中的条件分支,并检查是否存在使用空指针的情况。例如,如果程序的控制流根据指针的值执行某些操作时,就必须检查指针是否为空,否则会导致空指针引用异常。因此,预设人工智能模型需要确定每个分支是否正确检查了指针是否为空,并在需要时标记潜在的问题。
步骤S14:标记并报告:预设人工智能模型会标记使用空指针的情况以及导致问题的代码行,并生成报告,供测试人员参考。
在本实施例中,空指针引用的检测可以通过分析代码中的指针操作和测试语句来完成。如果算法发现指针没有被初始化或已被释放,或者在测试语句中没有检查指针是否为空值,那么算法就可以标记该代码行有可能存在空指针引用问题。此外,为了防止空指针引用问题,算法还可以使用一些技巧,例如在分配后立即初始化指针以及在释放后将其置为NULL值。
进一步的,使用人工智能模型进行白盒测试可以显著提高软件测试的效率和质量。人工智能模型可以自动分析代码缺陷,并生成更全面的测试用例,以帮助测试人员提高测试覆盖率和发现更多的缺陷。同时,使用人工智能进行白盒测试还能减少测试成本和时间,以及改善测试的可重现性,提高测试流程的自动化程度。
与以往的技术相比,基于人工智能的测试方法带来的有益效果包括:
1.提高测试效率:传统白盒测试需要手动编写测试代码,而使用人工智能进行白盒测试可以实现自动生成和优化测试代码,从而提高测试效率,节省时间和工作量。
2.提高测试覆盖率:使用人工智能进行白盒测试可以生成更多的测试用例,并通过智能算法来优化测试用例,从而提高测试覆盖率,发现更多的缺陷。
3.提高测试质量和可靠性:使用人工智能进行白盒测试可以消除测试人员的主观因素,从而保证测试的客观性和准确性。此外,自动生成的测试用例也能够更好地覆盖各种测试场景,从而提高测试质量和可靠性。
4.降低测试成本:使用人工智能进行白盒测试可以减少测试人员的工作量和测试周期,从而降低测试成本。同时,它可以改善软件开发的生命周期,提高软件质量和可重用性。
综上所述,与以往的技术相比,基于人工智能进行白盒测试具有更高的测试效率、更高的测试覆盖率、更高的测试质量和可靠性,以及更低的测试成本和更好的软件开发生命周期等优点。
请参阅图2,图2为本发明实施例提供的一种基于人工智能的测试系统结构图示意图,如图2所示,一种基于人工智能的测试系统,包括数据获取模块100、代码分析模块200、代码测试模块300和问题分析模块400,其中:
数据获取模块100,用于获取待测源码和测试数据;代码分析模块200,用于基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例;代码测试模块300,用于基于所述测试用例和所述测试数据对所述待测源码进行测试;问题分析模块400,用于基于测试结果对所述待测源码进行问题分析,并生成测试报告。
可以理解的是,本发明提供的一种基于人工智能的测试。系统与前述各实施例提供的基于人工智能的测试方法相对应,基于人工智能的测试系统的相关技术特征可参考基于人工智能的测试方法的相关技术特征,在此不再赘述。
请参阅图3,图3为本发明实施例提供的电子设备的实施例示意图。如图3所示,本发明实施例提供了一种电子设备,包括存储器1310、处理器1320及存储在存储器1310上并可在处理器1320上运行的计算机程序1311,处理器1320执行计算机程序1311时实现以下步骤:
获取待测源码和测试数据;基于预设人工智能模型对上述待测源码进行分析,生成上述待测源码对应的测试用例;基于上述测试用例和上述测试数据对上述待测源码进行测试;基于测试结果对上述待测源码进行问题分析,并生成测试报告。
请参阅图4,图4为本发明提供的一种计算机可读存储介质的实施例示意图。如图4所示,本实施例提供了一种计算机可读存储介质1400,其上存储有计算机程序1411,该计算机程序1411被处理器执行时实现如下步骤:
获取待测源码和测试数据;基于预设人工智能模型对上述待测源码进行分析,生成上述待测源码对应的测试用例;基于上述测试用例和上述测试数据对上述待测源码进行测试;基于测试结果对上述待测源码进行问题分析,并生成测试报告。
本发明实施例提供的一种基于人工智能的测试方法、系统及存储介质,方法包括:获取待测源码和测试数据;基于预设人工智能模型对上述待测源码进行分析,生成上述待测源码对应的测试用例;基于上述测试用例和上述测试数据对上述待测源码进行测试;基于测试结果对上述待测源码进行问题分析,并生成测试报告。本发明通过基于预设人工智能模型对待测源码进行分析,生成测试用例,再基于测试用例与测试数据进行测试,得到测试结果,从而实现了软件的自动化测试,降低了人工在自动化测试中的参与度,提升了自动化测试效率和测试的客观性以及准确性,同时本发明还通过基于测试结果对源码进行问题分析,从而实现了测试报告的自动生成,从而进一步降低了测试人员的工作量,进而降低了测试周期以及测试成本,提高了软件的质量。
需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。
Claims (10)
1.一种基于人工智能的测试方法,其特征在于,所述方法包括:
获取待测源码和测试数据;
基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例;
基于所述测试用例和所述测试数据对所述待测源码进行测试;
基于测试结果对所述待测源码进行问题分析,并生成测试报告。
2.根据权利要求1所述的基于人工智能的测试方法,其特征在于,所述基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例的步骤,包括:
对所述待测源码进行格式预处理,得到处理后的初始数据;
将所述初始数据输入至预设人工智能模型中识别,得到所述待测源码对应的代码缺陷和缺陷密度,所述代码缺陷包括格式错误、空值和/或数据类型不匹配;
基于所述代码缺陷和所述缺陷密度生成测试用例。
3.根据权利要求2所述的基于人工智能的测试方法,其特征在于,所述将所述初始数据输入至预设人工智能模型中识别的步骤之前,包括:
基于预设人工智能算法构建待训练模型,将获取到的代码样本数据输入至所述待训练模型中训练,得到预设人工智能模型。
4.根据权利要求3所述的基于人工智能的测试方法,其特征在于,所述预设人工智能算法的类型包括基于规则、基于分类、基于聚类的不同人工智能算法。
5.根据权利要求3所述的基于人工智能的测试方法,其特征在于,所述将获取到的代码样本数据输入至所述待训练模型中训练,得到预设人工智能模型的步骤,包括:
获取代码样本数据,所述代码样本数据包括代码仓库、历史BUG数据和测试数据;
对所述代码样本数据进行语言元素特征提取和程序结构特征提取;
基于提取得到的特征数据集对所述待训练模型进行训练,得到预设人工智能模型。
6.根据权利要求1所述的基于人工智能的测试方法,其特征在于,所述基于所述测试用例和所述测试数据对所述待测源码进行测试的步骤,包括:
基于所述测试用例和所述测试数据对所述待测源码进行测试,记录测试过程信息,所述测试过程信息包括测试用例是否通过、错误和/或异常信息、测试执行时间和物理资源占用信息;
基于所述测试过程信息与预设期望结果,生成测试结果。
7.根据权利要求1所述的基于人工智能的测试方法,其特征在于,所述问题分析的类型包括:数据可视化、聚类分析、模式识别和归因分析。
8.一种基于人工智能的测试系统,其特征在于,包括:
数据获取模块,用于获取待测源码和测试数据;
代码分析模块,用于基于预设人工智能模型对所述待测源码进行分析,生成所述待测源码对应的测试用例;
代码测试模块,用于基于所述测试用例和所述测试数据对所述待测源码进行测试;
问题分析模块,用于基于测试结果对所述待测源码进行问题分析,并生成测试报告。
9.一种电子设备,其特征在于,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现如权利要求1-7任一项所述的基于人工智能的测试方法的步骤。
10.一种计算机可读存储介质,其特征在于,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现如权利要求1-7任一项所述的基于人工智能的测试方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310491048.6A CN116627804A (zh) | 2023-04-29 | 2023-04-29 | 基于人工智能的测试方法、系统、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310491048.6A CN116627804A (zh) | 2023-04-29 | 2023-04-29 | 基于人工智能的测试方法、系统、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116627804A true CN116627804A (zh) | 2023-08-22 |
Family
ID=87616226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310491048.6A Pending CN116627804A (zh) | 2023-04-29 | 2023-04-29 | 基于人工智能的测试方法、系统、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116627804A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667676A (zh) * | 2023-11-21 | 2024-03-08 | 上海金仕达卫宁软件科技有限公司 | 基于aigc的区块链智能合约ide验证测试方法和系统 |
-
2023
- 2023-04-29 CN CN202310491048.6A patent/CN116627804A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117667676A (zh) * | 2023-11-21 | 2024-03-08 | 上海金仕达卫宁软件科技有限公司 | 基于aigc的区块链智能合约ide验证测试方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108932192B (zh) | 一种基于抽象语法树的Python程序类型缺陷检测方法 | |
CN109144882B (zh) | 一种基于程序不变量的软件故障定位方法及装置 | |
US8312440B2 (en) | Method, computer program product, and hardware product for providing program individuality analysis for source code programs | |
CN108804326B (zh) | 一种软件代码自动检测方法 | |
Chen et al. | Understanding metric-based detectable smells in Python software: A comparative study | |
CN114510722B (zh) | 增量代码的静态检测方法及检测系统 | |
CN112199293A (zh) | 软件质量评价方法、装置、终端设备及存储介质 | |
CN116627804A (zh) | 基于人工智能的测试方法、系统、电子设备及存储介质 | |
CN116383833A (zh) | 软件程序代码的测试方法及其装置、电子设备、存储介质 | |
CN115952081A (zh) | 一种软件测试方法、装置、存储介质及设备 | |
CN116578980A (zh) | 基于神经网络的代码分析方法及其装置、电子设备 | |
CN114490413A (zh) | 测试数据的准备方法及装置、存储介质和电子设备 | |
CN117573492A (zh) | 一种数据库迁移场景下的应用性能检测方法及装置 | |
CN112817863A (zh) | 一种基于ai深度学习的ai辅助自动化测试方法及系统 | |
CN108763092B (zh) | 一种基于交叉验证的代码缺陷检测方法及装置 | |
CN113791980B (zh) | 测试用例的转化分析方法、装置、设备及存储介质 | |
CN113220594B (zh) | 自动化测试方法、装置、设备及存储介质 | |
CN115827353A (zh) | 故障诊断方法及装置 | |
CN113032254B (zh) | 测试覆盖情况的评估方法和装置 | |
CN113282504A (zh) | 一种增量代码覆盖率检测方法及业务开发方法、装置 | |
KR102217092B1 (ko) | 애플리케이션의 품질 정보 제공 방법 및 장치 | |
CN114331165A (zh) | 一种城市安全绩效评估报告自动生成与分析方法及系统 | |
CN118170685B (zh) | 一种自适应操作系统环境的自动化测试平台及方法 | |
US20240241810A1 (en) | System and method to measure and verify data and control coupling between software components without code instrumentation | |
Park et al. | Validating Requirement Satisfaction through Software Tracking Matrix Model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |