CN113806205A - 软件性能测试方法、装置、电子设备及可读存储介质 - Google Patents
软件性能测试方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN113806205A CN113806205A CN202010537210.XA CN202010537210A CN113806205A CN 113806205 A CN113806205 A CN 113806205A CN 202010537210 A CN202010537210 A CN 202010537210A CN 113806205 A CN113806205 A CN 113806205A
- Authority
- CN
- China
- Prior art keywords
- test
- performance data
- performance
- software
- resource type
- 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/3692—Test management for test results analysis
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
技术领域
本申请涉及计算机技术领域,具体而言,本申请涉及一种软件性能测试方法、装置、电子设备及可读存储介质。
背景技术
软件性能是与软件功能相对应的一种非常重要的非功能特性,表明了软件系统对时间及时性与资源经济性的要求。现有的许多性能分析工具在获取软件的性能数据后,仅能绘制各类性能数据的变化趋势,若要进一步分析性能问题,则需要测试人员对性能数据进行人工处理分析得出测试报告,但是,在数据量大的情况下,人工分析存在准确率低和效率低的问题。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,本申请实施例所提供的技术方案如下:
第一方面,本申请实施例提供了一种软件性能测试方法,包括:
获取待测试软件的用于性能测试的性能数据;
获取各性能数据的资源类型,并基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,其中,测试策略库中存储有待测试软件中各资源类型对应的预设测试策略;
基于预设测试策略对各性能数据进行性能测试,获取每一性能数据对应的测试结果;
基于各测试结果,获取待测试软件的测试报告;
其中,测试策略库通过以下方式构建:
确定待测试软件的各用于性能测试的性能数据对应的资源类型,并确定各资源类型对应的数据识别属性和性能属性;
对于每一资源类型,基于该资源类型对应的数据识别属性获取对应的性能数据识别条件,并基于该资源类型对应的性能属性获取对应的性能测试规则;
基于每一资源类型对应的性能数据识别条件和性能测试规则,获取该资源类型对应的预设测试策略,并基于各资源类型和对应的预设测试策略,构建测试策略库。
在本申请的一种可选实施例中,获取待测试软件的用于性能测试的性能数据,包括:
获取待测试软件运行过程中产生的性能数据,得到第一性能数据集;
基于预设白名单,筛除第一性能数据集中白名单包含的资源类型对应的性能数据,得到第二性能数据集,第二性能数据集中的性能数据为用于性能测试的性能数据。
在本申请的一种可选实施例中,获取待测试软件运行过程中产生的性能数据,包括:
在待测试软件中设置性能采集插件,并在待测试软件运行过程中通过性能采集插件获取性能数据。
在本申请的一种可选实施例中,基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,包括:
从测试策略库中获取每一性能数据的资源类型对应的至少一条预设测试策略,并将每一性能数据对应的各预设测试策略中性能数据识别条件与该性能数据相匹配的预设测试策略,作为用于测试该性能数据的预设测试策略。
在本申请的一种可选实施例中,基于预设测试策略对各性能数据进行性能测试,获取每一性能数据对应的测试结果,包括:
将每一性能数据代入预设测试策略对应的性能测试规则,得到该性能数据对应的测试结果;
若性能数据满足测试策略对应的性能测试规则,则对应的测试结果为通过,反之,则对应的测试结果为不通过。
在本申请的一种可选实施例中,基于各测试结果,获取待测试软件的测试报告,包括:
基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取待测试软件的测试报告。
在本申请的一种可选实施例中,基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取待测试软件的测试报告,包括:
基于每一不通过的测试结果对应的性能数据,获取该测试结果对应的功能模块,并基于该测试结果对应的资源类型和预设测试策略,获取该测试结果的优化建议;
基于各不通过的测试结果对应的功能模块和优化建议,生成待测试软件的测试报告。
第二方面,本申请实施例提供了一种软件性能测试装置,包括:
性能数据获取模块,用于获取待测试软件的用于性能测试的性能数据;
预设测试策略获取模块,用于获取各性能数据的资源类型,并基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,其中,测试策略库中存储有待测试软件中各资源类型对应的预设测试策略;
测试结果获取模块,用于基于预设测试策略,获取每一性能数据对应的测试结果;
测试报告获取模块,用于基于各测试结果对各性能数据进行性能测试,获取待测试软件的测试报告;
其中,测试策略库通过以下方式构建:
确定待测试软件的各用于性能测试的性能数据对应的资源类型,并确定各资源类型对应的数据识别属性和性能属性;
对于每一资源类型,基于该资源类型对应的数据识别属性获取对应的性能数据识别条件,并基于该资源类型对应的性能属性获取对应的性能测试规则;
基于每一资源类型对应的性能数据识别条件和性能测试规则,获取该资源类型对应的预设测试策略,并基于各资源类型和对应的预设测试策略,构建测试策略库。
在本申请的一种可选实施例中,性能数据获取模块进一步包括:第一性能数据集获取模块和第二性能数据集获取模块,其中:
第一性能数据集获取模块,用于获取待测试软件运行过程中产生的性能数据,得到第一性能数据集;
第二性能数据集获取模块,用于基于预设白名单,筛除第一性能数据集中白名单包含的资源类型对应的性能数据,得到第二性能数据集,第二性能数据集中的性能数据为用于性能测试的性能数据。
在本申请的一种可选实施例中,第一性能数据集获取模块具体用于:
在待测试软件中设置性能采集插件,并在待测试软件运行过程中通过性能采集插件获取性能数据。
在本申请的一种可选实施例中,预设测试策略获取模块具体用于:
从测试策略库中获取每一性能数据的资源类型对应的至少一条预设测试策略,并将每一性能数据对应的各预设测试策略中性能数据识别条件与该性能数据相匹配的预设测试策略,作为用于测试该性能数据的预设测试策略。
在本申请的一种可选实施例中,测试结果获取模块具体用于:
将每一性能数据代入预设测试策略对应的性能测试规则,得到该性能数据对应的测试结果;
若性能数据满足测试策略对应的性能测试规则,则对应的测试结果为通过,反之,则对应的测试结果为不通过。
在本申请的一种可选实施例中,测试报告获取模块具体用于:
基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取待测试软件的测试报告。
在本申请的一种可选实施例中,测试报告获取模块进一步用于:
基于每一不通过的测试结果对应的性能数据,获取该测试结果对应的功能模块,并基于该测试结果对应的资源类型和预设测试策略,获取该测试结果的优化建议;
基于各不通过的测试结果对应的功能模块和优化建议,生成待测试软件的测试报告。
第三方面,本申请实施例提供了一种电子设备,包括存储器和处理器;
存储器中存储有计算机程序;
处理器,用于执行计算机程序以实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现第一方面实施例或第一方面任一可选实施例中所提供的方法。
本申请提供的技术方案带来的有益效果是:
通过每一性能数据的资源类型从预先设置的测试数据库中匹配对应的预设测试策略,再利用预设测试策略对对应的性能数据进行测试得到测试结果,并对测试结果进行汇总得到对应的测试报告。该方案中根据性能数据的资源类型自动匹配对应的测试策略完成性能测试得到测试结果,并汇总得到测试报告,对性能数据的测试和对测试结果的汇总均无需人工参与,提高了测试的准确率和效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种软件性能测试方法的流程示意图;
图2为本申请实施例提供的一种软件测试系统的结构示意图;
图3a-3g为本申请实施例的一个示例中游戏软件的测试报告的各部分的内容展示示意图;
图4为本申请实施例的整体方案的流程示意图;
图5为本申请实施例提供的一种软件性能测试装置的结构框图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
图1为本申请实施例提供的一种软件性能测试方法的流程示意图,如图1所示,该方法可以包括:
步骤S101,获取待测试软件的用于性能测试的性能数据。
其中,性能数据是在待测试软件运行过程中产生的各种与性能相关的数据,具体来说,其由待测试软件的各个功能模块在实现各自功能过程中产生。例如,对于基于Unity3D(联合三维)引擎开发的游戏软件,这类游戏软件中的性能数据可以由以下功能模块在运行过程中产生:美术资源模块、CPU(Central Processing Unit,中央处理器)总体性能模块、内存占比模块、渲染性能模块、加载模块、UI(User Interface,用户界面)模块、动画和粒子系统模块。
另外,每一性能数据具有唯一确定的资源类型,该资源类型具体可以通过性能数据本身包含的字段确定。例如,在上述游戏软件中,美术资源模块中包含的性能数据对应的资源类型可以有Texture2D(二维纹理)、Mesh(网格)、Material(材料)、AudioClip(音频剪辑)、Animator(动画)、AnimationClip(动画剪辑)、ParticleSystem(粒子系统)、RenderTexture(渲染结构)、Texture3D(三维纹理)、Shader(明暗器),UI模块的性能数据主要是从函数的堆栈详情而来,即其包含的性能数据对应的资源类型可以为堆栈详情类型。如表1所示,列举了某一基于Unity3D引擎开发的游戏软件中包含的性能数据所对应的资源类型。在表1中,各资源类型又可分别划分为两个大类,分别为为art_asset(艺术资产)类型和perform(运行)类型,其中,art_asset可理解为静态资源类型,一般可以包括美术资源类型如贴图、材质等,perform可理解为动态资源类型,一般可以包括CPU、内存、渲染、堆栈数据,根据上述区别,对于两大类资源类型对应的性能数据所采用的测试策略将有所不同。同时表1中列出了各资源类型对应的数据表名称,该数据表名称为性能数据分类存储时所在数据表的名称,可以作为从数据库中获取对应的性能数据的索引。资源类型描述为对对应的各资源类型的描述。
表1
资源类型 | 类型 | 数据表名称 | 资源类型描述 |
AnimationClip | art_asset | perform_assetDetail_data | AnimationClip |
Animator | art_asset | perform_assetDetail_data | Animator |
AudioClip | art_asset | perform_assetDetail_data | AudioClip |
CpuPerform | perform | perform_summary_cpu_data | CPU性能 |
Material | art_asset | perform_assetDetail_data | Material |
MemPerform | perform | perform_summary_mem_data | 内存性能 |
Mesh | art_asset | perform_assetDtail_data | Mesh |
ParticleSystem | art_asset | perform_assetDtail_data | ParticleSystem |
RenderPerform | perform | perform_summary_rendering_data | 渲染性能 |
RenderTexture | art_asset | perform_assetDetail_data | RenderTexture |
Shader | art_asset | perform_assetDetail_data | Shader |
StackDtail | perform | perform_summary_detail_data | 堆栈详情 |
Texture2D | art_asset | perform_assetDetail_data | Texture2D |
Texture3D | art_asset | perform_assetDetail_data | Texture3D |
具体地,在获取到待测试软件运行过程中产生的性能数据后,将各性能数据上传至预设数据库进行存储,具体来说,可以在预设数据库中划分多个功能模块对应的存储分区,每个分区下设置一个或多个数据表,且每个数据表对应一种数据表名称,对于每一性能数据,获取其资源类型,并确定其对应的数据表名称,然后将该性能数据存储至对应的数据表名称指示的数据表中。例如,上述游戏软件的预设数据库中各功能模块一共对应有五张数据表,数据表名称分别为:perform_assetDetail_data、perform_summary_cpu_data、perform_summary_mem_data、perform_summary_rendering_data以及perform_summary_detail_data,例如,将AnimationClip、Animator以及AudioClip等资源类型的性能数据存储至perform_assetDetail_data指示的数据表中,将StackDtail资源类型的性能数据存储至perform_summary_detail_data指示的数据表中。
步骤S102,获取各性能数据的资源类型,并基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,其中,测试策略库中存储有待测试软件中各资源类型对应的预设测试策略。
其中,预设测试策略是针对每个资源类型预先设置的测试方法,测试策略库中存储有待测试软件所有资源类型对应的预设测试策略。测试策略库通过以下方式构建:
确定待测试软件的各用于性能测试的性能数据对应的资源类型,并确定各资源类型对应的数据识别属性和性能属性;
对于每一资源类型,基于该资源类型对应的数据识别属性获取对应的性能数据识别条件,并基于该资源类型对应的性能属性获取对应的性能测试规则;
基于每一资源类型对应的性能数据识别条件和性能测试规则,获取该资源类型对应的预设测试策略,并基于各资源类型和对应的预设测试策略,构建测试策略库。
具体地,对于每一性能数据,在从预设数据库中获取该性能数据时,由前文描述可知,可以按所需的性能数据的资源类型从不同数据表中取出用于性能测试的性能数据,然后根据性能数据的资源类型,即可从测试策略库中匹配与该资源类型对应的测试策略。可以理解的是,由于各性能数据分类存储,可以快速获取所需的性能数据,同时,由于测试策略库中预设了各资源类型对应的预设测试策略,因此可以准确的匹配各性能数据对应的测试策略。
具体地,在对待测试软件进行测试前,需要构建对应的测试策略库。其中,测试策略库中的每一预设测试策略包含两部分内容,分别为性能数据识别条件和性能测试规则,在利用预设测试策略对某一性能数据进行测试时,首先该性能数据需先满足该测试策略中的性能数据识别条件,然后再利用性能测试规则对该性能数据进行判断。
其中,各资源类型对应的性能数据有各自的数据结构特点(数据识别属性)和所需测试的性能(性能属性),其数据结构特点可以用于识别该性能数据,其所需测试的性能可以用于确定需要设置性能测试规则,换言之,根据各资源类型对应的数据识别属性可以确定其对应的测试策略中的性能数据识别条件,根据各资源类型对应的性能属性确定其对应的测试策略中的性能测试规则。在获取到待测试软件的所有资源类型对应的预设测试策略后,按对应的资源类型进行存储即可得到测试策略库。
举例来说,在某一基于Unity3D引擎开发的游戏软件中,堆栈详情这一资源类型对应的性能属性如表2所示,其中,GC(Garbage Collection)Alloc是指垃圾回收站内存分配。那么根据堆栈详情对应的性能属性和其对应的含义可以确定对应的预设测试策略中的性能测试规则。例如,根据性能属性Calls,确定相关函数的调用次数的上限值小于等于预测次数;根据性能属性Avg(Total Time),确定相关函数的耗时均值小于等于预设时长等。
表2
在确定了每一资源类型对应的性能数据识别条件和性能测试规则后,即可得到该资源类型对应的预设测试策略,接上举例,表3中列举了CPU总体性能模块中,堆栈详情这一资源类型对应的多个预设测试策略。其中,2-6行对应的预设测试策略中限定了性能数据识别条件,例如第2行中的性能数据识别条件为性能数据中包含的函数名为Instantiate,若满足该性能数据识别条件则利用对应的性能测试规则进行判断,即判断性能数据包含的函数Instantiate的调用次数是否小于等于5/10min(即每十分钟内5次)。其中,7-8行性能数据识别条件为空,则对应的性能测试规则对堆栈详情这一资源类型对应的所有性能数据都适用。
表3
资源类型 | 性能数据识别条件 | 性能测试规则 |
堆栈详情 | 函数名为Instantiate | 调用次数小于等于5/10min |
堆栈详情 | 函数名为GameObject Deactivate | 调用次数小于等于5 |
堆栈详情 | 函数名为GameObject Activate | 调用次数小于等于5 |
堆栈详情 | 函数名为Destory | 调用次数小于等于50 |
堆栈详情 | 函数名为Shader createPrograme | 调用次数小于等于10 |
堆栈详情 | 函数名为Behaviour Upadate | 调用次数小于等于10 |
堆栈详情 | 空 | GC Alloc小于等于1KB |
堆栈详情 | 空 | 调用次数小于等于100 |
其中,在设置性能测试规则时会用到各种比较或匹配操作,例如,小于等于、大于、值满足正则、名称满足正则等,再具体设置性能规则时可根据实际情况选用这些比较或匹配操作。
步骤S103,基于预设测试策略对各性能数据进行性能测试,获取每一性能数据对应的测试结果。
具体地,对于每一性能数据,在获取到该性能数据及其对应的测试策略后,利用该测试策略对该性能数据进行测试,即可得到对应的测试结果。由于,性能数据的分类存储,在测试过程中可以分别依次对各数据表中的性能数据一一进行测试得到测试结果,可以保证不遗漏性能数据。
需要说明的是,每一性能数据可以对应一个或多个测试策略。
步骤S104,基于各测试结果,获取待测试软件的测试报告。
其中,测试报告用于向用户展示待测试软件的性能测试结果,其对各功能模块下的性能数据对应的测试结果进行汇总,以便开发人员清楚直观的获知待测试软件的性能问题。
具体地,根据各测试结果对应的性能数据所属的功能模块和/或性能数据对应的资源类型,对测试结果进行整合,可以得到待测试软件的测试报告。具体来说,测试报告的形式可以有多种,例如,可以展示某一个或几个功能模块产生的性能数据对应的测试结果的汇总,也可以展示待测试软件不同版本性能数据对应的测试结果的对比等。
本申请实施例提供的方案,通过每一性能数据的资源类型从预先设置的测试数据库中匹配对应的预设测试策略,再利用预设测试策略对对应的性能数据进行测试得到测试结果,并对测试结果进行汇总得到对应的测试报告。该方案中根据性能数据的资源类型自动匹配对应的测试策略完成性能测试得到测试结果,并汇总得到测试报告,对性能数据的测试和对测试结果的汇总均无需人工参与,提高了测试的准确率和效率。
在本申请的一种可选实施例中,获取待测试软件的用于性能测试的性能数据,包括:
获取待测试软件运行过程中产生的性能数据,得到第一性能数据集;
基于预设白名单,筛除第一性能数据集中白名单包含的资源类型对应的性能数据,得到第二性能数据集,第二性能数据集中的性能数据为用于性能测试的性能数据。
其中,预设白名单中包含一个或多个资源类型,这一个或多个资源类型对应的性能数据为不需要进行测试的资源类型。可以理解的是,预设白名单中资源类型的数量和种类可以根据实际需求进行设置,一般来说,可以将对待测试软件性能影响不大的资源类型放入预设白名单中,既不影响后续性能测试的准确性,还可以提高性能测试的速度。
举例来说,如表4所示,为对某一基于Unity3D引擎开发的游戏软件进行测试时的预设白名单,其列举了该预设白名单中所包含的资源类型。在获取到第一性能数据集后,筛除其中包含的表4所列举的10个资源类型且性能数据名称为“Unknow”对应的性能数据,得到第二性能数据集,该第二性能数据集中的性能数据即为用于性能测试的性能数据。
表4
性能数据名称 | 资源类型 |
Unknow | AnimationClip |
Unknow | Animator |
Unknow | AudioClip |
Unknow | Material |
Unknow | Mesh |
Unknow | ParticleSystem |
Unknow | RenderTexture |
Unknow | Shader |
Unknow | Texture2D |
Unknow | Texture3D |
在本申请的一种可选实施例中,获取待测试软件运行过程中产生的性能数据,包括:
在待测试软件中设置性能采集插件,并在待测试软件运行过程中通过性能采集插件获取性能数据。
具体地,在运行待测试软件前,在待测是软件中设置相应的性能采集插件,以获取性能数据,并将性能数据上传至预设数据库中进行存储。具体来说,可以为不同功能模块设置对应的性能采集插件。
在本申请的一种可选实施例中,基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,包括:
从测试策略库中获取每一性能数据的资源类型对应的至少一条预设测试策略,并将每一性能数据对应的各预设测试策略中性能数据识别条件与该性能数据相匹配的预设测试策略,作为用于测试该性能数据的预设测试策略。
具体地,由于一个资源类型一般可以对应多个预设测试策略,且预设测试策略对应不同的性能数据。因此,对于一个资源类型所对应的每一性能数据,首先根据其资源类型确定出对应的多个预设测试策略,再通过各预设测试策略中的性能数据识别条件进行筛选,即将性能数据识别条件与该性能数据的数据结构相匹配的预设测试策略,作为该性能数据的预设测试策略。
在本申请的一种可选实施例中,基于预设测试策略对各性能数据进行性能测试,获取每一性能数据对应的测试结果,包括:
将每一性能数据代入预设测试策略对应的性能测试规则,得到该性能数据对应的测试结果;
若性能数据满足测试策略对应的性能测试规则,则对应的测试结果为通过,反之,则对应的测试结果为不通过。
具体地,在根据性能数据的数据结构与资源类型对应的各预设测试策略的性能数据识别条件,确定出各性能数据的预设测试策略后,将性能数据中对应内容代入性能测试规则,判断该对应内容是否满足性能测试规则,若满足则对应的测试结果为通过,若不满足则对应的测试结果为不通过。举例来说,若某一性能数据对应的预设测试策略为表4中第2行所示的预设测试策略,则获取该性能数据中包含的函数Instantiate的调用次数(即前述的对应内容),若该次数大于每10分钟5次,则该性能数据对应的测试结果为不通过,若该次数小于或等于每10分钟5次,则该性能数据对应的测试结果为通过。
在本申请的一种可选实施例中,基于各测试结果,获取待测试软件的测试报告,包括:
基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取待测试软件的测试报告。
具体地,一般来说不通过的测试结果对待测试软件的性能评估起决定性作用,故在测试报告中会对不通过的测试结果进行分析汇总,即通过不通过的测试结果得到待测试软件的测试报告。
在本申请的一种可选实施例中,基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取待测试软件的测试报告,包括:
基于每一不通过的测试结果对应的性能数据,获取该测试结果对应的功能模块,并基于该测试结果对应的资源类型和预设测试策略,获取该测试结果的优化建议;
基于各不通过的测试结果对应的功能模块和优化建议,生成待测试软件的测试报告。
其中,根据性能数据所在数据表对应的功能模块分区,可以确定性能数据对应的功能模块,进而可以确定该性能数据对应的测试结果对应的功能模块,在测试报告中将对各功能模块中不通过的测试结果进行分类展示,以便于开发人员查看。
进一步地,对于每一不通过的测试结果,将展示其资源类型、对应的预设测试策略以及对应的优化建议。其中,优化建议可以根据对应的优化策略得到,例如,若某一不通过的测试结果对应的预设测试策略中的性能测试规则为“函数Instantiate的调用次数小于等于5/10min(即每十分钟内5次)”,若该不通过的测试结果对应的性能数据中包含的对函数Instantiate的调用次数为7/10min,则针对该不通过的测试结果的优化建议可以为“减少待测试软件运行过程中对函数Instantiate调用次数”。可以理解的是,预设优化策略为提供优化建议的基础。
具体地,测试报告首先展示待测试软件性能测试是否通过的结论,该结论可以根据待测试软件包含的不通过的测试结果的数量来确定,举例来说,若待测试软件包含有不通过的测试结果,则认为该待测试软件的性能测试通过,若待测试软件不包含不通过的测试结果,则认为该待测试软件的性能测试不通过。
在测试报告中,按各个功能模块分别对不通过测试结果进行展示,对于待测试软件的每个功能模块,首先展示其问题总览,问题总览给出不通过的测试结果的数量和对应的性能数据的资源类型,然后展示问题详情,问题详情给出不通过的测试结果的详细情况,包括各不通过的测试结果的预设测试策略、对应的性能数据中的实际值、以及优化建议等。
在每次生成测试报告后,可通过邮件等形式将测试报告发送给相关开发人员,以供开发人员及时掌握待测试软件的测试结果,进而优化待测试软件。
如图2所示为本申请实施例提供的在一种软件测试系统的结构示意图,该系统可以包括性能采集插件201、性能测试服务器202以及终端设设备203,其中,性能测试服务器202包括通信模块、存储模块和性能测试模块,通信模块用于分别与性能采集插件201和终端设设备203之间建立通信连接,实现数据收发,存储模块用于存储预设测试策略库、性能数据、测试结果以及生产的测试报告等,性能测试模块用于对性能数据进行分析,并调用存储模块中预设测试策略库中对应的测试策略完成对性能数据的测试。
游戏开发人员在测试某款基于Unity3D引擎开发游戏软件时,可以利用上述软件测试系统对该游戏软件进行测试,测试过程可以包括:在开始测试前,将性能采集插件201设置在该游戏软件的各模块。性能测试服务器202通过通信模块与性能采集插件201建立通信连接并获取性能采集插件201采集到的性能数据,性能测试服务器202的性能测试模块根据性能数据的资源类型从存储模块中预存的预设测试策略获取对应的测试策略,并基于测试策略完成对性能数据的测试,得出对应的测试结果,并将测试结果存储至存储模块中。在测试完成后,基于所有性能测试结果,生成该游戏软件的测试报告,性能测试服务器202通过通信模块将该测试报告发送至游戏开发人员的终端设备203,以供游戏开发人员对测试报告进行查看。
举例来说,图3a-3g为某一基于Unity3D引擎开发的游戏软件的性能测试报告中各部分的内容展示示意图,由测试报告可以获知其性能测试得到6个不通过的测试结果,其中4个来自CPU总体性能模块,2个来自美术资源模块。
具体来说,图3a对应部分展示了该游戏软件的性能测试结论,性能测试存在6个问题(即存在6个性能数据对应的测试结果为不通过),性能测试结论为不通过。开发人员通过查看该部分可以获知性能测试的结论和问题数量。同时,开发人员通过查看该部分还可以获知该游戏软件的当前版本、该游戏软件所处的设备以及测试场景(可以为预设的多个场景中的1个)等测试环境信息。
图3b对应的部分展示了CPU总体性能模块下的问题数量和对应的性能数据的资源类型,该部分展示CPU总体性能模块问题总览,由该区域可以看出,2个资源类型为内存性能的性能数据对应的测试结果为不通过,2个资源类型为堆栈详情的性能数据对应的测试结果为不通过。同时图3c对应的部分列举了CPU中各资源类型(即图中的模块名)的耗时均值、内存峰值、渲染数据。图3f对应的部分展示了CPU总体性能模块下的问题详情,包括各性能数据的资源类型(即图中的模块名)、对应的预设测试策略中的性能数据识别条件(即图中的检查条件)和性能测试规则(即图中的检查规则)、性能数据的实际值以及对应的优化策略的查询按钮。
图3d对应的部分展示了美术资源模块下的问题数量和对应的性能数据的资源类型,该部分中展示美术资源模块问题总览,由该区域可以看出,两个资源类型为Texture2D的性能数据对应的测试结果为不通过。同时图3e对应的部分列举了美术资源模块中各资源类型的内存峰值和资源数峰值。图3g对应的部分展示了美术资源模块下的问题详情,包括各性能数据的名称(即图中的资源名)、各性能数据的资源类型(即图中的模块名)、对应的预设测试策略中的性能数据识别条件(即图中的检查条件)和性能测试规则(即图中的检查规则)、性能数据的实际值以及对应的优化策略的查询按钮。
开发人员可以通过查看该测试报告准确直观的获知性能测试结论,以及各功能模块下的问题总览和问题详情,并获取相应的优化建议。
综上所述,本申请的方案的整体实现过程可以如图4所示,获取待测试软件的性能数据,手动或者自动上传至预设数据库401中进行分类存储,其中自动上传可采用在待测试软件中设置采集插件的方式实现。从预设数据库401中读取各性能数据,并从预设测试策略库402中匹配对应的预设测试策略,利用预设测试策略对对应的性能数据进行性能测试得到测试结果。对各测试结果进行分析汇总即可得到该待测试软件的测试报告,并在测试报告中给出不通过的测试结果对应的优化建议。各测试结果以及测试报告都将存储至预设数据库中,以供后续调用查看。
另外,在将待测试软件的性能数据上传至预设数据库401中之后,还可以从中读取待测试软件各模块的性能数据,按时间顺序(在游戏软件组可以是按画面的帧顺序)生成数据趋势图,进而可以开发人员可以根据趋势图获知各模块中性能数据的变化趋势,也可以获知具体每个时刻或每一帧对应的性能数据。同时,在预设数据库401中存储有待测试软件多个版本的性能数据后,可以对待测试软件多个版本的各模块的性能数据进行对比,以分析不同版本之间的性能差别。
图5为本申请实施例提供的一种软件性能测试装置的结构框图,如图5所示,该装置500可以包括:性能数据获取模块501、预设测试策略获取模块502、测试结果获取模块503以及测试报告获取模块504,其中:
性能数据获取模块501用于获取待测试软件的用于性能测试的性能数据;
预设测试策略获取模块502用于获取各性能数据的资源类型,并基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,其中,所述测试策略库中存储有所述待测试软件中各资源类型对应的预设测试策略;
测试结果获取模块503用于基于所述预设测试策略,获取每一性能数据对应的测试结果;
测试报告获取模块504用于基于各测试结果对各性能数据进行性能测试,获取所述待测试软件的测试报告;
其中,测试策略库通过以下方式构建:
确定待测试软件的各用于性能测试的性能数据对应的资源类型,并确定各资源类型对应的数据识别属性和性能属性;
对于每一资源类型,基于该资源类型对应的数据识别属性获取对应的性能数据识别条件,并基于该资源类型对应的性能属性获取对应的性能测试规则;
基于每一资源类型对应的性能数据识别条件和性能测试规则,获取该资源类型对应的预设测试策略,并基于各资源类型和对应的预设测试策略,构建测试策略库。
本申请提供的方案,通过每一性能数据的资源类型从预先设置的测试数据库中匹配对应的预设测试策略,再利用预设测试策略对对应的性能数据进行测试得到测试结果,并对测试结果进行汇总得到对应的测试报告。该方案中根据性能数据的资源类型自动匹配对应的测试策略完成性能测试得到测试结果,并汇总得到测试报告,对性能数据的测试和对测试结果的汇总均无需人工参与,提高了测试的准确率和效率。
在本申请的一种可选实施例中,性能数据获取模块进一步包括:第一性能数据集获取模块和第二性能数据集获取模块,其中:
第一性能数据集获取模块,用于获取待测试软件运行过程中产生的性能数据,得到第一性能数据集;
第二性能数据集获取模块,用于基于预设白名单,筛除第一性能数据集中白名单包含的资源类型对应的性能数据,得到第二性能数据集,第二性能数据集中的性能数据为用于性能测试的性能数据。
在本申请的一种可选实施例中,第一性能数据集获取模块具体用于:
在待测试软件中设置性能采集插件,并在待测试软件运行过程中通过性能采集插件获取性能数据。
在本申请的一种可选实施例中,预设测试策略获取模块具体用于:
从测试策略库中获取每一性能数据的资源类型对应的至少一条预设测试策略,并将每一性能数据对应的各预设测试策略中性能数据识别条件与该性能数据相匹配的预设测试策略,作为用于测试该性能数据的预设测试策略。
在本申请的一种可选实施例中,测试结果获取模块具体用于:
将每一性能数据代入预设测试策略对应的性能测试规则,得到该性能数据对应的测试结果;
若性能数据满足测试策略对应的性能测试规则,则对应的测试结果为通过,反之,则对应的测试结果为不通过。
在本申请的一种可选实施例中,测试报告获取模块具体用于:
基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取待测试软件的测试报告。
在本申请的一种可选实施例中,测试报告获取模块进一步用于:
基于每一不通过的测试结果对应的性能数据,获取该测试结果对应的功能模块,并基于该测试结果对应的资源类型和预设测试策略,获取该测试结果的优化建议;
基于各不通过的测试结果对应的功能模块和优化建议,生成待测试软件的测试报告。
基于相同的原理,本申请实施例还提供了一种电子设备,该电子设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该计算机程序时,实现本申请任一可选实施例中所提供的方法,具体可实现如下情况:
获取待测试软件的用于性能测试的性能数据;获取各性能数据的资源类型,并基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,其中,测试策略库中存储有待测试软件中各资源类型对应的预设测试策略;基于预设测试策略对各性能数据进行性能测试,获取每一性能数据对应的测试结果;基于各测试结果,获取待测试软件的测试报告;其中,测试策略库通过以下方式构建:确定待测试软件的各用于性能测试的性能数据对应的资源类型,并确定各资源类型对应的数据识别属性和性能属性;对于每一资源类型,基于该资源类型对应的数据识别属性获取对应的性能数据识别条件,并基于该资源类型对应的性能属性获取对应的性能测试规则;基于每一资源类型对应的性能数据识别条件和性能测试规则,获取该资源类型对应的预设测试策略,并基于各资源类型和对应的预设测试策略,构建测试策略库。
本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现本申请任一实施例所示的方法。
可以理解的是,介质中存储的可以是软件性能测试方法对应的计算机程序。
图6中示出了本申请实施例所适用的一种电子设备的结构示意图,如图6所示,图6所示的电子设备600包括:处理器601和存储器603。其中,处理器601和存储器603相连,如通过总线602相连。进一步地,电子设备600还可以包括收发器604,电子设备600可以通过收发器604与其他电子设备进行数据的交互。需要说明的是,实际应用中收发器604不限于一个,该电子设备600的结构并不构成对本申请实施例的限定。
其中,处理器601应用于本申请实施例中,可以用于实现图5所示的软件性能测试装置的功能。
处理器601可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器601也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
总线602可包括一通路,在上述组件之间传送信息。总线602可以是PCI总线或EISA总线等。总线602可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器603可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
存储器603用于存储执行本申请方案的应用程序代码,并由处理器601来控制执行。处理器601用于执行存储器603中存储的应用程序代码,以实现图5所示实施例提供的软件性能测试装置的动作。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种软件性能测试方法,其特征在于,包括:
获取待测试软件的用于性能测试的性能数据;
获取各性能数据的资源类型,并基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,其中,所述测试策略库中存储有所述待测试软件中各资源类型对应的预设测试策略;
基于所述预设测试策略对各性能数据进行性能测试,获取每一性能数据对应的测试结果;
基于各测试结果,生成所述待测试软件的测试报告;
其中,所述测试策略库通过以下方式构建:
确定所述待测试软件的各用于性能测试的性能数据对应的资源类型,并确定各资源类型对应的数据识别属性和性能属性;
对于每一资源类型,基于该资源类型对应的数据识别属性获取对应的性能数据识别条件,并基于该资源类型对应的性能属性获取对应的性能测试规则;
基于每一资源类型对应的性能数据识别条件和性能测试规则,获取该资源类型对应的预设测试策略,并基于各资源类型和对应的预设测试策略,构建所述测试策略库。
2.根据权利要求1所述的方法,其特征在于,所述获取待测试软件的用于性能测试的性能数据,包括:
获取所述待测试软件运行过程中产生的性能数据,得到第一性能数据集;
基于预设白名单,筛除所述第一性能数据集中所述白名单包含的资源类型对应的性能数据,得到第二性能数据集,所述第二性能数据集中的性能数据为用于性能测试的性能数据。
3.根据权利要求2所述的方法,其特征在于,所述获取所述待测试软件运行过程中产生的性能数据,包括:
在所述待测试软件中设置性能采集插件,并在所述待测试软件运行过程中通过所述性能采集插件获取性能数据。
4.根据权利要求1所述的方法,其特征在于,所述基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,包括:
从所述测试策略库中获取每一性能数据的资源类型对应的至少一条预设测试策略,并将每一性能数据对应的各预设测试策略中性能数据识别条件与该性能数据相匹配的预设测试策略,作为用于测试该性能数据的预设测试策略。
5.根据权利要求4所述的方法,其特征在于,所述基于所述预设测试策略对各性能数据进行性能测试,获取每一性能数据对应的测试结果,包括:
将每一性能数据代入所述预设测试策略对应的性能测试规则,得到该性能数据对应的测试结果;
若所述性能数据满足所述测试策略对应的性能测试规则,则对应的测试结果为通过,反之,则对应的测试结果为不通过。
6.根据权利要求5所述的方法,其特征在于,所述基于各测试结果,获取所述待测试软件的测试报告,包括:
基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取所述待测试软件的测试报告。
7.根据权利要求6所述的方法,其特征在于,所述基于不通过的测试结果对应的性能数据的资源类型和预设测试策略,获取所述待测试软件的测试报告,包括:
基于每一不通过的测试结果对应的性能数据,获取该测试结果对应的功能模块,并基于该测试结果对应的资源类型和预设测试策略,获取该测试结果的优化建议;
基于各不通过的测试结果对应的功能模块和优化建议,生成待测试软件的测试报告。
8.一种软件性能测试装置,其特征在于,包括:
性能数据获取模块,用于获取待测试软件的用于性能测试的性能数据;
预设测试策略获取模块,用于获取各性能数据的资源类型,并基于每一性能数据的资源类型从测试策略库中获取用于测试该性能数据的预设测试策略,其中,所述测试策略库中存储有所述待测试软件中各资源类型对应的预设测试策略;
测试结果获取模块,用于基于所述预设测试策略,获取每一性能数据对应的测试结果;
测试报告获取模块,用于基于各测试结果对各性能数据进行性能测试,获取所述待测试软件的测试报告;
其中,所述测试策略库通过以下方式构建:
确定所述待测试软件的各用于性能测试的性能数据对应的资源类型,并确定各资源类型对应的数据识别属性和性能属性;
对于每一资源类型,基于该资源类型对应的数据识别属性获取对应的性能数据识别条件,并基于该资源类型对应的性能属性获取对应的性能测试规则;
基于每一资源类型对应的性能数据识别条件和性能测试规则,获取该资源类型对应的预设测试策略,并基于各资源类型和对应的预设测试策略,构建所述测试策略库。
9.一种电子设备,其特征在于,包括存储器和处理器;
所述存储器中存储有计算机程序;
所述处理器,用于执行所述计算机程序以实现权利要求1至7中任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010537210.XA CN113806205A (zh) | 2020-06-12 | 2020-06-12 | 软件性能测试方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010537210.XA CN113806205A (zh) | 2020-06-12 | 2020-06-12 | 软件性能测试方法、装置、电子设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113806205A true CN113806205A (zh) | 2021-12-17 |
Family
ID=78943972
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010537210.XA Pending CN113806205A (zh) | 2020-06-12 | 2020-06-12 | 软件性能测试方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113806205A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115967613A (zh) * | 2022-12-20 | 2023-04-14 | 广州骏伯网络科技有限公司 | 一种自适应性页面拨测告警方法、装置、设备及存储介质 |
-
2020
- 2020-06-12 CN CN202010537210.XA patent/CN113806205A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115967613A (zh) * | 2022-12-20 | 2023-04-14 | 广州骏伯网络科技有限公司 | 一种自适应性页面拨测告警方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110554958B (zh) | 图数据库测试方法、系统、设备和存储介质 | |
CN114490375B (zh) | 应用程序的性能测试方法、装置、设备及存储介质 | |
CN111522728A (zh) | 自动化测试用例的生成方法、电子设备及可读存储介质 | |
CN114116496A (zh) | 自动化测试方法、装置、设备及介质 | |
CN110750433A (zh) | 接口测试方法和装置 | |
CN110968505A (zh) | 一种api接口的自动化测试方法和系统 | |
CN110059002B (zh) | 测试数据的生成方法、测试设备、存储介质及装置 | |
CN113806205A (zh) | 软件性能测试方法、装置、电子设备及可读存储介质 | |
CN108874652B (zh) | 用于软件自测评估的方法、装置及电子设备 | |
CN111221721A (zh) | 一种单元测试案例自动化录制和执行方法及装置 | |
CN113791980B (zh) | 测试用例的转化分析方法、装置、设备及存储介质 | |
CN110597728A (zh) | 构建测试数据的方法、装置及系统 | |
CN115827618A (zh) | 一种全局数据整合方法及装置 | |
CN114168456A (zh) | 一种基于3d-gis的前端性能自动化测试方法 | |
CN113986762A (zh) | 一种测试用例的生成方法及装置 | |
CN114117643A (zh) | 车辆动力总成选型方法、系统、终端设备及存储介质 | |
CN112631905A (zh) | 执行过程数据管理方法、装置、计算机设备及存储介质 | |
CN112329124A (zh) | Cae模型查错方法、装置、计算机设备和存储介质 | |
CN116795723B (zh) | 链式单元测试处理方法、装置及计算机设备 | |
CN111562982B (zh) | 请求数据的处理方法及装置、计算机可读存储介质、电子设备 | |
CN108628750B (zh) | 一种测试代码处理方法及装置 | |
CN117370158A (zh) | 测试处理方法、系统、电子设备和介质 | |
CN110990648A (zh) | 一种病毒查询方法、服务器及计算机可读存储介质 | |
CN114416565A (zh) | 一种数据处理方法、装置、服务器及存储介质 | |
CN115658966A (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 |