CN111400164A - 一种软件测试方法及装置 - Google Patents
一种软件测试方法及装置 Download PDFInfo
- Publication number
- CN111400164A CN111400164A CN202010082715.1A CN202010082715A CN111400164A CN 111400164 A CN111400164 A CN 111400164A CN 202010082715 A CN202010082715 A CN 202010082715A CN 111400164 A CN111400164 A CN 111400164A
- Authority
- CN
- China
- Prior art keywords
- code
- obtaining
- static
- test case
- unit
- 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.)
- Granted
Links
Images
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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- 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
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种软件测试方法,包括:获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的;获得针对所述被测软件***的测试用例与代码之间的对应关系;根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。采用所述方法,解决了被测软件***的源代码发生变更后的回归测试问题。
Description
技术领域
本申请涉及数据测试技术领域,具体涉及一种软件测试方法、装置及设备。
背景技术
随着业务变化或调整,软件***经常需要进行代码迭代。所谓代码迭代是指软件***的源代码发生变更,例如新增或者变更代码。迭代后的软件***需要进行回归测试以保证软件质量,需要进行测试或回归测试的软件***称为被测软件***。由于被测软件***规模日益庞大,功能越来越复杂,针对迭代后的被测软件***进行回归测试的难度也日趋增长。
目前,针对被测软件***进行回归测试,一种方案是全量回放测试,所谓全量回放测试方案包括:在迭代前被测软件***的实际运行环境中,采集实际运行数据作为测试用例;将所述测试用例,在针对迭代后的被测软件***搭建的测试环境中无筛选的全量回放。该方案测试覆盖范围接近***真实运行情况,但是由于不在本次迭代影响范围内的用例也会被执行,因此造成测试用例冗余和测试资源浪费。另一种回归测试方案,为根据参数类型和范围推荐用例,该方案相对于全量回放测试效率比较高,但是不能进行针对性测试,因此测试的准确度较低。
因此,被测软件***的源代码发生变更后如何准确、高效的回归测试是需要解决的问题。
发明内容
本申请实施例提供的软件测试方法,提供精准高效的测试方案,解决了被测软件***的源代码发生变更后的回归测试问题。
本申请实施例提供一种软件测试方法,包括:获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的;获得针对所述被测软件***的测试用例与代码之间的对应关系;根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。
可选的,所述静态影响面列表中的元素,为下述任一代码单元:被测软件***迭代后源代码变更的第一代码变更单元,以及依赖所述第一代码变更单元的第二代码变更单元;
可选的,所述获得针对被测软件***的代码迭代后的静态影响面列表,包括:获得所述第一代码变更单元;获得被测软件***迭代后源代码的静态代码依赖关系;根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表。
可选的,所述获得所述第一代码变更单元,包括:获得被测软件***迭代后源代码与迭代前源代码;根据所述迭代后源代码与迭代前源代码之间的差异信息,获得所述第一代码变更单元。
可选的,所述根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表,包括:遍历所述静态代码依赖关系,获得直接或间接依赖所述第一代码变更单元的第二变更单元;将所述第一代码变更单元、所述第二代码变更单元中的任一代码单元,作为元素获得所述静态影响面列表。
可选的,所述遍历所述静态代码依赖关系,获得直接或间接依赖所述第一代码变更单元的第二变更单元,包括:针对所述第一代码变更单元,查询所述静态代码依赖关系,获得直接依赖所述第一代码变更单元的代码单元,将所述代码单元作为第二代码变更单元;使用所述第二代码变更单元,查询所述静态代码依赖关系,获得依赖所述第二代码变更单元的代码单元,将所述代码单元作为间接依赖所述第一代码变更单元的第二代码变更单元。
可选的,所述根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表,包括:获得所述第一代码变更单元包含的在代码迭代中被变更的函数,将所述被变更的函数作为增量函数;针对所述增量函数,查询所述静态代码依赖关系,获得直接依赖所述增量函数的第一间接增量函数;针对所述第一间接增量函数,查询所述静态代码依赖关系,获得依赖所述第一间接增量函数的函数,将所述函数作为间接依赖所述增量函数的第二间接增量函数;将所述增量函数、所述第一间接增量函数、所述第二间接增量函数中的任一函数,作为元素获得所述静态影响面列表。
可选的,所述根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表,包括:获得所述第一代码变更单元包含的在代码迭代中被变更的特定类;针对所述被变更的特定类,查询所述静态代码依赖关系,获得直接依赖所述特定类的第一增量类;针对所述第一增量类,查询所述静态代码依赖关系,获得间接依赖所述第一增量类的第二增量类;将所述特定类、所述第一增量类、所述第二增量类中的任一类,作为元素获得所述静态影响面列表。
可选的,所述获得针对所述被测软件***的测试用例与代码之间的对应关系,包括:获得被测软件***线上运行数据,从所述线上运行数据中获得测试用例;运行对应迭代后源代码的被测软件***,在运行的***中执行所述测试用例,获得所述测试用例在执行过程中覆盖的代码单元;建立所述测试用例与所述覆盖的代码单元之间的对应关系,作为所述测试用例与代码之间的对应关系。
可选的,所述获得所述测试用例在执行过程中覆盖的代码单元,包括:获得所述执行过程中的函数调用链路;其中,所述函数调用链路,包含用于指示所述被测软件***源代码函数之间的动态调用关系的信息;根据所述函数调用链路,获得所述测试用例在执行过程中覆盖的代码单元。
可选的,所述根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例,包括:获得所述静态影响面列表中的每个元素;根据所述每个元素,查询所述测试用例与代码之间的对应关系,得到与每个元素对应的测试用例;将覆盖元素数量满足第一覆盖面阈值条件的测试用例作为推荐的测试用例。
可选的,还包括:将所述推荐的测试用例作为第一测试用例;在运行的被测软件***中执行所述第一测试用例,获得所述第一测试用例执行过程中覆盖的代码单元;其中,所述被测软件***为对应迭代后源代码的被测软件***;
从所述静态影响面列表中删除本次执行覆盖的代码单元对应的元素,获得更新后的静态影响面列表;根据更新后的静态影响面列表,以及所述测试用例与代码之间的对应关系,确定覆盖元素数量满足第二覆盖面阈值条件的测试用例,作为推荐的第二测试用例。
可选的,所述获得所述第一测试用例执行过程中覆盖的代码单元,包括:获得所述第一测试用例执行过程中的函数调用链路;根据所述函数调用链路,确定所述覆盖的代码单元。
可选的,所述代码单元,为类文件、单个代码文件、模块代码、组件代码、按特定条件组织的函数、以及单个函数中的任一种代码,或者,为上述任一种代码中的特定代码行。
本申请实施例还提供一种软件测试装置,包括:静态影响分析单元,用于获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的;代码覆盖分析单元,用于获得针对所述被测软件***的测试用例与代码之间的对应关系;测试单元,用于根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。
本申请实施例还提供一种电子设备,包括:存储器,以及处理器;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行本申请实施例提供的所述的软件测试方法。
本申请实施例还提供一种存储设备,存储有计算机程序,所述计算机程序被处理器运行后,执行本申请实施例提供的所述的软件测试方法。
与现有技术相比,本申请具有以下优点:
本申请实施例提供的软件测试方法、装置、设备,通过获得针对被测软件***的代码迭代后的静态影响面列表;获得针对所述被测软件***的测试用例与代码之间的对应关系;根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。由于结合了静态影响面列表,和所述测试用例与代码之间的对应关系,因而能够针对变更的代码进行精准的测试用例推荐。进一步,推荐满足第一覆盖面阈值条件的测试用例进行测试,从而不需要使用全量测试用例这对迭代后源代码进行回归测试,解决了被测软件***的源代码发生变更后的回归测试问题。
附图说明
图1是本申请第一实施例提供的软件测试方法的***架构示意图;
图2是本申请第一实施例提供的软件测试方法的处理流程图;
图3是本申请第一实施例提供的静态影响面分析流程图;
图4是本申请第一实施例提供的静态代码依赖关系示意图;
图5是本申请第一实施例提供的测试用例与代码对应关系分析流程图;
图6是本申请第二实施例提供的软件测试装置示意图;
图7是本申请提供的电子设备示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请实施例提供一种软件测试方法、装置、电子设备及存储设备。在下面的实施例中逐一进行详细说明。
为便于理解,首先给出一种软件测试方法的***架构。请参考图1,图1所示的***架构包括:代码迭代模块101,用于获得迭代内容,所述迭代内容为被测软件***迭代后源代码与迭代前源代码相比,被修改的代码。静态代码分析模块102,用于对被测软件***迭代后源代码进行静态代码检查分析,在不运行的情况下确定代码之间的调用关系或依赖关系,作为静态代码依赖关系。静态影响面确定模块103,根据迭代内容以及静态代码依赖关系,确定代码迭代对于被测软件***产生的影响范围,得到静态影响面列表。线上数据采集模块104,用于采集线上运行数据,从线上运行数据中可以提取测试用例。代码覆盖分析模块105,用于在迭代后的被测软件***运行中回放采集的线上运行数据,获得每个测试用例回放过程中执行到的代码的信息,作为代码覆盖信息。所谓回放,是指在迭代后的被测软件***运行中,执行由线上运行数据提取的测试用例。测试用例库106,用于根据所述代码覆盖信息,建立测试用例与代码之间的对应关系。测试用例筛选模块107,用于根据静态影响面列表以及测试用例与代码之间的对应关系,针对迭代后的被测软件***使用筛选算法获得推荐的测试用例。测试模块108,用于执行推荐的测试用例进行测试。所述筛选算法,包括:(1)根据静态影响面列表,以及所述测试用例与代码之间的对应关系,筛选代码覆盖满足特定阈值条件的测试用例作为推荐的测试用例;(2)执行所述推荐的测试用例后,从所述静态影响面列表中删除本次执行覆盖的代码;(3)重复执行(1)和(2),从而可以通过执行最少的测试用例,覆盖到最大的影响面。
以下结合图2至图5对本申请第一实施例提供的软件测试方法进行说明。
图2所示的软件测试方法,包括:步骤S201至步骤S203。
步骤S201,获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的。
所谓代码迭代,是以迭代前源代码为基础版本,进行代码变更得到迭代后源代码。由于被测软件***的迭代后源代码与迭代前源代码存在差异,因此需要进行回归测试。所述静态影响面列表具体可以根据被测软件***代码之间的调用关系图获得,所谓调用关系图是指代码之间的依赖或调用关系。所述静态影响面列表中的元素,为下述任一代码单元:被测软件***迭代后源代码变更的第一代码变更单元,以及依赖所述第一代码变更单元的第二代码变更单元。本实施例中,所述代码单元,为类文件、单个代码文件、模块代码、组件代码、按特定条件组织的函数、以及单个函数中的任一种代码,或者,为上述任一种代码中的特定代码行。本步骤具体包括下述处理获得针对被测软件***的代码迭代后的静态影响面列表:获得所述第一代码变更单元;获得被测软件***迭代后源代码的静态代码依赖关系;根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表。其中,可以通过下述处理获得所述第一代码变更单元,包括:获得被测软件***迭代后源代码与迭代前源代码;根据所述迭代后源代码与迭代前源代码之间的差异信息,获得所述第一代码变更单元。例如,可以通过代码库获取迭代后源代码与迭代前源代码的差异信息,包括新增的代码信息、被编辑的代码信息、删除的代码信息中的至少一种状态信息,所述至少一状态种信息可以包括类信息、函数信息、模块信息、组件信息、特定代码行信息中的至少一种内容。针对迭代后源代码在不运行代码的情况下进行静态代码检查分析,可以获得静态代码依赖关系。以面向对象语言编写的代码为例,静态代码依赖关系是被测软件***迭代后源代码中的每个类之间的依赖,例如类A方法b调用类B方法c,则类A依赖类B,如果类B方法c在代码迭代中被编辑了,则针对迭代后源代码的回归测试中需要回归测试类A。再如,类B的第3-4行代码调用了类A的第1-2行代码,类E的第9-10行调用了类B的第3-4行代码;则类B的第3-4行依赖类A的第1-2行,类E的第9-10行间接依赖类A的第1-2行。如果类A的第1-2行为迭代内容,则类B的第3-4行以及类E的第9-10行,属于迭代的静态影响面,需要被回归测试覆盖到。静态代码依赖关系也可以是基于API(Application Programming Interface,应用程序编程接口)的函数或类的方法之间的调用序列。本实施例中,通过下述处理获得所述静态影响面列表,包括:遍历所述静态代码依赖关系,获得直接或间接依赖所述第一代码变更单元的第二变更单元;将所述第一代码变更单元、所述第二代码变更单元中的任一代码单元,作为元素获得所述静态影响面列表。具体包括:针对所述第一代码变更单元,查询所述静态代码依赖关系,获得直接依赖所述第一代码变更单元的代码单元,将所述代码单元作为第二代码变更单元;使用所述第二代码变更单元,查询所述静态代码依赖关系,获得依赖所述第二代码变更单元的代码单元,将所述代码单元作为间接依赖所述第一代码变更单元的第二代码变更单元。逐层获得各间接依赖第一代码变更单元的第二代码变更单元。一个实施方式中,被测软件***源代码为面向对象语言编写,代码单元可以是类,也可以是类的方法或者类的特定代码行。具体通过下述处理获得所述静态影响面列表,包括:获得所述第一代码变更单元包含的在代码迭代中被变更的特定类;针对所述被变更的特定类,查询所述静态代码依赖关系,获得直接依赖所述特定类的第一增量类;针对所述第一增量类,查询所述静态代码依赖关系,获得间接依赖所述第一增量类的第二增量类;将所述特定类、所述第一增量类、所述第二增量类中的任一类,作为元素获得所述静态影响面列表。请参考图3,图中示出了静态影响面分析流程,包括:S301,获取迭代内容。具体的,根据迭代后源代码与迭代前源代码之间的差异获取迭代内容。例如:A.class[l1-l2],即类A的类文件中第1-2行进行了修改。迭代内容为第一增量类。S302,获得基于迭代内容的静态代码依赖关系。具体的,针对迭代后源代码进行静态代码检查分析,得到所述静态代码依赖关系。例如,得到的静态代码依赖关系为以类文件为节点的网状调用关系,每个节点是类文件中的特定代码行。再如,一个静态代码依赖关系的例子包括:B.class[l3-l4]调用A.class[l1-l2];E.class[l9-l10]调用B.class[l3-l4];C.class[l5-l6]调用A.class[l1-l2];E.class[l11-l12]调用C.class[l5-l6]。当然,每个节点也可以是类文件、单个代码文件、模块代码文件、组件代码文件、函数、以特定方式组织的多个函数中的任一形式代码段,或者上述任一代码段中的特定行。请参考图4,图中示出了一种网状的静态代码依赖关系,包括:A.class[l1-l2]401:为一个代码单元,该代码单元为包括迭代内容,即被修改的代码行,包括A类文件的第1-2行;B.class[l3-l4]402:为一个代码单元,该代码单元包括B类文件第3-4行,直接依赖A.class[l1-l2];C.class[l5-l6]403:为一个代码单元,包括C类文件第5-6行,直接依赖A.class[l1-l2];D.class[l7-l8]404:为一个代码单元,包括D类文件第7-8行,直接依赖A.class[l1-l2]。A.class[l1-l2]为第一增量类,B.class[l3-l4]、C.class[l5-l6]、D.class[l7-l8]为直接依赖第一增量类的第二增量类。E.class[l9-l10],[l11-l12]405为一个代码单元,该代码单元中,E.class[l9-l10]调用B.class[l3-l4],E.class[l11-l12]调用C.class[l5-l6]。E.class[l9-l10],[l11-l12]为间接依赖第一增量类的第二增量类。F.class[l13-l14]406调用B.class[l3-l4],为第二增量类。G.class[l15-l16]407调用D.class[l7-l8],为第二增量类。S303,确定静态影响面列表。具体的,将迭代内容影响到的代码单元作为元素得到静态影响面列表。例如,图中得到的静态影响面列表包括:A.class[l1-l2];B.class[l3-l4];C.class[l5-l6];D.class[l7-l8];E.class[l9-l10],[l11-l12]。另一个实施方式中,代码单元为函数,具体包括下述处理获得所述静态影响面列表:获得所述第一代码变更单元包含的在代码迭代中被变更的函数,将所述被变更的函数作为增量函数;针对所述增量函数,查询所述静态代码依赖关系,获得直接依赖所述增量函数的第一间接增量函数;针对所述第一间接增量函数,查询所述静态代码依赖关系,获得依赖所述第一间接增量函数的函数,将所述函数作为间接依赖所述增量函数的第二间接增量函数;将所述增量函数、所述第一间接增量函数、所述第二间接增量函数中的任一函数,作为元素获得所述静态影响面列表。
步骤S202,获得针对所述被测软件***的测试用例与代码之间的对应关系。
本实施例中,通过测试用例与代码之间的对应关系包含每个测试用例的代码覆盖信息。所谓每个测试用例的代码覆盖信息,是指在被测软件***中运行测试用例,能够执行到的代码。本步骤具体通过下述处理获得针对所述被测软件***的测试用例与代码之间的对应关系,包括:获得被测软件***线上运行数据,从所述线上运行数据中获得测试用例;运行对应迭代后源代码的被测软件***,在运行的***中执行所述测试用例,获得所述测试用例在执行过程中覆盖的代码单元;建立所述测试用例与所述覆盖的代码单元之间的对应关系,作为所述测试用例与代码之间的对应关系。一个实施方式中,通过下述处理获得所述测试用例在执行过程中覆盖的代码单元:获得所述执行过程中的函数调用链路;其中,所述函数调用链路,包含用于指示所述被测软件***源代码函数之间的动态调用关系的信息;根据所述函数调用链路,获得所述测试用例在执行过程中覆盖的代码单元。实际应用中,也可以从存储有测试用例与代码之间的对应关系测试用例库获得所述对应关系。请参考图5,图中示出了测试用例与代码对应关系分析流程,包括:S501,线上数据采集;从采集到的线上运行数据中提取测试用例。例如:提取测试用例1。S502,测试用例回放,将步骤S501得到的测试用例在测试环境中进行回放。所谓回放,是指重新执行测试用例数据。例如:运行迭代后源代码对应的被测软件***,执行测试用例1。S503,记录测试用例回放过程执行到的代码,例如:测试用例1执行的代码片段包括:代码单元A.class[l1-l2],即类A第1-2行;代码单元B.class[l3-l4],即类B第3-4行;代码单元F.class[l13-l14],即类F第13-14行。S504,建立测试用例与代码之间的对应关系。例如:A.class[l1-l2]对应测试用例1和2;B.class[l3-l4]对应测试用例2和3;进一步,可以将所述对应关系记录到测试用例库中。
步骤S203,根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。
本实施例中,结合静态影响面分析与代码覆盖面分析确定测试用例以及测试方案。本步骤包括下述处理以获得针对被测软件***迭代后推荐的测试用例:获得所述静态影响面列表中的每个元素;根据所述每个元素,查询所述测试用例与代码之间的对应关系,得到与每个元素对应的测试用例;将覆盖元素数量满足第一覆盖面阈值条件的测试用例作为推荐的测试用例。进一步,通过测试用例筛选算法逐步选择覆盖面最合适的测试用例进行测试。具体的,还包括下述处理:将所述推荐的测试用例作为第一测试用例;在运行的被测软件***中执行所述第一测试用例,获得所述第一测试用例执行过程中覆盖的代码单元;其中,所述被测软件***为对应迭代后源代码的被测软件***;从所述静态影响面列表中删除本次执行覆盖的代码单元对应的元素,获得更新后的静态影响面列表;根据更新后的静态影响面列表,以及所述测试用例与代码之间的对应关系,确定覆盖元素数量满足第二覆盖面阈值条件的测试用例,作为推荐的第二测试用例。重复执行:将覆盖元素数量满足第一覆盖面阈值条件的测试用例作为推荐的测试用例;执行所述推荐的测试用例后,从所述静态影响面列表中删除本次执行覆盖的代码得到新的静态影响面列表。从而可以通过执行最少的测试用例,覆盖到最大的影响面,提高回归测试的效率。并且,针对迭代内容推荐测试用例,相比于根据参数类型和范围推荐用例,能得到更为精准的测试用例,从而提高回归测试的准确度。其中,可以具体通过下述处理获得所述第一测试用例执行过程中覆盖的代码单元:获得所述第一测试用例执行过程中的函数调用链路;根据所述函数调用链路,确定所述覆盖的代码单元。
至此,对本实施例提供的软件测试方法进行了详细说明,所述方法通过获得针对被测软件***的代码迭代后的静态影响面列表;获得针对所述被测软件***的测试用例与代码之间的对应关系;根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。由于结合了静态影响面列表,和所述测试用例与代码之间的对应关系,能够针对变更的代码进行精准的测试用例推荐,进一步,推荐满足第一覆盖面阈值条件的测试用例进行测试,从而不需要使用全量测试用例这对迭代后源代码进行回归测试,解决了被测软件***的源代码发生变更后的回归测试问题。
与第一实施例对应,本申请第二实施例提供一种软件测试装置。以下结合图6对第二实施例提供的装置进行说明。图6所示的软件测试装置,包括:
静态影响分析单元601,用于获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的;
代码覆盖分析单元602,用于获得针对所述被测软件***的测试用例与代码之间的对应关系;
测试单元603,用于根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。
可选的,所述静态影响面列表中的元素,为下述任一代码单元:被测软件***迭代后源代码变更的第一代码变更单元,以及依赖所述第一代码变更单元的第二代码变更单元。
可选的,所述静态影响分析单元601具体用于:获得所述第一代码变更单元;获得被测软件***迭代后源代码的静态代码依赖关系;根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表。
可选的,所述静态影响分析单元601具体用于:获得被测软件***迭代后源代码与迭代前源代码;根据所述迭代后源代码与迭代前源代码之间的差异信息,获得所述第一代码变更单元。
可选的,所述静态影响分析单元601具体用于:遍历所述静态代码依赖关系,获得直接或间接依赖所述第一代码变更单元的第二变更单元;将所述第一代码变更单元、所述第二代码变更单元中的任一代码单元,作为元素获得所述静态影响面列表。
可选的,所述静态影响分析单元601具体用于:针对所述第一代码变更单元,查询所述静态代码依赖关系,获得直接依赖所述第一代码变更单元的代码单元,将所述代码单元作为第二代码变更单元;使用所述第二代码变更单元,查询所述静态代码依赖关系,获得依赖所述第二代码变更单元的代码单元,将所述代码单元作为间接依赖所述第一代码变更单元的第二代码变更单元。
可选的,所述静态影响分析单元601具体用于:获得所述第一代码变更单元包含的在代码迭代中被变更的函数,将所述被变更的函数作为增量函数;针对所述增量函数,查询所述静态代码依赖关系,获得直接依赖所述增量函数的第一间接增量函数;针对所述第一间接增量函数,查询所述静态代码依赖关系,获得依赖所述第一间接增量函数的函数,将所述函数作为间接依赖所述增量函数的第二间接增量函数;将所述增量函数、所述第一间接增量函数、所述第二间接增量函数中的任一函数,作为元素获得所述静态影响面列表。
可选的,所述静态影响分析单元601具体用于:获得所述第一代码变更单元包含的在代码迭代中被变更的特定类;针对所述被变更的特定类,查询所述静态代码依赖关系,获得直接依赖所述特定类的第一增量类;针对所述第一增量类,查询所述静态代码依赖关系,获得间接依赖所述第一增量类的第二增量类;将所述特定类、所述第一增量类、所述第二增量类中的任一类,作为元素获得所述静态影响面列表。
可选的,所述代码覆盖分析单元602具体用于:获得被测软件***线上运行数据,从所述线上运行数据中获得测试用例;运行对应迭代后源代码的被测软件***,在运行的***中执行所述测试用例,获得所述测试用例在执行过程中覆盖的代码单元;建立所述测试用例与所述覆盖的代码单元之间的对应关系,作为所述测试用例与代码之间的对应关系。
可选的,所述代码覆盖分析单元602具体用于:获得所述执行过程中的函数调用链路;其中,所述函数调用链路,包含用于指示所述被测软件***源代码函数之间的动态调用关系的信息;根据所述函数调用链路,获得所述测试用例在执行过程中覆盖的代码单元。
可选的,所述测试单元603具体用于:获得所述静态影响面列表中的每个元素;根据所述每个元素,查询所述测试用例与代码之间的对应关系,得到与每个元素对应的测试用例;将覆盖元素数量满足第一覆盖面阈值条件的测试用例作为推荐的测试用例。
可选的,所述测试单元603还用于:将所述推荐的测试用例作为第一测试用例;在运行的被测软件***中执行所述第一测试用例,获得所述第一测试用例执行过程中覆盖的代码单元;其中,所述被测软件***为对应迭代后源代码的被测软件***;从所述静态影响面列表中删除本次执行覆盖的代码单元对应的元素,获得更新后的静态影响面列表;根据更新后的静态影响面列表,以及所述测试用例与代码之间的对应关系,确定覆盖元素数量满足第二覆盖面阈值条件的测试用例,作为推荐的第二测试用例。
可选的,所述测试单元603具体用于:获得所述第一测试用例执行过程中的函数调用链路;根据所述函数调用链路,确定所述覆盖的代码单元。
可选的,所述代码单元,为类文件、单个代码文件、模块代码、组件代码、按特定条件组织的函数、以及单个函数中的任一种代码,或者,为上述任一种代码中的特定代码行。
至此,对本实施例提供的软件测试装置进行了详细说明,所述装置通过获得针对被测软件***的代码迭代后的静态影响面列表;获得针对所述被测软件***的测试用例与代码之间的对应关系;根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。由于结合了静态影响面列表,和所述测试用例与代码之间的对应关系,因而能够针对变更的代码进行精准的测试用例推荐,进一步,推荐满足第一覆盖面阈值条件的测试用例进行测试,从而不需要使用全量测试用例这对迭代后源代码进行回归测试,解决了被测软件***的源代码发生变更后的回归测试问题。
与第一实施例相对应,本申请第三实施例提供一种电子设备。图7为所述电子设备的示意图,所述电子设备,包括:存储器701,以及处理器702;所述存储器用于存储计算机程序,所述计算机程序被所述处理器运行后,执行本申请实施例提供的软件测试方法。其中,所述处理器用于执行下述计算机可执行指令:获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的;获得针对所述被测软件***的测试用例与代码之间的对应关系;根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。
可选的,所述静态影响面列表中的元素,为下述任一代码单元:被测软件***迭代后源代码变更的第一代码变更单元,以及依赖所述第一代码变更单元的第二代码变更单元。
可选的,所述处理器还用于执行下述计算机可执行指令:获得所述第一代码变更单元;获得被测软件***迭代后源代码的静态代码依赖关系;根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表。
可选的,所述处理器还用于执行下述计算机可执行指令:获得被测软件***迭代后源代码与迭代前源代码;根据所述迭代后源代码与迭代前源代码之间的差异信息,获得所述第一代码变更单元。
可选的,所述处理器还用于执行下述计算机可执行指令:遍历所述静态代码依赖关系,获得直接或间接依赖所述第一代码变更单元的第二变更单元;将所述第一代码变更单元、所述第二代码变更单元中的任一代码单元,作为元素获得所述静态影响面列表。
可选的,所述处理器还用于执行下述计算机可执行指令:针对所述第一代码变更单元,查询所述静态代码依赖关系,获得直接依赖所述第一代码变更单元的代码单元,将所述代码单元作为第二代码变更单元;使用所述第二代码变更单元,查询所述静态代码依赖关系,获得依赖所述第二代码变更单元的代码单元,将所述代码单元作为间接依赖所述第一代码变更单元的第二代码变更单元。
可选的,所述处理器还用于执行下述计算机可执行指令:获得所述第一代码变更单元包含的在代码迭代中被变更的函数,将所述被变更的函数作为增量函数;针对所述增量函数,查询所述静态代码依赖关系,获得直接依赖所述增量函数的第一间接增量函数;针对所述第一间接增量函数,查询所述静态代码依赖关系,获得依赖所述第一间接增量函数的函数,将所述函数作为间接依赖所述增量函数的第二间接增量函数;将所述增量函数、所述第一间接增量函数、所述第二间接增量函数中的任一函数,作为元素获得所述静态影响面列表。
可选的,所述处理器还用于执行下述计算机可执行指令:获得所述第一代码变更单元包含的在代码迭代中被变更的特定类;针对所述被变更的特定类,查询所述静态代码依赖关系,获得直接依赖所述特定类的第一增量类;针对所述第一增量类,查询所述静态代码依赖关系,获得间接依赖所述第一增量类的第二增量类;将所述特定类、所述第一增量类、所述第二增量类中的任一类,作为元素获得所述静态影响面列表。
可选的,所述处理器还用于执行下述计算机可执行指令:获得被测软件***线上运行数据,从所述线上运行数据中获得测试用例;运行对应迭代后源代码的被测软件***,在运行的***中执行所述测试用例,获得所述测试用例在执行过程中覆盖的代码单元;建立所述测试用例与所述覆盖的代码单元之间的对应关系,作为所述测试用例与代码之间的对应关系。
可选的,所述处理器还用于执行下述计算机可执行指令:获得所述执行过程中的函数调用链路;其中,所述函数调用链路,包含用于指示所述被测软件***源代码函数之间的动态调用关系的信息;根据所述函数调用链路,获得所述测试用例在执行过程中覆盖的代码单元。
可选的,所述处理器还用于执行下述计算机可执行指令:获得所述静态影响面列表中的每个元素;根据所述每个元素,查询所述测试用例与代码之间的对应关系,得到与每个元素对应的测试用例;将覆盖元素数量满足第一覆盖面阈值条件的测试用例作为推荐的测试用例。
可选的,所述处理器还用于执行下述计算机可执行指令:将所述推荐的测试用例作为第一测试用例;在运行的被测软件***中执行所述第一测试用例,获得所述第一测试用例执行过程中覆盖的代码单元;其中,所述被测软件***为对应迭代后源代码的被测软件***;从所述静态影响面列表中删除本次执行覆盖的代码单元对应的元素,获得更新后的静态影响面列表;根据更新后的静态影响面列表,以及所述测试用例与代码之间的对应关系,确定覆盖元素数量满足第二覆盖面阈值条件的测试用例,作为推荐的第二测试用例。
可选的,所述处理器还用于执行下述计算机可执行指令:获得所述第一测试用例执行过程中的函数调用链路;根据所述函数调用链路,确定所述覆盖的代码单元。
可选的,所述代码单元,为类文件、单个代码文件、模块代码、组件代码、按特定条件组织的函数、以及单个函数中的任一种代码,或者,为上述任一种代码中的特定代码行。
至此,对本实施例提供的用于所述软件测试方法的电子设备进行了说明,所述电子设备执行用于所述软件测试方法的指令,结合了静态影响面列表,和所述测试用例与代码之间的对应关系,因而能够针对变更的代码进行精准的测试用例推荐,进一步,推荐满足第一覆盖面阈值条件的测试用例进行测试,从而不需要使用全量测试用例这对迭代后源代码进行回归测试,解决了被测软件***的源代码发生变更后的回归测试问题。
与第一实施例对应,本申请第四实施例提供一种存储设备,相关的部分请参见上述实施例的对应说明即可。所述存储设备的示意图类似图6。所述存储设备存储有计算机程序,所述计算机程序被处理器运行后,执行本申请实施例提供的软件测试方法。所述计算机程序被处理器运行后,包括执行以下步骤:获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的;获得针对所述被测软件***的测试用例与代码之间的对应关系;根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。
至此,对本实施例提供的用于所述软件测试方法的存储设备进行了说明,所述存储设备存储的计算机程序被处理器运行后,结合了静态影响面列表,和所述测试用例与代码之间的对应关系,因而能够针对变更的代码进行精准的测试用例推荐,进一步,推荐满足第一覆盖面阈值条件的测试用例进行测试,从而不需要使用全量测试用例这对迭代后源代码进行回归测试,解决了被测软件***的源代码发生变更后的回归测试问题。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
Claims (10)
1.一种软件测试方法,其特征在于,包括:
获得针对被测软件***的代码迭代后的静态影响面列表;静态影响面列表是根据代码之间的调用关系图获得的;
获得针对所述被测软件***的测试用例与代码之间的对应关系;
根据所述静态影响面列表,以及所述测试用例与代码之间的对应关系,获得针对被测软件***迭代后推荐的测试用例。
2.根据权利要求1所述的方法,其特征在于,所述静态影响面列表中的元素,为下述任一代码单元:被测软件***迭代后源代码变更的第一代码变更单元,以及依赖所述第一代码变更单元的第二代码变更单元。
3.根据权利要求2所述的方法,其特征在于,所述获得针对被测软件***的代码迭代后的静态影响面列表,包括:
获得所述第一代码变更单元;
获得被测软件***迭代后源代码的静态代码依赖关系;
根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表。
4.根据权利要求3所述的方法,其特征在于,所述获得所述第一代码变更单元,包括:
获得被测软件***迭代后源代码与迭代前源代码;
根据所述迭代后源代码与迭代前源代码之间的差异信息,获得所述第一代码变更单元。
5.根据权利要求3所述的方法,其特征在于,所述根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表,包括:
遍历所述静态代码依赖关系,获得直接或间接依赖所述第一代码变更单元的第二变更单元;
将所述第一代码变更单元、所述第二代码变更单元中的任一代码单元,作为元素获得所述静态影响面列表。
6.根据权利要求5所述的方法,其特征在于,所述遍历所述静态代码依赖关系,获得直接或间接依赖所述第一代码变更单元的第二变更单元,包括:
针对所述第一代码变更单元,查询所述静态代码依赖关系,获得直接依赖所述第一代码变更单元的代码单元,将所述代码单元作为第二代码变更单元;
使用所述第二代码变更单元,查询所述静态代码依赖关系,获得依赖所述第二代码变更单元的代码单元,将所述代码单元作为间接依赖所述第一代码变更单元的第二代码变更单元。
7.根据权利要求3所述的方法,其特征在于,所述根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表,包括:
获得所述第一代码变更单元包含的在代码迭代中被变更的函数,将所述被变更的函数作为增量函数;
针对所述增量函数,查询所述静态代码依赖关系,获得直接依赖所述增量函数的第一间接增量函数;
针对所述第一间接增量函数,查询所述静态代码依赖关系,获得依赖所述第一间接增量函数的函数,将所述函数作为间接依赖所述增量函数的第二间接增量函数;
将所述增量函数、所述第一间接增量函数、所述第二间接增量函数中的任一函数,作为元素获得所述静态影响面列表。
8.根据权利要求3所述的方法,其特征在于,所述根据所述第一代码变更单元,以及所述静态代码依赖关系,获得所述静态影响面列表,包括:
获得所述第一代码变更单元包含的在代码迭代中被变更的特定类;
针对所述被变更的特定类,查询所述静态代码依赖关系,获得直接依赖所述特定类的第一增量类;
针对所述第一增量类,查询所述静态代码依赖关系,获得间接依赖所述第一增量类的第二增量类;
将所述特定类、所述第一增量类、所述第二增量类中的任一类,作为元素获得所述静态影响面列表。
9.根据权利要求1所述的方法,其特征在于,所述获得针对所述被测软件***的测试用例与代码之间的对应关系,包括:
获得被测软件***线上运行数据,从所述线上运行数据中获得测试用例;
运行对应迭代后源代码的被测软件***,在运行的***中执行所述测试用例,获得所述测试用例在执行过程中覆盖的代码单元;
建立所述测试用例与所述覆盖的代码单元之间的对应关系,作为所述测试用例与代码之间的对应关系。
10.根据权利要求9所述的方法,其特征在于,所述获得所述测试用例在执行过程中覆盖的代码单元,包括:
获得所述执行过程中的函数调用链路;其中,所述函数调用链路,包含用于指示所述被测软件***源代码函数之间的动态调用关系的信息;
根据所述函数调用链路,获得所述测试用例在执行过程中覆盖的代码单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010082715.1A CN111400164B (zh) | 2020-02-07 | 2020-02-07 | 一种软件测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010082715.1A CN111400164B (zh) | 2020-02-07 | 2020-02-07 | 一种软件测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111400164A true CN111400164A (zh) | 2020-07-10 |
CN111400164B CN111400164B (zh) | 2023-05-26 |
Family
ID=71434291
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010082715.1A Active CN111400164B (zh) | 2020-02-07 | 2020-02-07 | 一种软件测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400164B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131114A (zh) * | 2020-09-23 | 2020-12-25 | 北京达佳互联信息技术有限公司 | 应用的测试方法、装置、设备及存储介质 |
CN112380125A (zh) * | 2020-11-16 | 2021-02-19 | 中信银行股份有限公司 | 测试案例的推荐方法、装置、电子设备及可读存储介质 |
CN112596738A (zh) * | 2020-12-28 | 2021-04-02 | 北京字跳网络技术有限公司 | 待测试前端页面的确定方法、装置、存储介质及电子设备 |
WO2024109007A1 (zh) * | 2022-11-23 | 2024-05-30 | 华为云计算技术有限公司 | 一种回归测试方法及相关*** |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678097A (zh) * | 2012-09-05 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种选择回归测试用例的方法和装置 |
US20160291970A1 (en) * | 2015-03-31 | 2016-10-06 | Ca, Inc. | Effective Defect Management Across Multiple Code Branches |
US20170060734A1 (en) * | 2015-08-30 | 2017-03-02 | International Business Machines Corporation | Method and system for creating functional model of test cases |
US20170132119A1 (en) * | 2015-09-25 | 2017-05-11 | EMC IP Holding Company LLC | Method and device for retrieving test case based on code coverage |
CN107193739A (zh) * | 2017-05-23 | 2017-09-22 | 张泽祎 | 一种黑盒回归测试方法 |
CN107423214A (zh) * | 2017-04-18 | 2017-12-01 | 恒生电子股份有限公司 | 软件回归测试用例获取方法、装置及存储介质和电子设备 |
US10146676B1 (en) * | 2015-06-26 | 2018-12-04 | Twitter, Inc. | Multi-version regression tester for source code |
CN109783387A (zh) * | 2019-01-18 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 穿线测试方法、装置、计算机设备及存储介质 |
CN109902002A (zh) * | 2019-02-14 | 2019-06-18 | 浙江口碑网络技术有限公司 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
CN110334011A (zh) * | 2019-05-31 | 2019-10-15 | 浙江口碑网络技术有限公司 | 一种执行测试用例的方法及装置 |
CN110413506A (zh) * | 2019-06-19 | 2019-11-05 | 平安普惠企业管理有限公司 | 测试用例推荐方法、装置、设备及存储介质 |
CN110554954A (zh) * | 2019-07-19 | 2019-12-10 | 中国科学院软件研究所 | 一种结合静态依赖和动态执行规则的测试用例选择方法 |
-
2020
- 2020-02-07 CN CN202010082715.1A patent/CN111400164B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103678097A (zh) * | 2012-09-05 | 2014-03-26 | 百度在线网络技术(北京)有限公司 | 一种选择回归测试用例的方法和装置 |
US20160291970A1 (en) * | 2015-03-31 | 2016-10-06 | Ca, Inc. | Effective Defect Management Across Multiple Code Branches |
US10146676B1 (en) * | 2015-06-26 | 2018-12-04 | Twitter, Inc. | Multi-version regression tester for source code |
US20170060734A1 (en) * | 2015-08-30 | 2017-03-02 | International Business Machines Corporation | Method and system for creating functional model of test cases |
US20170132119A1 (en) * | 2015-09-25 | 2017-05-11 | EMC IP Holding Company LLC | Method and device for retrieving test case based on code coverage |
CN107423214A (zh) * | 2017-04-18 | 2017-12-01 | 恒生电子股份有限公司 | 软件回归测试用例获取方法、装置及存储介质和电子设备 |
CN107193739A (zh) * | 2017-05-23 | 2017-09-22 | 张泽祎 | 一种黑盒回归测试方法 |
CN109783387A (zh) * | 2019-01-18 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 穿线测试方法、装置、计算机设备及存储介质 |
CN109902002A (zh) * | 2019-02-14 | 2019-06-18 | 浙江口碑网络技术有限公司 | 组合测试用例的生成方法及装置、存储介质、计算机设备 |
CN110334011A (zh) * | 2019-05-31 | 2019-10-15 | 浙江口碑网络技术有限公司 | 一种执行测试用例的方法及装置 |
CN110413506A (zh) * | 2019-06-19 | 2019-11-05 | 平安普惠企业管理有限公司 | 测试用例推荐方法、装置、设备及存储介质 |
CN110554954A (zh) * | 2019-07-19 | 2019-12-10 | 中国科学院软件研究所 | 一种结合静态依赖和动态执行规则的测试用例选择方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112131114A (zh) * | 2020-09-23 | 2020-12-25 | 北京达佳互联信息技术有限公司 | 应用的测试方法、装置、设备及存储介质 |
CN112380125A (zh) * | 2020-11-16 | 2021-02-19 | 中信银行股份有限公司 | 测试案例的推荐方法、装置、电子设备及可读存储介质 |
CN112380125B (zh) * | 2020-11-16 | 2024-04-26 | 中信银行股份有限公司 | 测试案例的推荐方法、装置、电子设备及可读存储介质 |
CN112596738A (zh) * | 2020-12-28 | 2021-04-02 | 北京字跳网络技术有限公司 | 待测试前端页面的确定方法、装置、存储介质及电子设备 |
WO2024109007A1 (zh) * | 2022-11-23 | 2024-05-30 | 华为云计算技术有限公司 | 一种回归测试方法及相关*** |
Also Published As
Publication number | Publication date |
---|---|
CN111400164B (zh) | 2023-05-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111400164B (zh) | 一种软件测试方法及装置 | |
JP5933762B2 (ja) | コード網羅率決定方法およびシステム | |
US8627296B1 (en) | Unified unit and integration test with automatic mock creation | |
US8769504B2 (en) | Method and apparatus for dynamically instrumenting a program | |
CN111881012A (zh) | 一种日志记录方法、装置、设备及存储介质 | |
CN111767076A (zh) | 代码重构方法及装置 | |
CN111897711B (zh) | 代码中bug的定位方法、装置、电子设备及可读存储介质 | |
CN110334012B (zh) | 一种风险评估方法及装置 | |
WO2015003452A1 (en) | Methods and systems for file processing | |
US20150020056A1 (en) | Methods and systems for file processing | |
US8291383B1 (en) | Code analysis via dual branch exploration | |
CN110147313B (zh) | 一种日志输出方法及装置 | |
CN116893960A (zh) | 代码质量检测方法、装置、计算机设备和存储介质 | |
CN111435327B (zh) | 一种日志记录的处理方法、装置及*** | |
CN111240987A (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN115827028A (zh) | ***的升级方法、装置、存储介质以及电子设备 | |
CN110968500A (zh) | 一种测试用例的执行方法及装置 | |
CN113821193B (zh) | 一种信息生成的方法、装置和存储介质 | |
US11714618B2 (en) | Streaming compiler for automatic adjoint differentiation | |
CN108958658B (zh) | 一种目标数据的获取方法及装置 | |
CN107229564B (zh) | 一种压力模拟方法及装置 | |
JP2017041196A (ja) | スタブ化対象判定装置、方法、及びプログラム | |
Ivankovic et al. | Productive Coverage: Improving the Actionability of Code Coverage | |
CN116303026B (zh) | 一种基于演进历史的软件架构腐化预测方法、装置及设备 | |
CN113495728B (zh) | 依赖关系确定方法、装置、电子设备及介质 |
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 |