CN117290856B - 基于软件自动化测试技术的智能测试管理系统 - Google Patents

基于软件自动化测试技术的智能测试管理系统 Download PDF

Info

Publication number
CN117290856B
CN117290856B CN202311512220.8A CN202311512220A CN117290856B CN 117290856 B CN117290856 B CN 117290856B CN 202311512220 A CN202311512220 A CN 202311512220A CN 117290856 B CN117290856 B CN 117290856B
Authority
CN
China
Prior art keywords
test
code
training
model
dynamic
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.)
Active
Application number
CN202311512220.8A
Other languages
English (en)
Other versions
CN117290856A (zh
Inventor
孙伟
何慕蓉
凌光明
廖勇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangzhou Red Sea Cloud Computing Ltd
Original Assignee
Guangzhou Red Sea Cloud Computing Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Guangzhou Red Sea Cloud Computing Ltd filed Critical Guangzhou Red Sea Cloud Computing Ltd
Priority to CN202311512220.8A priority Critical patent/CN117290856B/zh
Publication of CN117290856A publication Critical patent/CN117290856A/zh
Application granted granted Critical
Publication of CN117290856B publication Critical patent/CN117290856B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/22Matching criteria, e.g. proximity measures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Medical Informatics (AREA)
  • Quality & Reliability (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种基于软件自动化测试技术的智能测试管理系统,该系统预处理模块通过自适应转换模型将测试代码重新构建为测试状态向量;模型训练模块采用动态梯度探索模型为测试状态向量进行随机行动选择并构建为训练测试代码,根据从真实测试环境中得到的训练测试结果更新动态梯度探索模型的期望回报;模糊测试模块将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构得到模拟测试代码,通过环境模拟器对模拟测试代码执行模拟测试得到模拟测试结果;漏洞定位模块对模拟测试结果进行漏洞分析。该方法通过动态梯度探索模型和自适应转换模型的结合使系统基于真实测试环境逐步优化模糊测试效果,增加测试覆盖范围,提高漏洞发现的准确性。

Description

基于软件自动化测试技术的智能测试管理系统
技术领域
本申请属于数据处理领域,尤其涉及一种基于软件自动化测试技术的智能测试管理系统。
背景技术
目前,各个领域都衍生出各自的应用软件,服务于工作生活的方方面面。为保证数据私密性和安全性的需求,软件安全检测的重要性不言而喻。
模糊测试(Fuzz Testing)是一种自动化软件测试技术,旨在发现应用软件中存在的漏洞和错误。模糊测试通过构造随机或半随机的输入来模拟潜在的恶意攻击者,尝试更全面地覆盖应用程序的输入域,以发现潜在的缺陷和漏洞。
然而,相关技术中,模糊测试不能覆盖所有的测试情况,可能会产生许多无效的测试用例,还可能导致应用程序崩溃或不正常行为。因此,测试人员需要根据实际情况选择合适的模糊测试技术和工具,并对其进行手动的配置和监控,以确保有效和正确地使用模糊测试来测试他们的软件应用程序,测试效率较低。而且,这种方式对测试人员的经验以及个人能力要求较高,容易出现因人员经验不足或者疲惫疏忽导致的测试结果存在疏漏。
因此,亟待设计一种全新的软件自动化测试方案,用于解决上述技术问题。
发明内容
本申请提供了一种基于软件自动化测试技术的智能测试管理系统,以提升基于软件自动化测试技术的智能测试管理资源的渲染效率,改善用户交互体验。
第一方面,本申请提供了一种基于软件自动化测试技术的智能测试管理系统,所述系统包括:
预处理模块,用于通过自适应转换模型将测试代码重新构建为测试状态向量;所述测试状态向量至少包括:测试代码结构、测试代码内容、静态分析结果、测试覆盖率;
模型训练模块,用于采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到随机行动;随机行动与动态梯度探索模型中预先缓存的行动选择策略的期望回报相关联;将随机行动构建为训练测试代码;将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;根据训练测试结果更新动态梯度探索模型的期望回报,以使训练后的动态梯度探索模型具备适用于当前测试场景的最优行动选择策略;
模糊测试模块,用于将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码;通过环境模拟器对模拟测试代码执行模拟测试,以得到模拟测试结果;模拟测试结果包括执行结果以及对应的奖励值、测试覆盖率;执行结果包括输出信息、执行错误信息、程序状态信息;
漏洞定位模块,用于对模拟测试结果进行漏洞分析,以获得测试代码中潜在的漏洞信息;
智能管理模块,用于记录漏洞信息,并触发与漏洞信息匹配的漏洞修复策略。
第二方面,本申请实施例提供了一种基于软件自动化测试技术的智能测试管理方法,该方法包括:
通过自适应转换模型将测试代码重新构建为测试状态向量;所述测试状态向量至少包括:测试代码结构、测试代码内容、静态分析结果、测试覆盖率;
采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到随机行动;随机行动与动态梯度探索模型中预先缓存的行动选择策略的期望回报相关联;
将随机行动构建为训练测试代码;
将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;根据训练测试结果更新动态梯度探索模型的期望回报,以使训练后的动态梯度探索模型具备适用于当前测试场景的最优行动选择策略;
将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码;
通过环境模拟器对模拟测试代码执行模拟测试,以得到模拟测试结果;模拟测试结果包括执行结果以及对应的奖励值、测试覆盖率;执行结果包括输出信息、执行错误信息、程序状态信息;
对模拟测试结果进行漏洞分析,以获得测试代码中潜在的漏洞信息;
记录漏洞信息,并触发与漏洞信息匹配的漏洞修复策略。
第三方面,本申请提供了一种电子设备,包括存储器、处理器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面任一项所述的基于软件自动化测试技术的智能测试管理系统。
第四方面,一种具有处理器可执行的非易失的程序代码的计算机可读介质,所述程序代码使所述处理器执行第一方面任一所述的基于软件自动化测试技术的智能测试管理系统。
本申请实施例提供的技术方案中,预处理模块,用于通过自适应转换模型将测试代码重新构建为测试状态向量;测试状态向量至少包括:测试代码结构、测试代码内容、静态分析结果、测试覆盖率。模型训练模块,用于采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到随机行动;随机行动与动态梯度探索模型中预先缓存的行动选择策略的期望回报相关联;将随机行动构建为训练测试代码;将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;根据训练测试结果更新动态梯度探索模型的期望回报,以使训练后的动态梯度探索模型具备适用于当前测试场景的最优行动选择策略。模糊测试模块,用于将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码;通过环境模拟器对模拟测试代码执行模拟测试,以得到模拟测试结果;模拟测试结果包括执行结果以及对应的奖励值、测试覆盖率;执行结果包括输出信息、执行错误信息、程序状态信息。漏洞定位模块,用于对模拟测试结果进行漏洞分析,以获得测试代码中潜在的漏洞信息。智能管理模块,用于记录漏洞信息,并触发与漏洞信息匹配的漏洞修复策略。本申请实施例中,通过动态梯度探索模型和自适应转换模型的结合使系统基于真实测试环境逐步优化模糊测试效果,增加测试覆盖范围,提高漏洞发现的准确性
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例的一种基于软件自动化测试技术的智能测试管理系统的示意图;
图2是本申请实施例的一种电子设备的结构示意图。
实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请。
目前,各个领域都衍生出各自的应用软件,服务于工作生活的方方面面。为保证数据私密性和安全性的需求,软件安全检测的重要性不言而喻。
模糊测试(Fuzz Testing)是一种自动化软件测试技术,旨在发现应用软件中存在的漏洞和错误。模糊测试通过构造随机或半随机的输入来模拟潜在的恶意攻击者,尝试更全面地覆盖应用程序的输入域,以发现潜在的缺陷和漏洞。
相关技术中,在模糊测试中,测试人员可以指定一组输入数据,然后使用工具自动化地生成大量的变异和变异组合输入。这可以通过随机或半随机改变程序输入的格式、内容、长度和其他特性来实现。生成的大量输入数据可以大大增加被测程序的代码覆盖率,从而提高检测潜在问题的可能性。模糊测试通常用于测试与用户输入相关的应用程序,比如网络协议、解释器、浏览器、操作系统等。它可以帮助测试人员发现和修复各种类型的漏洞和安全问题,比如缓冲区溢出、格式化字符串错误、空指针和内存泄漏等。
然而,相关技术中,模糊测试不能覆盖所有的测试情况,可能会产生许多无效的测试用例,还可能导致应用程序崩溃或不正常行为。因此,测试人员需要根据实际情况选择合适的模糊测试技术和工具,并对其进行手动的配置和监控,以确保有效和正确地使用模糊测试来测试他们的软件应用程序,测试效率较低。而且,这种方式对测试人员的经验以及个人能力要求较高,容易出现因人员经验不足或者疲惫疏忽导致的测试结果存在疏漏。
因此,亟待设计一种全新的软件自动化测试方案,用于解决上述技术问题。
本申请实施例提供的基于软件自动化测试技术的智能测试管理方案,可以由一电子设备来执行,该电子设备可以是服务器、服务器集群、云服务器。该电子设备也可以是诸如手机、计算机、平板电脑、可穿戴设备(如智能手表等)等终端设备。在一可选实施例中,该电子设备上可以安装有用于执行基于软件自动化测试技术的智能测试管理方案的服务程序。
图1为本申请实施例提供的一种基于软件自动化测试技术的智能测试管理系统的示意图。如图1所示,该智能测试管理系统包括:
预处理模块11,用于通过自适应转换模型将测试代码重新构建为测试状态向量;测试状态向量至少包括:测试代码结构、测试代码内容、静态分析结果、测试覆盖率;
模型训练模块12,用于采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到随机行动;随机行动与动态梯度探索模型中预先缓存的行动选择策略的期望回报相关联;将随机行动构建为训练测试代码;将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;根据训练测试结果更新动态梯度探索模型的期望回报,以使训练后的动态梯度探索模型具备适用于当前测试场景的最优行动选择策略;
模糊测试模块13,用于将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码;通过环境模拟器对模拟测试代码执行模拟测试,以得到模拟测试结果;模拟测试结果包括执行结果以及对应的奖励值、测试覆盖率;执行结果包括输出信息、执行错误信息、程序状态信息;
漏洞定位模块14,用于对模拟测试结果进行漏洞分析,以获得测试代码中潜在的漏洞信息;
智能管理模块15,用于记录漏洞信息,并触发与漏洞信息匹配的漏洞修复策略。
下面结合具体示例分别介绍各个模块的功能原理。
作为一个可选实施例,自适应转换模型至少设置有:预处理单元、代码编辑器、后处理单元。预处理模块11,通过自适应转换模型将测试代码重新构建为测试状态向量时,具体用于:
首先,通过预处理单元将测试代码中的语句代码拆分成标记化代码。该标记化代码中各个标签分别用于标记不同代码片段和/或代码结构。进而,通过代码编码器将标记化代码中的代码片段重新构建为对应的测试状态向量,以保证各个测试状态向量的长度一致。
进一步可选地,首先,通过预处理单元将测试代码中的语句代码拆分成标记化代码。该标记化代码中各个标签分别用于标记不同代码片段和/或代码结构。标记化代码预处理使得模型更好地理解代码中的语义和结构,提高模型的推理能力和准确率。接着,使用代码编辑器,将标记化代码中的代码片段重新构建为对应的测试状态向量,以保证各个测试状态向量的长度一致。例如,在CodeBERT模型中,使用Transformer编码器将代码片段转换为定长的向量表示形式。这个过程涉及到编码器的设计和训练,以最大限度地提升模型的语义表示能力和泛化能力。最后,通过后处理单元,将测试状态向量与测试任务相关联,并输入到动态梯度探索模型中进行训练或推理。例如,当模型需要生成补全代码时,会将测试状态向量与代码补全任务相关联,通过生成器网络生成符合上下文的代码。在CodeBERT模型中,使用了基于匹配注意力机制的解码器网络来生成代码。通过训练和优化模型,可以获得一个高性能和高可靠性的自适应转换模型,以支持多个代码测试任务。
举例来说,假设使用CodeBERT模型来构建自适应转换模型,那么,在CodeBERT模型中,将一段Python代码转换为测试状态向量。首先,使用预处理单元将代码拆分为标记化代码,比如使用词法分析器将代码转换为标记序列。其次,使用代码编辑器,将标记序列转换为定长的向量表示。在CodeBERT中,就是通过使用Transformer编码器将序列转换为向量表示。最后,使用后处理单元,将向量与代码补全任务相关联,并输入到CodeBERT模型中,进行补全代码的生成。模型会生成符合上下文的代码,以补全用户的输入。在这个过程中,预处理单元、代码编辑器和后处理单元都起到了重要的作用,使得整个自适应转换模型能够更加准确地理解和操作代码。
本申请中涉及的CodeBERT模型的数学表达式可以如下表示:
假设一个输入代码序列X={x1,x2,……,xn},其中xi表示输入代码序列(即前文介绍的标记化代码)中的第i个标记,CodeBERT模型的任务是以输入代码序列作为条件概率分布P(Y∣X)的条件下,生成一个目标代码序列Y={y1,y2,……,ym},其中yi是目标代码序列(即前文介绍的测试状态向量)中的第i个标记。
为了实现此目标,CodeBERT模型采用了Transformer编码器-解码器结构,其中编码器将输入代码序列X转换为一组隐藏表示向量H={h1,h2,……,hn},而解码器则以此向量为条件,生成目标代码序列Y。具体地,编码器使用多层自注意力机制,将输入代码序列X映射为一组隐藏表示向量H=enc(X)。解码器则通过逐步生成目标代码序列中的每个标记,以最大化条件概率分布P(Y∣X)。解码器在生成第i个目标代码标记yi时,需要使用之前生成的标记y1:i−1和上下文向量表示ci,其中上下文向量表示ci是由编码器隐藏向量H和解码器隐藏向量di−1生成的。因此,解码器的生成过程可以表示为:
P(yi∣y1:i−1,X)=softmax(Linear(di))
其中,Linear是一个线性层,将隐状态向量和上下文向量映射到一个输出向量,softmax函数生成一个概率分布,描述了每个标记在当前上下文下的可能性大小。解码器的隐状态向量di是通过在注意力机制上容易地计算出上下文向量ci和前一个目标标记yi−1的向量表示之间的组合获得的,即:
di=dec(yi−1,ci,di−1)
其中,decdec是一个解码器函数,它将前一个目标标记、上下文向量和前一个隐状态向量作为输入,生成新的隐状态向量di。通过不断重复执行解码器函数和注意力机制,CodeBERT模型可逐步生成目标代码序列中的所有标记。
通过预处理模块11中,转换和重新构建测试代码为测试状态向量的方法,可以带来以下有益效果:
第一,统一表示形式:通过将测试代码转化为测试状态向量,可以实现对测试代码的统一表示形式。无论测试代码的结构和复杂度如何,最终都可以将其表示为固定长度的向量。这使得测试代码的处理和分析更加简化和统一。
第二,效率和速度提升:将测试代码转化为测试状态向量后,可以通过代码编码器对这些向量进行处理和分析。由于测试状态向量的长度是一致的,可以更高效地进行向量化计算和操作。这可以加快测试代码的处理速度,提升测试整体的效率。
第三,特征提取和模式识别:将标记化代码中的代码片段重新构建为对应的测试状态向量,可以提取出其中的关键特征和模式。通过对测试状态向量进行特征提取和模式识别,可以更准确地分析和评估测试代码的性能和行为。这有助于发现潜在的问题和优化测试策略。
第四,可解释性和可视化:将测试代码转化为测试状态向量后,这些向量可以更容易地被可解释和可视化。通过将测试状态向量可视化,测试人员和开发人员可以更直观地理解和分析测试代码的结构和性质。这有助于更好地理解测试代码的行为和结果,进一步优化测试流程和策略。
举例来说,假设有一个测试代码,其中包含多个语句和循环结构。通过预处理单元,将这个测试代码拆分成标记化代码。例如,将if语句标记为"IF",循环结构标记为"FOR"等等。然后,通过代码编码器将这些标记化代码重新构建为对应的测试状态向量,每个标记都对应一个特定的数值。这样,可以将原始的测试代码转化为一系列长度一致的测试状态向量,以供后续处理和分析使用。
综上所述,通过将测试代码拆分为标记化代码,并使用代码编码器将其重新构建为测试状态向量,可以实现统一表示形式、提升效率和速度、特征提取和模式识别,以及增强可解释性和可视化能力。这些有益效果有助于改进测试代码的处理和分析,提高测试的准确性和效率。
其中,进一步可选地,自适应转换模型还包括后处理单元。具体而言,预处理模块11还用于:通过后处理单元将各个测试状态向量与动态梯度探索模型中不同类型代码测试任务相关联。其中,不同类型代码测试任务至少包括:代码补全、代码注释生成、代码变量命名、代码相似性比较。进而,在动态梯度探索模型对应的测试任务层中,对各个测试状态向量进行监督学习,以增强动态梯度探索模型的语义理解能力以及代码重构能力。
通过预处理模块11中设置的后处理单元,一方面,可以代码补全:通过将测试状态向量与代码补全任务相关联,可以训练动态梯度探索模型生成与给定代码上下文相匹配的代码片段。例如,在给定部分代码的情况下,模型可以根据测试状态向量预测代码的后续完整片段。通过监督学习和训练,模型可以学习到代码补全的语义和模式,并生成符合预期的代码,提高开发效率和准确性。另一方面,可以代码注释生成:将测试状态向量与代码注释生成任务相关联,可以训练动态梯度探索模型生成与给定代码相对应的注释文本。例如,在给定代码片段的情况下,模型可以根据测试状态向量生成相应的注释,解释代码的功能和用途。通过监督学习和训练,模型可以提高代码注释的质量和一致性,并提升软件文档的可读性和理解性。再一方面,可以代码变量命名:将测试状态向量与代码变量命名任务相关联,可以训练动态梯度探索模型为给定的代码片段生成描述性和规范的变量名称。例如,在给定代码的情况下,模型可以根据测试状态向量生成相应的变量名称,以更好地表达代码的含义和用途。通过监督学习和训练,模型可以提高代码的可读性、可维护性和可理解性。还有一方面,可以代码相似性比较:将测试状态向量与代码相似性比较任务相关联,可以训练动态梯度探索模型判断两个代码片段之间的相似性。例如,模型可以通过测试状态向量评估两个代码之间的结构、功能和语义上的相似性。通过监督学习和训练,模型可以提高代码相似性比较的准确性和鲁棒性,从而在代码审查、重构和重用等方面提供辅助。
可以理解的是,将测试状态向量与动态梯度探索模型中的不同类型代码测试任务相关联,并在测试任务层进行监督学习,可以增强模型的语义理解能力和代码重构能力。这些有益效果有助于提高代码生成、代码注释、代码变量命名和代码相似性比较等方面的质量和准确性,从而提升软件开发的效率和可靠性。
模型训练模块12,用于采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到随机行动;随机行动与动态梯度探索模型中预先缓存的行动选择策略的期望回报相关联;将随机行动构建为训练测试代码;将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;根据训练测试结果更新动态梯度探索模型的期望回报,以使训练后的动态梯度探索模型具备适用于当前测试场景的最优行动选择策略。
示例性地,假设S为状态空间,表示所有可能的状态集合;假设A为行动空间,表示所有可能的行动集合;假设R(s,a)为回报函数,表示在状态s 下采取行动a 所获得的即时回报。假设Q(s,a)为行动值函数,表示在状态 s 下采取行动 a 的长期回报期望值。
动态梯度探索模型的目标是寻找最优的行动选择策略π,使得在每个状态 s∈S下采取行动a∈A 的长期回报最大化。具体地,假设最大化行动值函数Q*(s,a)表示为:
Q*(s,a)=πmaxQ(s,a)
为了实现这一目标,动态梯度探索模型通过与真实测试环境进行交互来进行学习和优化。它采用了基于动态梯度的策略优化方法,其中使用随机行动选择来探索状态空间,并与预先缓存的行动选择策略的期望回报进行比较。
具体地,采用随机行动选择的过程可以表示为:
at =πrandom(st)
其中,at表示在时间步t 选择的随机行动,πrandom(st)表示基于随机策略 πrandom 对状态st进行行动选择。
通过执行随机行动并观察回报,得到训练测试结果。根据这些结果,可以更新动态梯度探索模型的行动价值估计 Q(s,a),以获得更准确和更适应当前测试场景的行动选择策略。具体地,可以使用以下公式进行更新:
Q(s,a)=Q(s,a)+α×(R(s,a)+γ×maxQ(s′,a′)−Q(s,a))
其中,a是学习率参数,γ是折扣因子,s′是采取行动a 之后转移到的下一个状态。通过不断交互、学习和优化,动态梯度探索模型能够逐渐更新和改进行动选择策略π,以达到在当前测试场景下最优化长期回报的目标。
这样,通过模型训练模块12,能够采用动态梯度探索模型为测试状态向量进行随机行动选择,并根据预先缓存的行动选择策略的期望回报进行训练。通过不断更新期望回报,使得动态梯度探索模型逐渐学习到适用于当前测试场景的最优行动选择策略。
举例来说,假设正在测试一个网络浏览器的质量和性能。在初始阶段,准备几个已知的行动选择策略,比如模拟点击链接、输入文本、滚动页面等。对于每个策略,计算其期望回报,比如成功加载页面、响应时间短等。在模型训练阶段,使用动态梯度探索模型作为策略选择器,在每个测试状态下选择一个行动。例如,当浏览器处于加载网页的状态时,模型可能选择随机点击某个链接。将这个随机行动转化为训练测试代码,即模拟用户在真实浏览器中的操作。执行训练测试代码后,会得到一系列训练测试结果,例如页面加载成功与否、加载时间等。根据这些结果,可以计算出每个随机行动的实际回报,比如成功率、平均加载时间等。根据这些实际回报,可以更新动态梯度探索模型中对应行动的期望回报,以使其更符合当前测试场景中最优的行动选择策略。通过不断重复训练和更新的过程,动态梯度探索模型逐渐学习到适用于当前浏览器测试的最佳行动选择策略,提高测试效率和质量。
作为一个可选实施例,模型训练模块12采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到随机行动时,还用于:
根据动态概率权重采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到第一随机行动以及第二随机行动;
其中,预先缓存的行动策略包括最优行动选择策略、以及未知行动选择策略;动态概率权重用于指示最优行动选择策略与未知行动选择策略之间的比例;第一随机行动为基于最优行动选择策略进行随机选择得到的;第二随机行动为基于未知行动选择策略进行随机选择得到的。
通过模型训练模块12,一方面,采用动态梯度探索模型可以在一定程度上提高探索性,从而自动寻找目前测试场景中未知的、难以到达的测试用例。其中,通过动态概率权重来动态地调整最优行动选择策略和未知行动选择策略的比例,可以根据不同的测试场景实现最高利用率,并进一步提高探索能力。另一方面,可以增加多样性。即,采用动态梯度探索模型可以增加行动的多样性,从而避免陷入局部最优解。其中,第一随机行动和第二随机行动的设计可以保证随机性和多样性,从而帮助找到更多潜在的漏洞。再一方面,还可以提供更多控制方式。即,通过动态权重概率的设置可以进一步提供更多控制方式,例如,可以根据测试进度、风险级别、代码质量等一个或多个因素来动态地调整最优行动选择策略与未知行动选择策略的比例,从而实现更精细的行动选择测试策略的调度。总之,通过上述功能可以有效提高模型训练模块12的性能和效果,提高测试覆盖率,从而更好地发现并修复漏洞。
进一步可选地,模型训练模块12,将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果之前,还用于基于第一随机行动以及第二随机行动构建出训练测试代码。而模型训练模块12将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果之后,还用于基于训练测试结果动态调整动态梯度探索模型中的动态概率权重,以使动态梯度探索模型学习到适用于当前测试场景的未知行动选择策略。
可见,通过模型训练模块12,一方面,可以提高测试覆盖率:通过基于第一随机行动和第二随机行动构建训练测试代码,并将其应用到真实测试环境中,可以扩展测试用例的多样性,增加测试覆盖范围。这有助于发现更多的潜在漏洞和问题。另一方面,可以动态调整探索策略:通过根据训练测试结果动态调整动态梯度探索模型中的动态概率权重,可以根据当前的测试场景和测试结果,自适应地调整未知行动选择策略的比例。这样可以提高测试的效率和性能,进一步优化探索过程,发现更多的潜在漏洞,并减少测试无法到达的路径。再一方面,可以适应性学习:动态调整动态概率权重可以帮助动态梯度探索模型逐步学习适应当前测试场景的最优行动选择策略。通过根据训练测试结果的动态调整,模型可以不断适应不同的测试条件和环境,提高测试的准确性和针对性。综上所述,基于第一随机行动和第二随机行动构建训练测试代码,并将训练测试结果用于动态调整动态梯度探索模型的动态概率权重,可以提高测试覆盖率、适应性学习和动态调整探索策略,进而改进整个模型训练模块的效果和性能。
进一步可选地,假设初始训练阶段中,已知最优行动选择策略的第一动态概率权重低于未知行动选择策略的第二动态概率权重。模型训练模块12,基于训练测试结果动态调整动态梯度探索模型中的动态概率权重时,具体用于:
首先,获取训练测试结果中未知行动选择策略对应的训练期望值。
这里,训练期望值可以通过统计测试结果中的某一个或几个目标指标(比如漏洞发现率、错误率、测试覆盖率等)来反映动态梯度探索模型中未知行动选择策略的效果。
进而,基于训练期望值、训练迭代次数、以及测试代码类型对应的调整曲线,确定动态梯度探索模型中第二动态概率权重的动态调整因子。
此处,测试代码类型对应的调整曲线,可以根据实际测试需求进行设定,通常需要根据试验结果不断微调,直到达到最佳的测试效果。以下是一个示例,用于说明如何设定和微调调整曲线:
假设有三种不同的测试代码类型:类型A、类型B和类型C。针对每种类型,已知行动选择策略的数量分别为Na、Nb和Nc。
其一,初始设定调整曲线的斜率:如果已知行动选择策略的数量较少,即Na、Nb、Nc都比较小,可以设定较大的斜率以加速动态概率权重的调整。如果已知行动选择策略的数量较多,即Na、Nb、Nc都比较大,可以设定较小的斜率以稳定动态概率权重的调整。
其二,进行试验并观察测试结果:对于每个代码类型,进行多次测试,并记录相关指标,例如发现的漏洞数量、覆盖范围等。根据试验结果,评估每种代码类型的测试效果,可以通过比较指标的提升程度来判断不同代码类型的优劣。
其三,根据试验结果微调调整曲线:如果发现某种代码类型的测试效果较好,即指标提升幅度较大,可以考虑减小对应的动态调整因子,使得该代码类型的动态概率权重调整较慢。如果发现某种代码类型的测试效果较差,即指标提升幅度较小,可以考虑增加对应的动态调整因子,使得该代码类型的动态概率权重调整较快。
基于上述三个步骤,通过多次试验和微调,可以逐渐调整调整曲线的斜率和动态调整因子,以使其更符合实际测试需求,最终达到最佳的测试效果。
最终,以第二动态概率权重与动态调整因子的乘积,作为调整后的第二动态概率权重。从而,将动态概率权重根据其表现效果进行调整,以实现更好的探索和测试结果。
其中,动态调整因子小于1,表示需要降低第二动态概率权重的权重以达到更好的测试效果。训练期望值越高,动态调整因子越低,意味着测试效果变好后调整幅度减小。训练迭代次数越多,动态调整因子越低,意味着测试效果变好后调整幅度减小。测试代码类型对应的已知行动选择策略数量越多,调整曲线的斜率越小,动态调整因子在单位时间内的变化率越小,即意味着测试效果变好后调整幅度减小。
当然,动态概率权重的调整方式也可以根据实际情况进行其他设定,以实现更好的探索和测试效果。
另一个可选实施例,模型训练模块12,还用于获取训练测试结果中未知行动选择策略对应的期望回报。进而,将期望回报符合设定条件的未知行动选择策略添加至经验策略缓存库中,并基于预设触发条件从经验库中选取最优行动选择策略。
在模型训练模块12中,除了将训练测试结果用于更新已知行动选择策略的期望回报外,还可以利用这些结果获取未知行动选择策略对应的期望回报。下面是一个举例说明:
假设正在测试一个自动驾驶汽车的软件,使用模型训练模块12来改进测试策略。
初始阶段:在模型训练之前,有一些已知的行动选择策略,例如加速、刹车、转向等,并为它们计算了期望回报。此外,还有一些未知的行动选择策略,例如在特定条件下采取的新策略。
模型训练阶段:在测试中,采用动态梯度探索模型为测试状态向量进行随机行动选择,并与预先缓存的行动选择策略的期望回报相关联。构建训练测试代码,用于模拟自动驾驶汽车在不同场景下的行动选择操作,并将其应用于真实测试环境中。
获取未知行动选择策略的期望回报:当执行训练测试代码后,可能会观察到一些新的行动选择策略,这些策略在之前的经验库中没有记录。对于这些未知的行动选择策略,可以将它们与训练测试结果中的回报值相关联。通过对这些行动选择策略的回报进行统计分析,可以计算这些期望回报。
更新经验策略缓存库:对于符合一定设定条件的未知行动选择策略,可以将其添加到经验策略缓存库中。设定条件可以是回报值达到一定阈值、成功率超过某个比例等。将这些表现良好的未知行动选择策略添加到经验策略缓存库中有助于积累更多的测试经验和策略。
基于触发条件选择最优行动选择策略:经验策略缓存库中存储了已知的和经过筛选的未知行动选择策略。当触发特定条件时,例如特定测试场景、错误发生等,可以从经验策略缓存库中选择最优的行动选择策略。选择最优策略可以基于先前记录的期望回报、成功率或其他指标。通过获取训练测试结果中的未知行动选择策略的期望回报,并将其添加到经验策略缓存库中,可以不断积累更多的测试经验和策略。然后,根据预设的触发条件,从经验策略缓存库中选择最优的行动选择策略,以提高自动驾驶汽车软件测试的效率和准确性。
通过模型训练模块12,一方面,能够丰富经验库:通过获取训练测试结果中的未知行动选择策略的期望回报,并将其添加至经验策略缓存库中,可以逐步积累更多的测试经验。这样一来,经验库中存储的行动选择策略更加多样化和全面,更好地覆盖了各种测试场景和情况。另一方面,可以充分利用有效策略:训练测试结果中的未知行动选择策略可能表现出较高的期望回报,这意味着它们具有潜在的有效性和优势。将这些表现良好的未知行动选择策略添加至经验策略缓存库中,可以更充分地利用这些策略,以提高测试的效率和准确性。再一方面,可以优化行动选择策略:通过不断更新经验策略缓存库中的行动选择策略,可以逐步优化和改进测试策略。经验策略缓存库中存储的优质策略可以作为参考,帮助在类似的测试场景中快速选择最优的行动选择策略,从而减少偶发错误和减弱测试中的人为干预。还有一个方面,可以自适应测试策略:基于预设触发条件从经验策略缓存库中选取最优行动选择策略,可以使测试策略在不同的测试环境和情景中自适应地选择最佳策略。根据触发条件的不同,可以动态地选择适合当前情况的行动选择策略,提高测试的准确性、效率和覆盖率。当然,还可以迭代优化测试策略:利用模型训练模块12获取训练测试结果中未知行动选择策略的期望回报,并与经验策略缓存库中的策略进行比较和评估,可以进行迭代优化。通过持续地更新、筛选和改进经验库中的行动选择策略,提高测试结果的稳定性和可靠性,从而增加对软件质量和性能的全面评估。综上所述,通过获取训练测试结果中未知行动选择策略的期望回报,并将其添加至经验策略缓存库中,可以丰富经验库、优化测试策略、自适应测试环境,并进行迭代优化,从而提高测试效果和测试的全面性。
作为一个可选实施例,模型训练模块12,还用于采用变异模型调整训练测试代码,以将调整后的训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果。其中,变异模型用于增加训练测试代码中与代码语法和/或语义匹配的行动变化范围,以扩充训练测试代码中的代码语法和/或语义。
其中,进一步可选地,模型训练模块12采用变异模型调整训练测试代码时,具体用于:更改训练测试代码中字符串函数的字符串类型和长度;和/或,更改训练测试代码中测试数据的进入顺序;和/或,对训练测试代码中代码模块执行添加、删除和/或替换操作;和/或,在训练测试代码中添加循环语句和/或条件语句,以改变训练测试代码的控制结构;和/或,改变训练测试代码中调用参数值或者选择不同参数组合来调用训练测试代码中的函数或方法。
下面结合示例说明变异模型的有益效果:
第一,引入变异模型可以增强代码覆盖率:通过变异模型扩充训练测试代码中的代码语法和/或语义变化范围,可以生成更多不同的代码变体。这些变体可以覆盖更广泛的代码执行路径,从而提高测试的代码覆盖率。例如,在测试自动驾驶系统时,通过变异模型可以生成不同的驾驶行为序列,覆盖系统在不同道路、交通情况和路况下的各种情况。
第二,引入变异模型可以检测隐藏缺陷:训练测试代码中的代码语法和/或语义变化范围越广,检测到的潜在缺陷可能性就越大。通过使用变异模型调整训练测试代码,可以更全面地评估软件的鲁棒性和稳定性,并检测到一些隐藏的缺陷或异常行为。这有助于提前发现和解决潜在的软件问题,提高软件的质量和可靠性。
第三,引入变异模型可以验证系统的灵活性:通过应用变异模型生成的不同代码变体进行测试,可以验证系统在不同代码语法和/或语义变化下的灵活性和适应性。这样可以评估系统在不同条件下的性能表现和稳定性,揭示潜在的兼容性问题,并为系统的进一步优化和改进提供指导。
第四,引入变异模型可以促进代码创新:变异模型可以激发测试代码的创新和探索。通过应用不同的代码变体,可以挖掘出一些新的、不同于之前测试的情况和场景。这样可以促进对代码的新思考和发现,从而鼓励创新和进一步提升软件品质。
第五,引入变异模型可以驱动持续改进:通过将调整后的训练测试代码应用到真实测试环境中并获取训练测试结果,可以不断获得反馈和洞察。这些结果可以用于评估测试策略的有效性,并作为改进训练测试代码和变异模型的依据。通过持续的改进和优化,可以提高测试的准确性、效率和精度。
综上所述,利用变异模型调整训练测试代码并应用到真实测试环境中,可以增强代码覆盖率、检测隐藏缺陷、验证系统灵活性、促进代码创新和驱动持续改进。这些有益效果有助于提高测试质量、发现潜在问题,并为软件的质量提供保障。
模糊测试模块13,用于将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码;通过环境模拟器对模拟测试代码执行模拟测试,以得到模拟测试结果;其中,模拟测试结果包括执行结果以及对应的奖励值、测试覆盖率;执行结果包括输出信息、执行错误信息、程序状态信息。进而,根据奖励函数确定所述模拟测试结果对应的奖励值,以通过所述将奖励值优化所述动态梯度探索模型,并不断迭代执行模糊测试。
模糊测试模块13通过将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码。然后,通过环境模拟器对模拟测试代码执行模拟测试,以得到模拟测试结果。模拟测试结果包括执行结果、对应的奖励值和测试覆盖率。其中,执行结果包括输出信息、执行错误信息和程序状态信息。根据奖励函数确定所述模拟测试结果对应的奖励值,以通过将奖励值优化所述动态梯度探索模型,并不断进行迭代执行模糊测试。
作为一个可选示例,假设需要测试一个图片处理程序,以确保其可以正确地对各种不同类型的图片进行处理,而不会出现崩溃或错误。可以采用模糊测试的方式来进行测试,以下是测试过程的一个简要示例:
首先,可以使用预处理模块11将训练数据转化为测试状态向量,并用它们来训练动态梯度探索模型。这个模型可以学习图片处理程序的行为和模式,并基于这些知识生成模拟测试代码,以覆盖尽可能多的情况。接下来,可以使用模糊测试模块13,将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码。然后,可以使用环境模拟器对模拟测试代码进行执行,以得到模拟测试结果。模拟测试结果包括执行结果、对应的奖励值和测试覆盖率。执行结果可以包括输出信息、执行错误信息和程序状态信息。奖励值是根据预定义的奖励函数来确定的,这个函数可能考虑了执行时间、测试覆盖率、错误率等因素。在得到奖励函数的值之后,可以使用它来优化动态梯度探索模型,使其能够生成更好的模拟测试代码。可以采用机器学习的方式,通过将奖励值与模型参数相关联,使用梯度下降等算法来调整模型。然后,可以不断迭代执行模糊测试,直到得到一个令人满意的测试结果。通过这种方式,可以使用模糊测试模块13,结合动态梯度探索模型和环境模拟器,来进行高效、全面和准确的测试,以发现和解决程序中的问题。
通过模糊测试模块13,能够实现模糊测试的自动化流程,有助于快速发现潜在的漏洞,并在漏洞定位模块中提供详细的漏洞信息,帮助开发人员理解和修复漏洞,减少人工操作和人力成本,提高测试效率和测试覆盖率。
进一步可选地,漏洞定位模块14,对模拟测试结果进行漏洞分析,以获得测试代码中潜在的漏洞信息时,具体用于:
从模拟测试结果中筛选出候选漏洞信息;基于候选漏洞信息对候选漏洞进行逐步追踪,以得到候选漏洞相关的数据变化和/或行为变化;对候选漏洞相关的数据变化和/或行为变化进行静态代码分析,以定位出候选漏洞所在的源代码;对候选漏洞所在的源代码进行符号检测,以查找出候选漏洞的输入值、输出值和执行路径;对候选漏洞的输入值、输出值和执行路径进行分析,得到候选漏洞产生的原因以及条件;识别测试代码中存在的潜在安全风险;基于候选漏洞产生的原因、条件、以及潜在安全风险,生成漏洞分析报告。
其中,候选漏洞信息包括漏洞类型。漏洞类型包括以下之一:缓冲区溢出、代码注入、身份验证问题、逻辑错误。
通过漏洞定位模块14,能够记录和管理漏洞信息,并触发相应的漏洞修复策略,帮助开发人员更安全地开发和维护代码。
本申请实施例中,通过动态梯度探索模型和自适应转换模型的结合使系统基于真实测试环境逐步优化模糊测试效果,增加测试覆盖范围,提高漏洞发现的准确性。本申请利用机器学习和自适应技术,实现了自动化的漏洞发现和修复策略,提高了系统的安全性和开发效率。
在本申请的又一实施例中,还提供了一种基于软件自动化测试技术的智能测试管理方法,所述方法包括:
通过自适应转换模型将测试代码重新构建为测试状态向量;所述测试状态向量至少包括:测试代码结构、测试代码内容、静态分析结果、测试覆盖率;
采用动态梯度探索模型为测试状态向量进行随机行动选择,以得到随机行动;随机行动与动态梯度探索模型中预先缓存的行动选择策略的期望回报相关联;
将随机行动构建为训练测试代码;
将训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;根据训练测试结果更新动态梯度探索模型的期望回报,以使训练后的动态梯度探索模型具备适用于当前测试场景的最优行动选择策略;
将测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码;
通过环境模拟器对模拟测试代码执行模拟测试,以得到模拟测试结果;模拟测试结果包括执行结果以及对应的奖励值、测试覆盖率;执行结果包括输出信息、执行错误信息、程序状态信息;
对模拟测试结果进行漏洞分析,以获得测试代码中潜在的漏洞信息;
记录漏洞信息,并触发与漏洞信息匹配的漏洞修复策略。
本申请提出的方法实施例还包括上述实施例中可由基于软件自动化测试技术的智能测试管理系统执行的各个方法步骤。
在本申请的又一实施例中,还提供一种电子设备,如图2所示,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现方法实施例所述的智能测试管理系统。
上述电子设备提到的通信总线1140可以是外设部件互连标准(PeripheralComponent Interconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线1140可以分为地址总线、数据总线、控制总线等。
为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口1120用于上述电子设备与其他设备之间的通信。
存储器1130可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(non-volatil ememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器1110可以是通用处理器,包括中央处理器(Central Pro-
cessing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(ApplicationSpecificIntegrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable GateArray,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述系统实施例中可由电子设备执行的各步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (7)

1.一种基于软件自动化测试技术的智能测试管理系统,其特征在于,所述系统包括:
预处理模块,用于通过自适应转换模型将测试代码重新构建为测试状态向量;所述测试状态向量至少包括:测试代码结构、测试代码内容、静态分析结果、测试覆盖率;
模型训练模块,用于采用动态梯度探索模型为所述测试状态向量进行随机行动选择,以得到随机行动;所述随机行动与所述动态梯度探索模型中预先缓存的行动选择策略的期望回报相关联;将所述随机行动构建为训练测试代码;将所述训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;根据所述训练测试结果更新所述动态梯度探索模型的期望回报,以使训练后的所述动态梯度探索模型具备适用于当前测试场景的最优行动选择策略;其中,所述模型训练模块采用动态梯度探索模型为所述测试状态向量进行随机行动选择,以得到随机行动时,还用于:
根据动态概率权重采用动态梯度探索模型为所述测试状态向量进行随机行动选择,以得到第一随机行动以及第二随机行动;
其中,所述预先缓存的行动策略包括最优行动选择策略、以及未知行动选择策略;所述动态概率权重用于指示最优行动选择策略与未知行动选择策略之间的比例;所述第一随机行动为基于最优行动选择策略进行随机选择得到的;所述第二随机行动为基于未知行动选择策略进行随机选择得到的;
所述模型训练模块将所述训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果之前,还用于:
基于所述第一随机行动以及所述第二随机行动构建出训练测试代码;
所述模型训练模块,将所述训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果之后,还用于:
基于所述训练测试结果动态调整所述动态梯度探索模型中的动态概率权重,以使所述动态梯度探索模型学习到适用于当前测试场景的未知行动选择策略;
已知初始训练阶段中,最优行动选择策略的第一动态概率权重低于未知行动选择策略的第二动态概率权重,所述模型训练模块基于所述训练测试结果动态调整所述动态梯度探索模型中的动态概率权重时,具体用于:
获取所述训练测试结果中未知行动选择策略对应的训练期望值;
基于所述训练期望值、训练迭代次数、以及测试代码类型对应的调整曲线,确定所述动态梯度探索模型中所述第二动态概率权重的动态调整因子;其中,所述动态调整因子小于1;所述训练期望值越高,所述动态调整因子越低;所述训练迭代次数越多,所述动态调整因子越低;所述测试代码类型对应的已知行动选择策略数量越多,所述调整曲线的斜率越小,所述动态调整因子在单位时间内的变化率越小;
以所述第二动态概率权重与所述动态调整因子的乘积,作为调整后的第二动态概率权重;
模糊测试模块,用于将所述测试状态向量输入到训练后的动态梯度探索模型中进行行为模拟重构,得到模拟测试代码;通过环境模拟器对所述模拟测试代码执行模拟测试,以得到模拟测试结果;所述模拟测试结果包括执行结果以及对应的奖励值、测试覆盖率;所述执行结果包括输出信息、执行错误信息、程序状态信息;
漏洞定位模块,用于对所述模拟测试结果进行漏洞分析,以获得所述测试代码中潜在的漏洞信息;
智能管理模块,用于记录所述漏洞信息,并触发与所述漏洞信息匹配的漏洞修复策略。
2.根据权利要求1所述的智能测试管理系统,其特征在于,所述模型训练模块,还用于:
获取所述训练测试结果中未知行动选择策略对应的期望回报;
将期望回报符合设定条件的未知行动选择策略添加至经验策略缓存库中,并基于预设触发条件从经验库中选取最优行动选择策略。
3.根据权利要求1所述的智能测试管理系统,其特征在于,所述模型训练模块,还用于:
采用变异模型调整所述训练测试代码,以将调整后的所述训练测试代码应用到真实测试环境中进行测试,以得到训练测试结果;
所述变异模型用于增加所述训练测试代码中与代码语法和/或语义匹配的行动变化范围,以扩充所述训练测试代码中的代码语法和/或语义。
4. 根据权利要求3所述的智能测试管理系统,其特征在于,所述模型训练模块采用变异模型调整所述训练测试代码时,具体用于:
更改所述训练测试代码中字符串函数的字符串类型和长度;和/或
更改所述训练测试代码中测试数据的进入顺序;和/或
对所述训练测试代码中代码模块执行添加、删除和/或替换操作;和/或
在所述训练测试代码中添加循环语句和/或条件语句,以改变所述训练测试代码的控制结构;和/或
改变所述训练测试代码中调用参数值或者选择不同参数组合来调用所述训练测试代码中的函数或方法。
5.根据权利要求1所述的智能测试管理系统,其特征在于,所述自适应转换模型包括预处理单元、代码编辑器;
所述预处理模块,通过自适应转换模型将测试代码重新构建为测试状态向量时,具体用于:
通过所述预处理单元将测试代码中的语句代码拆分成标记化代码;所述标记化代码中各个标签分别用于标记不同代码片段和/或代码结构;
通过代码编码器将所述标记化代码中的代码片段重新构建为对应的测试状态向量;各个测试状态向量的长度一致。
6.根据权利要求5所述的智能测试管理系统,其特征在于,所述自适应转换模型还包括后处理单元;
通过所述后处理单元将各个测试状态向量与所述动态梯度探索模型中不同类型代码测试任务相关联;所述不同类型代码测试任务至少包括:代码补全、代码注释生成、代码变量命名、代码相似性比较;
在所述动态梯度探索模型对应的测试任务层中,对各个测试状态向量进行监督学习,以增强所述动态梯度探索模型的语义理解能力以及代码重构能力。
7.根据权利要求1所述的智能测试管理系统,其特征在于,漏洞定位模块,对所述模拟测试结果进行漏洞分析,以获得所述测试代码中潜在的漏洞信息时,具体用于:
从所述模拟测试结果中筛选出候选漏洞信息;所述候选漏洞信息包括漏洞类型;漏洞类型包括以下之一:缓冲区溢出、代码注入、身份验证问题、逻辑错误;
基于所述候选漏洞信息对候选漏洞进行逐步追踪,以得到候选漏洞相关的数据变化和/或行为变化;
对候选漏洞相关的数据变化和/或行为变化进行静态代码分析,以定位出候选漏洞所在的源代码;
对候选漏洞所在的源代码进行符号检测,以查找出候选漏洞的输入值、输出值和执行路径;
对候选漏洞的输入值、输出值和执行路径进行分析,得到候选漏洞产生的原因以及条件;
识别所述测试代码中存在的潜在安全风险;
基于候选漏洞产生的原因、条件、以及潜在安全风险,生成漏洞分析报告。
CN202311512220.8A 2023-11-14 2023-11-14 基于软件自动化测试技术的智能测试管理系统 Active CN117290856B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311512220.8A CN117290856B (zh) 2023-11-14 2023-11-14 基于软件自动化测试技术的智能测试管理系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311512220.8A CN117290856B (zh) 2023-11-14 2023-11-14 基于软件自动化测试技术的智能测试管理系统

Publications (2)

Publication Number Publication Date
CN117290856A CN117290856A (zh) 2023-12-26
CN117290856B true CN117290856B (zh) 2024-02-23

Family

ID=89240954

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311512220.8A Active CN117290856B (zh) 2023-11-14 2023-11-14 基于软件自动化测试技术的智能测试管理系统

Country Status (1)

Country Link
CN (1) CN117290856B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110661778A (zh) * 2019-08-14 2020-01-07 中国电力科学研究院有限公司 一种基于逆向分析模糊测试工控网络协议的方法及系统
CN111538668A (zh) * 2020-04-28 2020-08-14 济南浪潮高新科技投资发展有限公司 基于强化学习的移动端应用测试方法、装置、设备及介质
WO2021231007A1 (en) * 2020-05-15 2021-11-18 Microsoft Technology Licensing, Llc Automated program repair tool
WO2023033801A1 (en) * 2021-08-31 2023-03-09 Siemens Corporation System and method for design exploration using dynamic environment and physics simulations
JP7290784B1 (ja) * 2022-04-18 2023-06-13 中国長江三峡集団有限公司 コード類似性に基づくファジーテスト方法、装置及び記憶媒体

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10606732B2 (en) * 2018-02-27 2020-03-31 International Business Machines Corporation Hybrid genetic concolic co-verification of hardware and software

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110661778A (zh) * 2019-08-14 2020-01-07 中国电力科学研究院有限公司 一种基于逆向分析模糊测试工控网络协议的方法及系统
CN111538668A (zh) * 2020-04-28 2020-08-14 济南浪潮高新科技投资发展有限公司 基于强化学习的移动端应用测试方法、装置、设备及介质
WO2021231007A1 (en) * 2020-05-15 2021-11-18 Microsoft Technology Licensing, Llc Automated program repair tool
WO2023033801A1 (en) * 2021-08-31 2023-03-09 Siemens Corporation System and method for design exploration using dynamic environment and physics simulations
JP7290784B1 (ja) * 2022-04-18 2023-06-13 中国長江三峡集団有限公司 コード類似性に基づくファジーテスト方法、装置及び記憶媒体

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
一种动静结合的高代码覆盖率模糊测试方法;韩;吴波;辛丹;;信息安全研究;20160805(第08期);全文 *

Also Published As

Publication number Publication date
CN117290856A (zh) 2023-12-26

Similar Documents

Publication Publication Date Title
US11269622B2 (en) Methods, systems, articles of manufacture, and apparatus for a context and complexity-aware recommendation system for improved software development efficiency
Dam et al. A deep tree-based model for software defect prediction
US11720804B2 (en) Data-driven automatic code review
US11907675B2 (en) Generating training datasets for training neural networks
US11004012B2 (en) Assessment of machine learning performance with limited test data
CN116909532B (zh) 一种代码生成与缺陷修复方法和装置
US11593562B2 (en) Advanced machine learning interfaces
EP3959601A1 (en) Automatic identification of appropriate code reviewers using machine learning
Del Carpio et al. Trends in software engineering processes using deep learning: a systematic literature review
CN117435505B (zh) 一种性能测试脚本可视化生成方法
US20210406730A1 (en) Method, electronic device, and computer program product for processing information
US20230004486A1 (en) Software testing using machine learning
CN110490304B (zh) 一种数据处理方法及设备
Oz et al. On the use of generative deep learning approaches for generating hidden test scripts
CN117093477A (zh) 一种软件质量评估方法、装置、计算机设备及存储介质
US11243248B2 (en) Symbolic backend for execution of quantum programs
US20210349697A1 (en) Smart code editor for detecting and visualizing deviations
Tarassow The potential of LLMs for coding with low-resource and domain-specific programming languages
US11119892B2 (en) Method, device and computer-readable storage medium for guiding symbolic execution
US20210149793A1 (en) Weighted code coverage
Tang et al. App review driven collaborative bug finding
CN117290856B (zh) 基于软件自动化测试技术的智能测试管理系统
Virmajoki Detecting code smells using artificial intelligence: a prototype
CN114117445A (zh) 漏洞分类方法、装置、设备及介质
JP2023520313A (ja) 不確定区間を有する性能予測の生成

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
GR01 Patent grant
GR01 Patent grant