CN110622141A - 开源软件测试 - Google Patents

开源软件测试 Download PDF

Info

Publication number
CN110622141A
CN110622141A CN201880031678.2A CN201880031678A CN110622141A CN 110622141 A CN110622141 A CN 110622141A CN 201880031678 A CN201880031678 A CN 201880031678A CN 110622141 A CN110622141 A CN 110622141A
Authority
CN
China
Prior art keywords
submission
software code
check
system software
commit
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
CN201880031678.2A
Other languages
English (en)
Other versions
CN110622141B (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 CN110622141A publication Critical patent/CN110622141A/zh
Application granted granted Critical
Publication of CN110622141B publication Critical patent/CN110622141B/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • 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
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

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)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

公开了用于测试开源软件的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。在一个方面,一种方法包括动作:从用户设备并且通过配置成对系统软件代码更新执行提交前检查的提交前检查服务器系统,接收系统软件代码更新和对系统软件代码更新执行提交前检查的请求。动作进一步包括:从配置为存储系统软件代码的系统软件代码服务器系统,请求提交前检查代码。动作进一步包括:从系统软件代码服务器系统,接收提交前检查代码模块。动作进一步包括:针对系统软件代码更新执行提交前检查代码模块。动作进一步包括:提供指示针对软件代码更新执行提交前检查代码模块的结果的报告。

Description

开源软件测试
技术领域
本说明书涉及软件测试。
背景技术
开源软件是其源代码可供公众出于各种目的而研究、更改和发布的计算机软件。开源软件可以以协作的公共方式开发。
发明内容
开源软件开发涉及许多不同的软件开发者协作,该软件开发者的每个人可以提交对软件包不同部分的更改。即使软件开发者可能未隶属或受雇于同一实体,但在一些情况下,一个实体可能负责维护软件并且合并由不同软件开发者提供的更新。为了提高软件的可靠性,维护实体可以采用提交前定期检查。在将任何更新与系统软件代码合并之前,软件代码库或系统软件代码服务器可以要求开发者将他们的软件提交给这些检查系统。
在一些实施方式中,处理提交前检查的系统也可以存储提交前检查代码。提交前检查系统可以是维护实体的专属系统,并且可以仅允许被授权的开发者更新提交前检查代码。这些开发者可能不熟悉经过提交前测试的系统软件代码和系统软件代码更新。类似地,提供系统软件代码更新的开发者可能不熟悉提交前检查系统的内部工作,这对于提供系统软件代码更新的开发者可能表现为黑盒。如果提供系统软件代码更新的开发者想要实施新的提交前检查,则该开发者就必须向其中一位被授权的开发者提交请求来创建新的提交前检查。
为了提高提交前检查系统的质量,维护实体可以重新配置系统,使得提交前检查代码被存储在存储系统软件代码的同一系统中。这样做可以使得提交前检查代码开源,并且提供系统软件代码更新的同一开发者可以更新提交前检查代码。
为了执行提交前检查,提交前检查系统将从存储系统软件代码的系统中提取必要的提交前检查代码。提交前检查代码可以被模块化,使得提交前检查系统可能仅需提取提交前检查代码模块来进行当前的提交前检查。提交前检查系统可以针对系统软件代码更新独立地执行提交前检查代码。然后,提交前检查系统可以将提交前检查的结果报告给开发者。如果系统软件代码更新通过了提交前检查,则开发者可以将系统软件代码更新与系统软件代码合并。如果系统软件代码更新未通过提交前检查,则开发者可以修改系统软件代码更新并且将经修改的系统软件更新重新提交给提交前检查系统。
根据本申请中描述的主题的创新性方面,一种测试开源软件的方法包括:从用户设备并且通过配置为对系统软件代码更新执行提交前检查的提交前检查服务器系统,接收系统软件代码更新和对系统软件代码更新执行提交前检查的请求;响应于接收到对系统软件代码更新执行提交前检查的请求,通过提交前检查服务器系统并且从配置为存储系统软件代码的系统软件代码服务器系统,请求提交前检查代码;基于请求提交前检查代码,通过提交前检查服务器系统并且从系统软件代码服务器系统,接收提交前检查代码模块;通过提交前检查服务器系统,针对系统软件代码更新执行提交前检查代码模块;以及基于通过针对系统软件代码更新执行提交前检查代码模块而获得的分析,提供指示针对软件代码更新执行提交前检查代码模块的结果的报告以用于输出。
这些及其他实施方式能够各自可选地包括以下特征中的一个或多个。通过提交前检查服务器系统,针对系统软件代码更新执行提交前检查代码模块的动作包括:针对系统软件代码更新独立地执行提交前检查代码模块。提供指示针对软件代码更新执行提交前检查代码模块的结果的报告的动作以用于输出包括:提供指示通过、未通过或警告的结果指示符以及消息字符串以用于输出。提交前检查代码模块包括:提交前检查脚本;提交前检查二进制;配置为在沙盒中执行的提交前检查代码;或者配置为实现一个或多个API的提交前检查库。系统软件代码服务器被配置为从用户设备接收提交前检查代码模块和提交前检查代码更新。由系统软件代码服务器存储的系统软件代码为开源软件代码。
通过提交前检查服务器系统,针对系统软件代码更新执行提交前检查代码模块的动作包括:生成工作流模型,工作流模型包括由边连接的多个顶点,其中,每个顶点表示提交前检查,并且每个边表示所连接的提交前检查之间的依存性;执行特定提交前检查;确定特定提交前检查的通过结果是概率性的;以及基于确定特定提交前检查的通过结果是概率性的,执行工作流模型中与特定提交前检查相连接的后续提交前检查。通过提交前检查服务器系统,针对系统软件代码更新执行提交前检查代码模块的动作包括:基于确定特定提交前检查的通过结果是概率性的,提供特定提交前检查的通过结果以用于输出,而不等待后续提交前检查的结果。通过提交前检查服务器系统,针对系统软件代码更新执行提交前检查代码模块的动作包括:基于确定特定提交前检查的通过结果是概率性的,在包括来自具有概率性结果的其他提交前检查的其他通过结果的用户界面的一部分中提供特定提交前检查的通过结果以用于输出。系统软件代码包括:用于操作系统的软件代码;用于应用的软件代码;或者用于计算机编程工具的软件代码。
该方面的其他实施方式包括每个均配置为执行方法的操作的系统、装置和记录在计算机存储设备上的相应的计算机程序。
本说明书中描述的主题可以具有以下优点中的一个或多个。系统可以通过创建开源提交前检查代码来提高开源软件的安全性。随着更多的开发者能够对提交前检查代码做出贡献,提交前检查代码可以改善并且能够识别系统软件代码的更新中的潜在漏洞。系统或许能够通过模块化提交前检查代码来节省网络带宽。系统可以仅需传输必要的提交前检查代码模块来请求提交前检查。
在附图以及下面的描述中阐明在本说明书中描述主题的一个或多个实施方式的细节。参阅说明书、附图和权利要求,主题的其他特征、方面和优势将显而易见。
附图说明
图1图示出用于测试开源软件的示例系统。
图2图示出用于显示开放软件测试结果的示例界面。
图3图示出用于测试开源软件的示例过程。
图4图示出计算设备和移动计算设备的示例。
在附图中,相似的附图标记始终代表相应的部分。
具体实施方式
图1图示出用于测试开源软件的示例系统100。简而言之,并且如下详述,用户102和相应的用户设备103更新了在系统软件代码服务器104中存储的系统软件代码106的一部分。在将经更新的系统软件代码106提交给系统软件代码服务器104之前,用户102通过用户设备103将经更新的系统软件代码106提交给提交前检查服务器108,以供测试。提交前检查服务器108使用从系统软件代码服务器104所提取的提交前检查代码来执行提交前检查。通过访问从系统软件代码服务器104所提取的提交前检查代码,提交前检查服务器108能够对提交前检查代码利用开源软件的优势。
在将系统软件代码更新106提交给系统软件代码服务器104之前,应在系统软件代码更新106与系统软件代码110合并之前对系统软件代码更新106执行几项测试。通过在将系统软件代码更新106与系统软件代码110合并之前检查系统软件代码更新106,系统100能够分析系统软件代码100的功能性,例如通过确定系统软件代码更新106添加的新增功能是否工作,系统软件代码更新106是否破坏系统软件代码110的任何现有功能性,和/或是否存在对系统软件代码更新106的性能影响。换而言之,在将系统软件代码更新106提交给系统软件代码服务器104之前,系统100对系统软件代码更新106执行提交前检查。
在一些实施方式中,系统软件代码110是用于应用的软件代码。应用可以是用于由操作系统执行的本机应用、用于在浏览器中执行的web应用或者其他类型的应用。在一些实施方式中,系统软件代码110是用于操作系统的软件代码。在一些实施方式中,系统软件代码110是用于例如编译器的计算机编程工具的软件代码。
在将系统软件代码更新106与系统软件代码110合并之前提交系统软件代码更新106,节省识别系统软件代码更新106的问题时的时间和处理能力。在系统软件代码更新106与系统软件代码110合并而未将系统软件代码更新106提交给提交前检查服务器108的情况下,用户102或其他用户可以分析系统软件代码110以识别错误的位置。当多个系统软件代码更新与系统软件代码110合并时,这个问题可能更加复杂,因为可能难以将错误归因于特定的系统软件代码更新。
在图1所示的示例中,系统软件代码服务器104是系统软件代码110的库。系统软件代码服务器104可以是包括可以跨多个地理位置分布的一个或多个计算机的系统软件代码服务器系统。系统软件代码服务器104也存储提交前检查代码112。通过存储提交前检查代码112,系统100允许用户102和其他用户上传对提交前检查代码112的更新。在一些实施方式中,提交前检查服务器108存储提交前检查代码112。提交前检查服务器108可以是包括可以跨多个地理位置分布的一个或多个计算机的系统。因为提交前检查服务器108可以是不允许公众更改代码的专属系统,当提交前检查服务器108存储提交前检查代码时,只有被授权的用户才能更新提交前检查代码112。有限数目的更新提交前检查代码112的用户可能不积极参与更新系统软件代码110。类似地,更新系统软件代码110的用户可能不是更新提交前检查代码112的用户中的一个。通过将提交前检查代码112存储在系统软件代码服务器104上,许多用户可能能够贡献并微调提交前检查代码112。这些用户可以是已经熟悉系统软件代码110如何运行的相同用户。
在阶段A中,特别是借助用户设备103,用户102将提交前检查代码更新114提交给系统软件代码服务器104。如果提交前检查服务器108存储了提交前检查代码112,则用户102可以是可能未获授权向提交前检查服务器108提交提交前检查代码更新114的公众成员。提交前检查代码更新114可以是对现有提交前检查代码的更新或者可以是附加的提交前检查代码模块。例如,提交前检查代码112可以包括提交前检查代码模块118和提交前检查代码模块116。用户104可以提供提交前检查代码更新114,其可以是对提交前检查代码模块116的更新。
在阶段B中,系统软件代码服务器104存储提交前检查代码更新114。系统软件代码服务器104可以通过将提交前检查代码更新114与现有提交前检查代码模块合并来存储提交前检查代码更新114。例如,提交前检查代码更新114可以是对提交前检查代码模块116的一部分的更新。在此情况下,系统软件代码服务器104可以用提交前检查代码更新114覆写提交前检查代码模块116的相应部分。作为另一示例,提交前检查代码更新114可以是新的提交前代码模块。在此情况下,系统软件代码服务器104可以将提交前检查代码更新114作为新的提交前检查代码模块添加到提交前检查代码112。
系统软件代码服务器104可以模块化地存储提交前检查代码112。通过模块化地存储提交前检查代码112,系统软件代码服务器104可能仅需传输执行提交前检查所需的模块。通过限制在系统软件代码服务器104与提交前检查服务器108之间传输的提交前检查代码,系统100可以减少每次提交前检查所需的网络带宽。当提交前检查服务器108在短时间段内处理多个提交前检查(例如,每分钟一次提交前检查)时,网络带宽缩减可能十分显著。代替系统软件代码服务器104针对每个提交前检查将全部或几乎全部提交前检查代码112传输到提交前检查服务器108,系统软件代码服务器104可能仅需传输提交前检查服务器108执行当前提交前检查所需的提交前检查代码模块。
在阶段C中,用户102可以将系统软件代码更新106提交给提交前检查服务器108。在一些实施方式中,用户102可以将系统软件代码更新106提交给系统软件代码服务器104。系统软件代码服务器104可以确定提交前检查服务器108尚未检查系统软件代码更新106。在此情况下,软件代码服务器104可以自动将系统软件代码更新106提交给提交前检查服务器108。系统软件代码服务器104可以要求系统软件代码更新106包括指示提交前检查服务器108分析过系统软件代码更新106的数据。在一些实施方式中,数据可以是添加到系统软件代码更新106的签名或包括添加到系统软件代码更新106的签名。在一些实施方式中,数据可以是系统软件代码更新106的哈希或者包括(例如,除签名之外)系统软件代码更新106的哈希。系统软件代码服务器104可以将类似的哈希函数应用于系统软件代码更新106。如果系统软件代码服务器104生成与先前接收到的哈希相匹配的哈希,则系统软件代码服务器104可以确定提交前检查服务器108处理并批准了系统软件代码更新106。
在阶段D中,提交前检查服务器108将提交前检查模块请求120传输到系统软件代码服务器104。提交前检查模块请求120可以包括标识由系统软件代码更新106表示的更新的类型的数据。更新的类型可以包括识别系统软件代码更新106将更新的系统软件代码110的部分的数据。例如,如果系统软件代码更新106更新系统软件代码110的图形界面部分,则提交前代码请求器122可以请求提交前检查代码模块以检查图形界面代码。作为另一示例,如果系统软件代码更新106更新系统软件代码110的驱动程序,则提交前代码请求器122可以请求提交前检查代码模块以检查特定驱动程序。
在阶段E中,系统软件代码服务器104可以访问所请求的提交前检查代码模块。例如,系统软件代码服务器104可以确定对于系统软件代码更新106合适的提交前检查代码模块是提交前检查代码模块118。系统软件代码服务器104可以将提交前检查代码模块118传输到提交前检查服务器108。因为提交前检查服务器108不要求提交前检查代码模块116,系统软件代码服务器104可能不需要将提交前检查代码模块116传输到提交前检查服务器108。如上所述,通过不向提交前检查服务器108传输全部或几乎全部提交前检查代码112和/或模块化提交前检查代码112,系统100节省网络带宽。
在阶段F中,提交前检查服务器108的提交前检查器124针对系统软件代码更新106执行提交前检查代码模块118。特别地,提交前检查器124针对系统软件代码更新106独立地执行提交前检查代码模块118。提交前检查器124通过执行提交前检查代码模块118中包括的提交前检查来执行提交前检查代码模块118。提交前检查可以包括建立系统软件代码更新106。例如,提交前检查器124可以将系统软件代码更新106应用于系统软件代码110的相应部分并且生成二进制的结果代码。如果系统软件代码更新106未通过建立测试,则提交前检查器124可以产生建立错误。提交前检查可以包括对系统软件代码更新106的静态分析。例如,提交前检查器124可以应用linter来识别编程语言中的任何错误,诸如文体错误。提交前检查可以包括对系统软件代码更新106的动态分析。例如,提交前检查器124可以基于执行应用或不应用于系统软件代码110的系统软件代码更新106的执行结果而执行内存泄漏测试、使用性能剖析以及其他类似的测试。提交前检查可以包括对系统软件代码更新106的计测分析(instrumentation analysis)。例如,提交前检查器124可以执行代码覆盖率测试和缓存溢出测试。
提交前检查模块118和其他提交前检查模块可以以各种形式来实现。例如,提交前检查模块118可以是提交前检查器124解译的脚本。提交前检查模块118可以是配置为由提交前检查器124在沙盒中运行的代码。提交前检查模块124可以是提交前检查器124执行的二进制,例如native或java。提交前检查模块124可以是提交前检查器124执行以实现一组API的库。提交前检查代码112的不同提交前模块可以具有不同的格式。例如,提交前检查模块118可以是脚本,而提交前检查模块116可以是库。
在阶段G中,提交前结果报告器126生成提交前检查结果128以提供给用户102。提交前检查结果128可以包括系统软件代码更新106是通过还是未通过提交前检查的指示。提交前检查结果128可以包括可以取代通过或未通过的警告。提交前检查结果128也可以包括附加文本,诸如当系统软件代码更新106未通过时或者当提交前检查结果128可以包括警告时。
在提交前检查结果128指示系统软件代码更新106通过了提交前检查的情况下,如阶段H所示,用户102可以将经检查的系统软件代码更新130上传到系统软件代码服务器104。在这种情况下,经检查的系统软件代码更新130可以与系统软件代码更新106相同。经检查的系统软件代码更新130可以包括用于系统软件代码服务器的签名或其他标识符,以确定提交前检查服务器108检查过经检查的系统软件代码更新130。系统软件代码服务器104可以将经检查的系统软件代码更新130与系统软件代码110合并。在提交前检查结果128指示软件代码更新106未通过提交前检查或者指示警告的情况下,用户可以更新系统软件代码更新106并且将系统软件代码更新106重新提交给提交前检查服务器108。
图2图示出用于显示开放软件测试结果的示例界面224a和224b。简而言之,并且如下详述,示例界面224a和224b表示提交前检查服务器向提交了系统软件代码更新的用户报告并向该用户显示结果的不同报告样式。界面224a和224b将被描述为由包括一个或多个计算机的计算机系统输出,例如,如图1所示的系统100或提交前检查服务器108。
系统生成了包括多个顶点和边的工作流模型200a。每个顶点表示一个提交前检查,并且每个边表示两个所连接的顶点之间的依存性。在一些实施方式中,依存性可以是继续或停止。如果提交前检查产生通过结果,则系统可以遍历继续边。如果提交前检查产生未通过结果,则系统可以遍历停止边。在一些实施方式中,如果提交前检查产生概率性结果,则系统遍历继续边。概率性结果可能是依赖于外部信号的结果或者系统在提交前检查期间可能无法预测的数据。换而言之,系统无法基于单独分析代码来确定代码当被执行和/或与系统软件代码合并时是否会产生错误。在一些实施方式中,在系统遍历继续边的情况下,系统可以不输出提交前检查的结果。因在系统遍历连续边的情况下不输出提交前检查的结果,系统可以延迟对那些提交前检查进行报告,直到系统完成工作流模型。
工作流模型200a和界面224a图示出用于处理输出概率性结果的提交前检查的示例技术。如工作流模型200a和界面224a所示,系统执行了提交前检查202a。虽然工作流200a生成了提交前检查202a的通过结果,但界面224a可以等待以显示结果,直到工作流200a完成。因为提交前检查202a生成了通过结果,工作流200a可以遍历边216a。相应地,工作流200a可以不遍历边214a并且不执行提交前检查204a。
提交前检查206a的结果可以是概率性的。代替延迟对概率性结果进行报告,系统可以提早并在工作流200a完成之前在界面224a中显示概率性结果。工作流200a可以凭借提交前检查206a的概率性结果继续边218a。工作流200a可以不遍历边220a或者不执行提交前检查212a。
系统执行可以生成通过结果的提交前检查210a。因为工作流200a遵循作为连续边的边222a,直到工作流200a完成,系统可以延迟显示提交前检查210a的结果。在系统正在处理提交前检查208a的同时,界面224a可以指示提交前检查208a正在执行。
工作流模型200b和界面224b图示出用于处理输出概率性结果的提交前检查的另一种示例技术。提交前检查202b至212b的结果可以与提交前检查202a至212a的结果相同。此外,在本示例中,提交前检查208b可能仍在执行。在此情况下,随着系统确定提交前检查的结果,系统显示该结果。例如,代替系统等待以显示提交前检查202b和210b的结果,系统在界面224b中显示结果。系统也显示概率性的提交前检查206b的结果。
在一些实施方式中,界面224b可以被扩展为包括用于提交前检查结果的附加界面。这可以与界面224a相反,该界面224a可以在系统识别出概率性结果后立即显示具有概率性结果的提交前检查。在工作流200b和界面224b中,系统可以以任何次序确定提交前检查结果的结果,并且可以与界面224b合并,而不必添加附加结果。
图3图示出用于测试开源软件的示例过程300。一般而言,过程300通过修改操作系统的一部分以与未经修改就可能无法访问的操作系统的其他部分进行通信来验证操作。过程300将被描述为由包括一个或多个计算机的计算机系统执行,例如,如图1所示的系统100或提交前检查服务器108。
系统从用户接收系统软件代码更新和对系统软件代码更新执行提交前检查的请求(310)。在一些实施方式中,系统被配置为对系统软件代码更新执行提交前检查。在将系统软件代码更新提交给系统软件代码服务器之前,系统可以要求用户提交用于提交前检查的系统软件代码更新。在一些实施方式中,系统是为公众提供有限访问的专属系统。系统可能呈现为用户可以提供用于提交前检查的系统软件代码更新的黑盒。系统输出系统软件代码更新是通过提交前检查还是未通过提交前检查的指示或者输出警告。
响应于接收到对系统软件代码更新执行提交前检查的请求,系统从配置为存储系统软件代码的系统软件代码服务器请求提交前检查代码(320)。在一些实施方式中,系统软件代码服务器从用户接收提交前检查代码模块或提交前检查代码更新。系统软件代码可以是开源代码。提交前检查代码也可以是开源的。系统软件代码服务器可以从诸如也开发对系统软件代码的更新的用户的公众,接收对提交前检查代码的更新并且维护用于提交前检查的提交前检查代码。
系统基于请求提交前检查代码,从系统软件代码服务器接收提交前检查代码模块(330)。在一些实施方式中,提交前检查模块是系统解译的脚本。提交前检查模块可以是配置为在沙盒中运行的代码。提交前检查模块可以是系统能够执行的本机二进制或Java。提交前检查模块可以是提交前检查器124执行以实现一组API的库。系统可以被配置为执行任何类型的提交前检查代码模块。系统软件代码服务器可以被配置为存储不同类型的提交前检查代码模块。例如,系统软件代码服务器可以被配置为存储脚本、在沙盒中运行的代码、本机二进制和库。
系统针对系统软件代码更新执行提交前检查代码模块(340),例如,以确定系统软件代码更新是通过还是不通过一次或多次提交前检查。在一些实施方式中,系统独立地,例如独立于其他系统软件代码更新,针对系统软件代码更新执行提交前检查代码模块。例如,系统可以不将系统软件代码更新的提交前检查链接或关联到另一个系统软件代码更新的提交前检查。系统软件代码更新的提交前检查的结果可能不影响另一个系统软件代码更新的提交前检查。
在一些实施方式中,系统通过执行在提交前检查代码模块中包括的提交前检查来执行提交前检查代码模块。在一些实施方式中,提交前检查可以包括建立或编译系统软件代码更新。例如,系统可以将系统软件代码更新应用于系统软件代码的相应部分。系统可以生成由将系统软件代码更新合并到系统软件代码所得的二进制代码。如果系统软件代码更新未通过建立测试,则系统可以生成建立错误或编译错误。在一些实施方式中,提交前检查可以包括对系统软件代码更新的静态分析。例如,系统可以应用linter来识别任何编程语言错误或文体错误。在一些实施方式中,提交前检查可以包括对系统软件代码更新的动态分析。例如,系统可以基于执行可以合并或不合并到系统软件代码的相应部分的系统软件代码更新的执行结果,执行内存泄漏测试、使用性能剖析以及其他类似的测试。在一些实施方式中,提交前检查可以包括对系统软件代码更新的计测分析。例如,系统可以执行代码覆盖率测试和缓存溢出测试。系统可以对可以合并或不合并到系统软件代码的相应部分的系统软件代码更新执行这些测试中的任何测试。
系统基于针对系统软件代码更新执行提交前检查代码模块,提供指示针对软件代码更新执行提交前检查代码模块的结果的报告以用于输出(350)。在一些实施方式中,该报告包括系统软件代码更新是通过还是未通过提交前检查的指示。在一些实施方式中,系统软件代码更新可以既非通过也非不通过提交前检查。在此情况下,系统可以输出包括警告的报告。在一些实施方式中,提交前检查可以包括针对系统作为提交前检查的一部分而运行的每次不同检查的多个通过/未通过/警告指示。在一些实施方式中,结果可以包括描述提交前检查的结果的文本。
在一些实施方式中,通过生成包括通过边连接的多个顶点的工作流模型,系统可以针对系统软件代码更新执行提交前检查代码模块。每个顶点可以表示提交前检查,并且每个边可以表示所连接的提交前检查之间的依存性。系统可以执行特定提交前检查。系统可以确定特定提交前检查的结果是概率性的。系统可以基于确定特定提交前检查的通过结果是概率性的,执行工作流模型中与特定提交前检查相连接的后续提交前检查。在一些实施方式中,系统基于确定特定提交前检查的结果是概率性的,提供特定提交前检查的结果以用于输出,而不等待后续提交前检查的结果。在一些实施方式中,系统基于确定特定提交前检查的结果是概率性的,在包括来自具有概率性结果的其他提交前检查的其他结果的用户界面的一部分中提供特定提交前检查的结果以用于输出。
图4示出能够被使用于实现本文所述技术的计算设备400和移动计算设备450的示例。计算设备400意图表示各种形式的数字计算机,诸如膝上型计算机、桌面型计算机、工作站、个人数字助理、服务器、刀片服务器、主机以及其他适当的计算机。移动计算设备450意图表示各种形式的移动设备,诸如个人数字助理、蜂窝电话、智能电话以及其他类似的计算设备。在此所示的组件、它们的连接和关系以及它们的功能意在仅为示例,而非旨在进行限制。
计算设备400包括处理器402、存储器404、存储设备406、连接至存储器404和多个高速扩展端口410的高速接口408以及连接至低速扩展端口414和存储设备406的低速接口412。处理器402、存储器404、存储设备406、高速接口408、高速扩展端口410和低速接口412中的每个都使用各种总线互连并且可以安装在公共主板上或以其他适当方式安装。处理器402能够处理用于在计算设备400内执行的指令,包括存储在存储器404中或者存储设备406上的指令,以对在诸如耦合至高速接口408的显示器416的外部输入/输出设备上的GUI显示图形信息。在其他实施方式中,可以合适地使用多个处理器和/或多个总线,以及多个存储器和存储器类型。此外,可以连接多个计算设备,每个设备提供所需操作的多个部分(例如,服务器组(serverbank)、刀片服务器组或者多处理器系统)。
存储器404存储计算设备400内的信息。在一些实施方式中,存储器404是一个或多个易失性存储器单元。在一些实施方式中,存储器404是一个或多个非易失性存储器单元。存储器404也可以是另一种形式的计算机可读介质,诸如磁盘或光盘。
存储设备406能够为计算设备400提供大容量存储。在一些实施方式中,存储设备406可以是计算机可读介质或包含计算机可读介质,诸如软盘设备、硬盘设备、光盘设备或者磁带设备、快闪存储器或者其他类似的固态存储器设备、或者设备的阵列,包括存储区域网络或者其他配置中的设备。指令能够被存储在信息载体中。指令当由一个或多个处理设备(例如,处理器402)执行时执行一种或多种方法,诸如上述那些方法。指令也能够被诸如计算机或机器可读介质的一个或多个存储设备(例如,存储器404、存储设备406或处理器402上的存储器)存储。
高速接口408管理用于计算设备400的带宽密集(bandwidth-intensive)操作,而低速接口412管理较低的带宽密集操作。这样的功能分配仅为示例。在一些实施方式中,高速接口408耦合至存储器404、显示器416(例如,通过图形处理器或者加速器)以及可以接受各种扩展卡的高速扩展端口410。在该实施方式中,低速接口412耦合至存储设备406和低速扩展端口414。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口414可以耦合至一个或多个输入/输出设备,诸如键盘、定点设备、扫描仪或者诸如通过例如网络适配器的交换机或者路由器的网络设备。
如图所示,计算设备400可以通过多种不同的形式来实现。例如,它可以被实现为标准服务器420或者多倍这样的服务器组。此外,它可以被实现在诸如膝上型计算机422的个人计算机中。它还可以被实现为架式(rack)服务器系统424的一部分。替选地,来自计算设备400中的组件可以与诸如移动计算设备450的移动设备中的其他组件组合。这样的设备中的每个可以包含计算设备400和移动计算设备450中的一个或多个,并且整个系统可以由彼此通信的多个计算设备组成。
移动计算设备450包括处理器452、存储器464、诸如显示器454的输入/输出设备、通信接口466以及收发器468,以及其他组件等。移动计算设备450还可以设置有用于提供附加存储的存储设备,诸如微驱动器或者其他设备。处理器452、存储器464、显示器454、通信接口466和收发器468中的每个使用各种总线互联,并且组件中的几个可以被安装在公共母板上或者合适地以其他方式安装。
处理器452能够执行移动计算设备450内的指令,包括存储在存储器464中的指令。处理器452可以被实现为包括分立的多个模拟和数字处理器的芯片的芯片组。例如,处理器452可以提供移动计算设备450的其他组件的协作,诸如用户界面的控制、移动计算设备450运行的应用以及移动计算设备450的无线通信。
处理器452可以通过耦合至显示器454的控制接口458以及显示器接口456与用户通信。例如,显示器454可以是TFT(薄膜晶体管液晶显示器)显示器或OLED(有机发光二极管)显示器或者其他适当的显示技术。显示器接口456可以包括用于驱动显示器454以将图形信息和其他信息呈现给用户的适当电路。控制接口458可以从用户接收命令并且将它们进行变换以便提交给处理器452。此外,外部接口462可以提供与处理器452的通信,以便启用移动计算设备450与其他设备的近区通信。例如,外部接口462可以在一些实施方式中提供有线通信或者在其他实施方式中提供无线通信,并且也可以使用多个接口。
存储器464存储移动计算设备450内的信息。存储器464能够被实现为一种或多种计算机可读介质或媒介、一个或多个易失性存储单元或者一个或多个非易失性存储单元中的一个或多个。也可以提供扩展存储器474,并且通过扩展接口472将其连接至移动计算设备450,例如,该扩展接口472可以包括SIMM(单列直插存储器模块)卡接口。扩展存储器474可以为移动计算设备450提供额外的存储空间,或者也可以存储用于移动计算设备450的应用或其他信息。具体地,扩展存储器474可以包括用于实行或者补充上述过程的指令,并且也可以包括安全信息。因此,例如,扩展存储器474可以被提供为用于移动计算设备450的安全模块,并且可以用允许安全使用移动计算设备450的指令来进行编程。此外,可以经由SIMM卡提供安全应用以及附加信息,诸如,以不可破解(non-hackable)的方式将识别信息置于SIMM卡上。
例如,存储器可以包括快闪存储器和/或NVRAM存储器(非易失性随机存取存储器),如下文所讨论。在一些实施方式中,指令被存储在信息载体中。指令在由一个或多个处理设备(例如,处理器452)执行时执行一种或多种方法,诸如上述那些方法。指令也能够被诸如一个或多个计算机或机器可读介质的一个或多个存储设备(例如,存储器464、扩展存储器474或处理器452上的存储器)存储。在一些实施方式中,例如能够通过收发器468或外部接口462以传播的信号接收指令。
移动计算设备450可以通过通信接口466进行无线通信,该通信接口必要时可以包括数字信号处理电路。通信接口466可以提供各种模式或协议下的通信,诸如GSM语音呼叫(全球移动通信系统)、SMS(短消息服务)、EMS(增强型消息服务)或MMS消息(多媒体消息服务)、CDMA(码分多址)、TDMA(时分多址)、PDC(个人数字蜂窝)、WCDMA(宽带码分多址)、CDMA2000或GPRS(通用分组无线电业务)等。例如,这样的通信可以通过收发器468使用射频来发生。此外,可以发生近程通信,诸如使用蓝牙、WiFi或者其他这样的收发器。此外,GPS(全球定位系统)接收器模块470可以将附加的导航相关的无线数据和位置相关的无线数据提供给移动计算设备450,其可以合适地供移动计算设备450上运行的应用使用。
移动计算设备450还可以使用音频编解码器460来进行可听通信,该音频编解码器可以从用户接收口语信息并且将其变换为可用的数字信息。音频编解码器460同样可以为用户生成可听声音,诸如通过扬声器,例如,在移动计算设备450的手持设备中。这样的声音可以包括来自语音电话呼叫的声音,可以包括录制的声音(例如,语音消息、音乐文件等),并且也可以包括通过在移动计算设备450上运行的应用所生成的声音。
如图所示,移动计算设备450可以通过数种不同的形式来实现。例如,它可以被实现为蜂窝电话480。它也可以被实现为智能电话482、个人数字助理或者其他类似移动设备的一部分。
本文所述的系统和技术的各种实施方式可以在数字电子线路、集成电路、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中来实现。这些各种实施方式可以包括可编程系统上的可执行和/或可解释的一个或多个计算机程序中的实施方式,所述可编程系统包括耦合以从存储系统接收数据和指令并且向存储系统发送数据和指令的、可以是专用或通用的至少一个可编程处理器,至少一个输入设备以及至少一个输出设备。
这些计算机程序(也被称作程序、软件、软件应用或者代码)包括用于可编程处理器的机器指令,并且能够以高级过程编程语言和/或面向对象的编程语言,和/或汇编/机器语言来实现。如本文中所使用,术语“机器可读介质”以及“计算机可读介质”是指用于将机器指令和/或数据提供给可编程处理器的任意计算机程序产品、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑设备(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”是指用于将机器指令和/或数据提供给可编程处理器的任意信号。
为提供与用户的交互,本文所述的系统和技术能够在计算机上来实现,该计算机具有用于将信息显示给用户的显示设备(例如CRT(阴极射线管)或者LCD(液晶显示器)显示屏)以及用户能够借以向计算机提供输入的键盘和定点设备(例如鼠标或跟踪球)。其他种类的设备也能够用于提供与用户的交互;例如,提供给用户的反馈能够是任何类型的感觉反馈(例如,视觉反馈、听觉反馈或者触觉反馈);并且来自用户的输入能够以任何形式来接收,包括声音、语音或者触觉输入。
本文所述的系统和技术能够在包括后端组件(例如作为数据服务器)、或包括中间件组件(例如应用服务器)、或包括前端组件(例如具有用户能够借以与本文所述的系统和技术的实施方式交互的图形用户界面或者web浏览器的客户端计算机)或者这样的后端、中间件或前端组件的任意组合的计算系统中来实现。系统的组件能够通过数字数据通信的任何形式或者介质来互联(例如,通信网络)。通信网络的示例包括局域网(LAN)、广域网(WAN)以及因特网。
计算系统能够包括客户端以及服务器。客户端与服务器一般彼此远离,并且通常通过通信网络来进行交互。客户端与服务器的关系借助在相应计算上运行并且彼此具有客户端-服务器关系的计算机程序来产生。
虽然上文已详细描述了几种实施方式,但也可能有其他修改。例如,虽然客户端应用被描述为访问代理,但在其他实施方式中,代理可以被由一个或多个处理器实现的其他应用所采用,诸如在一个或多个服务器上执行的应用。此外,附图中描绘的逻辑流程不要求所示的特定次序或者顺序来获得期望的结果。此外,可以从所描述的流程中提供其他动作,或者可以消除动作,并且可以向所描述的系统添加其他组件或从所描述的系统中删除其他组件。相应地,其他实施方式落入所附权利要求的范围内。

Claims (30)

1.一种计算机实现的方法,包括:
从用户设备并且通过被配置为对系统软件代码更新执行提交前检查的提交前检查服务器系统接收系统软件代码更新和对所述系统软件代码更新执行提交前检查的请求;
响应于接收到对所述系统软件代码更新执行所述提交前检查的所述请求,通过所述提交前检查服务器系统并且从被配置为存储系统软件代码的系统软件代码服务器系统请求提交前检查代码;
基于请求所述提交前检查代码,通过所述提交前检查服务器系统并且从所述系统软件代码服务器系统接收提交前检查代码模块;
通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块;以及
基于通过针对所述系统软件代码更新执行所述提交前检查代码模块而获得的分析,提供指示针对所述软件代码更新执行所述提交前检查代码模块的结果的报告以用于输出。
2.根据权利要求1所述的方法,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
针对所述系统软件代码更新独立地执行所述提交前检查代码模块。
3.根据权利要求1或2所述的方法,其中,提供指示针对所述软件代码更新执行所述提交前检查代码模块的结果的报告以用于输出包括:
提供指示通过、未通过或警告的结果指示符以及消息字符串以用于输出。
4.根据前述权利要求中的任一项所述的方法,其中,所述提交前检查代码模块包括:
提交前检查脚本;
提交前检查二进制;
被配置为在沙盒中执行的提交前检查代码;或者
被配置为实现一个或多个API的提交前检查库。
5.根据前述权利要求中的任一项所述的方法,其中,所述系统软件代码服务器被配置为从所述用户设备接收提交前检查代码模块和提交前检查代码更新。
6.根据前述权利要求中的任一项所述的方法,其中,由所述系统软件代码服务器存储的所述系统软件代码为开源软件代码。
7.根据前述权利要求中的任一项所述的方法,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
生成工作流模型,所述工作流模型包括由边连接的多个顶点,其中,每个顶点表示提交前检查,并且每个边表示连接的提交前检查之间的依存性;
执行特定提交前检查;
确定所述特定提交前检查的通过结果是概率性的;以及
基于确定所述特定提交前检查的通过结果是概率性的,执行所述工作流模型中与所述特定提交前检查相连接的后续提交前检查。
8.根据权利要求7所述的方法,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
基于确定所述特定提交前检查的通过结果是概率性的,提供所述特定提交前检查的所述通过结果以用于输出,而不等待所述后续提交前检查的结果。
9.根据权利要求7或8所述的方法,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
基于确定所述特定提交前检查的通过结果是概率性的,在包括来自具有概率性结果的其他提交前检查的其他通过结果的用户界面的一部分中提供所述特定提交前检查的所述通过结果以用于输出。
10.根据前述权利要求中的任一项所述的方法,其中,所述系统软件代码包括:
用于操作系统的软件代码;
用于应用的软件代码;或者
用于计算机编程工具的软件代码。
11.一种系统,包括:
一个或多个计算机;以及
存储指令的一个或多个存储设备,所述指令可操作为在由所述一个或多个计算机执行时促使所述一个或多个计算机执行操作,所述操作包括:
从用户设备并且通过被配置为对系统软件代码更新执行提交前检查的提交前检查服务器系统接收系统软件代码更新和对所述系统软件代码更新执行提交前检查的请求;
响应于接收到对所述系统软件代码更新执行所述提交前检查的所述请求,通过所述提交前检查服务器系统并且从被配置为存储系统软件代码的系统软件代码服务器系统请求提交前检查代码;
基于请求所述提交前检查代码,通过所述提交前检查服务器系统并且从所述系统软件代码服务器系统接收提交前检查代码模块;
通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块;以及
基于通过针对所述系统软件代码更新执行所述提交前检查代码模块而获得的分析,提供指示针对所述软件代码更新执行所述提交前检查代码模块的结果的报告以用于输出。
12.根据权利要求11所述的系统,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
针对所述系统软件代码更新独立地执行所述提交前检查代码模块。
13.根据权利要求11或12所述的系统,其中,提供指示针对所述软件代码更新执行所述提交前检查代码模块的结果的报告以用于输出包括:
提供指示通过、失败或警告的结果指示符以及消息字符串以用于输出。
14.根据权利要求11至13中的任一项所述的系统,其中,所述提交前检查代码模块包括:
提交前检查脚本;
提交前检查二进制;
被配置为在沙盒中执行的提交前检查代码;或者
被配置为实现一个或多个API的提交前检查库。
15.根据权利要求11至14中的任一项所述的系统,其中,所述系统软件代码服务器被配置为从所述用户设备接收提交前检查代码模块和提交前检查代码更新。
16.根据权利要求11至15中的任一项所述的系统,其中,由所述系统软件代码服务器存储的所述系统软件代码为开源软件代码。
17.根据权利要求11至16中的任一项所述的系统,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
生成工作流模型,所述工作流模型包括由边连接的多个顶点,其中,每个顶点表示提交前检查,并且每个边表示连接的提交前检查之间的依存性;
执行特定提交前检查;
确定所述特定提交前检查的通过结果是概率性的;以及
基于确定所述特定提交前检查的通过结果是概率性的,执行所述工作流模型中与所述特定提交前检查相连接的后续提交前检查。
18.根据权利要求17所述的系统,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
基于确定所述特定提交前检查的通过结果是概率性的,提供所述特定提交前检查的所述通过结果以用于输出,而不等待所述后续提交前检查的结果。
19.根据权利要求17或18所述的系统,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
基于确定所述特定提交前检查的通过结果是概率性的,在包括来自具有概率性结果的其他提交前检查的其他通过结果的用户界面的一部分中提供所述特定提交前检查的所述通过结果以用于输出。
20.根据权利要求11至19中的任一项所述的系统,其中,所述系统软件代码包括:
用于操作系统的软件代码;
用于应用的软件代码;或者
用于计算机编程工具的软件代码。
21.一种存储软件的非暂时性计算机可读介质,所述软件包括可由一个或多个计算机执行的指令,所述指令在这样的执行时促使所述一个或多个计算机执行操作,所述操作包括:
从用户设备并且通过被配置为对系统软件代码更新执行提交前检查的提交前检查服务器系统接收系统软件代码更新和对所述系统软件代码更新执行提交前检查的请求;
响应于接收到对所述系统软件代码更新执行所述提交前检查的所述请求,通过所述提交前检查服务器系统并且从被配置为存储系统软件代码的系统软件代码服务器系统请求提交前检查代码;
基于请求所述提交前检查代码,通过所述提交前检查服务器系统并且从所述系统软件代码服务器系统接收提交前检查代码模块;
通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块;以及
基于通过针对所述系统软件代码更新执行所述提交前检查代码模块而获得的分析,提供指示针对所述软件代码更新执行所述提交前检查代码模块的结果的报告以用于输出。
22.根据权利要求21所述的介质,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
针对所述系统软件代码更新独立地执行所述提交前检查代码模块。
23.根据权利要求21或22所述的介质,其中,提供指示针对所述软件代码更新执行所述提交前检查代码模块的结果的报告以用于输出包括:
提供指示通过、未通过或警告的结果指示符以及消息字符串以用于输出。
24.根据权利要求21至23中的任一项所述的介质,其中,所述提交前检查代码模块包括:
提交前检查脚本;
提交前检查二进制;
被配置为在沙盒中执行的提交前检查代码;或者
被配置为实现一个或多个API的提交前检查库。
25.根据权利要求21至24中的任一项所述的介质,其中,所述系统软件代码服务器被配置为从所述用户设备接收提交前检查代码模块和提交前检查代码更新。
26.根据权利要求21至25中的任一项所述的系统,其中,由所述系统软件代码服务器存储的所述系统软件代码为开源软件代码。
27.根据权利要求21至26中的任一项所述的介质,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
生成工作流模型,所述工作流模型包括由边连接的多个顶点,其中,每个顶点表示提交前检查,并且每个边表示连接的提交前检查之间的依存性;
执行特定提交前检查;
确定所述特定提交前检查的通过结果是概率性的;以及
基于确定所述特定提交前检查的通过结果是概率性的,执行所述工作流模型中与所述特定提交前检查相连接的后续提交前检查。
28.根据权利要求27所述的介质,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
基于确定所述特定提交前检查的通过结果是概率性的,提供所述特定提交前检查的所述通过结果以用于输出,而不等待所述后续提交前检查的结果。
29.根据权利要求27或28所述的介质,其中,通过所述提交前检查服务器系统针对所述系统软件代码更新执行所述提交前检查代码模块包括:
基于确定所述特定提交前检查的通过结果是概率性的,在包括来自具有概率性结果的其他提交前检查的其他通过结果的用户界面的一部分中提供所述特定提交前检查的所述通过结果以用于输出。
30.根据权利要求21至29中的任一项所述的介质,其中,所述系统软件代码包括:
用于操作系统的软件代码;
用于应用的软件代码;或者
用于计算机编程工具的软件代码。
CN201880031678.2A 2017-12-15 2018-02-22 开源软件测试 Active CN110622141B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762599526P 2017-12-15 2017-12-15
US62/599,526 2017-12-15
PCT/US2018/019200 WO2019117982A1 (en) 2017-12-15 2018-02-22 Open source software testing

Publications (2)

Publication Number Publication Date
CN110622141A true CN110622141A (zh) 2019-12-27
CN110622141B CN110622141B (zh) 2023-06-20

Family

ID=61599609

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880031678.2A Active CN110622141B (zh) 2017-12-15 2018-02-22 开源软件测试

Country Status (4)

Country Link
US (2) US11216357B2 (zh)
EP (1) EP3724766A1 (zh)
CN (1) CN110622141B (zh)
WO (1) WO2019117982A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111240719A (zh) * 2020-01-23 2020-06-05 复旦大学 缺陷驱动的第三方库版本升级推荐方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102017220526A1 (de) * 2017-11-17 2019-05-23 Bayerische Motoren Werke Aktiengesellschaft Verfahren und Vorrichtung zur Aktualisierung von Software
EP3724766A1 (en) * 2017-12-15 2020-10-21 Google LLC Open source software testing
US20200117581A1 (en) * 2018-10-11 2020-04-16 Bank Of America Corporation Configuration file updating system for use with cloud solutions
CN111045939B (zh) * 2019-12-09 2021-03-30 山西大学 Weibull分布的故障检测开源软件可靠性建模方法
US11599659B2 (en) 2020-02-18 2023-03-07 BluBracket, Inc. Documenting and annotating code activities
CN113407225B (zh) * 2021-06-23 2022-09-23 未鲲(上海)科技服务有限公司 代码清单的生成方法、装置、计算机设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053138A1 (en) * 2010-12-16 2014-02-20 Ohad YASSIN Quality on submit process
US9317254B1 (en) * 2013-12-04 2016-04-19 Google Inc. Fault tolerance model, methods, and apparatuses and their validation techniques
CN107402765A (zh) * 2017-07-27 2017-11-28 郑州云海信息技术有限公司 一种代码审查发布方法及系统

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012066091A1 (en) * 2010-11-21 2012-05-24 Verifyter Ab Method and apparatus for automatic diagnosis of software failures
US9632770B2 (en) * 2015-04-28 2017-04-25 Google Inc. Infrastructure for hosting and publishing software packages
WO2017019684A1 (en) * 2015-07-27 2017-02-02 Datagrid Systems, Inc. Techniques for evaluating server system reliability, vulnerability and component compatibility using crowdsourced server and vulnerability data
US10733084B2 (en) * 2017-12-08 2020-08-04 Google Llc Early test breakage detection using presubmit runs
EP3724766A1 (en) * 2017-12-15 2020-10-21 Google LLC Open source software testing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140053138A1 (en) * 2010-12-16 2014-02-20 Ohad YASSIN Quality on submit process
US9317254B1 (en) * 2013-12-04 2016-04-19 Google Inc. Fault tolerance model, methods, and apparatuses and their validation techniques
CN107402765A (zh) * 2017-07-27 2017-11-28 郑州云海信息技术有限公司 一种代码审查发布方法及系统

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111240719A (zh) * 2020-01-23 2020-06-05 复旦大学 缺陷驱动的第三方库版本升级推荐方法

Also Published As

Publication number Publication date
US11630763B2 (en) 2023-04-18
CN110622141B (zh) 2023-06-20
WO2019117982A1 (en) 2019-06-20
US11216357B2 (en) 2022-01-04
US20200104248A1 (en) 2020-04-02
EP3724766A1 (en) 2020-10-21
US20220091972A1 (en) 2022-03-24

Similar Documents

Publication Publication Date Title
CN110622141B (zh) 开源软件测试
CN110018955B (zh) 通过转换手动测试用例来生成自动化测试脚本
US9910941B2 (en) Test case generation
US10578673B2 (en) Test prioritization and dynamic test case sequencing
US9009183B2 (en) Transformation of a system change set from machine-consumable form to a form that is readily consumable by a human
US20090164848A1 (en) Intelligent Test Framework
CN111221521A (zh) 日志代码的生成方法、装置、计算机系统和可读存储介质
US10915435B2 (en) Deep learning based problem advisor
US9336128B2 (en) Method and system for code analysis using symbolic types
US9733930B2 (en) Logical level difference detection between software revisions
US20140075420A1 (en) Generating hardware profiles by a software development environment
US20210318945A1 (en) System and Method for Testing Applications
US12019538B2 (en) Software application build testing
EP3236351B1 (en) Identifying low-quality code
CN112799940A (zh) 回归测试方法、装置、计算机系统和计算机可读存储介质
US20150339219A1 (en) Resilient mock object creation for unit testing
US20230297496A1 (en) System and method for serverless application testing
US20180157478A1 (en) Deployment of immutable web application builds
US20180032424A1 (en) System, method, and apparatus for crowd-sourced gathering of application execution events for automatic application testing and replay
CN114253852A (zh) 自动化测试方法、装置、设备、介质
US11360764B2 (en) Adversarial language analysis for code scanning
CN114817036A (zh) 决策树测试方法、装置、电子设备和存储介质
CA3077987A1 (en) System and method for testing applications

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
GR01 Patent grant
GR01 Patent grant