CN105830037B - 用于在代码审查期间显示测试覆盖数据的过程 - Google Patents

用于在代码审查期间显示测试覆盖数据的过程 Download PDF

Info

Publication number
CN105830037B
CN105830037B CN201480068403.8A CN201480068403A CN105830037B CN 105830037 B CN105830037 B CN 105830037B CN 201480068403 A CN201480068403 A CN 201480068403A CN 105830037 B CN105830037 B CN 105830037B
Authority
CN
China
Prior art keywords
coding change
code
incoming
change
test
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
Application number
CN201480068403.8A
Other languages
English (en)
Other versions
CN105830037A (zh
Inventor
马尔科·伊万科维奇
维奥拉·卡塔林·彼得拉
帕维尔·马齐尼亚克
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of CN105830037A publication Critical patent/CN105830037A/zh
Application granted granted Critical
Publication of CN105830037B publication Critical patent/CN105830037B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3676Test management for coverage analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)
  • Human Computer Interaction (AREA)

Abstract

所提供的是用于在代码审查过程期间监测为进行审查而发送的代码更改并且对所述代码更改执行测试覆盖计算以生成对应的测试覆盖数据的方法和系统。代码覆盖服务监测输入至代码审查系统的代码更改,并且对作为代码审查过程的结果被确定为已经显著演进的任何代码更改自动执行测试覆盖计算。所述代码覆盖服务将产生的测试覆盖数据(例如,测试覆盖数)的通知提供至与所述代码更改相关联的各种用户和/或系统,包括代码审查者、代码作者、代码审查系统、其它通知系统、和/或其任何组合。所述测试覆盖数据能够用于所涉及的相关代码的代码健康的综合评估。

Description

用于在代码审查期间显示测试覆盖数据的过程
背景技术
在程序代码审查期间,对于审查代码的工程师而言,了解测试是否覆盖一个特定代码可以耗费相当多的时间和精力。工程师需要读取正受测试的代码和测试两者,遵循代码执行路径,并且对于每行代码确定是否执行了该行代码。这种过程不但艰难,而且还容易出错。
可替代地,代码审查者可以要求代码更改的作者手动运行现有代码覆盖计算器中的一种并且手动地向审查者报告结果。由于该过程涉及至少两个执行手动步骤的人,因此该过程可能具有显著的等待时间,尤其是如果审查者和代码更改的作者在地理上彼此相距较远。
发明内容
本发明内容简要介绍了对构思的选取,以便提供对本公开的某些方面的基本了解。本发明内容不是对本公开的详尽综述,并且不旨在识别本公开的重要或者关键要素或者勾画本公开的范围。本发明内容仅仅提出了本公开的某些构思作为以下提供的具体实施方式的序言。
本公开大体涉及向用户提供自动化服务的方法和系统。更具体地,本公开的各个方面涉及用于在代码审查过程期间向用户提供对于计算机代码更改的测试覆盖信息的自动化服务。
本公开的一个实施例涉及用于提供对于代码更改的测试覆盖数据的计算机实现方法,该方法包括:检测到至代码审查系统传入的代码更改;对传入的代码更改执行一个或者多个测试覆盖计算;基于所执行的一个或者多个测试覆盖计算,生成对于代码更改的测试覆盖数据;以及,将生成的对于代码更改的测试覆盖数据的通知发送至与代码更改相关联的至少一个接收方。
在另一实施例中,用于提供测试覆盖数据的方法进一步包括:监测代码审查系统有关代码客户端中的更改的通知;以及,基于接收的有关代码客户端中的更改的通知,检测到传入的代码更改。
在另一实施例中,用于提供测试覆盖数据的方法进一步包括:确定对传入的代码更改的先前版本执行了测试覆盖计算;以及,基于确定了传入的代码更改不同于代码更改的先前版本,对传入的代码更改执行一个或者多个更新的测试覆盖计算。
在再一实施例中,用于提供测试覆盖数据的方法进一步包括:比较传入的代码更改的快照与代码更改的先前版本的快照;以及基于该比较,按照以下方式中的至少一种来确定传入的代码更改不同于代码更改的先前版本:已经向代码更改添加了一个或者多个新的测试;已经从代码更改中去除了一个或者多个测试;除了测试代码之外,已经向代码更改添加了超过阈值量的新代码;以及,除了测试代码之外,已经从代码更改中去除了超过阈值量的代码。
在又一实施例中,用于提供测试覆盖数据的方法进一步包括:接收对于提交至代码审查系统的代码更改的更新的测试覆盖计算的请求,其中,在检测到所提交的代码更改之前,接收更新的测试覆盖计算的请求;并且,响应于该请求,对所提交的代码更改执行一个或者多个更新的测试覆盖计算。
本公开的又一实施例涉及一种用于提供对于代码更改的测试覆盖数据的系统,该系统包括:一个或者多个处理器;以及,耦合至一个或者多个处理器的非暂时性计算机可读介质,该非暂时性计算机可读介质具有存储在其上的指令,当指令由一个或者多个处理器执行时,该指令使一个或者多个处理器执行操作,该操作包括:检测到至代码审查服务的传入的代码更改;对传入的代码更改执行一个或者多个测试覆盖计算;基于所执行的一个或者多个测试覆盖计算,生成对于代码更改的测试覆盖数据;以及,将生成的对于代码更改的测试覆盖数据的通知发送至与代码更改相关联的至少一个接收方。
在另一实施例中,用于提供测试覆盖数据的系统中的该一个或者多个处理器执行进一步的操作,该操作包括:监测代码审查服务有关代码客户端中的更改的通知;以及,基于接收的有关代码客户端中的更改的通知,检测到传入的代码更改。
在再一实施例中,用于提供测试覆盖数据的系统中的该一个或者更多处理器执行进一步操作,该操作包括:确定对传入的代码更改的先前版本执行了测试覆盖计算;以及,基于确定了传入的代码更改不同于代码更改的先前版本,对传入的代码更改执行一个或者多个更新的测试覆盖计算。
在再一实施例中,用于提供测试覆盖数据的系统中的该一个或者更多处理器执行进一步操作,该操作包括:比较传入的代码更改的快照与代码更改的先前版本的快照;以及,基于该比较,按照以下方式中的至少一种来确定传入的代码更改不同于与代码更改的先前版本:已经向代码更改添加了一个或者多个新的测试;已经从代码更改中去除了一个或者多个测试;除了测试代码之外,已经向代码更改添加了超过阈值量的新代码;以及,除了测试代码之外,已经从代码更改中去除了超过阈值量的代码。
在再一实施例中,用于提供测试覆盖数据的系统中的该一个或者更多处理器执行进一步操作,该操作包括:在与代码审查服务相关联的用户界面屏幕的通知区域中发布通知,其中,所发布的通知可由与代码更改相关联的至少一个接收方访问。
在再一实施例中,用于提供测试覆盖数据的系统中的该一个或者更多处理器执行进一步操作,该操作包括:接收对于提交至代码审查服务的代码更改的更新的测试覆盖计算的请求,其中,在检测到所提交的代码更改之前,接收更新测试覆盖计算的请求;并且,响应于该请求,对所提交的代码更改执行一个或者多个更新的测试覆盖计算。
本公开的又一实施例涉及一种或者多种非暂时性计算机可读介质,该非暂时性计算机可读介质存储了计算机可执行指令,当计算机可执行指令由一个或者多个处理器执行时,计算机可执行指令使一个或者多个处理器执行操作,该操作包括:监测代码审查系统有关代码客户端中的更改的通知;基于接收的有关代码客户端中的更改的通知,检测到至代码审查系统的传入的代码更改。对传入的代码更改执行一个或者多个测试覆盖计算;基于所执行的一个或者多个测试覆盖计算,生成对于代码更改的测试覆盖数据;以及,将生成的对于代码更改的测试覆盖数据的通知发送给与代码更改相关联的至少一个接收方。
在一个或者多个其它实施例中,本文描述的方法和系统可以可选地包括以下附加特征中的一种或者多种:确定对传入的代码更改的先前版本执行了测试覆盖计算是基于与传入的代码更改和传入的代码更改的先前版本两者相关联的代码更改标识符;确定传入的代码更改不同于代码更改的先前版本是基于传入的代码更改的快照与传入的代码更改的先前版本的快照之间的比较;与代码更改相关联的至少一个接收方包括代码更改的作者、代码更改的审查者和可通过其访问代码更改的代码审查服务中的至少一个;并且/或者发送生成的对于代码更改的测试覆盖数据的通知包括:在与所述代码审查系统相关联的用户界面屏幕的通知区域中发布通知,其中,所发布的通知可由与代码更改相关联的至少一个接收方访问。
本公开的进一步适用范围将通过下面给出的具体实施方式而变得显而易见。然而,应了解,仅通过说明性的方式给出了指示优选实施例的具体实施方式和具体示例,这是因为,对于本领域的技术人员而言,在本公开的精神和范围内的多种改变和修改通过本具体实施方式将变得显而易见。
附图说明
对于本领域的技术人员而言,本公开的这些和其它目的、特征和特性将通过结合随附权利要求书和附图学习以下的具体实施方式而变得显而易见,所有这些构成了本说明书的一部分。在图中:
图1是图示了根据本文描述的一个或者多个实施例的用于在代码审查过程期间对为进行审查而发送的代码更改提供测试覆盖数据的示例系统的框图。
图2是图示了根据本文描述的一个或者多个实施例的用于监测输入至代码审查系统的代码更改并且对该代码更改执行测试覆盖计算以生成对于该代码更改的对应的测试覆盖数据的示例方法的流程图。
图3是图示了根据本文描述的一个或者多个实施例的用于检测输入至代码审查系统的新代码更改,监测代码更改的进展,并且基于监测到的代码更改的进展对代码更改执行更新的测试覆盖计算的示例方法的流程图。
图4是图示了根据本文描述的一个或者多个实施例的被布置用于监测输入至代码审查系统的代码更改并且对代码更改执行测试覆盖计算以对于代码更改生成对应的测试覆盖数据的示例计算装置的框图。
本文提供的标题仅是为了方便起见,并不一定影响本公开中所要求保护的范围和含义。
在图中,为了容易理解和方便起见,相同的参考标号和任何缩略词识别了具有相同或者相似结构或者功能的元件或者动作。通过下面的具体实施方式,将详细描述这些图。
具体实施方式
现在将描述各种示例和实施例。下面的描述提供了用于全面理解这些示例的描述并使其能够实现的具体细节。然而,相关领域的技术人员应该理解,可以在没有很多这些细节的情况下实践本文描述的一个或者多个实施例。同样,相关领域的技术人员也应该理解,本公开的一个或者多个实施例能够包括本文未详细描述的许多其它明显的特征。此外,为了避免不必要地模糊相关描述,下面可能不详细示出或者描述某些周知的结构或者功能。
本公开的实施例涉及用于在代码审查过程期间监测为了审查而发送的计算机代码更改并且对该代码更改执行测试覆盖计算以生成对于该代码更改的对应的测试覆盖数据的方法和系统。如本文将更详细描述的,中央监测服务可以生成对于输入至代码审查系统的代码更改的测试覆盖数据,并且将这种测试覆盖数据提供至与特定代码更改相关联的一个或者多个用户和/或系统。例如,根据本文描述的至少一个实施例,该服务可以将对于代码更改所生成的测试覆盖数据提供(诸如,发送、使其可以利用等)至代码更改的作者、代码更改的审查者、代码审查系统的通知部件、和/或其任何组合。对于代码更改所生成的测试覆盖数据可以由各种有关方/系统用于,例如,评估代码的健康。
如上所论述的,当代码审查者与代码更改的作者在地理上彼此相距较远(例如,相隔几个时区)时,对于代码审查者来说,要求代码更改的作者手动地运行现有代码覆盖计算器并且手动地向审查者报告结果,通常是很耗时的。在这种地理上相距较远的场景下,甚至在审查者已经有机会查看代码更改之前,代码更改的作者将受益于确保该作者未忘记测试他或她的更改的任何代码路径的测试代码覆盖计算。该作者可以,例如,执行与审查者将执行的过程相同的过程并且手动地检查代码,这既容易出错又很耗时,或者手动地运行覆盖计算,该作者可能会忘记这样做或者可能未意识到这种操作是很容易完成的。
某些现有的方法对每个代码更改提供二进制的“所有测试通过”或者“某些测试失败”的信息。然而,这种方法未提供解决上述问题的必要的每行解决方案。其它现有的方法利用在预定时间运行所有测试的外部系统。如此,一旦代码更改已经被纳入代码中,这些其它方法只能提供回顾性信息。
因此,本公开的实施例涉及大规模自动提供代码更改测试覆盖信息的方法和系统。如下面将更详细描述的,可以对被确定为在一段时间内显著演进的任何代码更改自动执行测试覆盖计算。根据至少一个实施例,可以确定新的代码更改对于保证新的/更新的测试覆盖计算的性能是足够显著的,其中通过以下示例方式中的至少一种新代码更改的快照不同于先前测试的代码更改的快照:(1)已经向代码更改添加了一个或者多个新的测试;(2)已经从代码更改中去除了一个或者多个测试;(3)除了测试代码之外,已经向代码更改添加了超过阈值量(例如,10%)的新代码;(4)除了测试代码之外,已经从代码更改去除了超过阈值量(例如,10%)的代码;(5)(1)-(4)的任何组合。应该理解,上述因素本质上是示例性的,并且除了或者代替上述示例因素,在确定新的代码更改对保证新的/更新的测试覆盖计算是否足够显著时,也可以考虑很多其它因素。
根据至少一个实施例,集中式服务可以配置为监测为审查而发送的代码更改,并且通过使用本领域的技术人员已知的现有测试覆盖计算工具(例如,涉及代码更改的特定代码语言)对代码更改运行一个或者多个预先配置的测试集合。然后,集中式服务可以将产生的测试覆盖信息(测试覆盖数)的通知提供至代码审查者、代码的作者、代码审查系统、一个或者多个其它有关方、和/或其任何组合。在一个示例中,该服务可以经由电子邮件提供此类通知。在一个或者多个其它示例中,该服务通过经由即时消息服务发送该通知,或者通过向一个或者多个其他通知系统发送测试覆盖数据,可以在与代码审查系统相关联的用户界面屏幕的通知区域中提供该通知。
根据本文描述的至少一个实施例,集中式服务可以配置为通过订阅提交至代码审查系统的所有传入的代码更改来监测代码更改。
应该注意,根据本公开的一个或者多个实施例,本文描述的代码覆盖服务可以配置用于向用户提供一种手动调用服务的机制。例如,在代码覆盖服务不能自动检测到为进行审查而提交的代码更改(例如,提交至代码审查系统)的情况下,或者在迫切需要更新的测试覆盖计算(例如,由于如代码审查过程的结果,代码更改存在显著更改)的情况下,与代码更改相关联的用户(例如,代码更改的作者、代码更改的审查者等)可以手动地调用代码覆盖服务以执行本文描述的各种操作。根据至少一个实施例,本文描述的代码审查系统的用户可以访问实用程序,该实用程序能够以与代码审查服务(如下面更详细描述的)在检测到代码更改时发送通知的方式相同或相似的方式向代码覆盖服务发送通知。进一步地,根据至少一个实施例,与代码审查服务相关联的用户界面屏幕可以包括可选按钮,用户能够选择该可选按钮使代码审查系统代表用户向代码覆盖服务提交请求。
一旦使该服务首次意识到代码更改,该服务可以以规律的时间间隔(例如,每小时、每天等)持续监测代码更改。如果服务确定代码更改已经显著演进,服务可以自动地重新运行测试覆盖计算并且发送新的覆盖信息。根据至少一个实施例,服务可以持续监测代码更改直到这些更改:(1)被提交至代码库;(2)从审查系统中丢弃和删除;或者(3)由于超时而到期并且被宣布废弃。在服务检测到代码更改已经提交至代码库的示例场景中,该服务可以配置为执行最终测试覆盖运行并且计算最终的“发布的提交”的覆盖数。在这种场景中,服务也可以配置为确定(例如,由服务执行的)首次代码覆盖计算与发布的提交覆盖计算之间的差异,并且(在数据库中)存储该差异并且/或者向有关方发送关于该差异的通知。根据至少一个实施例,可以存储该服务收集到的所有信息(例如,对每次代码更改每次运行预配置测试的测试覆盖结果),以便进行长期趋势和总体代码健康的分析。
根据本文描述的一个或者多个实施例,代码覆盖服务的自动化性质免除了代码更改的作者必须记住对于代码更改运行覆盖计算。替代地,代码更改的代码审查者可以具备从视觉上(直接地)确定测试是否覆盖一行特定代码的能力,并且可以向与代码更改相关联的各种其它用户/系统等提供综合的测试覆盖数据(例如,总体测试覆盖数),该综合的测试覆盖数据可以用于评估相关代码的代码健康。除了许多其它优点,本公开的代码覆盖服务减少了人为误差(例如,提高了代码审查过程的准确性),减少了贯穿整个代码审查过程的各个阶段的等待时间(例如,提高了代码审查过程的效率),并且允许对代码健康进行长期跨项目的分析。
图1图示了根据本文描述的一个或者多个实施例的在代码审查过程期间对为进行审查而发送的代码更改提供测试覆盖数据的示例系统。系统100可以包括代码客户端105、代码覆盖服务客户端115、代码更改服务器110、代码更改服务120、测试执行器130、代码审查服务150和通知服务145。系统100还可以包括配置为存储数据的一个或者多个数据库,诸如,例如,代码覆盖储存器135和测试结果储存器140。
根据至少一个实施例,系统100可以是分布式系统,在该分布式系统中,组成系统100的各个部件可以配置为在独立的机器(例如,计算机、服务器等)上运行。例如,代码客户端105可以在开发者的机器上(例如,计算机)运行,而系统100中的其余部件在通过系统100的各种用户之间共享的通信网络可访问的位置中操作。此外,许多代码客户端105可以与同一服务(例如,代码覆盖服务客户端115、代码更改服务器110、代码更改服务120等)通信。根据一个或者多个实施例,系统100可以以容错的方式来设计,借此同一共享进程的多个实例在通过网络连接的多台计算机上运行。
代码客户端105可以是配置为管理由开发者更改的源代码的快照的应用(例如,计算机软件应用或者程序)
代码覆盖服务客户端115可以是实用程序,该实用程序配置为向代码覆盖服务120通知有关代码更改并且当检测到代码更改时还生成代码覆盖计算的请求。
代码更改服务器110可以是配置为管理代码快照和由开发者提交的代码更改建议的服务。
代码覆盖服务120可以是配置为监测从代码覆盖服务客户端115接收的代码更改通知并且执行代码覆盖计算(例如,使用一种或者多种现有的测试覆盖计算工具)的服务。
测试执行器130可以是配置为对代码库的任何给出的快照执行测试并且将测试执行结果记录在例如测试结果储存器140中的服务。
根据本文描述的一个或者多个实施例,代码审查服务150可以配置为促进代码审查过程。例如,开发者可以利用代码审查服务150来请求代码审查,并且代码审查者可以将所建议的代码更改的意见提交至代码审查服务150。另外,代码审查服务150可以包括允许用户对所建议的代码更改进行注释(诸如,突出显示、插入评论、显示修订等)的一种或者多种工具。
通知服务145可以是配置为生成有关于代码覆盖测试结果(例如,由测试执行器130存储在测试结果储存器140中)的通知并且将这种通知发送(或以其它方式使之可用)至一个或者多个单独的用户或者用户组的服务。
根据本文描述的至少一个实施例,在系统的各个部件之间的示例数据流可以包括如下。
代码覆盖服务120可以配置为从测试结果储存器140中读取(例如,由测试执行器130)完成的测试执行的代码覆盖数据。例如,代码覆盖服务120可以读取关于由测试执行器130执行的一个或者多个测试所覆盖的代码的更改行的百分比的数据。在另一示例中,代码覆盖服务120可以从测试结果140中读取关于由测试执行器130执行的任何一次测试所覆盖的文件列表的数据。
根据至少一个实施例,代码覆盖服务120也可以配置为从代码覆盖储存器135读取数据和向其写入数据这两者。例如,代码覆盖服务120可以配置为将对于给出的代码更改的测试覆盖计算(例如,正由代码覆盖服务120执行)的当前状态记录在代码覆盖储存器135中。根据一个或者多个其它实施例,代码覆盖服务120可以进一步配置为:在服务器重新启动的情况下(例如,发生故障后),从代码覆盖储存器135中读取这种记录,以便,例如,重新开始对代码更改执行测试覆盖计算。
代码审查服务150可以配置为从测试结果储存器140中读取(例如,由测试执行器130)完成的测试执行的代码覆盖数据。例如,代码审查服务150可以读取关于由测试执行器130执行的任何一次测试所覆盖的文件列表的数据,以及对于这些文件中的每一个由测试所覆盖的代码行的列表。根据本文描述的至少一个实施例,代码审查服务150可以使用从测试结果储存器140中读取的数据,以便,例如,识别和区分经过测试的代码行与未经过测试的代码行。例如,代码审查服务可以使用第一种颜色来突出显示经过测试的代码行,而使用第二种颜色来突出显示未经过测试的代码行,并且然后在代码审查用户界面屏幕(未示出)中(使用突出显示)呈现所有的代码行,该用户界面屏幕可以呈现给与代码相关联的各种用户(例如,代码开发者、代码审查者等)。代码审查服务150也可以配置为将所审查的代码的更改通知给代码覆盖服务120。
测试执行器130可以配置为向测试结果储存器140写入数据。根据至少一个实施例,测试执行器130可以配置为向测试结果储存器140写入测试日志、通过信息/失败信息、以及测试覆盖数据(例如,由测试执行器130执行的任何测试所覆盖的文件列表,以及对于这些文件中的每一个由测试覆盖的代码行的列表)。例如,测试执行器可以配置为向测试结果储存器140写入以下示例数据:
测试_1通过
测试_2失败
测试_3超时
测试_4构建失败
代码_文件_1:
行1:已插桩、已覆盖
行2:已插桩、已覆盖
行3:已插桩、未覆盖
行4:未插桩
….
代码_文件_2:
行1:已插桩、已覆盖
行2:已插桩、已覆盖
行3:已插桩、未覆盖
行4:已插桩、已覆盖
代码覆盖服务客户端115可以配置为向代码覆盖储存器135写入数据。根据至少一个实施例,代码覆盖服务客户端115可以配置为将(例如,当检测到代码更改时由代码覆盖服务客户端115生成并且发送至代码覆盖服务120的)代码覆盖计算请求的事件记录在代码覆盖储存器135中。例如,当向代码覆盖服务120发送代码覆盖计算请求时,代码覆盖服务客户端115可以将有关该请求的各种数据作为日志记录在代码覆盖储存器135中,该数据诸如为代码客户端标识符、代码更改标识符、用户名、包括将运行的测试列表和将插桩的文件模式的项目配置、或者其任何组合。应该理解,除了或者替代以上描述的示例数据,各种其它数据也可以由代码覆盖服务客户端115作为日志记录在代码覆盖储存器135中。
代码客户端105可以配置为向代码覆盖服务客户端115推送数据。例如,代码客户端105可以配置为向代码覆盖服务客户端115发送请求,其中,该请求涉及特定代码更改,并且可以包括项目配置,该项目配置包括对于该代码更改将运行的测试列表和将插桩的文件模式。
根据至少一个实施例,响应于代码客户端105向代码覆盖服务客户端115推送代码,代码客户端105可以从代码覆盖服务客户端115接收状态(诸如,“OK”,“NOT OK”)。例如,代码客户端105可以,响应于代码覆盖服务客户端115确定将开发者更改的源代码的快照成功上传至代码更改服务器110并且确定代码覆盖服务120已经对该代码更改启动了所请求的代码覆盖计算,从代码覆盖服务客户端115接收“OK”状态。在另一示例中,代码客户端105可以,响应于代码覆盖服务客户端115确定在上述操作中的任一个中发生了故障,从代码覆盖服务客户端115接收“NOT OK”状态。
代码覆盖服务客户端115可以配置为向代码更改服务器110和代码覆盖服务120推送数据。根据至少一个实施例,代码覆盖服务客户端115可以配置为将开发者更改的源代码的当前快照上传至代码更改服务器110。例如,代码覆盖服务客户端115可以将更改的源代码的快照上传至代码更改服务器110,以便使测试执行器130可以访问该快照。下面是可以由代码覆盖服务客户端115推送至代码更改服务器110的示例数据:
<用户名>
目录_1/文件_1,<文件1内容>
目录_1/文件_2,<文件2内容>
目录_2/文件_3,<文件3内容>
代码覆盖服务客户端115也可以配置为将关于代码更改通知给代码覆盖服务120。根据至少一个实施例,代码覆盖服务客户端115可以通过向代码覆盖服务120发送对代码更改的代码覆盖计算的请求,来将关于代码更改通知给代码覆盖服务120。在这种请求中可以发送至代码覆盖服务120的数据可以包括:例如,上传至代码更改服务器110的代码更改快照的代码更改快照标识符、代码更改标识符、用户名、包括将运行的测试列表和将插桩的文件模式的项目配置、或者其任何组合。例如,对特定代码更改的代码覆盖计算的请求可以包括以下示例数据:
代码更改快照标识符:12[对于具体代码更改是唯一的]
代码更改标识符:12345[对于任何代码更改是唯一的]
用户名:用户_1
测试模式:目录_1/测试_1,目录_2/*[指定单次测试,或者应该扩展至与该模式匹配的所有测试的通配符模式]
文件插桩模式:目录_1/*,目录_2/*
应该理解,除了或者替代上述示例数据,各种其它数据也可以包括在从代码覆盖服务客户端115发送至代码覆盖服务120的代码覆盖计算的请求中。
响应于代码覆盖服务客户端115向代码更改服务器110和代码覆盖服务120推送数据,代码覆盖服务客户端115可以从代码更改服务器110和代码覆盖服务120中的每一个接收状态(例如,“OK”或者“NOT OK”状态)。例如,响应于代码覆盖服务客户端115将开发者更改的源代码的快照上传至代码更改服务器110,如果源代码快照被成功上传,那么代码覆盖服务客户端115可以从代码更改服务器110接收“OK”状态。根据至少一个实施例,代码覆盖服务客户端115可以从代码更改服务器110一起接收“OK”状态和上传至代码更改服务器110的代码更改快照的标识符。在另一示例中,响应于代码覆盖服务客户端115将源代码快照上传至代码更改服务器110,如果源代码快照未能被恰当地或者完全地上传至代码更改服务器110,那么代码服务客户端115可以从代码更改服务器110接收“NOT OK”状态。在又一示例中,响应于代码覆盖服务客户端115向代码覆盖服务120发送代码覆盖计算的请求,如果,例如代码覆盖服务120无法启动所请求的代码覆盖计算,那么代码覆盖服务客户端115可以从代码覆盖服务120接收“NOT OK”状态。
根据本文描述的一个或者多个实施例,如果代码覆盖服务客户端115从代码更改服务器110和代码覆盖服务120中的一个接收“NOT OK”状态,那么代码覆盖服务客户端115可以配置为中止正在执行的操作(例如,将源代码快照上传至代码更改服务器110或者请求来自代码覆盖服务120的代码覆盖计算)并且将故障事件作为日志记录在代码覆盖储存器135中。代码覆盖服务客户端115可以将其作为日志记录在代码覆盖储存器135中的故障事件可以包括:例如,关于特定故障的数据——诸如所尝试的操作、所涉及的源代码更改、时间戳信息等。在至少一个示例中,作为日志记录在代码覆盖储存器135中的数据可以用于各种系统100调试目的。
代码覆盖服务120可以配置为请求来自测试执行器130的对特定代码更改的测试执行。根据至少一个实施例,可以从代码覆盖服务120发送至测试执行器130的该请求可以包括与包括在如上所述从代码覆盖服务客户端115发送至代码覆盖服务120的代码覆盖计算的请求中的数据相似的数据。例如,可以从代码覆盖服务120发送至测试执行器130的该请求可以包含:来自代码盖率服务120处接收的代码覆盖计算请求的数据的子集,包括,例如,上传至代码更改服务器110的代码更改快照的标识符,以及包括将运行的测试列表和将插桩的文件模式的项目配置。
测试执行器130可以配置为从代码更改服务器110读取由开发者更改的源代码的快照。例如,测试执行器130可以读取(例如,由代码覆盖服务客户端115)存储在代码更改服务器110中的代码更改,以便对该代码更改执行测试。
测试执行器130也可以配置为基于由测试执行器130对特定代码更改执行的测试结果向代码覆盖服务120报告状态。例如,响应于测试执行器130确定代码更改通过了所有测试,测试执行器130可以向代码覆盖服务120发送“OK”状态。在另一示例中,响应于测试执行器130确定代码更改未通过一个或者多个测试或者确定对代码更改不能执行所请求的测试,测试执行器130可以向代码覆盖服务120发送“NOT OK”状态。根据至少一个实施例,代码覆盖服务120可以将从测试执行器130接收的状态记录在代码覆盖储存器135中。
代码覆盖服务120可以配置为请求通过通知服务145生成和传送电子邮件。例如,代码覆盖服务120可以请求通知服务145发送电子邮件(例如,发送至一个或者多个授权的或者指定的接收方),该电子邮件包含了(例如,由测试执行器130)已经对其执行了测试的代码更改的报告和由此确定的总体代码覆盖计算(例如,百分比)。根据至少一个实施例,响应于向通知服务145发送电子邮件通知的请求,代码覆盖服务120可以从通知服务145接收状态报告。例如,如果通知服务145成功发送了所请求的电子邮件,那么代码覆盖服务120可以从通知服务145接收“OK”状态,以及,如果通知服务145未能发送所请求的电子邮件,那么代码覆盖服务120可以接收“NOT OK”状态。根据至少一个实施例,代码覆盖服务120可以将从通知服务145接收的状态记录在代码覆盖储存器135中。
根据一个或者多个实施例,代码覆盖服务120也可以配置为向代码审查服务150推送代码覆盖数据(例如,基于从测试执行器130接收的测试结果的代码覆盖计算),以将其显示在与代码审查服务150相关联的用户界面屏幕的通知区域中。例如,代码覆盖服务120可以配置为生成对特定代码更改的代码覆盖结果的概要并且将该概要发布在与代码审查服务150相关联的用户界面屏幕的通知区域中。
图2图示了用于监测输入至代码审查系统的代码更改并且对该代码更改执行测试覆盖计算以生成对于该代码更改的对应的测试覆盖数据的示例过程。根据至少一个实施例,该过程200可以由配置为运行一个或者多个服务器的分布式系统(例如,图1所示的系统100)来执行。
在框205中,程序可以是监测关于代码客户端中的更改的通知。例如,代码覆盖服务可以配置为监测用于通知的实用程序,该通知是关于由开发者进行的源代码更改(例如,在图1所示的示例系统100中,代码覆盖服务120可以监测从代码覆盖客户端115接收的关于通过代码客户端105提交的代码更改的通知)。根据至少一个实施例,在框205中监测到的通知可以是实用程序生成的通知,该实用程序配置为从管理开发者正从事的源代码的快照的应用接收代码更改请求。
在框210中,基于在框205中执行的该监测,可以检测到关于代码更改的通知。例如,代码覆盖服务可以基于从代码覆盖服务客户端接收的通知,检测到代码更改(例如,在图1所示的示例系统100中,代码覆盖服务120可以基于从代码覆盖服务客户端115接收的通知,检测到代码更改)。
在框215中,可以对在框210中检测到的代码更改执行一个或者多个测试。例如,可以使用本领域技术人员已知的测试覆盖计算工具对代码更改(例如,由图1所示的示例系统100中的测试执行器130)执行一个或者多个覆盖测试。
在框220中,可以基于在框215中执行的测试,对代码更改生成测试覆盖数据(例如,代码覆盖计算)。根据至少一个实施例,代码覆盖服务可以利用从在框215中对代码更改执行的测试中所获得的结果,来生成对于代码更改的代码覆盖计算(例如,百分比)(例如,在如图1所示的示例系统100中,代码覆盖服务120可以利用从测试执行器130中获得的结果来生成代码覆盖计算)
在框225中,可以将通知发送给与代码更改相关联的一个或者多个接收方(例如,用户、系统、服务等),其中,该通知指示了或者包括在框220中生成的测试覆盖数据。例如,在框225中,可以向一个或者多个授权的或者指定的接收方发生电子邮件,其中,该电子邮件包含了在框215中对其执行了测试的代码更改的报告、以及基于测试结果在框220中确定的总体代码覆盖计算。根据至少一个实施例,可以在框225中发送的通知可以是将代码更改的代码覆盖结果的概要发布在与代码审查服务(例如,图1所示的示例系统100中的代码审查服务150)相关联的用户界面屏幕的通知区域中。
图3图示了根据本文描述的一个或者多个实施例的用于检测输入至代码审查系统的新代码更改,监测该代码更改的更改(例如,如代码审查过程的结果),并且基于对该代码更改所做出的更改(例如代码更改的进展)对代码更改执行更新的测试覆盖计算的示例过程。根据至少一个实施例,该过程300可以由配置为运行一个或者多个服务器的分布式系统(例如,图1所示的系统100)来执行。
在框305中,可以检测到至代码审查系统的传入的代码更改。例如,开发者可以将源代码更改(例如,为了进行审查和/或得到批准)提交至代码审查系统,并且该提交可以由该系统的部件检测到(例如,在如图1所示的示例系统100中,可以由代码覆盖服务120基于由代码覆盖服务客户端115生成的通知,检测到客户端代码150中开发者所进行的代码更改)。
在框310中,可以对于在框305中检测到的传入的代码更改先前是否已经请求了覆盖计算(例如,测试覆盖测量),进行确定。根据至少一个实施例,基于与传入的代码更改相关联的各种数据,可以做出在框310中的确定。例如,在框305中检测到的代码更改可以包括代码客户端标识符、代码更改标识符、用户名、包括将运行的测试列表和将插桩的文件模式的项目配置、或者其任何组合。与代码更改相关联的数据可以用于,例如,确定对于该代码更改(例如,在图1所示的示例系统100的测试结果储存器140中)是否存储了任何覆盖测试结果。
如果在框310中确定先前尚未对传入的代码更改请求覆盖测量,那么该过程可以结束。根据至少一个实施例,如果在框310中确定当前尚不存在对代码更改的覆盖测量(例如,在图1所示的示例系统100的测试结果储存器140中),那么,可以根据图2中图示的以及上面所述的示例过程200,对代码更改执行测试覆盖计算,以生成对于代码更改的对应的测试覆盖数据。
另一方面,如果在框305中确定先前已经对于传入的代码更改请求了覆盖测量,那么,在框315中,可以将传入的代码更改与先前已经测试了覆盖的代码更改进行比较。例如,在框315中,可以将传入的代码更改的快照(例如,在图1所示的示例系统100中,由代码客户端105提供至代码覆盖服务客户端115的代码更改的快照)与先前测试的代码更改的快照(例如,存储在图1所示的示例系统100的代码更改服务器110中)进行比较,以确定代码更改已经被修改的程度。
基于在框315中执行的比较,可以在框320中对是否需要对代码更改进行更新的测试覆盖计算(测量),进行确定。根据至少一个实施例,可以在框320中进行的确定可以基于根据先前对其测试的版本和在框305中检测到的版本代码更改已经演进(例如,已经修改或者修订)的程度。例如,可以确定新的代码更改对于保证新的/更新的测试覆盖计算的性能是足够显著的,其中,通过以下示例方式中的至少一种新代码更改的快照不同于先前测试的代码更改的快照:(1)已经向代码更改添加了一个或者多个新的测试;(2)已经从代码更改中去除了一个或者多个测试;(3)除了测试代码之外,已经向代码更改添加了超过阈值量(例如,10%)的新代码;(4)除了测试代码之外,已经从代码更改中去除了超过阈值量(例如,10%)的代码;(5)(1)-(4)的任何组合。应该理解,除了或者代替上述示例因素,在框中320中确定在框305中检测到的代码更改的新版本是否对保证新的/更新的测试覆盖计算足够显著时,也可以考虑很多其它因素。
如果在框320中确定不需要对特定代码更改进行更新的测试覆盖计算,那么该过程可以返回至框305并且重复。另一方面,如果基于在框315中执行的比较,在框320中确定代码更改已经演进至足以保证更新的覆盖计算,那么该过程可以前进至框325。
根据至少一个实施例,在示例过程300中剩余的框325、330和335可以包括分别与图2所示以及以上详细描述的示例过程200中的框215、220和225的操作相似的操作。因此,为了简洁起见,将不再进一步描述示例过程300中的框325、330、和335的操作。
图4是图示了根据本文描述的一个或者多个实施例的被布置用于监测输入至代码审查系统的代码更改并且对代码更改执行测试覆盖计算以生成对于代码更改的对应的测试覆盖数据的示例性计算机(400)的高层次框图。在非常基础的配置(401)中,计算装置(400)通常包括一个或者多个处理器(410)和系统存储器(420)。存储器总线(430)能够用于在处理器(410)与系统存储器(420)之间进行通信。
依据所需的配置,处理器(410)能够是任何类型,包括但不限于:微处理器(μΡ)、微控制器(μθ)、数字信号处理器(DSP)、或其任何组合。处理器(410)可以包括诸如级别1缓存(411)和级别2缓存(412)的一个或者多个级别缓存、处理器核(413)和寄存器(414)。处理器核(413)可以包括算数逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核(DSP核)、或其任何组合。存储器控制器(416)也可以与处理器(410)一起使用,或者在一些实施方式中,存储器控制器(415)可以是处理器(410)的内部部分。
依据所需的配置,系统存储器(420)可以是任何类型,包括但不限于:易失性存储器(诸如,RAM)、非易失性存储器(诸如ROM、闪存等)、或其任何组合。系统存储器(420)通常包括操作系统(421)、一个或者多个应用(422)、和程序数据(424)。应用(422)可以包括提供对于代码更改(例如,提交至诸如图1所示的示例代码审查系统100的代码审查系统的代码更改)的测试覆盖数据的服务(423)。程序数据(424)可以包括存储指令,当该存储指令由一个或者多个处理装置执行时,该存储指令实施提供对于代码更改的测试覆盖数据的服务。此外,根据至少一个实施例,程序数据(424)可以包括代码更改和测试结果数据(425),该测试结果数据(425)可以包括作为代码审查过程的结果的关于对代码更改进行的一个或者多个更改的数据,以及关于(通过提供对于代码更改的测试覆盖数据的服务(423))对代码更改执行的测试覆盖计算的数据。在一些实施例中,应用(422)可以布置为在操作系统(421)上使用程序数据(424)来操作。
计算装置(400)可以具有附加特征或者功能,以及促进基础配置(401)与任何需要的装置和接口之间的通信的附加接口。
系统存储器(420)是计算机存储介质的示例。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或者其它存储技术、CD-ROM、数字多功能盘(DVD)或者其它光存储装置、磁带盒、磁带、磁盘存储或者其它磁存储装置、或者可以用于存储所需信息并且可以由计算装置400访问的任何其它介质。任何这种计算存储介质可以是装置(400)的部分。
计算装置(400)可以实施为小型便携式(或者移动)电子装置的一部分,诸如手机、智能手机、个人数据助理(PDA)、个人媒体播放器装置、平板计算机(平板)、无线网络监视装置、个人耳机装置、应用专用装置、或者包括任何以上功能的混合装置。计算装置(400)也可以实现为个人计算机,包括膝上型计算机和非膝上型计算机配置。
经由使用框图、流程图、和/或示例,前述的详细描述已经阐述了装置和/或过程的各种实施例。在这种框图、流程图、和/或示例的范围内包含一个或者多个功能和/或操作,本领域的技术人员将理解,在这种框图、流程图、或者示例中的每个功能和/或操作能够各自地和/或共同地通过大范围的硬件、软件、固件、或其实质上任何组合来实施。在一个实施例中,本文描述的主题的多个部分可以经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或者其它集成格式来实施。然而,本领域的技术人员将认识到,本文所公开的实施例的一些方面能够整体地或者部分地等效实施在集成电路中,作为在一个或者多个计算机上运行的一个或者多个计算机程序、作为在一个或者多个处理器上运行的一个或者多个程序、作为固件、或作为其实质上任何组合,并且将认识到,根据本公开,设计软件和/或固件的电路系统和/或编写软件和/或固件的代码应在本领域的技术人员所掌握的技术内。另外,本领域的技术人员将了解,本文描述的主题的机制能够分配为各种形式的程序产品,并且将了解,本文描述的主题的说明性实施例的适用与用于实际执行该分配的非暂时性信号承载介质的特定类型无关。非暂时性信号承载介质的示例包括但不限于以下:可记录式介质,诸如,软盘、硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、计算机存储器等;以及,传输式介质,诸如,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
关于本文中实质上使用了任何复数和/或单数术语,本领域的技术人员可以按照适用于上下文和/或本申请,将复数转化为单数,和/或将单数转化为复数。为了明晰起见,本文可以清楚阐述各种单/复数排列。
因此,已经描述了主题的具体实施例。其它实施例在以下权利要求书的范围内。在一些情况下,可以按照不同的顺序执行权利要求书中列举的动作,并且仍然可以获得所需的效果。另外,附图中描述的过程并不一定要求所示的特定顺序或者依次的顺序来实现所需的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。

Claims (18)

1.一种用于提供代码更改的测试覆盖数据的计算机实现方法,所述方法包括:
检测提交至代码审查系统的传入代码更改;
将所述传入代码更改与先前提交至所述代码审查系统的所述传入代码更改的先前版本进行比较;
基于所述比较,确定所述传入代码更改相对于先前提交至所述代码审查系统的所述传入代码更改的所述先前版本已经修改的程度;
响应于所确定的修改的程度满足阈值,对所述传入代码更改执行一个或者多个测试覆盖计算;
响应于所述修改的程度不满足所述阈值,维持对先前提交至所述代码审查系统的所述传入代码更改的所述先前版本所执行的测试覆盖计算;
基于所执行的所述一个或者多个测试覆盖计算或者对所述传入代码更改的所述先前版本所执行的所述测试覆盖计算,生成所述传入代码更改的测试覆盖数据;以及
将对于所述代码更改而生成的所生成测试覆盖数据的通知发送至与所述代码更改相关联的至少一个接收方。
2.根据权利要求1所述的计算机实现方法,其中,检测所述传入代码更改是基于响应于所述代码更改被提交至所述代码审查系统而生成的通知。
3.根据权利要求1所述的计算机实现方法,进一步包括:
确定对所述传入代码更改的所述先前版本执行了测试覆盖计算;以及
基于所述比较,确定所述传入代码更改不同于所述代码更改的所述先前版本,
其中,对所述传入代码更改所执行的所述一个或者多个测试覆盖计算是基于确定所述传入代码更改不同于所述代码更改的所述先前版本。
4.根据权利要求3所述的计算机实现方法,其中,确定对所述传入代码更改的先前版本执行了测试覆盖计算是基于与所述传入代码更改和所述传入代码更改的所述先前版本两者相关联的代码更改标识符。
5.根据权利要求3所述的计算机实现方法,其中,确定所述传入代码更改不同于所述代码更改的先前版本是基于所述传入代码更改的快照与所述传入代码更改的所述先前版本的快照之间的比较。
6.根据权利要求3所述的计算机实现方法,进一步包括:
将所述传入代码更改的快照与所述代码更改的所述先前版本的快照进行比较;以及
基于所述比较,按照以下方式中的至少一种来确定所述传入代码更改不同于所述代码更改的所述先前版本:已经向所述代码更改添加了一个或者多个新的测试;已经从所述代码更改中去除了一个或者多个测试;已经向所述代码更改添加了除测试代码外的超过阈值量的新代码;以及已经从所述代码更改中去除了除测试代码外的超过阈值量的代码。
7.根据权利要求1所述的计算机实现方法,其中,发送对于所述代码更改而生成的所述测试覆盖数据的通知包括:在与所述代码审查系统相关联的用户界面屏幕的通知区域中发布通知,其中,所发布的通知能由与所述代码更改相关联的所述至少一个接收方访问。
8.根据权利要求1所述的计算机实现方法,进一步包括:
在检测所述传入代码更改之前,接收对于已经提交至所述代码审查系统的代码更改的更新测试覆盖计算的请求;以及
响应于所述请求,对已经提交的代码更改执行一个或者多个更新测试覆盖计算。
9.一种用于提供代码更改的测试覆盖数据的系统,所述系统包括:
一个或者多个处理器;以及
耦合至所述一个或者多个处理器的非暂时性计算机可读介质,所述非暂时性计算机可读介质具有存储在其上的指令,当所述指令由所述一个或者多个处理器执行时,所述指令使所述一个或者多个处理器执行操作,所述操作包括:
检测提交至代码审查服务的传入代码更改;
将所述传入代码更改与先前提交至所述代码审查系统的所述传入代码更改的先前版本进行比较;
基于所述比较,确定所述传入代码更改相对于先前提交至所述代码审查系统的所述传入代码更改的所述先前版本已经修改的程度;
响应于所确定的修改的程度满足阈值,对所述传入代码更改执行一个或者多个测试覆盖计算;
响应于所述修改的程度不满足所述阈值,维持对先前提交至所述代码审查系统的所述传入代码更改的所述先前版本所执行的测试覆盖计算;
基于所执行的所述一个或者多个测试覆盖计算或者对所述传入代码更改的所述先前版本所执行的所述测试覆盖计算,生成所述传入代码更改的测试覆盖数据;以及
将对于所述代码更改而生成的所生成测试覆盖数据的通知发送至与所述代码更改相关联的至少一个接收方。
10.根据权利要求9所述的系统,其中,使所述一个或者多个处理器执行进一步的操作,所述进一步的操作包括:
接收响应于所述代码更改被提交至所述代码审查系统而生成的通知,其中,检测所述传入代码更改是基于所接收的通知。
11.根据权利要求9所述的系统,其中,使所述一个或者多个处理器执行进一步的操作,所述进一步的操作包括:
确定对所述传入代码更改的所述先前版本执行了测试覆盖计算;以及
基于所述比较,确定所述传入代码更改不同于所述代码更改的所述先前版本,
其中,对所述传入代码更改所执行的所述一个或者多个测试覆盖计算是基于确定所述传入代码更改不同于所述代码更改的所述先前版本。
12.根据权利要求11所述的系统,其中,确定对所述传入代码更改的先前版本执行了测试覆盖计算是基于与所述传入代码更改和所述传入代码更改的所述先前版本两者相关联的代码更改标识符。
13.根据权利要求11所述的系统,其中,确定所述传入代码更改不同于所述代码更改的先前版本是基于所述传入代码更改的快照与所述传入代码更改的所述先前版本的快照之间的比较。
14.根据权利要求11所述的系统,其中,使所述一个或者多个处理器执行进一步的操作,所述进一步的操作包括:
将所述传入代码更改的快照与所述代码更改的所述先前版本的快照进行比较;以及
基于所述比较,按照以下方式中的至少一种来确定所述传入代码更改不同于所述代码更改的先前版本:已经向所述代码更改添加了一个或者多个新的测试;已经从所述代码更改中去除了一个或者多个测试;已经向所述代码更改添加了除测试代码外的超过阈值量的新代码;以及已经从所述代码更改中去除了除测试代码外的超过阈值量的代码。
15.根据权利要求9所述的系统,其中,使所述一个或者多个处理器执行进一步的操作,所述进一步的操作包括:
在与所述代码审查服务相关联的用户界面屏幕的通知区域中发布通知,其中,所发布的通知能由与所述代码更改相关联的所述至少一个接收方访问。
16.根据权利要求9所述的系统,其中,使所述一个或者多个处理器执行进一步的操作,所述进一步的操作包括:
在检测所述传入代码更改之前,接收对于已经提交至所述代码审查系统的代码更改的更新测试覆盖计算的请求;以及
响应于所述请求,对已经提交的代码更改执行一个或者多个更新测试覆盖计算。
17.一种或者多种非暂时性计算机可读介质,所述非暂时性计算机可读介质存储计算机可执行指令,当所述计算机可执行指令由一个或者多个处理器执行时,使所述一个或者多个处理器执行操作,所述操作包括:
为有关代码客户端中的更改的通知而监测代码审查系统;
基于所接收的有关代码客户端中的更改的通知,检测至所述代码审查系统的传入代码更改;
确定所述传入代码更改相对于先前提交至所述代码审查系统的所述传入代码更改的先前版本已经修改的程度;
响应于所确定的修改的程度满足阈值,对所述传入代码更改执行一个或者多个测试覆盖计算;
响应于所述修改的程度不满足所述阈值,维持对先前提交至所述代码审查系统的所述传入代码更改的所述先前版本所执行的测试覆盖计算;
基于所执行的一个或者多个测试覆盖计算或者对所述传入代码更改的所述先前版本所执行的所述测试覆盖计算,生成所述传入代码更改的测试覆盖数据;以及
将对于所述代码更改而生成的所生成测试覆盖数据的通知发送至与所述代码更改相关联的至少一个接收方。
18.根据权利要求17所述的一种或者多种非暂时性计算机可读介质,其中,使所述一个或者多个处理器执行进一步的操作,所述进一步的操作包括:
确定对所述传入代码更改的所述先前版本执行了测试覆盖计算;以及
基于确定所述传入代码更改不同于所述代码更改的所述先前版本,对所述传入代码更改执行一个或者多个更新测试覆盖计算。
CN201480068403.8A 2013-12-18 2014-12-11 用于在代码审查期间显示测试覆盖数据的过程 Active CN105830037B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/132,902 2013-12-18
US14/132,902 US9405662B2 (en) 2013-12-18 2013-12-18 Process for displaying test coverage data during code reviews
PCT/US2014/069740 WO2015094901A1 (en) 2013-12-18 2014-12-11 Process for displaying test coverage data during code reviews

Publications (2)

Publication Number Publication Date
CN105830037A CN105830037A (zh) 2016-08-03
CN105830037B true CN105830037B (zh) 2018-01-12

Family

ID=52278808

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480068403.8A Active CN105830037B (zh) 2013-12-18 2014-12-11 用于在代码审查期间显示测试覆盖数据的过程

Country Status (6)

Country Link
US (1) US9405662B2 (zh)
EP (1) EP3084610A1 (zh)
KR (1) KR101672378B1 (zh)
CN (1) CN105830037B (zh)
DE (1) DE202014010910U1 (zh)
WO (1) WO2015094901A1 (zh)

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150212993A1 (en) * 2014-01-30 2015-07-30 International Business Machines Corporation Impact Coverage
US10146669B2 (en) 2014-07-25 2018-12-04 International Business Machines Corporation Indicating a readiness of a change for implementation into a computer program
US12013775B2 (en) * 2015-12-09 2024-06-18 International Business Machines Corporation Building coverage metrics and testing strategies for mobile testing via view enumeration
CN105630670A (zh) * 2015-12-16 2016-06-01 北京奇虎科技有限公司 一种代码覆盖率的测试方法和装置
WO2018029668A1 (en) * 2016-08-09 2018-02-15 Sealights Technologies Ltd. System and method for continuous testing and delivery of software
CN106293749A (zh) * 2016-08-15 2017-01-04 云南电网有限责任公司信息中心 一种基于持续集成的源代码管控系统
US9606793B1 (en) * 2016-09-14 2017-03-28 Red Hat Israel, Ltd. Backporting of bug patches
US11294799B2 (en) * 2016-09-16 2022-04-05 Oracle International Corporation Plugin for multi-module code coverage in web applications
KR102016472B1 (ko) * 2017-02-28 2019-09-02 슈어소프트테크주식회사 코드 커버리지 측정 방법 및 장치, 그리고 이를 실행하기 위한 프로그램을 기록한 컴퓨터로 판독가능한 기록매체
CN113004271A (zh) * 2017-05-09 2021-06-22 杭州安道药业有限公司 吲哚嗪衍生物及其在医药上的应用
US10678673B2 (en) * 2017-07-12 2020-06-09 Fujitsu Limited Software program fault localization
CN107480066B (zh) * 2017-08-18 2020-10-30 网易(杭州)网络有限公司 代码覆盖率统计方法、装置、存储介质、处理器和终端
CN107832211B (zh) * 2017-11-02 2020-03-27 上海振华重工电气有限公司 基于事件触发实现过程监控的自动化测试系统及方法
US10248549B1 (en) * 2017-11-02 2019-04-02 Citrix Systems, Inc. Systems and methods for detection of untested code execution
US10430319B1 (en) * 2018-05-04 2019-10-01 Fmr Llc Systems and methods for automatic software testing
US11163669B1 (en) * 2018-06-12 2021-11-02 Amazon Technologies, Inc. Measuring test coverage during phased deployments of software updates
US10545855B1 (en) * 2018-09-28 2020-01-28 Microsoft Technology Licensing, Llc Software testing assurance through inconsistent treatment detection
US10853231B2 (en) * 2018-12-11 2020-12-01 Sap Se Detection and correction of coding errors in software development
US11138366B2 (en) * 2019-02-25 2021-10-05 Allstate Insurance Company Systems and methods for automated code validation
CN110321144A (zh) * 2019-06-27 2019-10-11 深圳前海微众银行股份有限公司 下线源代码的识别方法、装置、设备及存储介质
US11573885B1 (en) 2019-09-26 2023-02-07 SeaLights Technologies LTD System and method for test selection according to test impact analytics
CN111026665B (zh) * 2019-12-09 2023-02-28 建信金融科技有限责任公司 测试范围分析方法、装置及设备
WO2021124464A1 (ja) * 2019-12-17 2021-06-24 三菱電機株式会社 経路決定装置及び経路決定プログラム
CN111427770B (zh) * 2020-02-29 2024-04-09 中国平安人寿保险股份有限公司 一种资源测试方法及相关设备
US11426116B2 (en) * 2020-06-15 2022-08-30 Bank Of America Corporation System using eye tracking data for analysis and validation of data
CN114020627A (zh) * 2021-11-05 2022-02-08 蔚来汽车科技(安徽)有限公司 应用程序的测试结果监测方法、装置及存储介质
KR20240021493A (ko) * 2022-08-10 2024-02-19 쿠팡 주식회사 전자 장치 및 그의 정보 제공 방법
KR20240038364A (ko) * 2022-09-16 2024-03-25 쿠팡 주식회사 Ab 테스트 코드 정보 관리를 위한 전자 장치 및 그 방법
CN115858354B (zh) * 2022-11-29 2023-08-18 广发银行股份有限公司 一种测试覆盖率计算方法、系统、终端及存储介质
KR102618417B1 (ko) * 2023-05-10 2023-12-28 쿠팡 주식회사 정보를 제공하는 전자 장치의 동작 방법 및 이를 지원하는 전자 장치

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2147036A1 (en) * 1994-05-16 1995-11-17 Yih-Farn Robin Chen System and method for selective regression testing
US6895577B1 (en) * 1999-05-13 2005-05-17 Compuware Corporation Risk metric for testing software
US7428726B1 (en) * 2000-04-12 2008-09-23 Compuware Corporation Techniques for software configuration tracking
US7603660B2 (en) * 2005-06-01 2009-10-13 Microsoft Corporation Code coverage test selection
US20070028218A1 (en) * 2005-08-01 2007-02-01 Masser Joel L Apparatus, system, and method for a software test coverage analyzer using embedded hardware
CN1952818B (zh) * 2005-10-22 2010-12-15 康佳集团股份有限公司 自动检验测试结果的程序单元测试方法
US8205191B1 (en) * 2006-06-02 2012-06-19 Parasoft Corporation System and method for change-based testing
US8713513B2 (en) * 2006-12-13 2014-04-29 Infosys Limited Evaluating programmer efficiency in maintaining software systems
US8694958B1 (en) * 2007-09-14 2014-04-08 The Mathworks, Inc. Marking up objects in code generation
US8079018B2 (en) * 2007-11-22 2011-12-13 Microsoft Corporation Test impact feedback system for software developers
US8448141B2 (en) 2008-03-31 2013-05-21 International Business Machines Corporation Evaluation of software based on change history
US8276123B1 (en) * 2008-07-22 2012-09-25 Juniper Networks, Inc. Adaptive regression test selection within testing environments
US9317399B2 (en) * 2012-09-28 2016-04-19 Synopsys, Inc. Policy evaluation based upon dynamic observation, static analysis and code change history
US20100146340A1 (en) * 2008-12-09 2010-06-10 International Business Machines Corporation Analyzing Coverage of Code Changes
US20100235809A1 (en) * 2009-03-12 2010-09-16 Honeywell International Inc. System and method for managing a model-based design lifecycle
US8423967B2 (en) * 2009-07-01 2013-04-16 International Business Machines Corporation Automated level-based targeted test configuration
US8776007B2 (en) 2010-05-07 2014-07-08 Accenture Global Services Limited Assessment of software code development
JP5767471B2 (ja) 2010-12-24 2015-08-19 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation テストの網羅性を評価する装置及び方法
US9535823B2 (en) * 2011-02-28 2017-01-03 Typemock Ltd. Method and apparatus for detecting software bugs
US9207935B2 (en) 2011-04-07 2015-12-08 Infosys Limited Early analysis of software design diagrams
US8635598B2 (en) * 2011-06-20 2014-01-21 Microsoft Corporation Automatic code decoration for code review
US9218271B2 (en) 2011-10-04 2015-12-22 International Business Machines Corporation Test planning based on dynamic coverage analysis
CN103246600B (zh) * 2012-02-10 2016-04-06 广州博纳信息技术有限公司 软件测评快速校验方法
US9032369B2 (en) 2012-03-26 2015-05-12 Software Ag Systems and/or methods for executing appropriate tests based on code modifications using live, distributed, real-time cache and feedback loop
US8996921B2 (en) * 2012-11-08 2015-03-31 International Business Machines Corporation Indicating coverage of Web application testing
US9201646B2 (en) * 2013-01-05 2015-12-01 Vmware, Inc. Automatic code review and code reviewer recommendation
US9946634B2 (en) * 2013-12-09 2018-04-17 International Business Machines Corporation System and method for determining test coverage

Also Published As

Publication number Publication date
US20150169431A1 (en) 2015-06-18
US9405662B2 (en) 2016-08-02
EP3084610A1 (en) 2016-10-26
KR101672378B1 (ko) 2016-11-03
DE202014010910U1 (de) 2017-01-16
WO2015094901A1 (en) 2015-06-25
CN105830037A (zh) 2016-08-03
KR20160068978A (ko) 2016-06-15

Similar Documents

Publication Publication Date Title
CN105830037B (zh) 用于在代码审查期间显示测试覆盖数据的过程
Li et al. Which log level should developers choose for a new logging statement?
Sciacovelli et al. Performance criteria and quality indicators for the post-analytical phase
Meneely et al. Predicting failures with developer networks and social network analysis
Laposata et al. Physician survey of a laboratory medicine interpretive service and evaluation of the influence of interpretations on laboratory test ordering
US20070143735A1 (en) Activity-based software traceability management method and apparatus
Pavic et al. Mobile health technologies for continuous monitoring of cancer patients in palliative care aiming to predict health status deterioration: a feasibility study
US20090144699A1 (en) Log file analysis and evaluation tool
Kirbas et al. The relationship between evolutionary coupling and defects in large industrial software
CN112231274B (zh) 日志汇总方法、装置、电子设备及存储介质
CN107562419A (zh) 软件开发支援方法及系统
CN103282873A (zh) 用于实验室测定确认或验证的系统和方法
Nethery et al. Evaluation of the health impacts of the 1990 clean air act amendments using causal inference and machine learning
Xie et al. Long‐term epilepsy outcome dynamics revealed by natural language processing of clinic notes
Kasturi et al. Predicting COVID-19–related health care resource utilization across a statewide patient population: Model development study
Lawless Armitage Lecture 2011: the design and analysis of life history studies
CN113312529A (zh) 一种数据可视化方法、装置、计算机设备及存储介质
JP4928480B2 (ja) ジョブ処理システムおよびジョブ管理方法
Ahlgren et al. Large-scale system monitoring experiences and recommendations
Ghosh Proportional hazards regression for cancer studies
Baek et al. An energy efficiency grading system for mobile applications based on usage patterns
CN115812195A (zh) 计算开发过程中的开发者时间
Tosun Misirli et al. An explanatory analysis on eclipse beta-release bugs through in-process metrics
JP2009181494A (ja) ジョブ処理システムおよびジョブ情報取得方法
Lu et al. Label Assist: Personalized Travel Models for Longitudinal Data Collection

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: American California

Patentee after: Google limited liability company

Address before: American California

Patentee before: Google Inc.