CN114546838A - DevOps中的项目质量评估方法、装置、电子设备及存储介质 - Google Patents
DevOps中的项目质量评估方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114546838A CN114546838A CN202210104157.3A CN202210104157A CN114546838A CN 114546838 A CN114546838 A CN 114546838A CN 202210104157 A CN202210104157 A CN 202210104157A CN 114546838 A CN114546838 A CN 114546838A
- Authority
- CN
- China
- Prior art keywords
- code
- data
- core
- development process
- core code
- 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
- 238000000034 method Methods 0.000 title claims abstract description 319
- 238000003860 storage Methods 0.000 title claims abstract description 10
- 238000012360 testing method Methods 0.000 claims abstract description 181
- 230000008569 process Effects 0.000 claims abstract description 117
- 238000004519 manufacturing process Methods 0.000 claims abstract description 75
- 230000008859 change Effects 0.000 claims abstract description 56
- 238000012827 research and development Methods 0.000 claims abstract description 56
- 238000013441 quality evaluation Methods 0.000 claims abstract description 38
- 230000010354 integration Effects 0.000 claims abstract description 29
- 238000011161 development Methods 0.000 claims description 42
- 238000012544 monitoring process Methods 0.000 claims description 19
- 238000001303 quality assessment method Methods 0.000 claims description 13
- 238000007405 data analysis Methods 0.000 claims description 4
- 238000012423 maintenance Methods 0.000 abstract description 7
- 230000006870 function Effects 0.000 description 14
- 238000010276 construction Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000003247 decreasing effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 238000012216 screening Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 238000000275 quality assurance Methods 0.000 description 2
- 230000000391 smoking effect Effects 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000011282 treatment Methods 0.000 description 1
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/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
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0639—Performance analysis of employees; Performance analysis of enterprise or organisation operations
- G06Q10/06395—Quality analysis or management
-
- 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
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Educational Administration (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Game Theory and Decision Science (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种DevOps中的项目质量评估方法、装置、电子设备及存储介质,属于计算机技术领域,该方法可以根据预设代码规则在目标项目的生产代码中确定核心代码,并采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及核心代码的代码变更数据,再对研发过程数据、测试结果数据、代码变更数据等进行加权统计,其中,预设代码规则用于评估生产代码的重要性,研发过程数据包括任务节点在研发过程中的特征数据,从而能够从核心代码、研发过程、测试结果等多维度地对目标项目进行更全面、更充分、更准确的质量评估,提高后续运维的执行效率。
Description
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种DevOps中的项目质量评估方法、装置、电子设备及存储介质。
背景技术
DevOps是Development(开发)和Operations(运维)的组合,是一组过程、方法与***的统称,用于促进开发、技术运营和QA(Quality Assurance,质量保障)部门之间的沟通、协作与整合。在DevOps的普及下,基于CI(Continuous Integration,持续集成)和CD(Continuous Deployment,持续部署)实现了项目的快速开发、迭代、交付。
但是,在DevOps的快速开发、迭代、交付中很多项目不能得到及时、充分的测试,如测试人员仅能对项目中部分不同节点分别采用不同的指标进行测试,导致难以对项目质量进行全面、充分、准确的评估,影响后续运维执行。
发明内容
本发明提供了一种DevOps中的项目质量评估方法、装置、电子设备及存储介质,以解决在DevOps中的项目研发中,对项目的质量评估不够全面、充分、准确的问题,提高后续运维的执行效率。
本发明第一方面提供了一种DevOps中的项目质量评估方法,该方法可以包括:
根据预设代码规则在目标项目的生产代码中确定核心代码,所述预设代码规则用于评估所述生产代码的重要性;
采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及所述核心代码的代码变更数据,所述研发过程数据包括所述任务节点在研发过程中的特征数据;
对所述研发过程数据、所述测试结果数据、所述代码变更数据进行加权统计,获得所述目标项目的质量评估结果。
可选地,所述根据预设代码规则在目标项目的生产代码中确定核心代码,包括:
获取所述生产代码中每一方法的方法调用次数;
根据所述方法调用次数的大小在所述生产代码中确定核心代码。
可选地,所述根据所述方法调用次数的大小在所述生产代码中确定核心代码,包括:
根据所述方法调用次数的大小对所述方法进行排序;
在排序后的所述方法中,将预设位次的所述方法确定为所述核心代码。
可选地,所述根据所述方法调用次数的大小在所述生产代码中确定核心代码,包括:
获取对所述目标项目的监控数据;
根据所述监控数据确定所述目标项目的应用调用次数;
确定每一所述方法对应的所述方法调用次数在所述应用调用次数中的调用占比;
将所述调用占比大于或等于预设占比阈值的方法确定为所述核心代码。
可选地,所述根据所述方法调用次数的大小在所述生产代码中确定核心代码,包括:
将所述方法调用次数大于或等于预设调用阈值的方法确定为所述核心代码。
可选地,所述根据预设代码规则在目标项目的生产代码中确定核心代码,包括:
获取方法屏蔽名单;
将所述生产代码中每一所述方法与所述方法屏蔽名单进行匹配;
在所述方法与所述方法屏蔽名单不匹配的情况下,将所述方法确定为所述核心代码。
可选地,所述研发过程数据包括构建失败率、部署失败率、单元测试失败率、自动化测试失败率、单元测试用例跳过占比、自动化测试跳过占比中的至少一种。
可选地,所述测试结果数据包括代码扫描结果、单元测试覆盖率结果、集成测试覆盖率、自动化测试覆盖率中的至少一种。
可选地,所述代码变更数据包括核心代码发生变更、核心代码变更量、核心代码单元测试覆盖率、核心代码集成测试覆盖率、核心代码自动化测试覆盖率中的至少一种。
本发明第二方面提供了一种DevOps中的项目质量评估装置,该装置可以包括:
核心代码模块,用于根据预设代码规则在目标项目的生产代码中确定核心代码,所述预设代码规则用于评估所述生产代码的重要性;
数据采集模块,用于采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及所述核心代码的代码变更数据,所述研发过程数据包括所述任务节点在研发过程中的特征数据;
质量评估模块,用于对所述研发过程数据、所述测试结果数据、所述代码变更数据进行加权统计,获得所述目标项目的质量评估结果。
可选地,所述核心代码模块,包括:
调用次数获取子模块,用于获取所述生产代码中每一方法的方法调用次数;
核心代码确定子模块,用于根据所述方法调用次数的大小在所述生产代码中确定核心代码。
可选地,所述核心代码确定子模块,包括:
代码排序单元,用于根据所述方法调用次数的大小对所述方法进行排序;
代码确定单元,用于在排序后的所述方法中,将预设位次的所述方法确定为所述核心代码。
可选地,所述核心代码确定子模块,还包括:
项目调用监控单元,用于获取对所述目标项目的监控数据;
应用调用次数单元,还用于根据所述监控数据确定所述目标项目的应用调用次数;
调用占比确定单元,用于确定每一所述方法对应的所述方法调用次数在所述应用调用次数中的调用占比;
所述代码确定单元,还用于将所述调用占比大于或等于预设占比阈值的方法确定为所述核心代码。
可选地,所述核心代码确定子模块,还用于将所述方法调用次数大于或等于预设调用阈值的方法确定为所述核心代码。
可选地,所述核心代码模块,包括:
屏蔽名单获取子模块,用于获取方法屏蔽名单;
屏蔽名单匹配子模块,用于将所述生产代码中每一所述方法与所述方法屏蔽名单进行匹配;
所述核心代码确定子模块,还用于在所述方法与所述方法屏蔽名单不匹配的情况下,将所述方法确定为所述核心代码。
可选地,所述研发过程数据包括构建失败率、部署失败率、单元测试失败率、自动化测试失败率、单元测试用例跳过占比、自动化测试跳过占比中的至少一种。
可选地,所述测试结果数据包括代码扫描结果、单元测试覆盖率结果、集成测试覆盖率、自动化测试覆盖率中的至少一种。
可选地,所述代码变更数据包括核心代码发生变更、核心代码变更量、核心代码单元测试覆盖率、核心代码集成测试覆盖率、核心代码自动化测试覆盖率中的至少一种。
本发明第三方面提供了一种电子设备,该电子设备包括:接口,总线,存储器与处理器,所述接口、存储器与处理器通过所述总线相连接,所述存储器用于存储可执行程序,所述处理器被配置为运行所述可执行程序实现如第一方面所述的DevOps中的项目质量评估方法的步骤。
本发明第四方面提供了一种计算机存储介质,该计算机可读存储介质上存储可执行程序,所述可执行程序被处理器运行实现如第一方面所述的 DevOps中的项目质量评估方法的步骤。
与相关技术相比,本发明具有以下优点:
在本发明实施中提供一种DevOps中的项目质量评估方法,该方法可以根据预设代码规则在目标项目的生产代码中确定核心代码,并采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及核心代码的代码变更数据,再对研发过程数据、测试结果数据、代码变更数据等进行加权统计,其中,预设代码规则用于评估生产代码的重要性,研发过程数据包括任务节点在研发过程中的特征数据,从而在质量评估中考虑根据重要性确定的核心代码的变更情况,还涉及研发过程中每一任务节点的特征,再结合对每一任务节点的测试结果数据,能够从核心代码、研发过程、测试结果等多维度地对目标项目进行更全面、更充分、更准确的质量评估,提高后续运维的执行效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例提供的DevOps中的项目质量评估方法的步骤流程图之一;
图2是本发明实施例提供的DevOps中的项目质量评估方法的步骤流程图之二;
图3是本发明实施提供的一种持续集成流程示意图;
图4是本发明实施例提供的一种DevOps中的项目质量评估装置的结构框图;
图5是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图1是本发明实施例提供的DevOps中的项目质量评估方法的步骤流程图之一,如图1所示,该方法可以包括:
步骤101、根据预设代码规则在目标项目的生产代码中确定核心代码,所述预设代码规则用于评估所述生产代码的重要性。
本发明实施例中,目标项目可以是基于需求分析确定的软件开发项目,目标项目的开发流程中可以基于需求设计对应的框架、功能、数据库等,并通过生产代码实现对应的设计,根据生产代码实现的功能、所处的框架等不同,其在项目中的重要性也有所不同,预设代码规则可以对生产代码的重要性进行评估,以在目标项目的生产代码中确定核心代码,可选地,可以根据生产代码实现的功能在需求设计中的重要性评估该生产代码的重要性,可以根据生产代码在软件整体框架中的重要性评估该生产代码的重要性,也可以接收在编写该生产代码时为其设置的优先级并根据优先级评估该生产代码的重要性,本领域技术人员可以根据实际情况确定预设代码规则,本发明实施例对此不作具体限制。
步骤102、采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及所述核心代码的代码变更数据,所述研发过程数据包括所述任务节点在研发过程中的特征数据。
本发明实施例中,目标项目可以基于DevOps引入CI/CD流程进行开发,在目标项目的CI/CD流程中可以包括不同的任务节点,如任务节点可以包括构建、打包、部署、单元测试、代码扫描、自动化测试等,对目标项目的开发过程中每一任务节点可以采集对应的研发过程数据以及测试结果数据,其中,研发过程数据包括任务节点在研发过程中的特征数据,如可以是任务节点在研发过程中是否构建成功、是否部署成功、是否测试成功等等,测试结果数据可以包括对任务节点测试的测试结果,通过研发过程数据可以评估目标项目的每一任务节点在研发过程中的质量,通过测试结果数据可以评估目标项目的每一任务节点研发的结果质量,从而可以充分考虑目标项目的研发过程质量,避免任务节点在研发过程中多次失败才通过测试可能造成的质量风险,提高对目标项目进行质量评估的全面性、准确性。
本发明实施例中,可以认为研发过程中对不同重要性生产代码的变更情况可以反应研发过程的质量,如对重要性越高的生产代码的变更次数越多、变更量越大可以认为目标项目可能存在需求不明确、功能不稳定的问题,从而使得目标项目存在一定质量风险,因此,在根据预设代码规则对生产代码的重要性评估确定核心代码后,可以进一步采集核心代码的代码变更数据,从而能够充分考虑重要性符合预设代码规则的核心代码在研发过程中的质量特征。
步骤103、对所述研发过程数据、所述测试结果数据、所述代码变更数据进行加权统计,获得所述目标项目的质量评估结果。
本发明实施例中,通过步骤101-102采集了目标项目研发过程数据、测试结果数据、代码变更数据等多维度数据,可以对不同维度的数据分配不同的权重以进行加权统计,从而获得目标项目的质量评估结果,可选地,加权统计中的权重分配、统计规则等可以根据质量评估需求进行定义,可以对不同维度数据分配不同的权重以提高其对质量评估结果的影响程度,也可以是不同维度数据间的计算方式,本发明实施例对此不作具体限制。
本发明实施例中,还可以在目标项目上线后,采集目标项目的上线反馈数据,如上线反馈数据可以包括目标项目的运行bug(故障)、运行效果等,进一步的,可以根据步骤101-102采集的研发过程数据、测试结果数据、代码变更数据等,以及上线反馈数据对目标项目进行质量评估,或进行质量评估结果的更新,可选地,可以采用加权统计的方式对研发过程数据、测试结果数据、代码变更数据以及上线反馈数据进行统计,也可以采用机器学习算法进行模型训练,以获得用于对目标项目进行质量评估的模型。
在本发明实施中提供一种DevOps中的项目质量评估方法,该方法可以根据预设代码规则在目标项目的生产代码中确定核心代码,并采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及核心代码的代码变更数据,再对研发过程数据、测试结果数据、代码变更数据等进行加权统计,其中,预设代码规则用于评估生产代码的重要性,研发过程数据包括任务节点在研发过程中的特征数据,从而在质量评估中考虑根据重要性确定的核心代码的变更情况,还涉及研发过程中每一任务节点的特征,再结合对每一任务节点的测试结果数据,能够从核心代码、研发过程、测试结果等多维度地对目标项目进行更全面、更充分、更准确的质量评估,提高后续运维的执行效率。
图2是本发明实施例提供的DevOps中的项目质量评估方法的步骤流程图之二,如图2所示,该方法可以包括:
步骤201、获取所述生产代码中每一方法的方法调用次数。
本发明实施例中,方法可以是完成特定功能的一组生产代码,可以通过调用该方法实现相应的功能,在此基础上,每一方法的方法调用次数可以反应该功能在应用中实现的次数,可选地,可以采用探针、插桩等方式统计生产代码中方法的方法执行次数。
如,对代码覆盖率工具JACOCO(Java Code Coverage)进行改进,将布尔(是否)标记探针变更为整型计数探针,从而变更统计方法是否执行为统计方法调用次数,此时,可以采用JACOCO对生产代码进行插桩,通过整型计数探针统计每一方法的方法调用次数。
步骤202、根据所述方法调用次数的大小在所述生产代码中确定核心代码。
本发明实施例中,可以认为实现越频繁的功能在实际应用中重要性越高,从而可以根据方法调用次数评估该功能对应方法的重要性,在此基础上,方法调用次数越大该方法的重要性越大,从而可以根据每一方法对应的重要性在不同方法中确定核心代码,其中,可以根据质量评估需求选择在方法中确定核心代码的方式,本发明实施例对此不作具体限制。
可选地,所述步骤202包括:
步骤S11、根据所述方法调用次数的大小对所述方法进行排序。
本发明实施例中,在获得每一方法的方法调用次数后,可以根据方法调用次数的大小对方法进行排序,以使不同方法在顺序排列的位次递增的情况下,其方法调用次数递增或递减。
步骤S12、在排序后的所述方法中,将预设位次的所述方法确定为所述核心代码。
本发明实施例中,由于排序后的方法在顺序排列的位次递增的情况下,其方法调用次数递增或递减,因此可以认为在顺序排列中方法的重要性在位次递增的情况下递增或递减,此时,可以在顺序排列中选择预设位次的方法为核心代码,以使核心代码的变更情况影响目标项目的质量评估结果,可选地,预设位次可以是顺序排列中方法调用次数随位次递增而递增的前n 位,或方法调用次数随位次递增而递减的后n位,其中,n可以是1、2、3、···、10、···。
可选地,所述步骤202之前,还包括:
步骤S21、获取对所述目标项目的监控数据。
本发明实施例中,监控数据可以是对目标项目进行项目监控获得的数据,其中,项目监控可以包括对目标项目运行环境、运行状态,以及与其他项目交互、调用等的监控。
步骤S22、根据所述监控数据确定所述目标项目的应用调用次数。
本发明实施例中,应用调用次数可以指目标项目被调用的次数,在监控数据中可以包括目标项目的调用情况,从而可以根据监控数据确定目标项目的应用调用次数。
步骤S23、确定每一所述方法对应的所述方法调用次数在所述应用调用次数中的调用占比。
本发明实施例中,目标项目可以包括不同功能,并通过不同方法实现,在目标项目被调用时可能实现部分功能,从而部分方法可能被执行,其他方法可能不被执行,调用占比可以将每一方法对应的方法调用次数与应用调用次数作比得到,因而通过调用占比可以确定目标项目被调用时每一方法被调用的概率,不同方法的调用占比可能相同也可能不同。
步骤S24、将所述调用占比大于或等于预设占比阈值的方法确定为所述核心代码。
本发明实施例中,可以认为在目标项目被调用时每一方法被调用的概率与该方法的重要性有关,则调用占比越大该方法的重要性越高,可选地,可以设置预设占比阈值通过调用占比对方法进行筛选,将调用占比大于或等于预设占比阈值的方法确定为核心代码,从而筛选重要性符合质量评估需求的生产代码为核心代码,可选地,预设占比阈值可以是70%、71%、 72%、···,本领域技术人员可以根据监控条件、评估需求等调整预设占比阈值的数值,本发明对此不作具体限制。
可选地,所述步骤202包括:
步骤S31、将所述方法调用次数大于或等于预设调用阈值的方法确定为所述核心代码。
本发明实施例中,由于方法调用次数可以反应方法的重要性,因此,也可以设置预设调用阈值对方法通过方法调用次数进行筛选,将方法调用次数大于或等于预设调用阈值的方法确定为核心代码,从而筛选重要性符合质量评估需求的生产代码为核心代码,本领域技术人员可以根据监控条件、评估需求等调整预设调用阈值的数值,本发明对此不作具体限制。。
可选地,所述步骤202,包括:
步骤S41、获取方法屏蔽名单。
本发明实施例中,在CI/CD流程中还可以设置方法屏蔽名单,将指定的方法存入方法屏蔽名单中,以避免该方法被确定为核心代码,可选地,可以通过正则模式描述该方法在搜索时需要匹配的一个或多个字符串,从而将方法存入方法屏蔽名单,在确定核心代码时可以获取该方法屏蔽名单。
步骤S42、将所述生产代码中每一所述方法与所述方法屏蔽名单进行匹配。
本发明实施例中,方法屏蔽名单中存储有不能被确定为核心代码的方法,因此可以将生产代码中每一方法与方法屏蔽名单进行匹配,从而确定方法中不能被确定为核心代码的生产代码,可选地,可以采用正则表达式对每一方法与方法屏蔽名单中的字符串进行匹配,本领域技术人员可以根据具体情况选择其他方式将方法存入方法屏蔽名单,以及将每一方法与方法屏蔽名单进行匹配,本发明实施例对此不作具体限制。
步骤S43、在所述方法与所述方法屏蔽名单不匹配的情况下,将所述方法确定为所述核心代码。
本发明实施例中,在方法与方法屏蔽名单匹配的情况下,该方法不能被确定为核心代码,而在方法与方法屏蔽名单不匹配的情况下,可以将该方法确定为核心代码。
本发明实施例中,还可以在CI/CD流程中自定义核心代码,将需求的类、方法等设置为核心代码,其中,类可以包括多个功能相同或相近的方法。
本发明实施例中,前述确定核心代码的方法可以分别实现,也可以组合实现,组合实现可以是先通过方法屏蔽名单筛选方法,再对筛选后的方法采用方法调用次数确定核心代码;或者也可以是先采用方法调用次数筛选核心代码,再通过方法屏蔽名单对筛选后的方法进行修正以确定核心代码;或者,可以是在方法调用次数对方法排序后的预设位次中确定调用占比在预设占比阈值以上的方法为核心代码,本领域技术人员可以根据实际需求选择确定核心代码的方式,本发明实施例对此不作具体限制。
步骤203、采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及所述核心代码的代码变更数据,所述研发过程数据包括所述任务节点在研发过程中的特征数据。
可选地,所述研发过程数据包括构建失败率、部署失败率、单元测试失败率、自动化测试失败率、单元测试用例跳过占比、自动化测试跳过占比中的至少一种。
本发明实施例中,在目标项目的研发过程中,构建可以是通过编译获得可以直接部署在环境中的至少一个文件,每个构建的结果都可以进行版本保存,以便后续部署、回滚、灰度等操作的实现,而研发过程中的构建可能成功也可能失败。在本发明实施中可以认为目标项目的构建失败率可以影响目标项目的质量,通常来说,构建失败率越高目标项目的风险越大。可选地,也可以采用构建成功率进行统计,在此基础上,可以是构建成功率越高目标项目的风险越低。
本发明实施例中,在目标项目的研发过程中,部署可以是将构建得到的应用、服务安装到开发、测试、生产等环境中,在研发过程中的部署可能成功也可能失败,在本发明实施中可以认为目标项目的部署失败率可以影响目标项目的质量,通常来说,部署失败率越高目标项目的风险越大。可选地,也可以采用部署成功率进行统计,在此基础上,可以是部署成功率越高目标项目的风险越低。
本发明实施例中,在目标项目的研发过程中,单元测试指目标项目中的单元进行正确性检验的测试工作,其中,单元可以是研发过程中的最小单位,如单元可以是函数、方法等,方法可以包括基类、抽象类或子类中的方法,因此,在研发过程中对不同单元的单元测试可能成功也可能失败。可选地,单元测试失败率可以是目标项目的被测单元中进行单元测试后的单元测试失败率,可以是每个被测单元在一定次数单元测试中对应的单元测试失败率,也可以由每个被测单元在通过单元测试前的失败次数得到,在本发明实施中可以认为单元测试失败率可以影响目标项目的质量,通常来说,单元测试失败率越高目标项目的风险越大。可选地,也可以采用单元测试成功率进行统计,在此基础上,可以是单元测试成功率越高目标项目的风险越低。
进一步的,单元测试用例可以指对目标项目中的单元执行测试任务的描述,可以包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,单元测试可以采用对应的单元测试用例实现。在研发过程中,可能因为具体需求、测试条件、故障等因素跳过单元测试用例不执行,由于单元测试用例跳过后该单元的质量不能确定、风险高,因此,在本发明实施中可以认为单元测试用例跳过占比可以影响目标项目的质量,通常来说,单元测试用例跳过占比越高目标项目的风险越大。
本发明实施例中,在目标项目的研发过程中,自动化测试指对目标项目通过自动化的方式执行测试任务,可以是自动在预设环境下运行应用、服务等,并根据预设的指标自动评估输出的运行结果。在此基础上,本发明实施可以认为自动化测试失败率、自动化测试跳过占比可以影响目标项目的质量,具体可以参照前述单元测试失败率、单元测试用例跳过占比的相关描述,为避免重复,在此不再赘述。
可选地,所述测试结果数据包括代码扫描结果、单元测试覆盖率结果、集成测试覆盖率、自动化测试覆盖率中的至少一种。
本发明实施例中,在目标项目的研发过程中可以通过对生产代码进行代码扫描,以发现生产代码中的语义缺陷、安全漏洞等;测试覆盖率可以是测试中生产代码被执行量与总量的比率,用于评估测试的充分程度,在此基础上,单元测试覆盖率可以评估对被测单元进行单元测试的充分程度,集成测试覆盖率可以评估对不同单元根据设计需求组装后联合测试的充分程度,自动化测试可以评估对自动化方式进行测试的充分程度。
可选地,所述代码变更数据包括核心代码发生变更、核心代码变更量、核心代码单元测试覆盖率、核心代码集成测试覆盖率、核心代码自动化测试覆盖率中的至少一种。
本发明实施例中,核心代码是通过预设代码规则对生产代码的重要性进行评估确定的,因此,通过统计核心代码是否发生变更、核心代码的变更量等可以确定对目标项目中对重要性符合质量评估要求的生产代码的变更情况,在本发明实施中可以认为对核心代码变更,以及变更次数、变更频率、变更量等可以影响目标项目的质量,通常情况下,可以认为变更次数多、变更频率高、变更量大的情况下目标项目的风险越大。
本发明实施例中,核心代码单元测试覆盖率、核心代码集成测试覆盖率、核心代码自动化测试覆盖率可以参照前述单元测试覆盖率、集成测试覆盖率、自动化测试覆盖率的相关描述,为避免重复,在此不再赘述。
本发明实施例中,步骤203可对应参照步骤102的相关描述,为避免重复,在此不再赘述。
步骤204、对所述研发过程数据、所述测试结果数据、所述代码变更数据进行加权统计,获得所述目标项目的质量评估结果。
本发明实施例中,步骤204可对应参照前述步骤103的相关描述,为避免重复,在此不再赘述。
如,可以为研发过程数据分配权重10,为测试结果数据分配权重20,为核心代码变更数据分配权重20,为研发过程数据编号构建失败率为①,部署失败率为②,单元测试失败率为③,自动化测试失败率为④,单元测试用例跳过占比为⑤,自动化测试跳过占比⑥;为测试结果数据编号码扫描结果为⑦,单元测试覆盖率结果为⑧,集成测试覆盖率为⑨,自动化测试覆盖率为⑩;为核心代码变更数据编号核心代码发生变更为核心代码变更量为核心代码单元测试覆盖率为核心代码集成测试覆盖率为核心代码自动化测试覆盖率为此时,加权统计的计算公式(1) 如下所示:
在本发明实施中提供一种DevOps中的项目质量评估方法,该方法可以根据预设代码规则在目标项目的生产代码中确定核心代码,并采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及核心代码的代码变更数据,再对研发过程数据、测试结果数据、代码变更数据等进行加权统计,其中,预设代码规则用于评估生产代码的重要性,研发过程数据包括任务节点在研发过程中的特征数据,从而在质量评估中考虑根据重要性确定的核心代码的变更情况,还涉及研发过程中每一任务节点的特征,再结合对每一任务节点的测试结果数据,能够从核心代码、研发过程、测试结果等多维度地对目标项目进行更全面、更充分、更准确的质量评估,提高后续运维的执行效率。
在本发明实施中,基于DevOps可以引入CI/CD流程,其中,图3是本发明实施提供的一种持续集成流程示意图,如图3所示,在目标项目的研发中CI流程可以包括构建触发器、打包、测试、验证测试等流程,其中,构建触发器用于触发目标项目的构建、打包等,打包可以将互相依赖的方法、组件合并以便后续安装、复用等,测试包括部署dev(开发)环境、镜像扫描、部署smoke(冒烟)环境、冒烟测试、代码扫描、安全扫描、P3C 扫描、依赖扫描、单元测试覆盖率等设置测试的内容,再提测实现上述各种测试内容,进一步的,还可以部署test(测试)环境,实现集成测试,在单元测试的基础上将各模块根据设计要求组装以联合测试。
在上述测试过程中,对目标项目的常规测试流程通常包括采用findbugs (静态分析工具)、pmd(程序代码检查工具)、P3C(代码质量检测插件) 等各类扫描工具扫描代码、单元测试、自动化测试等,在部分任务节点的测试结果达到各自质量要求的情况下上线目标项目,如代码扫描的质量要求为无block、critical级别错误、单元测试的质量要求为全部通过且覆盖率达到一定值、接口测试的质量要求为全部通过且覆盖率达到一定值等。
图4是本发明实施例提供的一种DevOps中的项目质量评估装置30的结构框图,如图4所示,该装置可以采集如图4所示目标项目的CI流程中不同任务节点产生的数据,以及CD流程的数据,以实现对目标项目的质量评估,该装置可以包括:
核心代码模块301,用于根据预设代码规则在目标项目的生产代码中确定核心代码,所述预设代码规则用于评估所述生产代码的重要性;
数据采集模块302,用于采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及所述核心代码的代码变更数据,所述研发过程数据包括所述任务节点在研发过程中的特征数据;
质量评估模块303,用于对所述研发过程数据、所述测试结果数据、所述代码变更数据进行加权统计,获得所述目标项目的质量评估结果。
可选地,所述核心代码模块301,包括:
调用次数获取子模块,用于获取所述生产代码中每一方法的方法调用次数;
核心代码确定子模块,用于根据所述方法调用次数的大小在所述生产代码中确定核心代码。
可选地,所述核心代码确定子模块,包括:
代码排序单元,用于根据所述方法调用次数的大小对所述方法进行排序;
代码确定单元,用于在排序后的所述方法中,将预设位次的所述方法确定为所述核心代码。
可选地,所述核心代码确定子模块,还包括:
项目调用监控单元,用于获取对所述目标项目的监控数据;
应用调用次数单元,还用于根据所述监控数据确定所述目标项目的应用调用次数;
调用占比确定单元,用于确定每一所述方法对应的所述方法调用次数在所述应用调用次数中的调用占比;
所述代码确定单元,还用于将所述调用占比大于或等于预设占比阈值的方法确定为所述核心代码。
可选地,所述核心代码确定子模块,还用于将所述方法调用次数大于或等于预设调用阈值的方法确定为所述核心代码。
可选地,所述核心代码模块301,包括:
屏蔽名单获取子模块,用于获取方法屏蔽名单;
屏蔽名单匹配子模块,用于将所述生产代码中每一所述方法与所述方法屏蔽名单进行匹配;
所述核心代码确定子模块,还用于在所述方法与所述方法屏蔽名单不匹配的情况下,将所述方法确定为所述核心代码。
可选地,所述研发过程数据包括构建失败率、部署失败率、单元测试失败率、自动化测试失败率、单元测试用例跳过占比、自动化测试跳过占比中的至少一种。
可选地,所述测试结果数据包括代码扫描结果、单元测试覆盖率结果、集成测试覆盖率、自动化测试覆盖率中的至少一种。
可选地,所述代码变更数据包括核心代码发生变更、核心代码变更量、核心代码单元测试覆盖率、核心代码集成测试覆盖率、核心代码自动化测试覆盖率中的至少一种。
在本发明实施中提供一种DevOps中的项目质量评估装置,该装置可以根据预设代码规则在目标项目的生产代码中确定核心代码,并采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及核心代码的代码变更数据,再对研发过程数据、测试结果数据、代码变更数据等进行加权统计,其中,预设代码规则用于评估生产代码的重要性,研发过程数据包括任务节点在研发过程中的特征数据,从而在质量评估中考虑根据重要性确定的核心代码的变更情况,还涉及研发过程中每一任务节点的特征,再结合对每一任务节点的测试结果数据,能够从核心代码、研发过程、测试结果等多维度地对目标项目进行更全面、更充分、更准确的质量评估,提高后续运维的执行效率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
图5是本发明实施例提供的一种电子设备的结构示意图,如图5所示,所述电子设备40包括:接口401,总线402,存储器403与处理器404,所述接口401、存储器403与处理器404通过所述总线402相连接,所述存储器403用于存储可执行程序,所述处理器404被配置为运行所述可执行程序实现如图1至图2任一所述的DevOps中的项目质量评估方法的步骤。
本发明实施例还提供了一种计算机存储介质,所述计算机可读存储介质上存储可执行程序,所述可执行程序被处理器运行实现如图1至图2任一所述的DevOps中的项目质量评估方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (10)
1.一种DevOps中的项目质量评估方法,其特征在于,所述方法包括:
根据预设代码规则在目标项目的生产代码中确定核心代码,所述预设代码规则用于评估所述生产代码的重要性;
采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及所述核心代码的代码变更数据,所述研发过程数据包括所述任务节点在研发过程中的特征数据;
对所述研发过程数据、所述测试结果数据、所述代码变更数据进行加权统计,获得所述目标项目的质量评估结果。
2.根据权利要求1所述的方法,其特征在于,所述根据预设代码规则在目标项目的生产代码中确定核心代码,包括:
获取所述生产代码中每一方法的方法调用次数;
根据所述方法调用次数的大小在所述生产代码中确定核心代码。
3.根据权利要求2所述的方法,其特征在于,所述根据所述方法调用次数的大小在所述生产代码中确定核心代码,包括:
根据所述方法调用次数的大小对所述方法进行排序;
在排序后的所述方法中,将预设位次的所述方法确定为所述核心代码。
4.根据权利要求2所述的方法,其特征在于,所述根据所述方法调用次数的大小在所述生产代码中确定核心代码,包括:
获取对所述目标项目的监控数据;
根据所述监控数据确定所述目标项目的应用调用次数;
确定每一所述方法对应的所述方法调用次数在所述应用调用次数中的调用占比;
将所述调用占比大于或等于预设占比阈值的方法确定为所述核心代码。
5.根据权利要求2所述的方法,其特征在于,所述根据所述方法调用次数的大小在所述生产代码中确定核心代码,包括:
将所述方法调用次数大于或等于预设调用阈值的方法确定为所述核心代码。
6.根据权利要求1所述的方法,其特征在于,所述根据预设代码规则在目标项目的生产代码中确定核心代码,包括:
获取方法屏蔽名单;
将所述生产代码中每一所述方法与所述方法屏蔽名单进行匹配;
在所述方法与所述方法屏蔽名单不匹配的情况下,将所述方法确定为所述核心代码。
7.根据权利要求1所述的方法,其特征在于,所述研发过程数据包括构建失败率、部署失败率、单元测试失败率、自动化测试失败率、单元测试用例跳过占比、自动化测试跳过占比中的至少一种;
所述测试结果数据包括代码扫描结果、单元测试覆盖率结果、集成测试覆盖率、自动化测试覆盖率中的至少一种;
所述代码变更数据包括核心代码发生变更、核心代码变更量、核心代码单元测试覆盖率、核心代码集成测试覆盖率、核心代码自动化测试覆盖率中的至少一种。
8.一种DevOps中的项目质量评估装置,其特征在于,该装置可以包括:
核心代码模块,用于根据预设代码规则在目标项目的生产代码中确定核心代码,所述预设代码规则用于评估所述生产代码的重要性;
数据采集模块,用于采集通过持续集成、持续部署开发目标项目的过程中每一任务节点的研发过程数据和测试结果数据,以及所述核心代码的代码变更数据,所述研发过程数据包括所述任务节点在研发过程中的特征数据;
质量评估模块,用于对所述研发过程数据、所述测试结果数据、所述代码变更数据进行加权统计,获得所述目标项目的质量评估结果。
9.一种电子设备,其特征在于,所述电子设备包括:接口,总线,存储器与处理器,所述接口、存储器与处理器通过所述总线相连接,所述存储器用于存储可执行程序,所述处理器被配置为运行所述可执行程序实现如权利要求1-7任一所述的DevOps中的项目质量评估方法。
10.一种计算机存储介质,其特征在于,所述计算机可读存储介质上存储可执行程序,所述可执行程序被处理器运行实现如权利要求1-7任一所述的DevOps中的项目质量评估方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210104157.3A CN114546838A (zh) | 2022-01-27 | 2022-01-27 | DevOps中的项目质量评估方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210104157.3A CN114546838A (zh) | 2022-01-27 | 2022-01-27 | DevOps中的项目质量评估方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114546838A true CN114546838A (zh) | 2022-05-27 |
Family
ID=81673952
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210104157.3A Pending CN114546838A (zh) | 2022-01-27 | 2022-01-27 | DevOps中的项目质量评估方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114546838A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828925A (zh) * | 2018-06-25 | 2019-05-31 | 北京航空航天大学 | 一种基于软件网络结构特征的软件可靠性度量方法 |
CN111444093A (zh) * | 2020-03-25 | 2020-07-24 | 世纪龙信息网络有限责任公司 | 项目开发过程质量的确定方法、装置、计算机设备 |
CN111581104A (zh) * | 2020-05-11 | 2020-08-25 | 雷涛 | 一种基于DevOps研发运营一体化的度量方法 |
-
2022
- 2022-01-27 CN CN202210104157.3A patent/CN114546838A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109828925A (zh) * | 2018-06-25 | 2019-05-31 | 北京航空航天大学 | 一种基于软件网络结构特征的软件可靠性度量方法 |
CN111444093A (zh) * | 2020-03-25 | 2020-07-24 | 世纪龙信息网络有限责任公司 | 项目开发过程质量的确定方法、装置、计算机设备 |
CN111581104A (zh) * | 2020-05-11 | 2020-08-25 | 雷涛 | 一种基于DevOps研发运营一体化的度量方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9558464B2 (en) | System and method to determine defect risks in software solutions | |
CN111858242B (zh) | 一种***日志异常检测方法、装置及电子设备和存储介质 | |
US7451051B2 (en) | Method and system to develop a process improvement methodology | |
Chu et al. | Review of quantitative software reliability methods | |
CN107908548B (zh) | 一种生成测试用例的方法和装置 | |
CN113392000B (zh) | 测试用例执行结果分析方法、装置、设备及存储介质 | |
CN112464237B (zh) | 一种静态代码安全诊断方法及装置 | |
CN108874652B (zh) | 用于软件自测评估的方法、装置及电子设备 | |
CN117573510A (zh) | 软件测试方法、装置、终端设备以及存储介质 | |
CN114546838A (zh) | DevOps中的项目质量评估方法、装置、电子设备及存储介质 | |
US11790249B1 (en) | Automatically evaluating application architecture through architecture-as-code | |
Cimitile et al. | A software model for impact analysis: a validation experiment | |
CN115473740A (zh) | 一种基于异构流程的异常检测方法与*** | |
Syed-Mohamad et al. | A comparison of the reliability growth of open source and in-house software | |
CN115545677B (zh) | 基于自动化用例执行情况的上线流程规范检测方法和*** | |
EP3910478B1 (en) | Method and system for classification and ranking of delta alarms | |
CN113452562B (zh) | 一种配置参数校准方法及装置 | |
CN116932414B (zh) | 界面测试用例的生成方法、设备及计算机可读存储介质 | |
CN115473788B (zh) | 一种存储告警测试方法、装置、设备、存储介质 | |
Rangarajan et al. | Product quality framework: a vehicle for focusing on product quality goals | |
Yüksel et al. | Dynamic filtering and prioritization of static code analysis alerts | |
CN115904892A (zh) | 微服务测试方法、装置、设备以及计算机可读存储介质 | |
Stochel et al. | Testing optimization for mission-critical, complex, distributed systems | |
CN113434408A (zh) | 一种基于近似测试预言的单元测试用例排序方法 | |
CN115080437A (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 |