CN104142887B - 一种数据挖掘方法和装置 - Google Patents
一种数据挖掘方法和装置 Download PDFInfo
- Publication number
- CN104142887B CN104142887B CN201310676501.7A CN201310676501A CN104142887B CN 104142887 B CN104142887 B CN 104142887B CN 201310676501 A CN201310676501 A CN 201310676501A CN 104142887 B CN104142887 B CN 104142887B
- Authority
- CN
- China
- Prior art keywords
- counter value
- test data
- executable code
- code
- change
- 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
Links
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/3676—Test management for coverage analysis
-
- 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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种数据挖掘方法和装置,针对每条测试数据,分别进行如下处理:将该条测试数据输入给可执行代码,由所述可执行代码运行该条测试数据;确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块;如果是,则将该条测试数据作为挖掘出的测试数据。应用本发明所述方案,能够提高数据挖掘的效率。
Description
技术领域
本发明涉及数据处理技术,特别涉及一种数据挖掘方法和装置。
背景技术
在C/C++软件开发的质量保证体系中,覆盖率是度量测试完整性的一个重要手段,通过对覆盖率进行分析,可以快速定位出哪些代码是没有被覆盖到的。
相应地,在C/C++软件测试中,可基于覆盖率来进行数据挖掘,以提取测试数据,即依赖覆盖率的变化来选取测试的最小集,使得用测试的最小集,达到大数据的测试效果,从而提高测试的效率等。
图1为现有数据挖掘方式的实现流程图。如图1所示,包括步骤11~16。
步骤11:启动可执行代码,并向其输入一条测试数据。
所述可执行代码,即指覆盖率版本的可执行程序。
步骤12:可执行代码运行该条测试数据。
步骤13:确定运行该条测试数据后,可执行代码的总覆盖率值(通常为一个百分比)是否发生了变化,如果是,则执行步骤14,否则,执行步骤15。
步骤14:将该条测试数据作为挖掘出的测试数据,加入到候选集,之后执行步骤15。
挖掘出的测试数据即为提取出的测试数据。
步骤15:确定是否存在下一条测试数据,如果是,则执行步骤16,否则,结束流程。
步骤16:向可执行代码输入下一条测试数据,并重复执行步骤12。
所述可执行代码中通常包括多个文件,每个文件对应一个覆盖率信息文件,用于记录该文件的覆盖率相关信息。在实际应用中,可通过调用gcov工具来进行覆盖率信息文件的生成、更新和解析等。比如,当运行某一条测试数据后,导致某一文件的覆盖率信息发生了变化,那么则需要对该文件对应的覆盖率信息文件进行更新。
但是,gcov工具本身不支持统计功能,如果要得到总覆盖率值,还需要借助于第三方工具如lcov工具。
具体来说,可通过调用gcov工具来对每个覆盖率信息文件进行完整解析,即将每个覆盖率信息文件中的全部信息均解析出来;之后,可通过调用lcov工具,对各解析结果进行汇总等,从而最终得到所需的总覆盖率值。
但是,上述方式在实际应用中会存在一定的问题,如:通过汇总等得到总覆盖率值的过程会非常耗时,从而会严重降低数据挖掘的效率;当工程量较大、待挖掘的数据较多(如几百万条以上)时,进行一次数据挖掘可能需要几天甚至更多的时间。
发明内容
有鉴于此,本发明提供了一种数据挖掘方法和装置,能够提高数据挖掘的效率。
为了达到上述目的,本发明的技术方案是这样实现的:
一种数据挖掘方法,
针对每条测试数据,分别进行如下处理:
将该条测试数据输入给可执行代码,由所述可执行代码运行该条测试数据;
确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块;
如果是,则将该条测试数据作为挖掘出的测试数据;
其中,所述确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块包括:
获取所述可执行代码对应的各覆盖率信息文件;
从获取到的各覆盖率信息文件中解析出所述可执行代码中的每个代码块对应的计数器值;
确定相比于运行该条测试数据之前,解析出的各计数器值中是否存在取值发生了变化的计数器值;
如果是,则确定所述可执行代码的各代码块中存在运行次数发生了变化的代码块。
一种数据挖掘装置,包括:
挖掘模块,用于针对每条测试数据,分别进行如下处理:将该条测试数据输入给可执行代码,由所述可执行代码运行该条测试数据;确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块;如果是,则将该条测试数据作为挖掘出的测试数据;
其中,所述装置中进一步包括:解析模块;
所述挖掘模块进一步用于,在将该条测试数据输入给所述可执行代码之后,通知所述解析模块执行自身功能;
所述解析模块,用于获取所述可执行代码对应的各覆盖率信息文件,并从获取到的各覆盖率信息文件中解析出所述可执行代码中的每个代码块对应的计数器值,发送给所述挖掘模块;
所述挖掘模块确定相比于运行该条测试数据之前,解析出的各计数器值中是否存在取值发生了变化的计数器值;如果是,则确定所述可执行代码的各代码块中存在运行次数发生了变化的代码块。
可见,采用本发明所述方案,针对每条测试数据,可在运行完该条测试数据之后,通过分析是否存在运行次数发生了变化的代码块来确定该条测试数据是否为挖掘出的测试数据;从而相比于现有技术,省去了通过汇总等得到总覆盖率值的过程,进而提高了数据挖掘的效率。
附图说明
图1为现有数据挖掘方式的实现流程图。
图2为本发明数据挖掘方法实施例的流程图。
图3为本发明数据挖掘方法较佳实施例的流程图。
图4为本发明数据挖掘装置实施例的组成结构示意图。
具体实施方式
现有技术中,可执行代码中通常包括多个文件,而每个文件通常又会被划分为多个代码块,等同于,可执行代码被划分为多个代码块,每个代码块均具有如下特性:其中的代码要么全部被执行,要么全部不被执行。
针对每个代码块,均会使用一个独立的计数器来统计该代码块的运行次数,并将计数器值即统计结果写入到该代码块所在的文件对应的覆盖率信息文件中。
覆盖率信息文件中通常包括以下信息:文件名、函数名、行号、包括的代码块,以及每个代码块对应的计数器值等。
基于上述介绍,本发明中提出一种改进后的数据挖掘方式,能够提高数据挖掘的效率。
为了使本发明的技术方案更加清楚、明白,以下参照附图并举实施例,对本发明所述方案作进一步的详细说明。
图2为本发明数据挖掘方法实施例的流程图。如图2所示,包括:
步骤21:针对数据挖掘过程中涉及到的每条测试数据,分别按照步骤22~23所示方式进行处理。
步骤22:将该条测试数据输入给可执行代码,由可执行代码运行该条测试数据。
在实际应用中,针对每条测试数据,分别按照步骤22~23所示方式进行处理之前,通常需要先进行以下处理:启动可执行代码,即在向可执行代码输入第一条测试数据之前,先启动可执行代码。可执行代码即指覆盖率版本的可执行程序。
可执行代码如何运行所输入的测试数据、如何生成或更新相应的覆盖率信息文件等均为现有技术。
步骤23:确定相比于运行该条测试数据之前,可执行代码的各代码块中是否存在运行次数发生了变化的代码块;如果是,则将该条测试数据作为挖掘出的测试数据。
在进行数据挖掘时,其实只需要考虑覆盖率信息文件中的计数器值,而可忽略函数名、行号等,因此,步骤23的实现方式可为:
1)获取可执行代码对应的各覆盖率信息文件;
2)从获取到的各覆盖率信息文件中解析出可执行代码中的每个代码块对应的计数器值;如何进行解析为现有技术;
3)确定相比于运行该条测试数据之前,解析出的各计数器值中是否存在取值发生了变化的计数器值;如果是,则确定可执行代码的各代码块中存在运行次数发生了变化的代码块,并可将该条测试数据作为挖掘出的测试数据,进行保存。
具体地,
在向可执行代码输入第一条测试数据之前,可先生成一个全局计数器值列表,全局计数器值列表中共包括M个计数器值,且均为0,M的取值与可执行代码中包括的代码块数相同。
相应地,步骤2)之后,可进一步包括:利用解析出的各计数器值生成一个当前计数器值列表。
步骤3)之后,可进一步包括:将当前计数器值列表作为全局计数器值列表,即用当前计数器值列表替换原有的全局计数器值列表,作为新的全局计数器值列表。
步骤3)的具体实现方式可为:确定当前计数器值列表相比于全局计数器值列表是否发生了变化,如果是,则确定解析出的各计数器值中存在取值发生了变化的计数器值。
取值发生了变化是指:从0变为非0的正整数。所述正整数的取值通常为1,但也可能大于1;比如,若该条测试数据对应一个循环操作,则所述正整数的取值可能就会大于1。
综合上述介绍,图3为本发明数据挖掘方法较佳实施例的流程图。如图3所示,包括以下步骤31~39。
步骤31:生成一个全局计数器值列表,全局计数器值列表中共包括M个计数器值,且均为0,M的取值与可执行代码中包括的代码块数相同。
步骤32:启动可执行代码。
步骤33:向可执行代码输入一条测试数据。
步骤34:可执行代码运行该条测试数据。
步骤35:获取可执行代码对应的各覆盖率信息文件;从获取到的各覆盖率信息文件中解析出可执行代码中的每个代码块对应的计数器值,并利用解析出的各计数器值生成一个当前计数器值列表。
步骤36:将当前计数器值列表与全局计数器值列表进行比较,确定是否存在从0变为非0的计数器值,如果是,则执行步骤37,否则,执行步骤38。
举例说明:
假设当前计数器值列表中共包括5个计数器值,分别为:0、0、1、1、0;
同样,全局计数器值列表中也包括5个计数器值,假设分别为:0、0、0、1、0;
两者比较后发现,当前计数器值列表中存在一个从0变为1的计数器值,因此后续执行步骤37。
步骤37:将该条测试数据作为挖掘出的测试数据进行保存,并将当前计数器值列表作为全局计数器值列表,之后执行步骤38。
步骤38:确定是否存在下一条测试数据,如果是,则执行步骤39,否则,结束流程。
步骤39:向可执行代码输入下一条测试数据,并重复执行步骤34。
本发明同时公开了一种数据挖掘装置。图4为本发明数据挖掘装置实施例的组成结构示意图。如图4所示,包括:
挖掘模块41,用于针对每条测试数据,分别进行如下处理:将该条测试数据输入给可执行代码,由所述可执行代码运行该条测试数据;确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块;如果是,则将该条测试数据作为挖掘出的测试数据。
另外,图4所示装置中还可进一步包括:解析模块42;
相应地,挖掘模块41可进一步用于,在将该条测试数据输入给所述可执行代码之后,通知解析模块42执行自身功能;
解析模块42,用于获取所述可执行代码对应的各覆盖率信息文件,并从获取到的各覆盖率信息文件中解析出所述可执行代码中的每个代码块对应的计数器值,发送给挖掘模块41;
挖掘模块41确定相比于运行该条测试数据之前,解析出的各计数器值中是否存在取值发生了变化的计数器值;如果是,则确定所述可执行代码的各代码块中存在运行次数发生了变化的代码块。
再有,
挖掘模块41还可进一步用于,
在向所述可执行代码输入第一条测试数据之前,生成一个全局计数器值列表,所述全局计数器值列表中共包括M个计数器值,且均为0,所述M的取值与所述可执行代码中包括的代码块数相同;
解析模块42还可进一步用于,利用解析出的各计数器值生成一个当前计数器值列表,发送给挖掘模块41;
挖掘模块41还可进一步用于,确定所述当前计数器值列表相比于所述全局计数器值列表是否发生了变化,如果是,则确定解析出的各计数器值中存在取值发生了变化的计数器值,并将所述当前计数器值列表作为所述全局计数器值列表。
所述取值发生了变化包括:从0变为非0的正整数。
还有,
挖掘模块41还可进一步用于,在向所述可执行代码输入第一条测试数据之前,启动所述可执行代码;
挖掘模块41还可进一步用于,在将该条测试数据作为挖掘出的测试数据之后,将该条测试数据进行保存。
图4所示装置实施例的具体工作流程请参照前述方法实施例以及较佳实施例中的相应说明,此处不再赘述。
上述解析模块42可理解为改进后的gcov工具,现有gcov工具会对覆盖率信息文件进行完整解析,而改进后的gcov工具只需要解析出其中的计数器值信息。
总之,针对每条测试数据,可在运行完该条测试数据之后,通过分析是否存在运行次数发生了变化的代码块来确定该条测试数据是否为挖掘出的测试数据;从而相比于现有技术,省去了通过汇总等得到总覆盖率值的过程,进而提高了数据挖掘的效率;而且,无需对覆盖率信息文件进行完整解析,只需解析占完整信息中很少一部分的计数器值信息,解析的数据量明显减少,从而进一步提高了数据挖掘的效率;试验显示,采用本发明所述方案后,数据挖掘速度能够比现有方式提升100倍以上。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种数据挖掘方法,其特征在于,
针对每条测试数据,分别进行如下处理:
将该条测试数据输入给可执行代码,由所述可执行代码运行该条测试数据;
确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块;
如果是,则将该条测试数据作为挖掘出的测试数据;
其中,所述确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块包括:
获取所述可执行代码对应的各覆盖率信息文件;
从获取到的各覆盖率信息文件中解析出所述可执行代码中的每个代码块对应的计数器值;
确定相比于运行该条测试数据之前,解析出的各计数器值中是否存在取值发生了变化的计数器值;
如果是,则确定所述可执行代码的各代码块中存在运行次数发生了变化的代码块。
2.根据权利要求1所述的方法,其特征在于,
在向所述可执行代码输入第一条测试数据之前,进一步包括:生成一个全局计数器值列表,所述全局计数器值列表中共包括M个计数器值,且均为0,所述M的取值与所述可执行代码中包括的代码块数相同;
所述从获取到的各覆盖率信息文件中解析出所述可执行代码中的每个代码块对应的计数器值之后,进一步包括:利用解析出的各计数器值生成一个当前计数器值列表;
所述确定所述可执行代码的各代码块中存在运行次数发生了变化的代码块之后,进一步包括:将所述当前计数器值列表作为所述全局计数器值列表;
所述确定相比于运行该条测试数据之前,解析出的各计数器值中是否存在取值发生了变化的计数器值包括:确定所述当前计数器值列表相比于所述全局计数器值列表是否发生了变化,如果是,则确定解析出的各计数器值中存在取值发生了变化的计数器值。
3.根据权利要求1或2所述的方法,其特征在于,
所述取值发生了变化包括:从0变为非0的正整数。
4.根据权利要求1或2所述的方法,其特征在于,
在向所述可执行代码输入第一条测试数据之前,进一步包括:启动所述可执行代码;
所述将该条测试数据作为挖掘出的测试数据之后,进一步包括:将该条测试数据进行保存。
5.一种数据挖掘装置,其特征在于,包括:
挖掘模块,用于针对每条测试数据,分别进行如下处理:将该条测试数据输入给可执行代码,由所述可执行代码运行该条测试数据;确定相比于运行该条测试数据之前,所述可执行代码的各代码块中是否存在运行次数发生了变化的代码块;如果是,则将该条测试数据作为挖掘出的测试数据;
其中,所述装置中进一步包括:解析模块;
所述挖掘模块进一步用于,在将该条测试数据输入给所述可执行代码之后,通知所述解析模块执行自身功能;
所述解析模块,用于获取所述可执行代码对应的各覆盖率信息文件,并从获取到的各覆盖率信息文件中解析出所述可执行代码中的每个代码块对应的计数器值,发送给所述挖掘模块;
所述挖掘模块确定相比于运行该条测试数据之前,解析出的各计数器值中是否存在取值发生了变化的计数器值;如果是,则确定所述可执行代码的各代码块中存在运行次数发生了变化的代码块。
6.根据权利要求5所述的装置,其特征在于,
所述挖掘模块进一步用于,
在向所述可执行代码输入第一条测试数据之前,生成一个全局计数器值列表,所述全局计数器值列表中共包括M个计数器值,且均为0,所述M的取值与所述可执行代码中包括的代码块数相同;
所述解析模块进一步用于,利用解析出的各计数器值生成一个当前计数器值列表,发送给所述挖掘模块;
所述挖掘模块进一步用于,确定所述当前计数器值列表相比于所述全局计数器值列表是否发生了变化,如果是,则确定解析出的各计数器值中存在取值发生了变化的计数器值,并将所述当前计数器值列表作为所述全局计数器值列表。
7.根据权利要求5或6所述的装置,其特征在于,
所述取值发生了变化包括:从0变为非0的正整数。
8.根据权利要求5或6所述的装置,其特征在于,
所述挖掘模块进一步用于,在向所述可执行代码输入第一条测试数据之前,启动所述可执行代码;
所述挖掘模块进一步用于,在将该条测试数据作为挖掘出的测试数据之后,将该条测试数据进行保存。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310676501.7A CN104142887B (zh) | 2013-12-12 | 2013-12-12 | 一种数据挖掘方法和装置 |
PCT/CN2014/079669 WO2015085737A1 (en) | 2013-12-12 | 2014-06-11 | Method and apparatus for mining test coverage data priority claim and related application |
US14/458,127 US9454467B2 (en) | 2013-12-12 | 2014-08-12 | Method and apparatus for mining test coverage data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310676501.7A CN104142887B (zh) | 2013-12-12 | 2013-12-12 | 一种数据挖掘方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104142887A CN104142887A (zh) | 2014-11-12 |
CN104142887B true CN104142887B (zh) | 2016-12-14 |
Family
ID=51852067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310676501.7A Active CN104142887B (zh) | 2013-12-12 | 2013-12-12 | 一种数据挖掘方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN104142887B (zh) |
WO (1) | WO2015085737A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115858354B (zh) * | 2022-11-29 | 2023-08-18 | 广发银行股份有限公司 | 一种测试覆盖率计算方法、系统、终端及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426551A (zh) * | 2011-11-04 | 2012-04-25 | 百度在线网络技术(北京)有限公司 | 测试数据筛选方法及装置、测试数据构造方法及装置 |
CN103246602A (zh) * | 2012-02-14 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 代码覆盖率确定方法及系统、代码覆盖检测方法及系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188298A1 (en) * | 2002-03-29 | 2003-10-02 | Sun Microsystems, Inc., A Delaware Corporation | Test coverage framework |
US6978401B2 (en) * | 2002-08-01 | 2005-12-20 | Sun Microsystems, Inc. | Software application test coverage analyzer |
US7210066B2 (en) * | 2002-12-31 | 2007-04-24 | Sun Microsystems, Inc. | Method and system for determining computer software test coverage |
US20070006166A1 (en) * | 2005-06-20 | 2007-01-04 | Seagate Technology Llc | Code coverage for an embedded processor system |
CN103365771B (zh) * | 2012-04-10 | 2016-02-17 | 阿里巴巴集团控股有限公司 | 一种代码覆盖率的获得方法和设备 |
-
2013
- 2013-12-12 CN CN201310676501.7A patent/CN104142887B/zh active Active
-
2014
- 2014-06-11 WO PCT/CN2014/079669 patent/WO2015085737A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102426551A (zh) * | 2011-11-04 | 2012-04-25 | 百度在线网络技术(北京)有限公司 | 测试数据筛选方法及装置、测试数据构造方法及装置 |
CN103246602A (zh) * | 2012-02-14 | 2013-08-14 | 阿里巴巴集团控股有限公司 | 代码覆盖率确定方法及系统、代码覆盖检测方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
WO2015085737A1 (en) | 2015-06-18 |
CN104142887A (zh) | 2014-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Moretti et al. | Internal validation of STRmix™ for the interpretation of single source and mixed DNA profiles | |
Finck et al. | Normalization of mass cytometry data with bead standards | |
US10120783B2 (en) | Determining test case efficiency | |
US11003563B2 (en) | Compliance testing through sandbox environments | |
US20120192153A1 (en) | Method and system for providing a testing framework | |
Ampatzoglou et al. | The perception of technical debt in the embedded systems domain: an industrial case study | |
CN1664810A (zh) | 辅助表格填充 | |
CN105068925A (zh) | 软件安全缺陷发现系统 | |
Kirbas et al. | The relationship between evolutionary coupling and defects in large industrial software | |
US8904352B2 (en) | Systems and methods for processing source code during debugging operations | |
EP3206146A1 (en) | Data information processing method and device | |
US9965252B2 (en) | Method and system for generating stateflow models from software requirements | |
US20030188298A1 (en) | Test coverage framework | |
CN103713998A (zh) | 一种可扩展的在线静态代码缺陷分析方法 | |
Wang et al. | Modeling conditional dependence among multiple diagnostic tests | |
CN106778264A (zh) | 一种移动客户端的应用程序分析方法及分析系统 | |
CN105824756A (zh) | 一种基于代码依赖关系的过时需求自动检测方法及系统 | |
Mizuno et al. | A cross-project evaluation of text-based fault-prone module prediction | |
US20130152045A1 (en) | Software internationalization estimation model | |
Tiley et al. | Estimation of species divergence times in presence of cross-species gene flow | |
US20160112285A1 (en) | Apparatus and method for detecting abnormal connection | |
CN104142887B (zh) | 一种数据挖掘方法和装置 | |
US11449408B2 (en) | Method, device, and computer program product for obtaining diagnostic information | |
Al-Azzani et al. | Secarch: Architecture-level evaluation and testing for security | |
Verdecchia | Architectural technical debt identification: Moving forward |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20180913 Address after: 100090 Beijing Haidian District Zhichun Road 49 No. 3 West 309 Patentee after: Tencent cloud computing (Beijing) limited liability company Address before: 518044 East 403 room, Sai Ge science and Technology Park, Futian District Zhenxing Road, Shenzhen, Guangdong, China, 2 Patentee before: Tencent Technology (Shenzhen) Co., Ltd. |