一种人工智能的自动化软件测试系统及方法与流程

文档序号:18899701发布日期:2019-10-18 21:46阅读:306来源:国知局
一种人工智能的自动化软件测试系统及方法与流程
本发明属于软件测试
技术领域
,具体涉及一种人工智能的自动化软件测试系统及方法。
背景技术
:软件测试是一种伴随着软件控制程序大规模应用而兴起的技术,该技术主要用于测试软件程序的质量,通过对软件程序进行检测可知其中是否存在漏洞、错误、缺陷等问题,帮助软件在应用前进行把关,指导软件设计人员修复其中可能的漏洞、错误、缺陷等问题,从而为软件的高效应用提供评估支撑,降低软件应用可能存在的风险,提升软件有效性。基于软件测试的重要性,在软件程序上市应用之前都需要对开发的软件程序进行大规模的可靠性验证,以消除上市应用之后可能带来的风险,尤其在一些关键的领域如航空航天、工业自动化等领域,需要软件无间断长期工作,软件测试来保证上市软件的可靠性就显得格外重要。而当前的软件测试工作大部分都是基于人工进行测试,需要研读不同编程平台的代码内容之后才能来实现相关的测试代码进行验证,这种传统方法可以对一些常规风险进行一定控制,但是验证测试的效率较低,不能大规模快速开展大量的测试;且测试的效果可能因为某些疏忽而存在一定的遗漏,不能有效的对软件进行饱和式覆盖,一旦软件上市后才发现问题,带来的损失往往会很大;此外由于不同的类型的软件、不同的编程风格等问题的存在,使得测试人员对不同的测试软件研读代码需要花费大量的熟悉时间。这些问题使得传统的软件测试往往需要测试人员具备足够的经验,且需要较多的时间进行测试验证,甚至需要不同的测试人员进行交叉验证,进而提高了测试成本。为了应对以上存在的一些问题,市场上也推出了一些半自动化、自动化的测试工具或者辅助脚本等加快软件测试,这些工具或者脚本可以在一定程度上帮助加快测试,但是适用性较低,往往都是针对某些单一的测试场景进行设置,且测试用例数量相对受限,受限于先前设定的数量,还不能针对实际应用存在的一些问题进行反馈自动更新,对于相似的测试场景的适用性也较低,这些问题导致测试的效率虽然有所提升,但是提升不大,测试范围也较受限于编写测试脚本人员的思维与设置,不能自动更新测试用例,测试用例可能不能全覆盖等,测试的效率与准确度还是较低。技术实现要素:为解决上述问题,本发明提供了一种基于人工智能算法构建的自动化软件测试系统与方法,该系统可自主学习测试规范要求和往期的测试数据与结果,总结提炼测试规范要求模型;该系统可自主学习编程语言设计内容,生成编程语言模型;该系统可结合不同的软件平台、硬件平台,对编程语言模型进行自适应,生成目标系统模型,用以指导在不同的软硬件平台开展自动化软件测试。采用本发明的测试系统,可以提供一种自主学习测试要求和编程规范、自主适应不同软硬件平台自动化生成测试用例、自动化开展软件测试、自动化提供软件测试报告的系统及方法。一种人工智能的自动化软件测试系统,包括基于人工智能算法构建的测试要求规范模型、编程语言模型、目标系统模型、测试用例自动生成模型;软件自动测试与分析过程模型;所述测试要求规范模型的构建步骤如下:(1-1)收集往期的测试数据;(1-2)获取测试要求规范说明书;(1-3)基于测试数据构建人工智能数据分析模型;(1-4)基于测试要求规范说明书构建人工智能数据分析模型;(1-5)语义模型融合;(1-6)模型优化适配;(1-7)模型自更新;所述编程语言模型的构建步骤如下:(2-1)确定需要建模的编程语言范围;(2-2)收集每种编程语言的编程规范和相关的编程实例;(2-3)按照编程规范的条目进行逐条解析,获得编程规范的语义集;(2-4)语义集的完善与清洗;(2-5)编程语义扩展;(2-6)语义集关联代码语义句模型表征;(2-7)语义集关联代码语义句模型表征更新与完善;(2-8)语义集的自学习完善;所述目标系统模型的构建步骤如下:(3-1)基于目标系统使用说明书构建语义模型;(3-2)匹配编程语言模型;所述测试用例自动生成模型的构建步骤如下:(4-1)测试需求解析;(4-2)测试代码输入清洗与归类;(4-3)编程语言模型指导测试代码提炼获得待测试语义集和代码段;(4-4)目标系统模型通过事先学习所得,该模型可知道软件测试用例自动化生成模型按照特定软件和硬件平台的要求生产符合要求的测试用例;(4-5)测试用例自动生成;所述软件自动测试与分析过程模型如下:(5-1)对每一个测试用例的测试结果反馈进行记录,对于不通过的测试用例进行分析;(5-2)分析的结果结合编程语言模型中的关键词记录出问题的原因,同时根据关键词对应的表征意义给出不通过的原因说明,给出风险说明和报告;(5-3)基于编程语言模型,可对风险代码段给出相似代码测试通过的风险消除解决方案;(5-4)对于通过的测试用例可以进一步结合编程语言模型分析编程规范是否达标,给出编程规范分析报告。所述步骤(1-1)中的测试数据包括但不限于测试代码、测试命令、测试说明、测试脚本、测试用例。进一步的,所述步骤(1-3)中分析模型过程包括但不限于数据清洗、数据归类、构建语义集、数据语义关联,最后输出基于测试数据分析所得的测试要求规范语义分析模型,具体如下:a)数据清洗:对获得的往期测试数据进行清洗,去除无效数据;b)数据归类:对输入的测试数据进行语言划分,对文本、字符表达式、字符代码、数字表达式进行归类划分,分别构建知识数据库;c)根据规格构建语义集:对文本的知识数据库构建文本词义语义集;对字符表达式构建字符表达式语义集;对字符代码构建代码语义集;对数字表达式构建数字表达式语义集;d)清洗语义集:对划分的语义集进行清洗,去除重复和无意义的语义;同时对语义进行组合,去除组合语义中的重复组合语义、无意义的组合语义;e)语义断句构建:对语义集中的各个语义进行断句构建,对获得重复断句进行归类处理,对无意义的语句进行清除处理,对剩下有效的断句构建形成语义断句数据库;f)语义集:获得的测试目的的语义断句作为第一语义集存入数据库;获得的测试要求的语义断句作为第二语义集存入数据库;获得的测试原理的语义断句作为第三语义集存入数据库;获得的待测试代码的语义断句作为第四语义集存入数据库;获得的测试用例的语义断句作为第五语义集存入数据库;其他更多的测试条目的语义断句可以进行扩展存入后续语义集;g)语义关联链:将测试目的、测试要求、测试原理、待测试代码、测试用例的语义集数据库进行关联,获得基于往期测试数据形成的从测试目的、测试要求、测试原理、待测试代码、测试用例形成的测试系统关联语义链库。进一步的,所述无效数据包括空文件、未测试数据、无意义字符数据文件。进一步的,所述步骤(1-4)中分析模型过程包括但不限于自然语言处理、数据清洗、语义生成等过程,最后输出基于测试要求规范说明书分析所得的测试要求规范语义分析模型,具体如下:a)通过人工智能的自然语言处理算法进行解析与整理测试要求规范说明书,以位于第一级的测试规范要求关键字进行切分形成第一语义集;b)以位于第二级的测试规范要求关键字进行切分形成第二语义集,第二语义集属于在第一语义集基础上进行更深入的语义划分;c)基于第二语义集对测试要求规范进一步梳理形成三级关键词,对每一个第二语义集的都往下一级检测关键词,以位于第三级的每个关键词都作为一个语义,形成第三级语义集;d)逐级往下梳理,展开每一个语义集迭代往下搜索,直至测试要求规范结束或者正文内容为止。所述步骤(2-1)中编程语言可以是c、c++、python、r、汇编、vhdl。进一步的,所述步骤(2-3)中获得编程规范的语义集的过程具体如下:a)以位于第一级的编程规范要求关键字进行切分形成第一语义集;b)以位于第二级的编程规范要求关键字进行切分形成第二语义集,第二语义集属于在第一语义集基础上进行更深入的语义划分;c)基于第二语义集对编程规范进一步梳理形成三级关键词,对每一个第二语义集的都往下一级检测关键词,以位于第三级的每个关键词都作为一个语义,形成第三级语义集;d)逐级往下梳理,展开每一个语义集迭代往下搜索,直至编程规范结束或者正文内容为止。进一步的,所述步骤(2-6)包括步骤如下:a)获得关键词和表征意义;b)语义句构建。所述步骤(3-1)的具体过程如下:a)解析与整理目标系统使用说明书,以位于第一级的使用关键字进行切分形成第一语义集;b)以位于第二级的使用说明关键字进行切分形成第二语义集,第二语义集属于在第一语义集基础上进行更深入的语义划分;c)基于第二语义集对使用说明要求规范进一步梳理形成三级关键词,对每一个第二语义集的都往下一级检测关键词,以位于第三级的每个关键词都作为一个语义,形成第三级语义集;d)逐级往下梳理,展开每一个语义集迭代往下搜索,直至说明书要求规范结束或者正文内容为止,从而获得使用说明书的语义集;e)语义模型精炼。进一步的,所述步骤(3-2)的具体过程如下:a)解析目标平台语义集a和编程语言模型b,对各级语义词进行正向/逆向最大匹配,获得匹配的语义对;b)根据目标平台语义集a(i)中对编程规范的反馈,对匹配上的编程语言模型词条b(j)的编程规范内容先进行二次验证;c)遍历所有的匹配语义对,对所有匹配上的编程语言模型的词条对进行更新。所述步骤(4-5)具体过程如下:a)测试用例自动生成模块根据测试需求的解析获得的结果制定测试步骤;b)对于每个测试步骤需要测试的内容,通过对编程语言模型指导的测试代码语义化分析结果进行检索,索引到待测试代码段;c)根据上一步获得的待测试代码的每个关键词,通过目标系统模型来获取每个关键词的编程规范,然后结合特定软件和硬件平台的测试用例要求对各条编程规范细则生成具体的测试用例。所述软件自动测试与分析过程模型中每一个测试用例可以并行执行。采用所述的软件测试系统进行自动化软件测试的方法,所述步骤如下:(1)输入测试要求;(2)测试要求语义提取与分析;(3)输入待测试软件代码;(4)软件代码清洗与归类;(5)软件代码语义提取与分析;(6)自动生成测试用例;(7)自动软件测试,生成测试结果;(8)软件测试人员复验测试报告;(9)程序开发人员根据测试报告进行修改完善软件代码;(10)反馈修正软件测试系统模型。本发明的有益效果如下:(1)该系统内置了基于人工智能的测试要求规范的语义化建模学习过程,可直接对软件测试要求和往期的测试数据进行人工智能分析与学习,从而构建出测试规范要求模型,可直接提供给机器使用,实现测试规范要求与机器直接对接,减少了人工转译成机器识别的语言过程,为大规模快速应用不同的测试要求和测试规范大规模更新提供了快速实现,减少了基于传统人工测试需要重新适应过程。通过该模型,可快速对测试命令进行语义划分,将测试语言构建成机器识别的语义化测试过程;(2)该系统内置了编程语言的人工智能建模过程,可以对实际使用的编程语言进行语义化分析,构建人工智能模型,辅助软件测试过程开展。该过程快速且有效,直接构建了基于机器可识别可操作的语言模型,从编程语言的源头确定代码质量,也为不同的编程语言快速布置应用开展快速测试提供了支撑。通过该模型,可对输入的待测试软件代码进行快速的语义划分,将待测试的软件代码划分成语义块,构建各级待测试代码段,为自动化测试做准备;(3)该系统内置了基于目标系统构建的编程语言模型自适应适配不同型号软件和硬件平台的编程语言自更新建模过程。通过构建该目标系统模型,可根据不同的实际应用软件平台和硬件平台,快速构建特定平台上的编程语言模型,指导测试用例自动化生成模块生成适合特定软件和硬件平台的有效测试用例,辅助实现测试用例自动化生成。通过该模型的构建,可快速扩展布置测试过程,实现对不同型号软件和硬件的快速技术支持;(4)该系统内置了测试用例自动化生成模型,该模型基于测试要求规范模型指导生成的测试要求语义命令集、编程语言模型生成的待测试语义集和代码段、目标系统构建的特定软硬件平台编程语言代码模型来自动化生成待测试代码的测试用例,覆盖所有的测试语义要求,覆盖所有的测试代码段,该测试用例满足软硬件特定平台要求,测试用例的生成过程快速且有效,极大的提高了测试效率,实现测试范围的全覆盖;(5)该系统可以对测试用例进行自动化测试,节省专业化测试人力开展测试过程,测试用例完成的速度更快;(6)该系统可以自动化输出软件测试报告、编程规范报告、软件风险分析报告、软件风险规避解决方案等,有力的辅助软件代码进一步完善,提升编程质量;(7)该系统可根据软件人工测试人员的反馈、不同单位公司、不同软硬件平台的不同软件测试规范要求、不同编程语言的编程规范技术升级等内容开展智能化的自学习过程,进一步完善各个算法模型,实现测试系统自学习过程,不断自主更新,适应发展。附图说明图1是基于人工智能的自动化软件测试系统框图;图2是基于人工智能算法构建的测试要求规范模型构建与应用图;图3是基于人工智能的编程代码模型的构建与应用图;图4是基于人工智能的目标系统模型的构建与应用图。具体实施方式下面结合附图和具体实施方式对本发明的技术方案做进一步详细说明。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明要求保护的范围。第一部分,构建系统人工智能模型:本发明的目的在于提供一种基于人工智能算法构建的自动化软件测试系统与方法,该系统可自主学习测试规范要求和往期的测试数据与结果,总结提炼测试规范要求模型;该系统可自主学习编程语言设计内容,生成编程语言模型;该系统可结合不同的软件平台、硬件平台,对编程语言模型进行自适应,生成目标系统模型,用以指导在不同的软硬件平台开展自动化软件测试。该部分主要介绍以下三个智能化模型的构建过程:一,基于人工智能算法构建的测试要求规范模型主要依据往期的测试数据和具体的编程规范说明书来通过人工智能算法提取语义构建智能化测试要求规范模型,生成机器可理解的语义化规则,指导后续模块开展自动化工作,代替人工解读测试规范说明书并实现测试用例过程,可适用性广,速度快。该模型具体构建如下:(1)收集往期的测试数据,包括但不限于测试代码、测试命令、测试说明、测试脚本、测试用例等数据;(2)获取测试要求规范说明书,可依据不同的项目、不同的组件、不同的系统等不同,分门别类收集相应的测试要求规范说明书或者指导书等相关的规范要求文档;(3)基于测试数据构建人工智能数据分析模型,分析模型过程包括但不限于数据清洗、数据归类、数据语义构建、数据语义关联等过程,最后输出基于测试数据分析所得的测试要求规范语义分析模型;a)数据清洗过程:数据清洗过程主要对获得的往期测试数据进行清洗,去除无效的数据,如空文件、未测试数据、无意义字符数据文件等;b)数据归类:对输入的测试数据进行语言划分,对文本、字符表达式、字符代码、数字表达式进行分类划分,分别构建知识数据库进行分类;c)根据规格构建语义集:对文本的知识数据库按照自然语言处理中的词性、词意等进行切分,划分成分词,构建文本词义语义集;对字符表达式按照表达式的词义划分成字符表达式语义集;对字符代码按照代码语义块划分成语义集;对数字表达式按照数学意义划分成语义集;d)清洗语义集:对划分的语义集进行清洗,去除重复和无意义的语义;同时对语义进行组合,去除组合语义中的重复组合语义、无意义的组合语义;e)语义断句构建:对语义集中的各个语义进行断句构建,对获得重复断句进行归类处理,对无意义的语句进行清除处理,对剩下有效的断句构建形成语义断句数据库;f)语义集:以上述方法获得的测试目的的语义断句作为第一语义集存入数据库;以上述方法获得的测试要求的语义断句作为第二语义集存入数据库;以上述方法获得的测试原理的语义断句作为第三语义集存入数据库;以上述方法获得的待测试代码的语义断句作为第四语义集存入数据库;以上述方法获得的测试用例的语义断句作为第五语义集存入数据库;其他更多的测试条目的语义断句可以进行扩展存入后续语义集;g)语义关联链:将测试目的、测试要求、测试原理、待测试代码、测试用例的语义集数据库进行关联,获得基于往期测试数据形成的从测试目的、测试要求、测试原理、待测试代码、测试用例形成的测试系统关联语义链库,如表1所示:表1语义关联链示意测试目的测试要求测试原理待测试代码测试用例扩展条目(4)基于测试要求规范说明书构建人工智能数据分析模型,分析模型过程包括但不限于自然语言处理、数据清洗、语义生成等过程,最后输出基于测试要求规范说明书分析所得的测试要求规范语义分析模型:a)通过人工智能的自然语言处理算法进行解析与整理测试要求规范说明书,以位于第一级的测试规范要求关键字进行切分形成第一语义集,第一语义集的关键词可以包括但不限于如单元测试规范、集成测试规范、系统测试规范、业务测试规范、验收测试规范、特殊测试规范等关键词。b)以位于第二级的测试规范要求关键字进行切分形成第二语义集,第二语义集属于在第一语义集基础上进行更深入的语义划分。依据测试规范,对二级的语义关键词进行整理划分,通过人工智能的自然语言处理算法进行解析与整理,如下:第一语义集的单元测试规范组成往下细分二级关键词,如模块接口测试、错误处理测试、局部数据结构测试等规则要求,整理形成第二语义集;第一语义集的基础测试规范关键字往下细分形成的二级关键词可包括多模块接口测试、多模块参数传递测试、多模块调用测试等,整理形成作为第二语义集;第一语义集的系统测试规范往下细分形成的二级关键词可包括正常情况测试规范、过载情况测试规范、边界情况测试规范、非正常情况测试规范等形成第二语义集;第一语义集的业务测试规范可往下细分形成的二级关键词可包括业务界面、业务功能a、业务功能b等构成第二语义集;第一语义集的特殊测试规范往下细分形成如特定业务a、异常业务b等构成第二语义集;c)基于第二语义集对测试要求规范进一步梳理形成三级关键词,对每一个第二语义集的都往下一级检测关键词,以位于第三级的每个关键词都作为一个语义,形成第三级语义集;d)按照上文的逐级往下梳理,展开每一个语义集迭代往下搜索,直至测试要求规范结束或者正文内容为止。(5)语义模型融合:对基于测试结果所获得的测试规范要求语义链和基于测试要求规范说明书的测试规范要求语义集模型进行融合。对测试语义链的测试目的、测试要求、测试原理与测试规范要求语义集模型的各级语义集进行近义词匹配,将基于测试结果所获得的测试要求规范语义链与基于测试要求规范说明书的测试规范要求语义集模型进行匹配关联,获得初步的测试要求规范融合模型。更进一步,对获得的初始测试要求规范模型进行进一步近义词合并、重复语义合并、无效语义删除、词义消歧等工作,实现对语义模型精炼,从而获得测试要求规范模型;(6)模型优化适配:对上一步获得的测试要求规范模型进行进一步的优化适配,扩展模型的可适配性,如通过gan神经网络结合关键词语义的词法分析,对现有的模型进行扩展,扩展现有实际测试数据和说明书的局限性,获得词典或者知识库,进一步提升语义模型的完备性;(7)模型自更新:每次实际测试后的测试结果以及测试人员的标记反馈结果投入该模型中进行自学习,更新现有测试要求规范模型;二,基于人工智能算法构建的编程语言模型主要是对使用到的编程语言规范进行自主学习,获得机器可理解的编程语言规范要求,用于指导机器对编程语言进行语义分析,实现一定的智能化代码分析能力,具体的编程语言模型获取过程如下:(1)根据测算的要求确定需要建模的编程语言范围,可以是c/c++/python/r/汇编/vhdl等语言;(2)对每一种语言的编程规范进行收集,可以来源于各个语言的编程规范要求说明,也可以是各个单位公司内部制定的编程规范要求说明,还可以是网络上的编程规范更新。收集每种语义的编程规范和相关的编程实例;(3)对各个编程规范进行语义解析,按照编程规范的条目进行逐条解析,获得编程规范的语义集:a)以位于第一级的编程规范要求关键字进行切分形成第一语义集,第一语义集的关键词可以包括但不限于如某编程语言的语言组成、某编程语言的关键字、某编程语言的运算符号、某编程语言的语法结构、某编程语言的程序结构、某编程语言的函数等编程规范的一级条目。b)以位于第二级的编程规范要求关键字进行切分形成第二语义集,第二语义集属于在第一语义集基础上进行更深入的语义划分。依据编程规范,对二级的语义关键词进行整理划分,如下:第一语义集的编程语言的语言组成往下细分二级关键词,如该编程语言的数据类型规则、数组规则、指针规则、常变量规则、运算规则、文件io处理规则、字符串规则等规则要求,整理形成第二语义集;第一语义集的编程语言的关键字往下细分形成的二级关键词可包括基本数据类型关键词、修饰关键词、流程关键词、控制关键词等,整理形成作为第二语义集;第一语义集的编程语义运算符往下细分形成的二级关键词可包括加法、减法、乘法、除法等形成第二语义集;第一语义集的编程语言的语法结构可往下细分形成的二级关键词可包括顺序结构、循环结构、选择结构等构成第二语义集;第一语义集的程序结构往下细分形成的二级关键词可包括判断结构、跳转结构、循环结构等构成第二语义集;c)基于第二语义集对编程规范进一步梳理形成三级关键词,对每一个第二语义集的都往下一级检测关键词,以位于第三级的每个关键词都作为一个语义,形成第三级语义集;d)按照上文的逐级往下梳理,展开每一个语义集迭代往下搜索,直至编程规范结束或者正文内容为止;(4)语义集的完善与清洗:对于相同的编程语言,使用不同规范组织、单位公司的规范标准进行语义收集,按照第三步实现,完备编程语义数据库。扩展完成之后的语义数据库,采用分析归类,对相同或者相似的语义进行统一归类,对于无意义的语义进行删除;(5)编程语义扩展:对于不同的编程语言,可以采用上文的1-4步来获得该编程语言的语义数据库;(6)语义集关联代码语义句模型表征:对于每一个语义集,通过逐级往下展开到末尾叶子节点上则是具体的编程代码规则要求,对每一个规则要求进行转换形成具体的语义句,每个语义句包含关键词和表征意义。关键词和表征意义分别通过对语义进行解析所得。a)关键词和表征意义获得:对末尾叶子节点的编程规范内容进行解析,通过自然语言理解、知识辅助、人工辅助等方法,将对应的具体编程规范进行解析成语义,具体的语义分解成关键词和表征意义;b)语义句构建:关键词用来判断该语义句是否有效,即包括入口、作用域范围、结束语、数值传递等内容,可扩展,需要通过人工智能的知识表示方法进行表示,每一个关键词形成一个知识点,每个知识点包含{入口、作用域范围、结束语、数值传递等}内容,通过若干知识点串联起来的关键词形成具体的语义句,表示当前语义叶子节点上的具体语义含义。每个知识点对应的表达意义用来对外显示,展示给测试人员,也可用于在测试报告中进行释义表征。如表3中的do…while()循环所示,表达了6个关键词,每个关键词为一个知识点,对应给出了具体的表达意义,6个关键词组成了do…while()代码块的执行规则;表2.do…while(function(.))循环的语义集示意(7)语义集关联代码语义句模型表征更新与完善:根据第6步获得的语义集关联代码语义句模型,接下来对获得的语义句进行测试修正,对于重复的语义句、无意义的语义进行消除,还可通过对抗网络等方法来生成新的语义句来进一步完善现有的语义句数据集,同时通过生成的测试数据测试现有的语义数据库的有效性,对于无效的语义进行删除;(8)语义集的自学习完善:生成的语义数据库可以通过不断接受新的规则材料来不断进行完善,从而紧跟编程语言的发展、版本更新,适应新的变化要求;通过人工干预的方法可以更新特定语义句表征,从而满足特定公司单位、行业的编程规范要求;三,基于人工智能算法构建的目标系统模型结合不同的软件、硬件平台的使用说明书和编程语言模型的理解,从而生成特定软件和硬件平台上的目标系统模型,指导具体的某个型号的软件和硬件平台上的软件测试过程中的自动化测试用例生成,其模型构建过程如下:(1)基于目标系统使用说明书构建语义模型,分析模型过程包括但不限于自然语言处理、数据清洗、语义生成等过程,最后输出基于目标系统使用说明书分析所得的语义模型:a)通过人工智能的自然语言处理算法进行解析与整理目标系统使用说明书,以位于第一级的使用关键字进行切分形成第一语义集,第一语义集的关键词可以包括但不限于如a软件平台使用说明、x硬件平台使用说明等关键词。b)以位于第二级的使用说明关键字进行切分形成第二语义集,第二语义集属于在第一语义集基础上进行更深入的语义划分。依据使用说明书,对二级的语义关键词进行整理划分,通过人工智能的自然语言处理算法进行解析与整理,如下:第一语义集的a软件平台使用说明书往下细分二级关键词,如模块接口说明、数据传递说明、函数调用说明等规则要求,整理形成第二语义集;第一语义集的x硬件平台关键字往下细分形成的二级关键词可包括参数配置说明、调用接口说明、返回信息说明等,整理形成作为第二语义集;c)基于第二语义集对使用说明要求规范进一步梳理形成三级关键词,对每一个第二语义集的都往下一级检测关键词,以位于第三级的每个关键词都作为一个语义,形成第三级语义集;d)按照上文的逐级往下梳理,展开每一个语义集迭代往下搜索,直至说明书要求规范结束或者正文内容为止,从而获得使用说明书的语义集;e)对获得的语义集进行词义消歧、无效语义清除、近义词合并、重复语义合并、等工作,实现对语义模型精炼。(2)对目标平台的规范说明书获得的语义集和特定的软件型号、硬件型号,对编程语言模型进行调整,从而获得特定软件型号、硬件型号上所对应的编程语言模型,具体过程包括:(a)解析目标平台语义集a和编程语言模型b,对各级语义词进行正向/逆向最大匹配,获得匹配的语义对,如m(a(i),b(j)),表示语义集a(i)词条与编程语言模型b(j)词条匹配;(b)根据目标平台语义集a(i)中对编程规范的反馈,对匹配上的编程语言模型词条b(j)的编程规范内容先进行二次验证,如验证所针对的使用函数、参数、结构体等,如果确认使用场景一致后,则对该目标平台下的编程语言模型词条b(j)进行调整更新;(c)遍历所有的匹配语义对,对所有匹配上的编程语言模型的词条对进行更新;第二部分给出基于人工智能算法构建的测试用例自动生成过程和软件自动测试与分析过程:一,基于人工智能算法构建的测试用例自动生成过程如下:该模块接收测试需求语义分析结果、待测试代码语义分析结果、基于人工智能算法生成的目标系统模型进行自动化生成大规模的测试用例,具体的设计实现方法如下:(1)测试需求解析:测试要求输入该系统之后,通过语义分析模型,已经拆解形成具体的语义表征。如输入的“第一步测试function_1(),第二步测试function_2()”的测试要求,对应计算机通过对该语义进行分析获得如下表所示的语义分解结果。该结果详细的分解了测试过程与要求,无语义意义的字符已经去除。再进一步,结合测试要求规范模型,对各个待测试语义进行提炼,获得有效的测试要求语义集合;表3.测试命令语义分解结果第一步测试function_1()第二步测试function_2()(2)测试代码输入清洗与归类:测试的代码函数与文件一般都是一个大工程,有可能还存在无用的文件和文件夹,本系统先对测试的代码进行清洗与归类,根据需要测试的语言要求,去除无效的文件和文件夹,整理出待测试的代码文件,并对代码文件中的代码进行整理和归类,去除无效的代码头、代码注释等信息,将其中的核心代码段整理形成机器文件,在系统内部存储,存储方式可选,可按照文件进行分类存放,方便对文件内容进行测试时快速索引定位;也可以按照函数进行分类存放,方便测试过程中对具体的函数测试时进行快速索引与定位。(3)编程语言模型指导测试代码提炼获得待测试语义集和代码段:编程语言模型通过事先学习所得,将该模型输入到清洗和归类之后的测试代码,指导对代码进行分析,获得代码中的各个语义和对应的代码段;(4)目标系统模型通过事先学习所得,该模型可知道软件测试用例自动化生成模型按照特定软件和硬件平台的要求生产符合要求的测试用例;(5)测试用例自动生成过程:a)测试用例自动生成模块根据测试需求的解析获得的结果制定测试步骤;b)对于每个测试步骤需要测试的内容,通过对编程语言模型指导的测试代码语义化分析结果进行检索,索引到待测试代码段;同时编程语言模型还提供了待测试代码的编程原型,具体包括但不限于语言组成、关键字、运算符号、语法结构、程序结构、函数等信息,对于每一个语义模型,通过细分到最下层的语义句,获得如表2所示的类似的编程语言的底层语义句模型,分析其中的关键词和表征意义,可知需要具体测试的内容,即每个关键词都是需要测试的内容;c)根据上一步获得的待测试代码的每个关键词,通过目标系统模型来获取每个关键词的编程规范,然后结合特定软件和硬件平台的测试用例要求对各条编程规范细则生成具体的测试用例,如表2所示的各个编程关键词,对每个关键词生成若干条测试用例,覆盖所有测试点;遍历每一个关键词,大规模生成测试用例,进行全覆盖;二,软件自动测试与分析过程:软件自动化测试模块主要依据生成的测试用例,对每个测试点进行遍历饱和式测试覆盖:(1)对每一个测试用例的测试结果反馈进行记录,对于不通过的测试用例进行分析;(2)分析的结果可包括具体出问题的代码段落,结合编程语言模型中的关键词可知出问题的原因在哪里,记录出问题的原因,同时根据关键词对应的表征意义给出不通过的原因说明,给出风险说明和报告;(3)结合现有系统中的基于人工智能学习获得的编程语言模型,可对风险代码段给出相似代码测试通过的风险消除解决方案,以供软件编写人员规避;(4)对于通过的测试用例可以进一步结合编程语言模型分析编程规范是否达标,如变量命名规则、缩进规则、代码段缩进规则等,给出编程规范分析报告;(5)所有的测试用例可以进行并行执行,测试快速;(6)最终可输出软件测试报告、编程规范报告、风险分析报告、风险规避解决方案。第三部分自动化软件测试工作过程介绍,主要包括该系统的各个关键模块介绍以及自动化测试的工作流程过程,具体如下:(1)测试要求规范模型:该模型属于先验模型,在软件测试开始之前已经获得。基于人工智能算法构建的测试要求规范模型主要依据往期的测试数据和具体的编程规范说明书来通过人工智能算法提取语义构建智能化测试要求规范模型,生成机器可理解的语义化规则,指导后续模块开展自动化工作,代替人工解读测试规范说明书并实现测试用例过程,可适用性广,速度快。如第一部分的第一条介绍;(2)编程语言模型:该模型属于先验模型,在开始软件测试之前已经获得。基于人工智能算法构建的编程语言模型主要是对使用到的编程语言规范进行自主学习,获得机器可理解的编程语言规范要求,用于指导机器对编程语言进行语义分析,实现一定的智能化代码分析能力。如第一部分的第二条;(3)目标系统模型:该模型属于先验模型,在开始软件测试之前已经获得。基于人工智能算法构建的目标系统模型结合不同的软件、硬件平台的使用说明书和编程语言模型的理解,从而生成特定软件和硬件平台上的目标系统模型,指导具体的某个型号的软件和硬件平台上的软件测试过程中的自动化测试用例生成。如第一部分的第三条。(4)测试输入模块:该模块接收待测试的工程输入,待测试的测试要求输入,具备io接口分别接收不同的输入;(5)测试要求语义提取与分析模块:该模块对输入的测试要求进行语义分解,分解成具体的语义信息。测试要求输入系统之后,通过语义拆分模型对语句进行拆分,拆分成若干关键词库,然后对拆分的词语进行组合,形成有意义的词语组合。如输入的“第一步测试function_1(),第二步测试function_2()”的测试要求,对应计算机通过对该语义进行分析获得如下表所示的语义分解结果。该结果详细的分解了测试过程与要求,无语义意义的字符已经去除。再进一步,结合测试要求规范模型,对各个待测试语义进行提炼,获得有效的测试要求语义集合;表4.测试命令语义分解结果第一步测试function_1()第二步测试function_2()(6)测试代码清洗与归类:测试的代码函数与文件一般都是一个大工程,有可能还存在无用的文件和文件夹,本系统先对测试的代码进行清洗与归类,根据需要测试的语言要求,去除无效的文件和文件夹,整理出待测试的代码文件,并对代码文件中的代码进行整理和归类,去除无效的代码头、代码注释等信息,将其中的核心代码段整理形成机器文件,在系统内部存储,存储方式可选,可按照文件进行分类存放,方便对文件内容进行测试时快速索引定位;也可以按照函数进行分类存放,方便测试过程中对具体的函数测试时进行快速索引与定位。(7)软件代码语义提取与分析:a)结合编程语言模型对待测试的代码块或者代码文件进行清洗与归类;b)对清洗与归类之后的代码进行语义分析,该过程结合人工智能学习获得的编程语言模型库对待测试代码进行分析,获得待测试代码的编程原型,具体包括但不限于语言组成、关键字、运算符号、语法结构、程序结构、函数等信息,对于每一个语义模型,通过细分到最下层的语义句,获得如表3所示的类似的编程语言的底层语义句模型,分析其中的关键词和表征意义,可知需要具体测试的内容,即每个关键词都是需要测试的内容,即获得了待测试代码的语义内容;c)对各个待测试的语义内容进行代码段划分,每一个语义内容对应一个代码段;(8)测试用例自动生成:a)根据测试要求的语义分析结果获得待测试的语义分解要求,通过前文步骤已经获得有效的待测试语义;b)根据编程语言模型对待测试的代码进行语义和代码段划分,每一个代码段属于要测试的一个语义内容;同时编程语言模型还提供了待测试代码的编程原型,具体包括但不限于语言组成、关键字、运算符号、语法结构、程序结构、函数等信息,对于每一个语义模型,通过细分到最下层的语义句,获得如表2所示的类似的编程语言的底层语义句模型,分析其中的关键词和表征意义,可知需要具体测试的内容,即每个关键词都是需要测试的内容;c)根据上一步获得的待测试代码的各个语义内容的关键词,通过目标系统模型来获取每个关键词的测试策略;d)根据测试策略,结合目标系统模型,快速生成符合特定软件和硬件平台要求的各个关键词的测试用例;e)遍历每一个关键词,大规模生成测试用例,进行全覆盖;(9)自动软件测试和测试结果生成:软件自动化测试模块主要依据生成的测试用例,对每个测试点进行全覆盖测试:a)对每一个测试用例的测试结果反馈进行记录,对于不通过的测试用例进行分析;b)分析的结果可包括具体出问题的代码段落,结合编程语言模型中的关键词可知出问题的原因在哪里,记录出问题的原因,同时根据关键词对应的表征意义给出不通过的原因说明,给出风险说明和报告;c)结合现有系统中的基于人工智能学习获得的编程语言模型,可对风险代码段给出相似代码测试通过的风险消除解决方案,以供软件编写人员规避;d)对于通过的测试用例可以进一步结合编程语言模型分析编程规范是否达标,如变量命名规则、缩进规则、代码段缩进规则等,给出编程规范分析报告;e)所有的测试用例可以进行并行执行,测试快速;f)最终可输出软件测试报告、编程规范报告、风险分析报告、风险规避解决方案。(10)软件测试人员复验测试报告:a)软件测试人员根据自动化软件测试报告的结果进行复验,主要抽验正常的测试用例,对比测试不通过用例,复验不通过用例;b)根据测试的结果对正常用例、不通过用例、不通过用例的风险分析报告、不通过用例的解决方案报告进行反馈标记;c)反馈标记的结果通过语义分析系统进行分析,读入软件测试系统进行登记;其中一种反馈结果如图表5所示;表5.测试用例人工复验反馈(11)程序开发人员根据测试报告进行修改完善:a)程序开发人员根据软件测试人员复验的测试报告复验开发的程序代码;b)对于每一条不通过的测试用例和提供的风险分析报告、风险规避报告进行代码修改,避免存在的代码设计风险;c)对于每一条代码编程规范报告问题进行深入学习,修正代码,从而使得代码按照编程规范要求进行实现;d)重构实现后的代码重新提交给自动化软件测试系统进行重新测试;迭代上述的测试过程,直至达成所有的测试要求,不存在编程规范问题,不存在代码风险问题;(12)反馈修正人工智能模型:a)每完成一次软件测试过程,接收软件测试人员复验的测试报告结果,并对测试报告的人工复验结果进行人工智能语义分析,对于正确的测试反馈反馈通过,对于人工复验结果有异议的结果根据反馈意见进行进一步分析,结合编程语言规范进行修复完善;对于测试人员反馈测试结果不正确的模块,结合编程语言规范,寻求工作人员帮助,提供正确的测试用例反馈,然后通过人工智能模型对正确的测试用例进行学习扩展完善;b)对于每一次编程语言的技术升级、规范升级,通过专业的工作人员输入新升级的编程规范,通过训练学习修正现有的人工智能模型,融合新的技术和规范,进一步完善现有模型;c)对于每一个扩展的软件平台、硬件平台,可以通过专业的工作人员提供规范说明书输入到系统中进行自学习,完善现有的目标系统模型,从而实现对不同软硬件平台的支持;对于各个单位公司的特定编程规范要求,通过专业人工输入专业编程规范要求,通过训练学习修正现有的人工智能模型,融合新的技术和规范,进一步完善现有模型。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专利技术人员来说是显而易见的,本文中所定义的一般原理可以在不脱离本发明范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1