CN105190536A - 将不同大小的代码更改作业集合提供至验证器 - Google Patents

将不同大小的代码更改作业集合提供至验证器 Download PDF

Info

Publication number
CN105190536A
CN105190536A CN201380071104.5A CN201380071104A CN105190536A CN 105190536 A CN105190536 A CN 105190536A CN 201380071104 A CN201380071104 A CN 201380071104A CN 105190536 A CN105190536 A CN 105190536A
Authority
CN
China
Prior art keywords
validator
engine
queue
instruction
probability
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.)
Granted
Application number
CN201380071104.5A
Other languages
English (en)
Other versions
CN105190536B (zh
Inventor
E·贝内迪特
L·察巴里
A·维格尔曼
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.)
Weifosi Co ltd
Original Assignee
Hewlett Packard Development Co LP
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 Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of CN105190536A publication Critical patent/CN105190536A/zh
Application granted granted Critical
Publication of CN105190536B publication Critical patent/CN105190536B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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/3692Test management for test results analysis
    • 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/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Hardware Redundancy (AREA)
  • Debugging And Monitoring (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本文公开的示例涉及将不同大小的代码更改作业集合提供至验证器。示例包括在队列中放置多个作业,每个作业包括被请求要提交至共享代码的至少一个代码更改。示例进一步包括提供不同大小的作业集合至多个验证器,每个作业集合包含在给定时间时队列中的一个或多个作业的连续组,连续组以给定时间时处于队列前端处的作业开始。

Description

将不同大小的代码更改作业集合提供至验证器
背景技术
在一些情况下,许多源代码开发者可处理开发中的软件项目(例如,计算机应用等)的共享代码。在一些示例,源代码管理(SCM)系统可被利用作为用于保持共享代码的当前版本的中央仓库(repository)。在这样的示例中,每一个开发者可从SCM系统检索共享代码的当前版本并可提交它们的代码更改至保持于SCM系统中的共享代码。
附图说明
如下详细描述参考附图,其中:
图1A为示例计算设备的框图,计算设备提供不同大小的作业集合至多个验证器中的每一个;
图1B为存储于队列中的示例的多个作业的框图;
图2为示例系统的框图,示例系统基于作业失败概率确定集合大小分布;
图3为示例方法的流程图,示例方法用于基于概率上期望被作为组验证成功的作业数目来确定集合大小分布;以及
图4为示例方法的流程图,示例方法用于基于作业失败间隔更新作业失败概率。
具体实施方式
如上所述,处理开发中的软件项目(例如,计算机应用等)的共享代码的软件开发者可利用源代码管理(SCM)系统作为保持共享代码的当前版本的中央仓库。如本文所使用的,“共享代码”可包括至少一个机器可读指令文件(例如,源代码,等),至少一个机器可读指令文件被关联于开发中的软件项目并且被保持在仓库中以供由多个不同的软件开发者或其他用户访问。如本文所使用的,“软件”可指代由计算设备的处理资源可执行的机器可读指令的集合(例如,源代码,等)。
如上所述,每一个开发者可从该SCM系统获取该共享代码的当前版本并可通过提交它们的代码更改至保持共享代码的SCM系统来更新该共享代码。如本文所使用的,“提交”代码更改至共享代码可包括合并,保存,或其他方式将该代码更改并入至该共享代码。然而,开发者可能会提交将错误引入该共享代码的代码更改。引入的错误可能会仿碍该共享代码编译,运行,等,引起功能退化(例如,破坏先前工作的功能),或以其他方式破坏该共享代码。在这样的示例中,当其他开发者使他们的工作区与该共享代码的最新版本同步时,该误差可传播至所述其他开发者,给这些开发者留出了非工作的环境并且空等待着共享代码去被纠正。
在一些示例,对共享代码的更改可在被提交至该共享代码之前被测试。通过该测试的代码更改可被提交,而测试失败的更改可被拒绝(例如,不被提交至共享代码)。然而,独立地为每个递交的代码更改的集合编译和测试共享代码可能是耗时的过程。附加地,如果多个代码更改的集合被一起测试,并且该测试失败,查找和拒绝失败的更改集合可能会涉及单独地重新测试每个更改的集合。
为解决这些问题,本文描述的示例可接收多个作业,每个包括被请求要提交至共享代码的至少一个代码更改,在队列中放置每个作业,并且提供不同大小的作业集合至多个验证器中的每一个,每个作业集合包含在给定时间该队列中的一个或多个作业的连续组,连续组以给定时间时处于队列前端的作业开始。本文描述的示例可进一步从每一个验证器接收所提供的作业集合中的所有作业是否作为组被该验证器成功验证了的指示。
在一些示例,每个所提供的作业集合可与包括更小作业集合的所有作业的每对作业集合的较大者相重叠,并且每个作业集合以队列前端的作业开始。附加地,每个验证器可应用并尝试将其被提供的作业集合的所有代码更改作为组(例如,一起作为单个代码更改的集合)验证,并且所有验证器可并行地执行该过程。以这种方式,本文描述的示例可作为组验证,然后将提供至验证器的作业集合中的最大完全有效的作业集合的每个作业的代码更改作为组提交。本文描述的示例可由此降低在测试队列中所有代码更改的过程中所涉及的时间量。此外,通过对不同大小的重叠作业集合并行执行验证,本文描述的示例可将队列中的第一失败作业标识为属于造成最大有效作业集合和下一最大作业集合(即,最小失败作业集合)之间的差别的作业的相对较小的序列。本文描述的示例由此可降低在提交之前验证代码更改过程中所涉及的时间量,并降低当一起验证多个作业时识别队列中第一无效作业的时间量。
附加地,本文描述的一些示例可基于概率上期望被作为组成功验证的作业的数量确定作业集合的相应大小。以这种方式,本文描述的示例可谨慎地选择要作为组验证的作业集合的大小,以增加成功验证队列中相对大的作业集合的机会,这可由此降低在提交代码更改至共享代码之前验证代码更改的过程所消耗的时间。此外,通过控制什么代码更改被提交和何时代码更改被提交,通过防止任何代码更改被提交至该共享代码而另一代码更改的集合处于正被验证和提交的过程中,本文描述的示例可保持该共享代码处于连续一致的和有效的状态。
现参见附图,图1A为示例计算设备100的框图,示例计算设备100提供不同大小的作业集合至多个验证器的每一个。如本文所使用的,“计算设备”可为桌面计算机,笔记本计算机,工作站,平板计算机,移动电话,智能设备,服务器,或其他任何处理设备或装置。在图1A的示例中,计算设备100包括处理资源110和用指令122,124,126和128编码的机器可读存储介质120。在一些示例中,存储介质120可包括附加的指令。在一些示例中,本文相对于存储介质120描述的指令122,124,126,128和任何其他指令可被存储于远离计算设备100和处理资源110但可由计算设备100和处理资源110访问的机器可读存储介质。
在本文描述的示例中,处理资源可包括例如包括在单个计算设备中或跨多个计算设备分布的一个处理器或多个处理器。如本文所使用的,“处理器”可为中央处理单元(CPU),基于半导体的微处理器,图形处理单元(GPU),配置以获取和执行指令的现场可编程门阵列(FPGA),适用于获取和执行存储于机器可读存储介质中的指令的其他电子电路,或其组合中的至少一个。处理资源110可提取,解码和执行存储于存储介质120中的指令以执行如下描述的功能。在其它示例中,存储介质120的任何指令的功能可采用电子电路的形式,以编码在机器可读存储介质上的可执行指令的形式,或其组合实现。
如本文所使用的,“机器可读存储介质”可为任何电子,磁,光,或其他物理存储装置,用以包含或存储信息,诸如可执行指令,数据,等。例如,本文描述的任何机器可读存储介质可为随机存取存储器(RAM),易失性存储器,非易失性存储器,闪存,存储驱动器(例如,硬盘驱动器),固态驱动器,任何类型的存储盘(例如,压缩盘只读存储器(CD-ROM),任何其他类型的压缩盘,DVD,等)等,或其组合中的任一项。进一步,本文描述的任何机器可读存储介质可为非暂时的。
在本文描述的示例中,指令122,124,126和128可实现一部分质量网关系统,以充当软件开发者(或其他用户)和SCM系统之间的中间媒介。在这样的示例中,不同于开发者直接地提交共享代码的代码更改至SCM系统,开发者可提交包括代码更改的作业至质量网关系统。在这样的示例中,质量网关系统可对包括于递交的作业中的代码更改执行验证过程,如果更改被成功验证,则提交代码更改至SCM系统,并且如果未成功验证,则拒绝(即,不提交)代码更改。在一些示例中,SCM系统可由计算设备100实现。在其它示例中,SCM系统可至少部分地被实现于远离计算设备100但可被计算设备100访问的计算设备上。
在本文描述的示例中,“作业”可包括被请求提交至共享代码的至少一个代码更改请求的集合。在一些示例中,作业可作为请求的一部分被提供至质量网关系统以提交包括于作业的代码更改(一个或多个)至共享代码,或者,作业本身可表示至质量网关系统的、提交所包括的代码更改(一个或多个)至共享代码的请求。作业可以包括采用任何合适的格式或表示的代码更改。例如,作业可以包括采用软件补丁形式等的代码更改。
在图1A的示例中,指令122可接收多个作业165。多个作业165的每一个可包括被请求要提交至共享代码的至少一个代码更改。指令122可从SCM系统的各种不同用户(诸如软件开发者)接收多个作业165的各种不同的作业。
指令124可将指令122接收的每个作业(即,每个作业165)放置在队列140中。在一些示例中,队列140可为由指令124实现的先入先出(FIFO)数据结构。指令124可在计算设备100的存储器(例如,机器可读存储介质)中存储队列140。在其它示例中,队列140可存储于远离计算设备100和处理资源110但可被计算设备100和处理资源110访问的机器可读存储介质上。图1A的示例的特征在下面相对于在图1B中图示的示例性的多个作业165加以描述。
图1B为存储于队列140中的示例性多个作业165的框图。多个作业165可包括数目“N”个作业,其中N为大于1的整数。在图1B的示例中,多个作业165包括N个作业160-1至160-N,其由指令122按照那个次序接收。在一些示例中,指令124可在队列140中以例如作业160-1至160-N被接收的次序放置作业160-1至160-N中的每一个。在这样的示例中,在队列140中放置作业160-1至160-N中的每一个之后,队列140可包括在图1B中所图示的多个作业165。例如,按照那个次序,作业160-1可在队列140的前端142处并可跟随以作业160-2至160-N,作业160-N处于在队列140的后端144。
在图1A和1B的示例中,质量网关系统可包括多个验证器。在本文描述的示例中,验证器可为质量网关系统的组件,用以对作业集合的多个作业作为组执行验证过程。如本文所使用的,“作业集合”可为一个或多个作业的集合。在本文描述的示例中,对作业集合的多个作业“作为组”执行验证过程可包括尝试利用作业集合的多个作业的所有代码更改来更新共享代码的拷贝,并且如果利用所有代码更改成功更新了所有拷贝,则对更新的共享代码的拷贝执行至少一个测试。在一些示例中,验证器可在编译并运行更新的共享代码的建立(build)(或生成更新的共享代码的一个建立)或其组合之后执行测试(一个或者多个)。
验证器还可指示作业集合的多个作业是否作为组由验证器成功验证了。例如,如果利用所有代码更改成功更新了的共享代码的拷贝(即,代码更改并不相互冲突),并且更新的共享代码的拷贝通过所有应用的测试(例如,在编译或其他活动之后生成共享代码的建立(build)),验证器可指示作业作为组被成功验证了。如果利用所有代码更改未成功更新共享代码(例如,因为代码更改包括冲突的代码更改),或成功更新的共享代码的拷贝在至少一个应用的测试中失败,则验证器可指示作业集合中的作业作为组验证未成功。验证器还可对包括一个作业的作业集合执行上述验证过程。
在本文描述的示例中,通过或将通过验证过程的作业在本文可称为“有效作业”,而包括所有有效作业的作业集合在本文可称为“有效作业集合″。此外,在本文描述的示例中,验证过程失败或将失败的作业本文可称为“无效作业”,而包括至少一个无效作业的作业集合在本文可称为“无效作业集合″。
在一些示例中,验证器的功能可以采用电子电路的形式,以编码在机器可读存储介质上的可执行指令的形式,或其组合来实现。例如,验证器可实现为计算机应用,诸如计算机程序或可由计算设备的处理资源执行的其他机器可读指令的集合。在这样的示例中,验证器(例如,验证器应用)可被执行于计算设备100上,可被执行于独立于计算设备100并可被计算设备100访问的计算设备上。在一些示例中,由计算设备执行的验证器可由执行于计算设备上的虚拟机(VM)执行。
如上所表明的,在一些示例中,质量网关系统包含多个验证器。在一些示例中,验证器可由一个计算设备(例如,计算设备100,或与计算设备100相通信的另一计算设备)执行。在其它示例中,验证器可由多个计算设备执行,每一个计算设备都实现至少一个验证器。在这样的示例中,验证器可由计算设备100和独立于计算设备100但可被计算设备100访问的多个计算设备的任何组合实现。
在图1A和1B的示例中,指令126可提供不同大小的作业集合至多个验证器的每一个。随着时间的过去,作业可被加入到队列140(例如,入队)并从队列140移除(例如,出队)。在图1A和1B的示例中,作业集合基于给定时间点(即,给定时间)时队列140中的作业165(例如,队列状态)而被限立范围。例如,指令126可基于给定时间包括于队列140中的作业的特定序列确定作业集合。例如,每个作业集合可包括给定时间时队列140中的多个作业165的一个或多个的连续组,每个组以给定时间时位于队列140的前端142处的作业开始。
在一些示例中,指令126可周期性地确定来提供(队列140中的作业的)不同大小的作业集合至多个验证器的每一个以经受验证过程。响应于该确定,指令126可基于给定时间时(例如,大约是在作出了确定的时间或之后不久)队列140中的作业确定要包括于每个作业集合的作业。在图1A和1B的示例中,在给定时间,队列140可包括作业160-1至160-N。
指令126可确定数目“M”个作业集合,其中M为大于零的整数。在这样的示例中,指令126可确定多个不同大小的作业集合180-1至180-M,如在图1B图示的。如上所所表明的,每个作业集合可包括给定时间时队列140中多个作业165的一个或多个的连续组,每个组以给定时间时位于队列140的前端142处的作业开始。在这样的示例中,第一作业集合180-1可包括作业160-1,160-2和160-3的连续集合,它以给定时间时处于队列140的前端142处的作业160-1开始。在一些示例中,第二作业集合180-2可包括作业160-1至160-7的连续集合,它以给定时间时处于队列140的前端142处的作业160-1开始。在图1B的示例中,作业集合180-M可包括作业160-1至160-N的连续集合,它以给定时间时处于队列140的前端142处的作业160-1开始。
在一些示例中,由指令126确定的多个作业集合还可包括一个或多个附加的作业集合,附加的作业集合具有作业集合180-2和180-M的各自大小之间的大小,取决于验证器(M)的数量。在其它示例中,多个作业集合可包括一个或两个作业集合,取决于验证器(M)的数量。
在图1A和1B的示例中,指令126可向多个验证器中的相应验证器提供由于指令126确定的不同大小的作业集合180-1至180-M中的每一个,如在图1A中所图示的那样。在这样的示例中,提供给相应验证器的每个作业集合包括在所提供的作业集合中所包括的所有作业的所有代码更改。每一个验证器可对提供给它的作业集合执行上述的验证过程,包括指示提供的作业集合的作业是否作为组由验证器成功验证了。验证器可相互并行地对被提供给它的作业集合执行验证过程。
在图1A的示例中,指令128可从每个验证器接收所提供的作业集合(即,提供给验证器的作业集合)的所有作业是否作为组由验证器成功验证了的指示190。例如,指令128可从被提供了作业集合180-1的验证器接收作业集合180-1的所有作业是否由验证器成功验证了的指示190。作为另一示例,指令128可从被提供了作业集合180-M的验证器接收作业集合180-M的所有作业是否由验证器成功验证了的指示190。
基于接收的指示190,指令128可识别由验证器成功验证的最大作业集合。如本文所使用的,如果作业集合的所有作业被作为组(例如由验证器)成功验证了,则作业集合被成功验证。指令128可进一步提交所识别的作业集合中每个作业的每个代码更改至共享代码,并从队列140移除所识别的作业集合的每个作业。在这样的示例中,指令128通过向SCM系统递交一提交代码更改的请求来提交代码更改至共享代码,或指令128另外提交代码更改至SCM系统本身的共享代码。
参考图1A和1B,如果指示190表明作业集合180-1和180-2被成功验证了,但其它作业集合均未被成功验证,则指令128可将作业集合180-2标识为成功验证的最大作业集合,提交作业集合180-2的代码更改至共享代码,并从队列140移除(即,出队)作业集合180-2的作业160-1至160-7。
如在图1B所图示的,由于作业集合180-1至180-M的每个包括以队列的前端142处的作业集合开始的作业集合的连续组,所以作业集合180-1至180-M的每个相互重叠。通过提供重叠的不同大小的作业集合至相应验证器以便被并行验证,本文描述的示例可更容易地识别队列中的无效作业,同时以允许有效作业以其出现于队列中的次序相一致地被提交(即,使得队列中的较晚有效作业不在队列中的较早有效作业之前被提交)至共享代码的方式高效地将多个作业作为组加以验证。
例如,如果指示190表明作业集合180-1被成功验证了,但其它作业集合均未被成功验证,则指令128可标识作业集合180-1为成功验证的最大作业集合,提交作业集合180-1的代码更改至共享代码,并从队列140移除作业集合180-1的作业160-1至160-3。在这样的示例中,因为作业集合180-1和180-2重叠,队列中的第一无效作业可被标识为属于不与作业集合180-1重叠的作业集合180-2的部分,作业集合180-2在该示例中为作业160-4至160-7。该组中的无效作业(一个或者多个)可按照以下相对于图4所描述的那样被识别。尽管以上描述了相对小的三个作业被作为组验证的示例来说明与本文描述的示例相关的概念,本文描述的示例可将大得更多的作业集合的作业作为组加以验证。
例如,指令126可以采用增加将以队列前端处的作业开始的大量连续作业作为组验证的机会的方式,谨慎地选择提供至验证器的作业集合的相应大小。在一些示例中,作业集合的相应大小可用集合大小分布S表示。在本文描述的示例中,集合大小分布可为不同值的集合,每一个值表示多个作业集合的相应作业集合的集合大小。如本文所使用的,作业集合的“大小”或“集合大小”为包括于作业集合的作业的数量,并可为大于零的整数。在本文描述的示例中,集合大小分布可表示实际的多个作业集合(即,被提供给验证器)的作业集合的相应大小,或可为“潜在的”集合大小分布,它表示可用于基于队列中的多个作业确立多个作业集合的范围的可能的集合大小。M个作业集合的集合大小分布S可表示为S={s1,s2,s3,...sM},其中每一个值si例如为大于零的整数,它表示作业集合180-1至180-M中相应作业集合180-i的集合大小。在本文描述的示例中,对集合大小分布S的每个集合大小si,si-1<si(如果S包括si-1)并且si<si+1(如果S包括si+1)。
在图1A和1B的示例中,指令126可基于验证器的数量(M),队列140中作业的数量(N),以及作业失败概率(其在本文可表示为“α”)来确定集合大小分布。在这样的示例中,通过基于作业失败概率α,M和N为作业集合180-1至180-M确定集合大小分布,指令126可基于作业失败概率α确定作业集合180-1至180-M的相应大小,如下文所述。在这样的示例中,指令126可确定指示M个不同大小的作业集合的相应大小的集合大小分布S,然后确定具有由所确定的集合大小分布指示的相应集合大小的作业集合180-1至180-M。
在本文描述的示例中,作业失败概率α可以是一个值,该值表示多个作业中任何给定的一个作业的作业失败验证的概率。在一些示例中,作业失败概率α可为0和1之间表示作业失败验证的概率的值。例如,作业失败概率α可为0.01,表明作业失败验证的概率为1/100。在一些示例中,作业失败概率α的值可由用质量网关系统的用户配置。在图1A和1B的示例中,指令126可基于作业失败间隔动态地更新作业失败概率α的值。在这样的示例中,作业失败概率α的初始值可由用户配置。
在一些示例中,指令126可利用如下公式(公式1)确定更新的作业失败概率αi+1
α x + 1 = β * α i + ( 1 - β ) * 1 f
在公式1,“αi”表示当前作业失败概率,“f”表示作业失败间隔,而“β”表示0和1之间的可配置权重值。在一些示例中,作业失败间隔“f”可为整数,它表示所识别的最近无效作业和所识别的紧跟着前面的无效作业(即,在最近无效作业之前所识别的最后一个无效作业)之间的作业的数量。作业失败间隔f的值的计算可例如对划定作业失败间隔的无效作业计数一个,两个,或无。尽管公式1表示指令126可以如何更新作业失败概率α的一个示例,但是在其它示例中,指令126可以采用任何其他合适的方式更新作业失败概率α。例如,指令126可利用公式1基于指数的移动均值更新作业失败概率α。在其它示例中,指令126可使用其他任何类型的移动均值,等。
指令126可确定集合大小分布,以被利用作为多个作业集合的相应集合大小。在一些示例中,假定潜在集合大小分布作为作业集合的相应大小,指令126可把集合大小分布确定为是在多个潜在集合大小分布中具有概率上期望要作为组被验证的最大作业数目的潜在集合大小分布。如下文所述,指令126可基于作业失败概率α对于给定集合大小分布计算概率上期望要作为组验证的作业数目。在本文描述的示例中,集合大小分布可表示为M个集合大小的集合S={s1,s2,s3,...,sM},如上述,或可表示为M个集合大小参数{j1,j2,...jM}的集合,每个参数可为大于零的整数。在这样的示例中,集合大小分布S的相应集合大小按照如下的方式从集合大小参数得出:
j 1 , j 1 + j 2 , j 1 + j 2 + j 3 , ... , Σ i - = 1 M j i = s 1 , s 2 , s 3 , ... , s M = S
在这样的示例中,对每个集合大小参数{j1,j2,...,jM}的值指派可表示集合大小分布S。在图1B的示例中,作业集合180-1的集合大小s1为j1=3{j1图示为“J1”)。还在图1B的示例中,作业集合180-2的集合大小s2为j1+j2=7(j2图示为“J2”)。图1B还把集合大小参数jM图示为“JM”。因为集合大小分布S可以根据集合大小参数被表示,如以上示出和描述,对集合大小参数{j1,j2,...,jM}的集合的值指派在本文称为集合大小分布或表示集合大小分布。
在一些示例中,指令126可基于随机变量的期望值X(所述术语“期望值”和“随机变量”在概率领域中使用)确定集合大小分布,其中X表示通过上述验证过程的作业的数目,其中M个不同大小的作业集合被提供至M个验证器用于验证。按照以下定义的那样,期望值X可基于作业失败概率α,集合大小参数j1-jM和各种事件在概率空间(Ω,P)中的概率计算。
在本文描述的示例中,Ω为大小(M+1)的集合,其中Ω={ω0,ω1,...,ωM}。在这样的示例中,每一个ωk表示这样的事件,在该事件中,分别被提供了大小s1-sk的作业集合(例如,被提供了作业集合180-1-180-k)的相应验证器均成功验证所提供的作业集合中的所有作业,而分别被提供了大小sk+1-sM的作业集合(例如,被提供了作业集合180-(k+1)-180-M)的相应验证器均未能验证所提供的作业集合的所有作业。换言之,每一个ωk表示这样的事件,在该事件中,大小s1-sk的相应作业集合(例如,作业集合180-1-180-k)均为有效作业集合,而大小sk+1-sM的相应作业集合(例如,作业集合180-(k+1)-180-M)均为无效作业集合。因此,ωk还可表示这样的事件,在该事件中,对于集合大小分布S的大小sk的作业集合验证成功,并且对于具有大于大小sk(即,大小sk+1-sM)的集合大小分布S的任何作业集合验证失败,其中集合大小分布S表示提供至M个验证器的作业集合的各个集合大小。对于每一个值k,0<k<M,事件ωk的概率可表达为如下公式(公式2):
P ( &omega; k ) = ( 1 - &alpha; ) &Sigma; i = 1 M j i ( 1 - ( 1 - &alpha; ) j k + 1 ) , 0 < k < M
以上描述了公式2的每个参数。
当k=0时事件ωk的概率表示所有M个作业集合在它们被提供给的相应验证器处验证过程失败的概率。换言之,当k=0时事件ωk表示事件,其中所有提供的作业集合(例如,所有大小s1-sM的相应作业集合,所有作业集合180-1-180-M)都为无效作业集合。当k=0时事件ωk的概率可表达为如下公式(公式3):
P(ωk)=1-(1-α)j1,k=0
以上描述了公式3的每个参数。
当k=M时事件ωk的概率表示所有M个作业集合在它们被提供给的相应验证器处被成功验证的概率。换言之,当k=M时事件ωk表示事件,其中所有提供的作业集合(例如,所有大小s1-sM的相应作业集合,所有作业集合180-1-180-M)都为有效作业集合。因此,当k=M时ωk的概率还可表示对于集合大小分布S的最大作业集合(即,大小sM的作业集合)验证成功的概率,其中集合大小分布S表示提供至M个验证器的作业集合的相应集合大小。当k=M时事件ωk的概率可表达为如下公式(公式4):
P ( &omega; k ) = ( 1 - &alpha; ) &Sigma; i - = 1 M j i , k = M
以上描述了公式4的每个参数。
在这样的示例中,期望值X可表达如下(公式5):
E ( X ) = &Sigma; k = 1 M - 1 &lsqb; ( 1 - &alpha; ) &Sigma; i = 1 M j i ( 1 - ( 1 - &alpha; ) j k + 1 ) &Sigma; i = 1 k j i &rsqb; + ( 1 - &alpha; ) &Sigma; i = 1 M j i &Sigma; i = 1 M j i
公式5为具有M个变量(即,M个集合大小参数{j1,j2,...,jM})的函数。在这样的示例中,对于给集合大小参数{j1,j2,...,jM}的每个值指派,假定大小集合分布用作为作业集合的相应大小的集合大小参数表示,E[X]表示当M个作业集合被提供至M个不同的验证器用于将每个作业集合作为组验证时要验证的作业的期望数目。基于期望值(那个术语在概率领域中使用)的计算所确定的作业的“期望”数目本文可称为作业的“概率期望”数目。例如,上述基于公式5计算的作业数目本文可称为作业的“概率期望”数目。
经由上述验证过程验证的作业的数量可为在验证器之一处作为组验证的最大作业集合中的作业的数量,由于作业集合重叠,使得该过程中所验证的任何作业被作为最大成功验证的作业集合的一部分验证(而与它是否作为另一有效作业集合的一部分被验证无关)。因此,E[X]可表示要作为在验证过程期间在验证器之一处被成功验证的最大作业集合的一部分验证的作业的期望数目。
在一些示例,指令126可通过在有限数量的对集合大小参数的值的可能指派中确定最大化E[X](要作为组作为最大成功验证作业集合的一部分验证的作业的概率期望数目)的给集合大小参数{j1,j2,...,jM}的值指派,来确定作业集合180-1-180-M的大小集合分布。如上所表明的,给每个集合大小参数{j1,j2,...,jM}的值指派可表示集合大小分布S。因此,每一个给集合大小参数的值指派可表示潜在集合大小分布。因此,以这种方式,指令126可通过在有限的多个潜在集合大小分布中确定最大化E[X]的潜在集合大小分布,来确定作业集合180-1-180-M的集合大小分布。在一些示例中,最大值E[X]可为对潜在集合大小分布计算的值E[X]中的单个最大值E[X],或可为针对最大值所约束的多个值E[X]中的任一个。
如上所表明的,每个对集合大小参数的值指派可表示潜在集合大小分布。在这样的示例中,指令126可为多个不同的对集合大小参数{j1,j2,...,jM}的值指派的每一个(即,对多个不同的潜在集合大小分布)确定E[X],并且确定在不同的指派中(即,在不同的潜在集合大小分布中)最大化E[X]的值的指派。
在一些示例中,对集合大小参数{j1,j2,...,jM}潜在的值指派可以采用使在有限数量的可能的指派中最大化E[X]的指派可被发现的各种方式中的任何方式加以限定。例如,指令126可为集合大小参数{j1,j2,...,jM}的每一个的值指派确定E[X],对于集合大小参数{j1,j2,...,jM},(即,最大集合大小小于或等于队列140的作业的数量)。附加地或可替代地,可指派至每个集合大小参数ji的值的范围可基于作业失败概率α限定。例如,如果α约为0.01,指示约1/100的作业验证失败,则每一个集合大小参数ji可例如被限定到约1-100的可能值的范围。附加地或可替代地,在一些示例中,对集合大小参数的值指派可被限定成以下指派,其中每个集合大小参数彼此相等(即,j1=j2=...=jM)。在这样的示例中,每个集合大小参数对于给定的值指派可表示相同的基线作业数量,并且由指派的值表示的多个潜在集合大小分布的集合大小的每一个可以是基线作业数量的不同倍数。例如,对于由集合大小参数指派值(其中每个集合大小参数彼此相等)表示的多个潜在集合大小分布的每一个,由集合大小参数的指派表示的潜在集合大小分布的相应集合大小可为{j1,2*j1,3*j1...,M*j1}={s1,s2,s3,...,sM},其中j1表示基线作业数量。
在图1A和1B的示例中,在如上述那样确定集合大小分布之后,指令126可将作业集合180-1-180-M提供至验证器,所述作业集合180-1-180-M具有由所确定的集合大小分布指定的相应集合大小。以这种方式,指令126采用增加在验证过程中将在队列的前端处的大量作业作为组验证的机会的方式,谨慎选择提供至验证器的作业集合180-1-180-M的相应大小。
在图1A和1B的示例中,指令126可如上述那样基于公式5确定集合大小分布,并可进一步利用所确定的大小集合分布的相应集合大小作为作业集合180-1-180-M的相应集合大小。在这样的示例中,指令126可基于由公式5利用的作业失败概率α确定作业集合180-1-180-M的相应大小。
在这样的示例中,通过上述那样基于公式5确定用作作业集合180-1-180-M的相应集合大小的集合大小分布,指令126还可基于各种事件ωk的概率确定集合大小分布。例如,如上所述,指令126可在确定集合大小分布要用于作业集合180-1-180-M的相应大小之前,对集合大小分布(即,对表示集合大小分布的集合大小参数的值指派)计算E[X]。在这样的示例中,对特定集合大小分布计算E[X]是基于对该分布的每个给定集合大小对给定集合大小的作业集合验证成功的概率和对大于给定大小的特定分布的集合大小的任何作业集合验证失败的概率。如上述,当给定集合大小不是该分布的最大集合大小(即,0<k<M)时,这样的事件的概率(P(ωk))由公式2表示,并且当给定集合大小为该分布的最大集合大小(即,k=M)时该事件的概率(P(ωk))由公式4表示。参考公式5,对特定集合大小分布计算E[X]部分地基于根据公式2对每个k(0<k<M)计算的P(ωk),如由公式5的如下部分表示:
&Sigma; k = 1 M - 1 &lsqb; ( 1 - &alpha; ) &Sigma; i = 1 M j i ( 1 - ( 1 - &alpha; ) j k + 1 ) &Sigma; i = 1 k j i &rsqb;
并且还部分基于根据公式4对k=M计算的P(ωk),如由公式5的如下部分表示:
( 1 - &alpha; ) &Sigma; i = 1 M j i &Sigma; j = 1 M j i
附加地,在一些示例中,如上述,指令126可计算多个潜在集合大小分布的E[X]并且在潜在集合大小分布中确定最大化E[X]的潜在集合大小分布是其相应集合大小被用作为作业集合180-1-180-M的相应集合大小的集合大小分布。
附加地,在一些示例中,给定潜在集合大小分布作为提供至验证器的作业集合的相应大小的情况下,指令126可对多个潜在集合大小分布的每一个确定概率期望作为组要由验证器成功验证的多个作业。例如,如上述,指令126可对多个潜在集合大小分布(基于公式5)计算E[X]。在这样的示例中,每个潜在集合大小分布的概率期望作业值可基于作业失败概率α和多个验证器的数量M确定,其每个在公式5中利用。在这样的示例中,指令126还可选择潜在集合大小分布,针对该分布,作业的最大数目被确定作为其相应集合大小被用作作业集合180-1-180-M的相应集合大小的集合大小分布。以这种方式,指令126可在潜在集合大小分布中确定最大化E[X]的潜在集合大小分布是其相应集合大小被利用作为作业集合180-1-180-M的相应集合大小的集合大小分布。在一些示例中,作业的最大值可以是对潜在集合大小分布计算的E[X]值中E[X]的最大绝对值,或可针对最大值被约束的多个E[X]值的任一个。
在一些示例中,指令122,124,126和128可为安装包的一部分,当安装包被安装时,安装包可由处理资源110执行,以实现本文相对于指令122,124,126和128描述的功能。在这样的示例中,存储介质120可以是便携式介质,诸如CD,DVD,或闪存驱动,或者是由可从其下载和安装安装包的服务器保持的存储器。在其它示例,指令122,124,126和128可为已安装于包括处理资源110的计算设备100的一个应用,多个应用,或组件的一部分。在这样的示例中,存储介质120可包括存储器,诸如硬盘驱动,固态驱动等。在一些示例中,本文相对于图1A和1B描述的功能可结合本文相对于图2-4的任一个描述的功能来提供。
图2为基于作业失败概率确定集合大小分布的示例系统200的框图。在图2的示例中,系统200可以作为质量网关系统205的一部分被包括,如以上相对于图1A所描述的。质量网关系统205还可包括多个验证器引擎,多个验证器引擎中的每个可实现验证器的功能,如以上相对于图1A和1B所描述的。在图2的示例中,系统200可包括至少一个验证器引擎(例如,验证器引擎230)。
在图2的示例中,系统200与包含共享代码252的源代码管理(SCM)系统250相通信,如以上所述。此外,系统200的验证器引擎230还与应用生命周期管理(ALM)系统254相通信。在一些示例中,ALM系统254可为用于管理关联于应用(一个或者多个)的生命的各种方面的信息的系统。例如,ALM系统254可管理关联于应用(一个或者多个)的关于发布,缺陷,需求,测试等的信息。
在图2的示例中,系统200包括引擎220,222,224,226,228,229,230,232,234和236。在一些示例中,系统200可包括附加的引擎。系统200的每个引擎可以是实现相应引擎的功能的硬件和编程的任何组合。硬件和编程的这种组合可以被采用多个不同的方式实现。例如,引擎的编程可为存储于非暂存机器可读存储介质中的处理器可执行指令,而用于引擎的硬件可包括执行这些指令的处理资源。在这样的示例中,机器可读存储介质可存储指令,当指令由处理资源执行时,实现系统200。存储指令的机器可读存储介质可被集成于包括执行所述指令的处理资源的计算设备中,或机器可读存储介质可与计算设备和处理资源独立但可被它们访问。处理资源可包含包括于单个计算设备或跨多个计算设备分布的一个处理器或多个处理器。在其它示例中,任何引擎的功能可以采用电子电路的形式实现。附加地,在图2的示例中,不属于系统200的一部分的每个验证器引擎可为硬件和编程的任何组合,用于实现相应引擎的功能,如以上相对于系统200的引擎所描述的。
在一些示例中,指令可为安装包的一部分,当安装包安装时,安装包可由处理资源执行以实现系统200。在这样的示例中,机器可读存储介质可为便携式介质,诸如CD,DVD,或闪存驱动,或由可从其下载和安装安装包的服务器保持的存储器。在其它示例中,指令可为已安装于包括处理资源的计算设备的一个应用,多个应用,或组件的一部分。在这样的示例中,机器可读存储介质可包括存储器,诸如硬盘驱动,固态驱动等。
在图2的示例中,系统200包括分布引擎220和验证器引擎230,分布引擎220包括引擎222,224,226,228和229,验证器引擎230包括引擎232,234和236。队列引擎222可从用户(诸如软件开发者(一个或者多个))接收多个作业165,如以上相对于图1A描述的。在一些示例中,引擎222在队列140中可放置多个接收的作业165的每一个,如以上相对于图1A和1B描述的。图2的示例的特征可在下文相对于图1B图示的示例性多个作业165描述。在图2的示例中,多个作业165的每一个可包括被请求要提交至共享代码的至少一个代码更改。
大小引擎224可确定集合大小分布。在一些示例,引擎224可基于作业失败概率α确定集合大小分布,如以上相对于图1A和1B描述的。作业失败概率α可表示任何一个给定的作业165的作业失败验证的概率,如上所述,并可被设置,更新等,如上所述的。
在一些示例中,给定潜在集合大小分布作为作业集合的相应大小的情况下,引擎224可为多个潜在集合大小分布的每一个确定概率期望作为组由验证引擎成功验证的多个作业。引擎224可以为每个潜在集合大小分布确定作业的概率期望数目,如以上相对于图1A和1B描述的。例如,可以为每个潜在集合大小分布基于公式5确定作业的概率期望值E[X],每个潜在集合大小分布可由给集合大小参数{j1,j2,...,jM}的集合的相应值指派表示。
在一些示例中,引擎224可进一步在多个潜在集合大小分布中确定具有最大的作业概率期望值E[X]的潜在集合大小分布,如上述的。在这样的示例中,引擎224可进一步将被利用为作业集合180-1-180-M的相应集合大小的集合大小分布确定为是在潜在集合大小分布中具有最大的作业概率期望值E[X]的潜在集合大小分布。
供应引擎228可分别提供多个作业集合180-1-180-M至多个验证器引擎。多个验证器引擎可包括数量“M”个验证器引擎。在一些示例中,多个验证器引擎可包括系统200的验证器引擎230。在图2的示例中,每个提供的作业集合180-1-180-M具有由确定的集合大小分布指定的不同的相应大小。此外,每个作业集合180-1-180-M包含在给定时间队列140中的一个或多个作业165的连续组,连续组以给定时间时处于队列前端处的作业开始,如以上相对于图1A和1B描述的。
在图2的示例中,多个验证器引擎的每一个可对提供给它的作业集合执行以上相对于验证器描述的验证过程,包括指示所提供的作业集合中的作业是否作为组由验证器引擎成功验证了。在这样的示例中,接收引擎229可从每个验证器引擎接收指示290:是否所提供的作业集合中的所有作业都作为组由验证器引擎成功验证了。
提交引擎226可基于所接收的表示290确定作业集合180-1-180-M的哪个是其中作业集合的所有作业作为组在验证器引擎之一处被成功验证了的最大作业集合。在这样的示例中,引擎226可将在验证器引擎之一处成功验证了的最大作业集合的每个作业的每个代码更改提交至共享代码252。在这样的示例中,队列引擎222可进一步(例如,在那些作业的代码更改已经被提交至共享代码之后)从队列140移除在验证器引擎之一处成功验证了的最大作业集合的每个作业。
如上所述,系统200可包括质量网关引擎205的多个验证器引擎的至少一个验证器引擎230。在图2的示例中,分布引擎220的供应引擎228可提供作业集合180-1-180-M之一至验证器引擎230,而验证器引擎230可对所提供的作业集合执行上述验证过程。例如,在图2的示例中,验证器引擎230可从引擎228接收作业集合180-1。在这样的示例中,更新引擎232可利用提供至给定验证引擎的作业的所有的代码更改来更新共享代码252的拷贝。例如,如在图1B所图示的,作业集合180-1可包括作业160-1-160-3。在这样的示例中,引擎232可利用包括于作业160-1-160-3的每个代码更改来更新共享代码252的拷贝。
在更新共享代码252的拷贝之后,测试引擎234可对更新的共享代码252的拷贝执行多个测试。例如,引擎234可编译和运行(或生成)更新的共享代码252的拷贝的建立(build)(或其组合),然后对编译的代码,建立(build),等执行单元测试,组件测试,系统测试,端到端测试,或其他任何合适类型的测试的任何组合。引擎234可进一步确定更新的共享代码252的拷贝是否通过每个应用的测试。响应于确定更新的共享代码252的拷贝通过所有应用的测试,输出引擎236可输出成功指示(作为来自验证引擎230的指示290),该成功指示载明提供至验证引擎230的作业集合(例如,作业集合180-1)的所有作业(例如,160-1-160-3)作为组由验证引擎230成功验证了。响应于确定更新的共享代码252的拷贝未通过所有应用的测试,输出引擎236可输出失败指示(作为来自验证引擎230的指示290),该失败指示载明作业集合验证失败。
在一些示例中,测试引擎234可进一步确定是否所提供的作业集合的任何代码更改都被标识为缺陷的修补。例如,包括于作业集合的作业的某些代码更改可能已经被提交开发者标识为ALM系统254中正被跟踪的已知缺陷的修补。在这样的示例中,响应于确定至少一个代码更改被标识为缺陷的修补,测试引擎234可访问ALM系统254以识别关联于ALM系统254中的缺陷的至少一个测试。例如,ALM系统254可链接测试(一个或者多个)与所识别的缺陷,诸如用于确定所识别的缺陷是否已经被纠正的测试(一个或者多个)。在这样的示例中,响应于确定一些代码更改被标识为缺陷的修补,测试引擎可进一步执行识别为关联于缺陷的测试,作为执行于更新的共享代码252的拷贝上的多个测试的一部分。在这样的示例中,如果链接至缺陷的测试(一个或者多个)还未通过,作业集合就可能没有通过验证。在一些示例中,本文相对于图2描述的功能可结合在本文相对于图1A-1B和3-4中任何一个所描述的功能提供。
图3为示例方法300的流程图,示例方法300用于基于概率上期望要被作为组成功验证的作业数目确定集合大小分布。尽管方法300的执行在下文参考图1的计算设备100描述,用于执行方法300的其他合适的系统可被利用(例如,系统200)。附加地,方法300的实现不限于这样的示例。
在方法300的305,指令124可将多个作业165放置在队列140中,其中每个作业包括被请求要提交至共享代码的至少一个代码更改,如以上相对于图1A和1B描述的。在一些示例中,作业165可由指令122从例如多个不同的用户接收。在310,例如,指令126可利用执行指令126的处理资源,基于概率上期望要作为组由多个验证器成功验证的作业数目来确定集合大小分布,其中所述多个验证器被提供有具有由集合大小分布指定的相应大小的相应作业集合。
在一些示例中,指令126还可基于作业失败概率α确定集合大小分布。例如,如上述,给定潜在集合大小分布作为提供至验证器的作业集合的相应大小的情况下,指令126可以为多个潜在集合大小分布的每一个确定概率上期望作为组由验证器成功验证的作业数目E[X]。在一些示例中,E[X]可被利用公式5基于作业失败概率α确定。在一些示例中,指令126可选择其中作业的最大数目E[X]被确定了的潜在集合大小分布作为集合大小分布,如以上相对于图1A描述的。
在315,指令126可将具有由确定的集合大小分布指定的相应大小的作业集合180-1-180-M分别提供至验证器。在这样的示例中,每个作业集合可包含在给定时间时队列140中的作业的连续组,连续组以给定时间时处于队列140的前端142处的作业开始,如上述。在320,指令128可从每个验证器接收指示190,指示190指示所提供的作业集合的所有作业是否作为组由验证器成功验证了。
尽管图3的流程图示出了一定功能的执行的特定次序,方法300不限于那个次序。例如,流程图中连续地示出的功能可采用不同的次序被执行,可被并发执行或被部分并发执行,或其组合地执行。在一些示例中,本文相对于图3描述的功能可结合本文相对于图1A-2和4中的任何图描述的功能来提供。
图4为用于基于作业失败间隔更新作业失败概率的示例方法400的流程图。图4为用于输出覆盖报告的示例方法400的流程图,覆盖报告包括事件和输入覆盖度量和接口覆盖值。尽管方法400的执行在下文参考图1的计算设备100描述,执行方法400的其他合适的系统可被利用(例如,系统200)。附加地,方法400的实现不限于这样的示例。
在方法200的405,指令124可在队列140中放置多个作业165,其中每个作业包括被请求要提交至共享代码的至少一个代码更改,如以上相对于图1A和1B描述的。在一些示例中,作业165可通过指令122从例如多个不同的用户接收。在410,例如,指令126可利用执行指令126的处理资源,基于概率上期望作为组要由多个验证器成功验证的作业数目来确定集合大小分布,其中所述多个验证器被提供有具有由集合大小分布指定的相应大小的相应作业集合,如以上相对于图1A和公式5描述的。在这样的示例中,指令126可基于作业失败概率α确定集合大小分布。
在415,指令126可将具有由确定的集合大小分布指定的相应大小的作业集合180-1-180-M分别提供至验证器。在这样的示例中,每一个作业集合可包含在给定时间时队列140中的作业的连续组,连续组以给定时间时处于队列140的前端142处的作业开始,如上述。在420,指令128可从每个验证器接收指示190,指示190指示所提供的作业集合的所有作业是否作为组由验证器成功验证了。
在425,指令128可基于接收的指示190识别由验证器成功验证了的最大作业集合。在430,指令128可将所识别的作业集合中每个作业的每个代码更改提交至共享代码。在435,指令124可从队列140移除所标识的作业集合中的每个作业。
在440,指令126和128可识别队列140中的最早无效作业。例如,如果被成功验证了的最大作业集合不是提供至验证器的作业集合中的最大的,则最小无效作业集合包括队列中的最早无效作业。在这样的示例中,指令126可在440开始清除过程。在其它示例中,如果最大成功验证了的作业集合也是提供至验证器的最大作业集合,则作业集合都不曾包括无效作业,并且方法400可绕过清除过程并进入提供作业集合至验证器以执行验证过程的下一迭代,如上述。
在清除过程中,在440,在包括于最小失败(即,无效)作业集合但不包括于最大成功验证(即,有效)作业集合作业中的作业中,指令126和128可识别队列中的最早无效作业。因为作业集合重叠,如以上相对于图1A和1B描述的,最早无效作业被包括于造成最大有效作业集合和最小无效作业集合之间的差别的作业序列中。为了识别最早无效作业,指令126可在多个验证器中以多种形式中的任何一种划分造成最大有效作业集合和最小无效作业集合之间的差别的作业。例如,指令126可发布作业至M个验证器作为M个重叠连续的不同大小的作业集合,每一个开始于队列的第一作业,而相应集合大小相差1,以使验证器1获取一个作业,验证器2获取两个作业,等,验证器M获取M个作业。验证器然后可返回指示190,指示190指示所有作业是否作为组被成功验证了。如果否,则最早无效作业可被视为是作业集合中最大有效作业集合和最小无效作业集合之间的差别的作业。在其它示例中,最早无效作业可以采用其它方式确定。例如,造成最大有效作业集合和最小无效作业集合之间的差别的所有作业可在M个非重叠作业集合均等地分发(或近似均等地)至M个验证器中的每一个。每个验证器然后可尝试将接收的作业集合作为组验证。该过程然后可对最接近队列的前端的无效作业集合重复。以这种方式,最早无效作业集合可用一种类型的M分叉搜索(即,类似于二分叉搜索,但利用M个搜索路径而不是两个)来识别。指令128可从验证器接收指示190并且基于这些指示确定队列140中的最早无效作业。
在识别了队列140中的最早无效作业之后,指令128可在445继续清除过程,在该过程中,指令128可将队列140中所识别的最早无效作业之前的作业的代码更改中的每一个提交至共享代码。在450,指令124可进一步从队列140移除队列140的最早无效作业之前的每个作业。在455,指令128可基于所识别的无效作业和所识别的邻接着前面的无效作业(即,在最近的无效作业之前所识别的最后一个无效作业)之间的作业数量,确定作业失败间隔f。在460,指令128可基于作业失败间隔f更新作业失败概率,如以上相对于公式1描述的。清除过程可在460结束。
在465,指令126可确定队列140是否为空。如果是,则方法400可在470结束。如果否,则方法400可进入410,此处指令126可基于更新的作业失败概率基于在后续时间仍在队列中的概率期望作为组由验证器成功验证的作业数目确定另一集合大小分布,其中所述验证器被提供有具有由另一集合大小分布指定的相应大小的相应其他作业集合。另一集合大小分布可利用更新的作业失败概率按照以上相对于公式5所描述的那样确定。方法400然后可进入415,此处指令126可分别提供其它作业集合至验证器,其中所述其它作业集合中的每个作业集合包含在后续时间仍然在队列中的作业的连续组,连续组以在后续时间时处于队列的前端处的作业开始。在这样的示例中,方法400然后可进入420并且按照以上所描述的那样继续。
尽管图4的流程图示出特定功能的执行的特定次序,但方法400不限于该次序。例如,流程图中连续示出的功能可以按不同的次序执行,可并发地执行或部分并发地执行,或以其组合执行。在一些示例中,本文相对于图4描述的功能可结合本文相对于图1A-3中任何一个描述的功能提供。

Claims (15)

1.一种非暂存机器可读存储介质,编码有由计算设备的处理资源可执行的指令,用于:
接收多个作业,多个作业中的每个包括被请求要提交至共享代码的至少一个代码更改;
在队列中放置每个作业;
提供不同大小的作业集合至多个验证器的每一个,每个作业集合包含在给定时间时队列中的一个或多个作业的连续组,连续组以给定时间时处于队列前端处的作业开始;并且
从每个验证器接收指示,该指示表示提供的作业集合的所有作业是否作为组由该验证器成功验证了。
2.根据权利要求1的存储介质,其中用于提供的指令包含以下指令:
基于作业失败概率确定作业集合的相应大小,作业失败概率表示任何给定的一个作业的作业验证失败的概率。
3.根据权利要求2的存储介质,其中用于确定的指令进一步包含以下指令:
对于集合大小分布的每个给定集合大小,基于给定集合大小的作业集合验证成功的概率和大于给定集合大小的集合大小分布的另一集合大小的任何作业集合验证失败的概率,确定集合大小分布;
其中确定的集合大小分布的相应集合大小为作业集合的相应集合大小。
4.根据权利要求2的存储介质,其中用于确定的指令进一步包含以下指令:
给定该集合大小分布作为作业集合的相应大小的情况下,基于概率期望作为组由该验证器成功验证的作业数目确定集合大小分布,
其中确定的集合大小分布的相应集合大小为作业集合的相应大小。
5.根据权利要求4的存储介质,其中用于确定该集合大小分布的指令进一步包含以下指令:
给定潜在集合大小分布作为提供至该验证器的作业集合的相应大小的情况下,对于多个潜在集合大小分布的每一个,基于作业失败概率和多个验证器的数量确定概率期望要作为组由验证器成功验证的作业数目;以及
选择最大作业数目被确定了的潜在集合大小分布作为该集合大小分布。
6.根据权利要求1的存储介质,其中用于接收的指令进一步包含以下指令:
基于接收的表示,识别由验证器成功验证了的最大作业集合;
将所识别的作业集合的每个作业的每个代码更改提交至该共享代码;并且
从该队列移除所识别的作业集合的每个作业。
7.一种系统,包含:
队列引擎,用于在队列中放置多个接收的作业的每一个,每一个作业包括被请求要提交至共享代码的至少一个代码更改;
大小引擎,用于基于作业失败概率确定集合大小分布,作业失败概率表示任何给定的一个作业的作业验证失败的概率;
供应引擎,用于将具有由确定的集合大小分布指定的不同的相应大小的多个作业集合分别提供至多个验证器引擎,每个作业集合包含在给定时间时队列中的一个或多个作业的连续组,连续组以给定时间时处于队列前端处的作业开始;以及
接收引擎,用于从每个验证器引擎接收指示,该指示表示提供的作业集合的所有作业是否作为组由该验证器引擎成功验证了。
8.根据权利要求7的系统,其中:
给定潜在集合大小分布作为该作业集合的相应大小的情况下,该大小引擎用于对多个潜在集合大小分布的每一个确定概率期望要作为组由该验证器引擎成功验证的作业数目;以及
其中该大小引擎进一步在多个潜在集合大小分布中将该集合大小分布确定为是具有最大的概率期望作业数目的潜在集合大小分布。
9.根据权利要求8的系统,进一步包含:
提交引擎,用以将在验证器引擎之一处成功验证的最大作业集合的每个作业的每个代码更改提交至共享代码;
其中该队列引擎进一步从该队列移除成功验证了的最大作业集合的每个作业;以及
其中,对多个潜在集合大小分布的每一个,潜在集合大小分布的多个集合大小的每一个是基线作业数量的不同倍数。
10.根据权利要求7的系统,进一步包含:
该验证器引擎的至少一个给定验证器引擎,给定验证器引擎包含:
更新引擎,用以利用提供至该给定验证器引擎的作业的所有的代码更改来更新该共享代码的拷贝;
测试引擎,用以对更新的共享代码拷贝执行多个测试;以及
输出引擎,用以响应于确定更新的共享代码拷贝通过了所有测试而输出成功指示作为来自给定验证器引擎的指示,成功指示表示提供至给定验证器引擎的作业集合的所有作业作为组由该给定验证器引擎成功验证了。
11.根据权利要求10的系统,其中:
该测试引擎进一步确定提供的作业集合的任何代码更改是否被标识为缺陷的修补;
该测试引擎进一步响应于确定至少一个代码更改被标识为缺陷的修补,访问应用生命周期管理(ALM)系统以识别关联于缺陷的至少一个测试;并且
该测试引擎进一步响应于该确定执行至少一个识别的测试作为多个测试的一部分。
12.一种方法,包含:
在队列中放置多个作业,每个作业包括被请求要提交至共享代码的至少一个代码更改;
利用处理资源并基于作业失败概率基于概率期望作为组要由多个验证器成功验证的作业数目确定集合大小分布,其中所述多个验证器被提供有具有由集合大小分布指定的不同的相应大小的相应作业集合;
分别提供该作业集合至该验证器,每个作业集合包含在给定时间时队列中的作业的连续组,连续组以给定时间时处于队列前端处的作业开始;以及
从每个验证器接收指示,该指示表示提供的作业集合的所有作业是否作为组由该验证器成功验证了。
13.根据权利要求12的方法,进一步包含:
基于接收的表示,识别由该验证器成功验证的最大作业集合;
将识别的作业集合的每个作业的每个代码更改提交至共享代码;
从该队列移除识别的作业集合的每个作业;并且
识别该队列中的最早无效作业。
14.根据权利要求13的方法,进一步包含:
将该队列中最早无效作业之前的作业的代码更改的每一个提交至共享代码;
从该队列移除队列中最早无效作业之前的每个作业;
基于识别的无效作业和邻接着前面的无效作业之间的作业数量确定当前失败间隔;以及
基于该当前失败间隔更新该作业失败概率。
15.根据权利要求14的方法,进一步包含:
基于更新的作业失败概率基于在后续时间仍在队列中的概率期望作为组由验证器成功验证的作业数目确定另一集合大小分布,其中所述验证器被提供有具有由另一集合大小分布指定的相应大小的相应其他作业集合;
分别提供其他作业集合至该验证器,每个其他作业集合包含在后续时间仍然在队列中的作业的连续组,连续组以在后续时间时处于队列的前端处的作业开始。
CN201380071104.5A 2013-02-28 2013-02-28 一种用于验证作业的系统及方法 Expired - Fee Related CN105190536B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2013/028156 WO2014133512A1 (en) 2013-02-28 2013-02-28 Providing code change job sets of different sizes to validators

Publications (2)

Publication Number Publication Date
CN105190536A true CN105190536A (zh) 2015-12-23
CN105190536B CN105190536B (zh) 2019-05-31

Family

ID=51428634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380071104.5A Expired - Fee Related CN105190536B (zh) 2013-02-28 2013-02-28 一种用于验证作业的系统及方法

Country Status (4)

Country Link
US (1) US9870221B2 (zh)
EP (1) EP2962186A4 (zh)
CN (1) CN105190536B (zh)
WO (1) WO2014133512A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI734384B (zh) * 2020-02-18 2021-07-21 商合行股份有限公司 驗證作業系統及其資料結構產品

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6029117B2 (ja) * 2014-07-31 2016-11-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation ソースコードの共有を支援する装置及び方法
US10013333B2 (en) * 2015-08-06 2018-07-03 Paypal, Inc. Scalable continuous integration and delivery systems and methods
CN105389212B (zh) * 2015-10-21 2019-05-24 浪潮(北京)电子信息产业有限公司 一种作业分配方法和装置
US10725816B2 (en) 2017-01-13 2020-07-28 International Business Machines Corporation Optimizing pipeline execution scheduling based on commit activity trends, priority information, and attributes
US10860464B2 (en) 2017-03-10 2020-12-08 Micro Focus Llc Test selection for application commit
US10754641B2 (en) * 2017-05-30 2020-08-25 Red Hat, Inc. Optimizing continuous integration (CI) using code review quality
US10515005B1 (en) 2018-12-20 2019-12-24 Atlassian Pty Ltd Systems and methods for testing source code
KR102654689B1 (ko) * 2019-05-24 2024-04-03 삼성에스디에스 주식회사 트랜잭션 실패 확률을 고려한 트랜잭션 가속 처리 장치 및 그 방법
US10922214B1 (en) * 2019-08-23 2021-02-16 Jpmorgan Chase Bank, N.A. System and method for implementing a test optimization module
US11301363B2 (en) * 2020-08-27 2022-04-12 Red Hat, Inc. Dynamic correlation of log messages with continuous integration test jobs

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040154001A1 (en) * 2003-02-05 2004-08-05 Haghighat Mohammad R. Profile-guided regression testing
US7568183B1 (en) * 2005-01-21 2009-07-28 Microsoft Corporation System and method for automation testing and validation
CN101809538A (zh) * 2007-09-28 2010-08-18 国际商业机器公司 用于调度由事件驱动的作业的执行的方法、系统和计算机程序
CN102236578A (zh) * 2010-05-07 2011-11-09 微软公司 分布式工作流执行
US20120204180A1 (en) * 2009-10-12 2012-08-09 International Business Machines Corporation Managing job execution

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0436831A (ja) 1990-05-31 1992-02-06 Toshiba Corp プログラム開発支援システム
JPH086777A (ja) 1994-06-23 1996-01-12 Hitachi Ltd 情報制御システムの開発システムおよび開発方法
JP2000112786A (ja) * 1998-10-05 2000-04-21 Fujitsu Ltd 試験ルート選定方法及び装置
US7590973B1 (en) * 2000-06-30 2009-09-15 Microsoft Corporation Systems and methods for gathering, organizing and executing test cases
US7203928B2 (en) * 2002-12-31 2007-04-10 Sun Microsystems, Inc. Method and system for generating and maintaining uniform test results
US7596778B2 (en) 2003-07-03 2009-09-29 Parasoft Corporation Method and system for automatic error prevention for computer software
US20050204340A1 (en) * 2004-03-10 2005-09-15 Ruminer Michael D. Attribute-based automated business rule identifier and methods of implementing same
US7454659B1 (en) * 2004-08-24 2008-11-18 The Mathworks, Inc. Distributed systems in test environments
KR100669604B1 (ko) 2004-12-17 2007-01-15 엘지전자 주식회사 형상 관리 시스템의 소프트웨어 통합 관리 시스템
US8037452B2 (en) 2005-04-15 2011-10-11 Microsoft Corporation Task aware source checkin and build
US7913229B2 (en) * 2006-09-18 2011-03-22 Sas Institute Inc. Computer-implemented system for generating automated tests from a web application
US8381219B2 (en) * 2007-02-02 2013-02-19 International Business Machines Corporation Monitoring performance on workload scheduling systems
US20090265693A1 (en) * 2008-04-18 2009-10-22 International Business Machines Corporation Method and system for test run prioritization for software code testing in automated test execution
US8214798B2 (en) 2008-07-16 2012-07-03 International Business Machines Corporation Automatic calculation of orthogonal defect classification (ODC) fields
US8418147B1 (en) * 2009-05-08 2013-04-09 Versionone, Inc. Methods and systems for reporting on build runs in software development
US8893086B2 (en) * 2009-09-11 2014-11-18 International Business Machines Corporation System and method for resource modeling and simulation in test planning
US8584100B2 (en) 2009-12-10 2013-11-12 Sap Ag Bridging code changes and testing
US8683451B1 (en) * 2010-04-30 2014-03-25 The United States Of America As Represented By The Secretary Of The Navy System and method for translating software code
US9710261B2 (en) 2010-05-06 2017-07-18 Microsoft Technology Licensing, Llc Techniques to enhance software production
US20110296386A1 (en) * 2010-05-28 2011-12-01 Salesforce.Com, Inc. Methods and Systems for Validating Changes Submitted to a Source Control System
US8601441B2 (en) * 2010-07-17 2013-12-03 Accenture Global Services Limited Method and system for evaluating the testing of a software system having a plurality of components
US9348725B1 (en) * 2010-08-22 2016-05-24 Panaya Ltd. Method and system for handling failed test scenarios
US8826239B2 (en) * 2010-10-06 2014-09-02 International Business Machines Corporation Asynchronous code testing in integrated development environment (IDE)
US8627322B2 (en) * 2010-10-29 2014-01-07 Google Inc. System and method of active risk management to reduce job de-scheduling probability in computer clusters
US8584079B2 (en) * 2010-12-16 2013-11-12 Sap Portals Israel Ltd Quality on submit process
US8983960B1 (en) * 2011-03-28 2015-03-17 Google Inc. Opportunistic job processing
KR20130008951A (ko) 2011-07-13 2013-01-23 종 진 임 소프트웨어 분산 개발 방법
US9396094B2 (en) 2011-07-21 2016-07-19 International Business Machines Corporation Software test automation systems and methods
US20130111267A1 (en) * 2011-11-01 2013-05-02 International Business Machines Corporation Optimizing regression testing based on code coverage analysis
US9317408B2 (en) * 2011-12-15 2016-04-19 The Mathworks, Inc. System and method for systematic error injection in generated code
US8656343B2 (en) * 2012-02-09 2014-02-18 Sonatype, Inc. System and method of providing real-time updates related to in-use artifacts in a software development environment
US20140157238A1 (en) * 2012-11-30 2014-06-05 Microsoft Corporation Systems and methods of assessing software quality for hardware devices
US20140282421A1 (en) * 2013-03-15 2014-09-18 Microsoft Corporation Distributed software validation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040154001A1 (en) * 2003-02-05 2004-08-05 Haghighat Mohammad R. Profile-guided regression testing
US7568183B1 (en) * 2005-01-21 2009-07-28 Microsoft Corporation System and method for automation testing and validation
CN101809538A (zh) * 2007-09-28 2010-08-18 国际商业机器公司 用于调度由事件驱动的作业的执行的方法、系统和计算机程序
US20120204180A1 (en) * 2009-10-12 2012-08-09 International Business Machines Corporation Managing job execution
CN102236578A (zh) * 2010-05-07 2011-11-09 微软公司 分布式工作流执行

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI734384B (zh) * 2020-02-18 2021-07-21 商合行股份有限公司 驗證作業系統及其資料結構產品

Also Published As

Publication number Publication date
CN105190536B (zh) 2019-05-31
EP2962186A4 (en) 2016-10-12
EP2962186A1 (en) 2016-01-06
US20150370554A1 (en) 2015-12-24
US9870221B2 (en) 2018-01-16
WO2014133512A1 (en) 2014-09-04

Similar Documents

Publication Publication Date Title
CN105190536A (zh) 将不同大小的代码更改作业集合提供至验证器
CN109791483B (zh) 用于计算设备的共享软件库
US10108450B2 (en) Mechanism for SSDs to efficiently manage background activity with notify
US20160098268A1 (en) Dynamic software updates
US10699798B2 (en) Testing storage device power circuitry
CN102681865A (zh) 分布式系统中的协调升级
CN1147650A (zh) 多处理系统
CN103543987A (zh) 用于高效并行运行的反馈驱动调节
US20240045793A1 (en) Method and system for scalable performance testing in cloud computing environments
CN113157710B (zh) 区块链数据并行写入方法、装置、计算机设备及存储介质
EP2929457A1 (en) System for transform generation
Simsa et al. Scalable dynamic partial order reduction
CN110737509B (zh) 热迁移处理方法及装置、存储介质和电子设备
CN102812437A (zh) 高和低值应用状态
US8024163B2 (en) Method and apparatus for executing multiple simulations on a supercomputer
US20230305734A1 (en) Platform for non-volatile memory storage devices simulation
US11650855B2 (en) Cloud computing-based simulation apparatus and method for operating the same
CN115437675A (zh) 一种应用程序在线升级方法、装置、设备及介质
CN115840691A (zh) 远程修复崩溃进程
US8296329B1 (en) Controller with heuristic bundle optimizer for data center migration or other type of transition
CN103324509A (zh) 在高性能集群系统中安装生物信息学类应用程序的方法
CN108243204B (zh) 进程运行状态的展示方法和展示装置
CN101923509B (zh) 在层级式并行环境中执行分布式运行时诊断的方法和系统
CN113052687B (zh) 一种交易路由分发方法和相关装置
CN103488533A (zh) 一种程序执行方法、设备及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161230

Address after: Texas, USA

Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT L.P.

Address before: Texas, USA

Applicant before: HEWLETT-PACKARD DEVELOPMENT Co.,L.P.

TA01 Transfer of patent application right

Effective date of registration: 20180611

Address after: California, USA

Applicant after: Antiy Software Co.,Ltd.

Address before: Texas, USA

Applicant before: HEWLETT PACKARD ENTERPRISE DEVELOPMENT L.P.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Utah, USA

Patentee after: Weifosi Co.,Ltd.

Address before: California, USA

Patentee before: Antiy Software Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20190531