CN114064497A - 应用程序测试方法、装置、计算机设备及存储介质 - Google Patents
应用程序测试方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN114064497A CN114064497A CN202111386205.4A CN202111386205A CN114064497A CN 114064497 A CN114064497 A CN 114064497A CN 202111386205 A CN202111386205 A CN 202111386205A CN 114064497 A CN114064497 A CN 114064497A
- Authority
- CN
- China
- Prior art keywords
- test case
- code
- test
- application program
- target
- 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
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/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
- 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
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)
- Debugging And Monitoring (AREA)
Abstract
本申请为测试用例技术领域,本申请提供了一种应用程序测试方法、装置、计算机设备及存储介质,其中,方法包括:利用获取的测试用例集的每个测试用例依序对应用程序进行测试,计算每个测试用例在对应用程序测试时的代码覆盖率,从测试用例集中筛选出代码覆盖率低于预设覆盖率的第一测试用例,确定每个第一测试用例与调用的代码的分布关系,汇集所有第一测试用例与代码的分布关系,得到总分布关系,基于总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码,根据目标代码调整测试用例集的第一测试用例作为目标测试用例,利用目标测试用例对应用程序进行重新测试,得到测试结果,以避免漏测的发生,提高应用程序测试的准确性。
Description
技术领域
本申请涉及测试用例技术领域,具体而言,本申请涉及一种应用程序测试方法、装置、计算机设备及存储介质。
背景技术
当前应用程序的测试流程总体来说,一般是根据需求和设计制定测试计划,编写测试应用程序的测试用例,但是对于需求和设计的理解,每个人的理解不尽相同,这就导致测试用例的设计很难做到面面俱到,往往会存在一些漏测,导致应用程序测试的准确性较低。
发明内容
本申请的主要目的为提供一种应用程序测试方法、装置、计算机设备及存储介质,以提高应用程序测试的准确性。
为了实现上述发明目的,本申请提供一种应用程序测试方法,其包括以下步骤:
获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
确定每个所述第一测试用例与调用的代码的分布关系;
汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
优选地,所述根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例,包括:
确定所述测试用例集中与所述目标代码相关的第一测试用例,得到第二测试用例;
获取所述第二测试用例的源代码;
将所述源代码与所述目标代码进行比对,得到代码差异信息;
根据所述第二测试用例的分布关系及所述代码差异信息对所述第二测试用例的源代码进行调整,得到目标测试用例。
优选地,所述代码差异信息包括增量信息,所述根据所述第二测试用例的分布关系及所述代码差异信息对所述第二测试用例的源代码进行调整,得到目标测试用例,包括:
根据所述代码差异信息的增量信息确定所述增量信息所在的方法信息;
根据所述方法信息递归查询出调用所述方法信息的第一方法信息,将最后递归查询到的第一方法信息作为目标方法信息;其中,所述目标方法信息用于表征所述应用程序的当前版本与上次版本的新增内容的影响范围;
根据所述分布关系和所述目标方法信息确定必须调整的第二测试用例,对所述必须调整的第二测试用例进行调整后,得到目标测试用例。
进一步地,所述利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果之后,还包括:
获取所述应用程序的变更代码;
确定所述目标测试用例对所述变更代码的增量覆盖率,其中,所述增量覆盖率表示所述应用程序执行所述目标测试用例时对所述变更代码的覆盖率;
判断所述增量覆盖率是否大于预设增量覆盖率;
若是,则将所述目标测试用例添加至预先构建的用例库。
进一步地,所述将所述目标测试用例添加至预先构建的用例库之后,还包括:
响应于用户的测试用例的推荐请求,从所述推荐请求中获取代码变更信息;其中,所述代码变更信息包括代码变更文件号和代码变更行号;
从所述用例库中筛选出与所述代码变更信息相对应的目标测试用例,得到待推荐测试用例;
将所述待推荐测试用例发送给所述用户。
优选地,所述将所述待推荐测试用例发送给所述用户,包括:
当检测到有多个所述待推荐测试用例时,获取每个所述待推荐测试用例的代码覆盖率;
按照代码覆盖率从高到低的顺序对所有所述待推荐测试用例进行排序,得到排序结果;
根据所述排序结果将排序第一的代码覆盖率作为目标代码覆盖率;
将所述目标代码覆盖率对应的待推荐测试用例推荐给所述用户。
优选地,所述计算每个测试用例在对所述应用程序测试时的代码覆盖率,包括:
在所述应用程序根据每个测试用例加载应用程序的代码时,确定所述应用程序的待加载class文件;
对所述待加载class文件进行字节码修改,以得到修改后的所述应用程序的待执行class文件;
通过所述待执行class文件获取已执行代码;
根据所述已执行代码统计所述测试用例的代码覆盖率。
本申请还提供一种应用程序测试装置,其包括:
获取模块,用于获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
计算模块,用于计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
第一筛选模块,用于当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
确定模块,用于确定每个所述第一测试用例与调用的代码的分布关系;
汇集模块,用于汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
第二筛选模块,用于基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
调整模块,用于根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
重新测试模块,用于利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述任一项所述方法的步骤。
本申请所提供的一种应用程序测试方法、装置、计算机设备及存储介质,利用获取的测试用例集的每个测试用例依序对应用程序进行测试,计算每个测试用例在对应用程序测试时的代码覆盖率,当存在代码覆盖率低于预设覆盖率的测试用例时,从测试用例集中筛选出代码覆盖率低于预设覆盖率的第一测试用例,确定每个第一测试用例与调用的代码的分布关系,汇集所有第一测试用例与代码的分布关系,得到总分布关系,基于总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码,根据目标代码调整测试用例集的第一测试用例作为目标测试用例,利用目标测试用例对应用程序进行重新测试,得到测试结果,从而通过计算代码覆盖率确定测试用例与代码的分布关系,以根据所有测试用例与代码的总分布关系精确确定应用程序在测试时未被调用的代码,对测试用例进行调整,以排除个人经验与开发提测记录等个人因素的影响,更加客观,测试的范围比人工评估更加准确,避免了漏测的发生,提高了应用程序测试的准确性。
附图说明
图1为本申请一实施例的应用程序测试方法的流程示意图;
图2为本申请一实施例的应用程序测试装置的结构示意框图;
图3为本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提出的一种应用程序测试方法,以服务器为执行主体,服务器可以是独立的服务器,也可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
该应用程序测试方法用于解决当前的测试用例的设计很难做到面面俱到,往往会存在一些漏测,导致应用程序测试的准确性较低的技术问题。
参考图1,其中一个实施例中,该应用程序测试方法包括如下步骤:
S11、获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
S12、计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
S13、当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
S14、确定每个所述第一测试用例与调用的代码的分布关系;
S15、汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
S16、基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
S17、根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
S18、利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
如上述步骤S11所述,本实施例获取到测试用例集后,测试用例集中一般包括多个测试用例,每个测试用例分别对应用程序的某项功能进行测试,如测试应用程序的显示情况。因此,需利用测试用例集的每个预先编辑好的测试用例分别对应用程序进行测试,测试应用程序的执行情况。
在一实施例中,还可为测试用例集的每个测试用例设置权重,该权重与测试用例的重要程度成正比,对应用程序进行测试时,按照权重的高低依序调用相应的测试用例对所述应用程序进行测试,以优先测试应用程序的重要项目。
其中,软件工程中的测试用例是一组条件或变量,测试者根据它来确定应用程序或软件系统是否正确工作。测试用例是将应用程序测试的行为活动进行一个科学化的组织归纳,目的是能够将应用程序测试的行为转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一,不同类别的应用程序,测试用例是不同的。其中,确定应用程序或系统是否通过测试的方法叫做测试准则。
如上述步骤S12所述,通过代码覆盖率统计服务,统计单个测试用例的代码覆盖率;代码覆盖率反映测试用例对被测应用程序覆盖程度的重要指标,是用来度量测试完整性的一个参考值,其值等于测试运行到的代码除以总的代码。本实施例通过代码覆盖率数据,可以评估测试是否充分。
如上述步骤S13所述,本实施例可分别判断每个测试用例的代码覆盖率是否低于预设覆盖率,该预设覆盖率可根据需要自定义设置,当存在代码覆盖率低于预设覆盖率的测试用例时,则从测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,将代码覆盖率低于预设覆盖率的测试用例作为第一测试用例。
如上述步骤S14所述,本实施例确定每个第一测试用例与调用的代码的分布关系,即每个第一测试用例分别调用了应用程序的哪些代码。其中,该分布关系用于反映每个测试用例所对应的代码。
如上述步骤S15-S16所述,本实施例将每个测试用例与代码的分布关系进行汇总,将重复的部分进行合并,得到总分布关系,基于所述总分布关系筛选出应用程序在测试时未被调用的代码,将应用程序在测试时未被调用的代码作为目标代码,从而可以轻易得到哪些代码没有被覆盖,哪些测试用例设计重复,为增减、优化测试用例提供依据,从而根据所述目标代码调整所述测试用例集的测试用例。
如上述步骤S17-S18所述,本实施例根据目标代码调整测试用例集的第一测试用例,将调整后的第一测试用例作为目标测试用例,以使目标测试用例在对应用程序进行测试时能调用部分或全部目标代码,最后利用目标测试用例对应用程序进行重新测试,得到测试结果。其中,测试结果包括应用程序的各个功能是否按照预期运行。
本申请所提供的一种应用程序测试方法,利用获取的测试用例集的每个测试用例依序对应用程序进行测试,计算每个测试用例在对应用程序测试时的代码覆盖率,当存在代码覆盖率低于预设覆盖率的测试用例时,从测试用例集中筛选出代码覆盖率低于预设覆盖率的第一测试用例,确定每个第一测试用例与调用的代码的分布关系,汇集所有第一测试用例与代码的分布关系,得到总分布关系,基于总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码,根据目标代码调整测试用例集的第一测试用例作为目标测试用例,利用目标测试用例对应用程序进行重新测试,得到测试结果,从而通过计算代码覆盖率确定测试用例与代码的分布关系,以根据所有测试用例与代码的总分布关系精确确定应用程序在测试时未被调用的代码,对测试用例进行调整,以排除个人经验与开发提测记录等个人因素的影响,更加客观,测试的范围比人工评估更加准确,避免了漏测的发生,提高了应用程序测试的准确性。
在一实施例中,所述根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例,可具体包括:
确定所述测试用例集中与所述目标代码相关的第一测试用例,得到第二测试用例;
获取所述第二测试用例的源代码;
将所述源代码与所述目标代码进行比对,得到代码差异信息;
根据所述第二测试用例的分布关系及所述代码差异信息对所述第二测试用例的源代码进行调整,得到目标测试用例。
本实施例确定测试用例集中与所述目标代码相关的测试用例,即查询出测试用例设计时需要调用但未被调用代码的相关测试用例,将与所述目标代码相关的测试用例作为目标测试用例。然后获取目标测试用例的源代码,将源代码与目标代码进行比对,得到代码差异信息,根据分布关系及代码差异信息对目标测试用例的源代码进行调整,生成调整后的测试用例集,从而对测试用例进行精确调整。例如,获取分布关系中未被调用的代码与代码差异信息的共同特征信息,基于共同特征信息对目标测试用例的源代码进行调整。
在一实施例中,所述代码差异信息包括增量信息,所述根据所述第二测试用例的分布关系及所述代码差异信息对所述第二测试用例的源代码进行调整,得到目标测试用例,可具体包括:
根据所述代码差异信息的增量信息确定所述增量信息所在的方法信息;
根据所述方法信息递归查询出调用所述方法信息的第一方法信息,将最后递归查询到的第一方法信息作为目标方法信息;其中,所述目标方法信息用于表征所述应用程序的当前版本与上次版本的新增内容的影响范围;
根据所述分布关系和所述目标方法信息确定必须调整的第二测试用例,对所述必须调整的第二测试用例进行调整后,得到目标测试用例。
本实施例根据代码差异信息的增量信息确定增量信息所在的方法信息;其中,确定应用程序或系统是否通过测试的方法信息叫做测试准则。根据方法信息递归查询出调用方法信息的第一方法信息,在多次递归查询过程中,将最后递归查询出的第一方法信息作为目标方法信息;其中,所述目标方法信息用于表征所述应用程序的当前版本与上次版本的新增内容的影响范围;根据分布关系和目标方法信息确定必须执行测试用例,对必须执行测试用例进行调整后,生成调整后的测试用例集,从而结合代码覆盖率,可以判断用例设计是否全面有效,避免遗漏其他调用该公共模块的功能的问题;此外,根据分布关系和目标方法信息确定必须执行测试用例,就可以精确确定“最小必要测试用例集”,进行测试,极大地减少了回归测试时需要执行的用例数量,提高测试效率。
在一实施例中,所述利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果之后,还可包括:
获取所述应用程序的变更代码;
确定所述目标测试用例对所述变更代码的增量覆盖率,其中,所述增量覆盖率表示所述应用程序执行所述目标测试用例时对所述变更代码的覆盖率;
判断所述增量覆盖率是否大于预设增量覆盖率;
若是,则将所述目标测试用例添加至预先构建的用例库。
其中,应用程序的变更代码理解为相对于源代码而更新的代码,可以包括新增代码和/或修改的代码,新增代码如实现新需求的代码等等。
预设增量覆盖率可以是根据实际需求或者经验值确定的预设值。在一实施例中,预设增量覆盖率是基于用例库中已有的测试用例计算的增量覆盖率。本实施例只需要判断增量覆盖率是否大于预设增量覆盖率,当增量覆盖率大于预设增量覆盖率,即将目标测试用例添加至用例库。如只需要判断测试用例覆盖的代码是否多于已有测试用例覆盖的代码,能够以一种比较简单的方式对待添加至用例库的目标测试用例进行筛选。
本实施例中通过选取合理标准对目标测试用例和/或新增的目标测试用例等进行筛选,有效入库,可以保证测试用例集最小化,为测试提供更加有效的候选用例,进而提高测试效率。本实施例中引入测试用例产生的增量覆盖率,基于该增量覆盖率作为是否将测试用例入库的判断标准,也即基于该增量覆盖率对加入用例库的目标测试用例进行筛选,以实现对历史测试用例和/或新增的测试用例等进行筛选,减小用例库,提高测试效率,以期望挑选出最小集合入库,保证测试用例库最小化,提高测试效率。
在一实施例中,所述将所述目标测试用例添加至预先构建的用例库之后,还可包括:
响应于用户的测试用例的推荐请求,从所述推荐请求中获取代码变更信息;其中,所述代码变更信息包括代码变更文件号和代码变更行号;
从所述用例库中筛选出与所述代码变更信息相对应的目标测试用例,得到待推荐测试用例;
将所述待推荐测试用例发送给所述用户。
当用户需要对任一目标应用程序进行测试时,用户可向服务器发起测试目标应用程序所需的测试用例的推荐请求,推荐请求中包括目标应用程序的代码变更信息。服务器响应于用户的测试用例的推荐请求,从推荐请求中获取代码变更信息。其中,代码变更信息是指代码发生改动的相关信息,包括代码变更部分和代码变更部分对应的代码变更文件号,所谓代码变更部分包括代码变更行号。其中,代码变更文件号是用来标识代码变更部分所在的代码文件的,而代码变更行号是用来标识代码变更部门所在的代码行信息的。
具体地,当目标应用程序发生版本迭代或者代码改动时,服务器可以获取发生代码改动的代码变更文件号和代码变更行号。具体可以是通过代码快照获取代码变更文件号和代码变更行号,得到代码变更信息,其中,这里的代码快照是用来记录代码文件,以及代码的,可通过代码快照快速查找到发生改动的代码文件号以及具体发生改动的代码行号,然后从用例库中筛选出与代码变更信息相对应的目标测试用例,得到待推荐测试用例,将待推荐测试用例发送给用户。其中,所述用例库中预先建立了代码变更信息与目标测试用例的对应关系,基于对应关系获取与代码变更信息相对应的目标测试用例。
在一实施例中,所述将所述待推荐测试用例发送给所述用户,可具体包括:
当检测到有多个所述待推荐测试用例时,获取每个所述待推荐测试用例的代码覆盖率;
按照代码覆盖率从高到低的顺序对所有所述待推荐测试用例进行排序,得到排序结果;
根据所述排序结果将排序第一的代码覆盖率作为目标代码覆盖率;
将所述目标代码覆盖率对应的待推荐测试用例推荐给所述用户。
本实施例获取每个待推荐测试用例的代码覆盖率,将对获取到的代码覆盖率按照从高到低的顺序进行排序,根据排序结果将排序第一的代码覆盖率作为目标代码覆盖率,然后将目标代码覆盖率对应的待推荐测试用例作为需要推荐给用户的待推荐测试用例,从而实现了对待推荐测试用例是否满足测试需求的准确判定,保证了测试用例推荐结果的可靠性。
在一实施例中,所述计算每个测试用例在对所述应用程序测试时的代码覆盖率,可具体包括:
在所述应用程序根据每个测试用例加载应用程序的代码时,确定所述应用程序的待加载class文件;
对所述待加载class文件进行字节码修改,以得到修改后的所述应用程序的待执行class文件;
通过所述待执行class文件获取已执行代码;
根据所述已执行代码统计所述测试用例的代码覆盖率。
在本实施例中,应用程序在根据每个测试用例运行的过程中,先加载需要执行的部分代码,即需要测试的应用程序功能对应的部分代码,此时,通过JavaAgent(Java代理)对应用程序所需要加载、执行的代码进行加载拦截,拦截到的代码中的class文件(Javaclass文件,类文件)即确定为应用程序的待加载class文件。
其中,class文件全名称为Java class文件,class文件在平台无关性方面的任务是:为Java程序提供独立于底层主机平台的二进制形式的服务,Java Agent(Java代理)是运行在main方法之前的拦截器,Java Agent内定的方法名叫premain(main方法之前的方法),因此,可以通过Java Agent在待加载class文件进行加载过程中进行拦截,便于后续JVM在加载class文件之时,对class文件进行代码注入。
当Java Agent拦截到应用程序的待加载class文件时,在不改变应用程序的待加载class文件的执行目标的情况下,对应用程序的待加载class文件进行字节码修改,然后自动打包,得到应用程序的待执行class文件,而应用程序的待执行class文件相当于在应用程序代码中方法前后添加了计时器,若应用程序执行了待执行class文件,则待执行class文件会将该方法执行的耗时记录下来,表示当前测试用例覆盖了应用程序的待执行class文件对应的应用程序的待执行代码(已执行代码),若测试用例没有覆盖到方法对应的应用程序的代码(即未覆盖到该待执行class文件),则该待执行class文件将没有该耗时记录,从而使得该class文件获得监测代码是否被执行的功能。
在JVM加载应用程序的待执行class文件之后,应用程序根据当前测试用例进行测试,执行该待执行class文件的部分代码,即为应用程序的已执行代码,若应用程序执行了待执行class文件,则表示当前测试用例覆盖了该待执行class文件对应的应用程序的待执行代码(已执行代码)。应用程序的代码被处理器执行的耗时体现了应用程序的代码运行轨迹,通过应用程序的class文件确定应用程序的已执行代码之后,即可根据获取的应用程序的已执行代码精确地统计出当前测试用例的代码覆盖率。
参照图2,本申请实施例中还提供一种应用程序测试装置,包括:
获取模块11,用于获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
计算模块12,用于计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
第一筛选模块13,用于当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
确定模块14,用于确定每个所述第一测试用例与调用的代码的分布关系;
汇集模块15,用于汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
第二筛选模块16,用于基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
调整模块17,用于根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
重新测试模块18,用于利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
本实施例获取到测试用例集后,测试用例集中一般包括多个测试用例,每个测试用例分别对应用程序的某项功能进行测试,如测试应用程序的显示情况。因此,需利用测试用例集的每个预先编辑好的测试用例分别对应用程序进行测试,测试应用程序的执行情况。
在一实施例中,还可为测试用例集的每个测试用例设置权重,该权重与测试用例的重要程度成正比,对应用程序进行测试时,按照权重的高低依序调用相应的测试用例对所述应用程序进行测试,以优先测试应用程序的重要项目。
其中,软件工程中的测试用例是一组条件或变量,测试者根据它来确定应用程序或软件系统是否正确工作。测试用例是将应用程序测试的行为活动进行一个科学化的组织归纳,目的是能够将应用程序测试的行为转化成可管理的模式;同时测试用例也是将测试具体量化的方法之一,不同类别的应用程序,测试用例是不同的。其中,确定应用程序或系统是否通过测试的方法叫做测试准则。
本实施例通过代码覆盖率统计服务,统计单个测试用例的代码覆盖率;代码覆盖率反映测试用例对被测应用程序覆盖程度的重要指标,是用来度量测试完整性的一个参考值,其值等于测试运行到的代码除以总的代码。本实施例通过代码覆盖率数据,可以评估测试是否充分。
本实施例可分别判断每个测试用例的代码覆盖率是否低于预设覆盖率,该预设覆盖率可根据需要自定义设置,当存在代码覆盖率低于预设覆盖率的测试用例时,则从测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,将代码覆盖率低于预设覆盖率的测试用例作为第一测试用例。
本实施例确定每个第一测试用例与调用的代码的分布关系,即每个第一测试用例分别调用了应用程序的哪些代码。其中,该分布关系用于反映每个测试用例所对应的代码。
本实施例将每个测试用例与代码的分布关系进行汇总,将重复的部分进行合并,得到总分布关系,基于所述总分布关系筛选出应用程序在测试时未被调用的代码,将应用程序在测试时未被调用的代码作为目标代码,从而可以轻易得到哪些代码没有被覆盖,哪些测试用例设计重复,为增减、优化测试用例提供依据,从而根据所述目标代码调整所述测试用例集的测试用例。
本实施例根据目标代码调整测试用例集的第一测试用例,将调整后的第一测试用例作为目标测试用例,以使目标测试用例在对应用程序进行测试时能调用部分或全部目标代码,最后利用目标测试用例对应用程序进行重新测试,得到测试结果。其中,测试结果包括应用程序的各个功能是否按照预期运行。
如上所述,可以理解地,本申请中提出的所述应用程序测试装置的各组成部分可以实现如上所述应用程序测试方法任一项的功能,具体结构不再赘述。
参照图3,本申请实施例中还提供一种计算机设备,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。
该计算机设备的存储器包括存储介质、内存储器。该存储介质存储有操作系统、计算机程序和数据库。该内存器为存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储测试用例等数据。
该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种应用程序测试方法。
上述处理器执行上述的应用程序测试方法,包括:
获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
确定每个所述第一测试用例与调用的代码的分布关系;
汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种应用程序测试方法,包括步骤:
获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
确定每个所述第一测试用例与调用的代码的分布关系;
汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
综上所述,本申请的最大有益效果在于:
本申请所提供的一种应用程序测试方法、装置、计算机设备及存储介质,利用获取的测试用例集的每个测试用例依序对应用程序进行测试,计算每个测试用例在对应用程序测试时的代码覆盖率,当存在代码覆盖率低于预设覆盖率的测试用例时,从测试用例集中筛选出代码覆盖率低于预设覆盖率的第一测试用例,确定每个第一测试用例与调用的代码的分布关系,汇集所有第一测试用例与代码的分布关系,得到总分布关系,基于总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码,根据目标代码调整测试用例集的第一测试用例作为目标测试用例,利用目标测试用例对应用程序进行重新测试,得到测试结果,从而通过计算代码覆盖率确定测试用例与代码的分布关系,以根据所有测试用例与代码的总分布关系精确确定应用程序在测试时未被调用的代码,对测试用例进行调整,以排除个人经验与开发提测记录等个人因素的影响,更加客观,测试的范围比人工评估更加准确,避免了漏测的发生,提高了应用程序测试的准确性。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种应用程序测试方法,其特征在于,包括:
获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
确定每个所述第一测试用例与调用的代码的分布关系;
汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例,包括:
确定所述测试用例集中与所述目标代码相关的第一测试用例,得到第二测试用例;
获取所述第二测试用例的源代码;
将所述源代码与所述目标代码进行比对,得到代码差异信息;
根据所述第二测试用例的分布关系及所述代码差异信息对所述第二测试用例的源代码进行调整,得到目标测试用例。
3.根据权利要求2所述的方法,其特征在于,所述代码差异信息包括增量信息,所述根据所述第二测试用例的分布关系及所述代码差异信息对所述第二测试用例的源代码进行调整,得到目标测试用例,包括:
根据所述代码差异信息的增量信息确定所述增量信息所在的方法信息;
根据所述方法信息递归查询出调用所述方法信息的第一方法信息,将最后递归查询到的第一方法信息作为目标方法信息;其中,所述目标方法信息用于表征所述应用程序的当前版本与上次版本的新增内容的影响范围;
根据所述分布关系和所述目标方法信息确定必须调整的第二测试用例,对所述必须调整的第二测试用例进行调整后,得到目标测试用例。
4.根据权利要求1所述的方法,其特征在于,所述利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果之后,还包括:
获取所述应用程序的变更代码;
确定所述目标测试用例对所述变更代码的增量覆盖率,其中,所述增量覆盖率表示所述应用程序执行所述目标测试用例时对所述变更代码的覆盖率;
判断所述增量覆盖率是否大于预设增量覆盖率;
若是,则将所述目标测试用例添加至预先构建的用例库。
5.根据权利要求4所述的方法,其特征在于,所述将所述目标测试用例添加至预先构建的用例库之后,还包括:
响应于用户的测试用例的推荐请求,从所述推荐请求中获取代码变更信息;其中,所述代码变更信息包括代码变更文件号和代码变更行号;
从所述用例库中筛选出与所述代码变更信息相对应的目标测试用例,得到待推荐测试用例;
将所述待推荐测试用例发送给所述用户。
6.根据权利要求5所述的方法,其特征在于,所述将所述待推荐测试用例发送给所述用户,包括:
当检测到有多个所述待推荐测试用例时,获取每个所述待推荐测试用例的代码覆盖率;
按照代码覆盖率从高到低的顺序对所有所述待推荐测试用例进行排序,得到排序结果;
根据所述排序结果将排序第一的代码覆盖率作为目标代码覆盖率;
将所述目标代码覆盖率对应的待推荐测试用例推荐给所述用户。
7.根据权利要求1所述的方法,其特征在于,所述计算每个测试用例在对所述应用程序测试时的代码覆盖率,包括:
在所述应用程序根据每个测试用例加载应用程序的代码时,确定所述应用程序的待加载class文件;
对所述待加载class文件进行字节码修改,以得到修改后的所述应用程序的待执行class文件;
通过所述待执行class文件获取已执行代码;
根据所述已执行代码统计所述测试用例的代码覆盖率。
8.一种应用程序测试装置,其特征在于,包括:
获取模块,用于获取测试用例集,利用所述测试用例集的每个测试用例依序对应用程序进行测试;
计算模块,用于计算每个测试用例在对所述应用程序测试时的代码覆盖率;其中,所述代码覆盖率为测试用例在对应用程序测试时调用所述应用程序的代码与总代码的比率;
第一筛选模块,用于当存在代码覆盖率低于预设覆盖率的测试用例时,从所述测试用例集中筛选出代码覆盖率低于预设覆盖率的测试用例,得到多个第一测试用例;
确定模块,用于确定每个所述第一测试用例与调用的代码的分布关系;
汇集模块,用于汇集所有所述第一测试用例与代码的分布关系,得到总分布关系;
第二筛选模块,用于基于所述总分布关系筛选出所述应用程序在测试时未被调用的代码,得到目标代码;
调整模块,用于根据所述目标代码调整所述测试用例集的第一测试用例,得到目标测试用例;
重新测试模块,用于利用所述目标测试用例对所述应用程序进行重新测试,得到测试结果。
9.一种计算机设备,其特征在于,包括:
处理器;
存储器;
其中,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的应用程序测试方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现权利要求1-7任一项所述的应用程序测试方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111386205.4A CN114064497A (zh) | 2021-11-22 | 2021-11-22 | 应用程序测试方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111386205.4A CN114064497A (zh) | 2021-11-22 | 2021-11-22 | 应用程序测试方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114064497A true CN114064497A (zh) | 2022-02-18 |
Family
ID=80278806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111386205.4A Pending CN114064497A (zh) | 2021-11-22 | 2021-11-22 | 应用程序测试方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114064497A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114564388A (zh) * | 2022-02-23 | 2022-05-31 | 中国农业银行股份有限公司 | 一种程序测试方法、装置、电子设备及存储介质 |
CN115905031A (zh) * | 2023-03-14 | 2023-04-04 | 云筑信息科技(成都)有限公司 | 一种基于精准质量保障系统的测试用例推荐方法 |
-
2021
- 2021-11-22 CN CN202111386205.4A patent/CN114064497A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114564388A (zh) * | 2022-02-23 | 2022-05-31 | 中国农业银行股份有限公司 | 一种程序测试方法、装置、电子设备及存储介质 |
CN115905031A (zh) * | 2023-03-14 | 2023-04-04 | 云筑信息科技(成都)有限公司 | 一种基于精准质量保障系统的测试用例推荐方法 |
CN115905031B (zh) * | 2023-03-14 | 2023-06-23 | 云筑信息科技(成都)有限公司 | 一种基于精准质量保障系统的测试用例推荐方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111045944B (zh) | 回归测试方法、装置、系统及计算机可读存储介质 | |
CN114064497A (zh) | 应用程序测试方法、装置、计算机设备及存储介质 | |
CN110489314B (zh) | 模型异常检测方法、装置、计算机设备和存储介质 | |
US9052980B2 (en) | Exception based quality assessment | |
CN109542712B (zh) | 服务器压力测试方法、装置、计算机设备和存储介质 | |
CN112559365A (zh) | 一种测试用例筛选方法、装置、计算机设备和存储介质 | |
CN109491891A (zh) | 全自动接口压测方法、装置、计算机设备及存储介质 | |
CN112148329B (zh) | 代码版本自动化更新方法、装置、计算机设备及存储介质 | |
CN110096430B (zh) | 第三方sdk准入测试方法、装置、终端及存储介质 | |
CN110083514B (zh) | 软件测试缺陷评估方法、装置、计算机设备及存储介质 | |
CN112559364A (zh) | 一种测试用例生成方法、装置、计算机设备和存储介质 | |
CN110309055A (zh) | 基于Java虚拟机的黑盒测试方法、装置、终端及存储介质 | |
CN110532174A (zh) | 计算增量代码覆盖率的方法、装置、计算机设备及存储介质 | |
CN112363937A (zh) | 差异覆盖率测试方法、装置、计算机设备和存储介质 | |
CN110688063A (zh) | 一种Raid的慢盘筛选方法、装置、设备及介质 | |
CN111309609A (zh) | 软件处理系统 | |
CN111984527A (zh) | 软件的性能测试方法、装置、设备和介质 | |
CN110597710B (zh) | 测试覆盖率统计方法、装置、计算机设备及存储介质 | |
CN113900962A (zh) | 代码差异检测方法及装置 | |
CN110990249A (zh) | 代码扫描结果处理方法、装置、计算机设备及存储介质 | |
CN112148590B (zh) | 一种代码覆盖率的确定方法、装置及设备 | |
CN111444093A (zh) | 项目开发过程质量的确定方法、装置、计算机设备 | |
CN112506791A (zh) | 应用程序测试方法、装置、计算机设备和存储介质 | |
CN116340159A (zh) | 回归测试用例推荐方法、系统、设备及存储介质 | |
CN113656318A (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 |