CN113110988B - 利用定义的输入格式来测试应用 - Google Patents

利用定义的输入格式来测试应用 Download PDF

Info

Publication number
CN113110988B
CN113110988B CN202110308048.9A CN202110308048A CN113110988B CN 113110988 B CN113110988 B CN 113110988B CN 202110308048 A CN202110308048 A CN 202110308048A CN 113110988 B CN113110988 B CN 113110988B
Authority
CN
China
Prior art keywords
text element
value
sequence
values
element values
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
CN202110308048.9A
Other languages
English (en)
Other versions
CN113110988A (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 CN113110988A publication Critical patent/CN113110988A/zh
Application granted granted Critical
Publication of CN113110988B publication Critical patent/CN113110988B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]
    • 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/3684Test management for test design, e.g. generating new test cases
    • 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
    • G06F11/3612Software analysis for verifying properties of programs by runtime 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/166Editing, e.g. inserting or deleting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

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)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Machine Translation (AREA)

Abstract

本申请涉及利用定义的输入格式来测试应用。提供一种系统和方法用于测试应用的性能。仅通过示例,方法可以包括:利用包含根据定义格式布置的文本元素的文档来训练神经网络,并且使用该神经网络来确定测试文档内的单独的文本元素的值的可预测性。当神经网络指示文本元素的值不太可能时,值可以被修改并且所修改的文档可以被用于测试根据定义格式处理文档的应用。

Description

利用定义的输入格式来测试应用
分案说明
本申请属于申请日为2017年9月27日的中国发明专利申请201710892789.X的分案申请。
技术领域
本申请涉及利用定义的输入格式来测试应用。
背景技术
模糊测试提供用于使用随机化输入来测试计算机程序的技术。例如,基于模糊的测试技术可以被用于生成并且修改包括文件文档的测试输入,其符合诸如超文本标记语言(HTML)、便携式文档格式(PDF)或级联类型表(CSS)语言的定义的文本格式。当文档被提供到应用用于处理时,可以针对诸如崩溃或使数据暴露于非授权访问的不期望或不希望的行为监测应用。
某些基于生成的模糊技术可以基于手动地指定的语法随机地生成或改变测试文档。例如,定义格式的要求可以被写作计算机指令集,其生成或改变随机值的序列,使得序列保持与格式完全一致。复杂的格式可能使创建完全实现例如能够迭代所有要求或以不期望的方式迭代要求的语法的计算机指令困难并且麻烦。而且,对定义格式的要求的小改变可能要求对计算机指令的大量的改变。
某些基于变化的模糊技术可以对现有的测试文档做出小的改变、分析结果并且然后重复过程。通过示例,基于变化的模糊技术可以包含:选择符合定义的文本格式的文档;由随机地改变字符(例如,通过比特倒转或字节增加)、删除字符、添加字符或交换字符串来变化(例如,修改)所选择的文档;使用正在测试的应用来处理文档;基于其覆盖范围(例如,例程的标识和作为处理文档的结果在应用中执行的唯一代码行的数目),对文档进行评分以及;将得分用作遗传算法等中的适应度函数来确定文档是否应该进一步变化和评分。导致崩溃或允许潜在地恶意动作(例如,缓冲区溢出)的文档还可以被选择用于附加的变化和测试。虽然基于变化的模糊技术对于某些格式(诸如媒体格式)是有效的,但是当结合复杂的文本格式使用时,其可以比基于生成的模糊技术效果更差。
发明内容
本技术的一个方面涉及一种方法,其包括:接收文本元素的值的序列;利用一个或多个计算设备确定序列的文本元素值的得分,其中,得分与特定文本元素值等于一个或多个给定值的概率有关,并且其中,所述概率基于与定义格式一致的文本元素值的序列,利用一个或多个计算设备将得分与阈值相比较;当得分小于阈值时,利用一个或多个计算设备修改文本元素的值以形成文本元素值的经修改的序列;利用一个或多个计算设备利用指令集处理文本元素值的所述经修改的序列;当指令集处理文本元素值的所述经修改的序列时,利用一个或多个计算设备测试指令集的性能特性。
本技术的另一方面涉及一种系统,其包括一个或多个计算设备和存储由一个或多个计算设备可执行的指令的存储器,其中,所述指令包括:接收具有值的文本元素的初始序列;确定初始序列的第一文本元素的值的第一得分,其中,确定相对于文本元素的特定序列中的特定文本元素的值的得分与该特定文本元素的值跟随与定义格式一致的文本元素值的相同或类似序列多么频繁有关;确定初始序列的第二文本元素的值的第二得分,其中,在初始序列中的第一文本元素与第二文本元素之间存在第三文本元素;将第一得分和第二得分与阈值相比较;当第一得分和第二得分大于阈值时,生成具有值的文本元素的第二序列,其中,第二序列中的第一文本元素的值等于初始序列中的第一文本元素的值,第二序列中的第二文本元素的值等于初始序列中的第二文本元素的值,第二序列中的第三文本元素的值与初始序列中的第三文本元素的值不同,并且第三文本元素在序列中的第一文本元素与第二文本元素之间;利用一个或多个计算设备利用应用处理文本元素的第二序列;并且当应用处理文本元素值的所修改的序列时,利用一个或多个计算设备测试应用的性能特性。
本系统的又一方面涉及一种系统,包括一个或多个计算设备和由一个或多个计算设备可执行的存储指令,其中,所述指令包括:接收文档,其包含文本字符的序列;确定文档的多个字符中的每个字符的得分,其中,基于字符的值、文档中的一个或多个先前的字符的值和利用符合定义格式的字符的序列来训练的机器学习部件来确定字符的得分;当字符的得分小于阈值时,将字符与有资格修改的字符集相关联;修改字符集中的字符中的至少一个;并且在修改字符集中的字符中的至少一个之后,随着应用处理文档,测量应用的性能。
附图说明
图1是根据本公开的各方面的系统的功能图。
图2是根据本公开的各方面的流程图。
图3是根据本公开的各方面的神经网络的训练的流程图。
图4是测试文档的示例。
图5是文本元素的可能性值的示例。
图6是测试文档的示例。
图7是根据本公开的各方面修改的测试文档的示例。
图8是应用的性能特性的示例。
图9是应用的性能特性的示例。
图10是根据本公开的各方面的流程图。
具体实施方式
概述
本技术涉及生成可以被用于测量计算设备的指令的性能的文本元素值的序列。通过示例并且如在图1和图2中所示,一个或多个计算设备110和120的系统100可以被用于标识与定义格式一致的文档(块210),利用文档训练递归神经网络(块220),使用网络标识测试文档中的文本元素的可预测性(块230),基于文本元素的可预测性修改文本文档(块240),利用测试文档测试应用(块250),并且取决于测试的结果,重复标识可预测性的过程,修改测试文档并且测试应用。
在该方面中并且如在图3中所示,系统可以标识与特定定义格式一致的文档并且使用那些文档来训练机器学习部件。例如,系统可以利用从web服务器310-12所检索的文档320的语料库330来训练神经网络340。
如在图4-6中所示,系统可以使用机器学习部件来标识测试文档内的文本元素的可预测性。例如,神经网络340可以返回得分值,其指示部分611内的字符(例如,字符串410)的可预测性相对较高,部分610中的第一字符的可预测性相对中等,并且部分630中的字符的可预测性相对较低。结果,系统可以将相对高的得分指派给部分610和630并且将相对低的得分指派给部分611。
系统可以基于由神经网络所返回的文本元素得分,修改所标识的部分。例如并且如在图7中所示,可以改变、删除或添加部分610和630中的字符中的一个或多个。
所修改的文档可以被提供给用于测试的计算机指令集。通过示例并且如在图8中所示,所修改的测试文档700可以被提供给用于测试的浏览器应用,并且系统可以测量浏览器的性能的各种特性——诸如浏览器的指令中的多少被执行或因此失败。系统可以基于性能确定测试得分,并且如在图9中所示,所修改的文档可以再次被分析、修改、测试和评分。如果测试得分增加,则文档可以连续地被分析、修改、测试并且评分直到其测试得分不增加为止。
示例系统
诸如上文所描述的系统可以包括一个或多个计算设备。例如,图1提供系统100的示例,其包括计算设备110和120。计算设备被配置成接受信息,基于该信息执行操作,并且作为响应采取动作或提供附加信息。计算设备可以是或包括能够接收表示被表达为数值的信息的一个或多个电气信号作为输入的处理器,根据指令基于输入确定数值,并且提供表示所确定的数值的一个或多个电气信号作为输出。设备110包括处理器111,其可以是可商购的中央处理单元(CPU)、专用集成电路(ASIC)或现场可编程门阵列。
由计算设备使用的指令包括由计算设备访问和执行的任何一个或多个指令集。通过示例,设备110存储表示指令113的值,处理器111能够访问那些值并且执行或者使得设备110或系统100的其他部件执行与那些指令相关联的操作。例如,设备110指令113可以包括能够由处理器111直接地执行的机器代码(例如,以目标代码存储的机器代码)。替选地或者附加地,指令113可以以在执行之前要求附加处理的格式——诸如按需解译的独立的源代码模块的脚本或集合——来存储。被表达为以一个格式的单个指令的操作可以与另一格式的多个指令相对应,例如,执行脚本中的单个命令可以要求多个机器代码指令的执行。如果计算设备具有操作系统,则指令可以包括在操作系统层中、上面或下面运行的指令。例如,本文所描述的操作中的一些操作可以包含由Google所提供的Chrome或Android操作系统、由Microsoft所提供的Windows操作系统或由Apple所提供的macOS、OS X或iOS操作系统所提供的指令的执行。
指令可以被存储在存储器中。例如,指令113被存储在存储器112中。存储器可以是能够将信息存储在能够由计算设备读取的非暂态存储介质上的任何部件,例如被提供在与处理器111相同衬底上的寄存器、诸如RAM(随机存取存储器)的易失性存储器、诸如闪速存储器的非易失性存储器——例如安全数字(SD)卡、硬盘驱动器、固态驱动器、光学存储装置或磁带备份。对设备110、处理器111和存储器112进行配置,使得处理器111可以读取、修改、删除和添加被存储在存储器112中的值。存储器可以被配置成提供比存储器112的示例更少的访问——例如存储器可以是只读的。
存储器可以存储由通过计算设备执行的操作使用或起因于通过计算设备执行的操作的信息。通过示例,存储器112存储数据114,其包括由处理器111根据指令113所检索或所存储的值,诸如当执行本文所描述的操作中的一些操作时由设备110所要求或所确定的信息。被存储在存储器112中的值可以根据一个或多个数据结构而被存储。例如,被存储在存储器112中的值可以表示单个数值(例如,二进制数、整数、浮点数、表示文本、数字或标点符号的单个字符的Unicode值、或者表示单个机器代码指令的值)、多个数值集合(例如,数组、文本字符的字符串、XML格式化数据或文件)、或者可以从其获得根据指令113待处理的值的信息(例如,对被存储在远程位置处的值的引用或根据其计算所要求的值的函数的参数)。
计算设备可以包括用于从设备周围的物理环境接收信息并且允许将用户输入引导到计算设备的部件。与设备110类似,设备120包括处理器111、存储器112、指令113和数据114。设备120还包括检测与部件被布置在其中的物理环境有关的信息的部件,并且该信息可以包括由用户150所提供的信息。设备110包括用户输入部件125,其具有被配置成从用户150接收诸如触觉地提供的信息的输入的电路和其他部件(例如,鼠标、键盘、小键盘、按钮或触摸屏)。用户输入部件可以执行未主要地引导到用户输入的功能。通过示例,照相机127可以被用于采集用户命令(例如,手势)和其他视觉信息(例如,山的视觉特性)。麦克风126可以被用于采集用户命令(例如,口头命令)和其他音频信息(例如,瀑布的声音)。
计算设备可以包括用于经由设备周围的物理环境提供信息并且将输出直接地提供给用户的部件。例如,部件可以包括将视觉、听觉或触觉信息输出给设备的用户的电路,诸如显示器130(例如,计算机监视器、触摸屏、投影仪或可操作以响应于信号改变视觉特性的另一部件)、扬声器128或使设备振动的电机126。
计算设备可以包括用于与其他计算设备通信的一个或多个部件。通过示例,设备110和120包括将每个设备连接到通信网络190的不同的节点的电路(例如,网络接口)。网络190可以由使用不同的通信协议的多个网络组成。例如,当设备110将信息发射到设备120时,信息可以通过以下各项中的一项或多项发送:因特网(例如,经由根据传输控制协议(TCP)和网际协议(IP)的核心因特网路由器)、蜂窝网络(例如,根据LTE(长期演进)标准)、本地网络(例如,以太网或Wi-Fi网络)和蓝牙连接。设备可以经由其他设备将信息提供给用户,例如,设备110可以所由通过网络190将信息发送到设备120用于在显示器130上显示来将信息显示给用户150。计算设备还可以在不使用网络的情况下将信息提供给另一计算设备。通过示例,一个计算设备可以利用显示器输出信息并且另一计算设备可以利用照相机检测该信息。虽然在图1中描绘了仅几个计算设备,但是系统可以包括在大量的节点处被连接到网络的大量的计算设备。
虽然图8将计算设备110和120示出为单独块,其中的每一个包含其自己的处理器和存储器,但是本文所描述的操作可以包含例如在“云”中的单个计算设备或许多计算设备。例如,在下面被描述为包含单个计算设备(例如,单个服务器中的单个中央处理单元(CPU))的各种操作可以包含多个计算设备(例如,负载平衡服务器群中的多个处理器)。类似地,不同的位置处的存储器部件可以存储指令113的不同的部分并且共同地形成用于存储指令的介质。通过另一示例,被描述为包含多个计算设备的操作可以由单个计算设备执行,例如,替代将数据发送到设备110用于处理,设备120可以自己处理数据。替选地,设备120可以用作瘦客户端,其中,设备110执行不直接地涉及经由用户输入部件125和显示器130接收并且向用户提供信息的所有或几乎所有操作。可以由虚拟机执行如由计算设备执行的本文所描述的各种操作。通过示例,指令113可以特定于Windows服务器,但是可以由运行模拟Windows服务器管理程序的Linux服务器执行相关操作。还可以由例如不依赖于绑定到特定类型的硬件的操作系统的计算环境的容器执行操作。
在本文所描述的各种示例中,设备110是服务器并且设备120-21是客户端设备。例如,设备110可以是服务器并且设备120可以是台式(笔记本)计算机系统,例如,处理器121和存储器122可以被包含在台式个人计算机中,显示器130可以是通过电缆连接到个人计算机的外部监视器,并且用户输入部件125可以是经由蓝牙与计算机通信的外部键盘。替选地,设备120可以是具有用作显示器130和用户输入部件125这两者的触摸屏的无线电话。通过示例,其他客户端设备可以包括膝上型电脑、笔记本电脑、上网本、平板电脑、机顶盒(例如,连接到电视的有线电视机顶盒)和可穿戴设备(例如,智能手表)。在该方面中,计算设备可以包括典型地存在于这样的设备中或通用计算机中但是在本文中未明确地描述的其他部件。
系统还可以存储具有一个或多个文本元素——例如单个字符、令牌(例如,诸如word的文档内的定界符之间的字符序列)或给定长度的字符序列。文本元素可以具有值,例如,字符“a”或“*”的值。
文本元素可以在文档内被存储为符合定义格式——例如关于与某些类型的信息有关的文本元素应该如何被存储在文档内的一个或多个要求——的值的序列。在定义格式可以被认为是语言的意义上,要求可以被认为是语言的语法。通过仅示例的方式,要求可以涉及允许的文本元素值(例如,UNICODE或ASCII),其中,某些类型的信息需要相对于文档的开始存储(例如,符合HTML版本5的文档从“<!DOCTYPE html>”开始)、相对于保留的关键字存储,并且其中,某些类型的信息相对于其他类型的信息存储(例如,网页上的链接的目的地URL遵循关键字“href”)。虽然为了便于说明在下面大多数示例集中于HTML,但是在本文中所描述的系统和操作适于其他定义格式,包括专有标准。
示例方法
现在将描述根据方法的各种方面的操作。应该理解的是,以下操作不必以在下面所描述的精确次序执行。相反,能够以不同的次序或同时地处理各个步骤。
系统可以标识根据所选择的定义格式布置的信息的预存在的样本。例如并且如在图1中所示,设备100可以使用网络190访问被存储在源191处并且与定义格式一致的文档。通过示例,如在图3中所示,系统可以检索根据来自多个web服务器310-12的HTML格式化的多个网页。网页320共同地形成HTML文档的语料库330。
系统可以利用定义格式的样本训练机器学习部件。在该方面中,设备110可以存储与训练神经网络、遍历神经网络、提取结合神经网络存储的数据以及基于神经网络生成数据值的序列相关联的指令。通过示例,神经网络340可以是递归网络(诸如长短期记忆(LSTM)神经网络),并且设备110可以利用语料库330训练神经网络。
一旦训练,被存储在机器学习部件的数据结构中的权重、偏置和其他方面可以表示定义格式的模型,其中,模型不是语法规则集(诸如可以存在于基于生成的模糊技术中)而是概率模型。例如,系统100可以使用神经网络340来确定与特定文本元素的值跟随被用于训练神经网络的HTML文档的语料库330中的文本元素的相同或类似序列多么频繁有关的文本元素的得分(例如,数值)。在该方面中,神经网络可以通过提供与当序列符合定义格式时文本元素值的序列内的特定文本元素的值将等于特定值的可能性有关的得分对定义模型进行建模。可能性可以是序列中的其他文本元素的值和其他值与特定文本元素的接近度的函数,诸如,在递归网络的情况下,在特定文本元素之前的给定数目的文本元素的值。通过示例,在神经网络340利用HTML文档的语料库330训练之后,模型350可以指示(并且由神经网络反映的得分可以反映)“e”跟随“head”的可能性是33%(例如,如在“<header>”中),“>”的可能性是22%(例如,如在“<head>”中),空格的可能性是11%(例如,当词语“head”被使用在语句中时),“a”的可能性是6%(例如,如在“headache”中)等。(为了便于说明,已选择在本文中所讨论的示例字符串和字符的示例百分比分布,例如,其忽视大小写敏感性的问题。可公开访问的HTML文档的大型语料库可以产生与本文阐述的那些语料库不同的概率和分布)。
系统可以使用得分标识待修改的测试文档的部分。例如,由神经网络340所提供的得分可以被用于确定测试文档的特定文本元素是否有资格被变化。图4提供HTML测试文档的示例。类似几乎全部(如果不是全部)的HTML文档一样,测试文档400以字符串410(“<!DO”)开始,其对应于关键字“!DOCTYPE html”。在该方面中并且如在图5中所示,模型350可以指示HTML文档从“<”开始的可能性510是100%,下一字符是“!”的可能性511是100%,并且下一字符是“D”的可能性512也是100%。结果,神经网络340可以返回在文档的开始处的字符串“<!D”的每个字符的相对高的得分,因为字符串具有相对低的复杂度,例如,每个字符鉴于其之前的字符是高度可预测的。(出于讨论图4和图5的目的,假定神经网络340被配置成基于紧接地在其之前的多达五个字符,对下一字符进行评分)。
还与许多HTML文档共同地,文档400还包含跟随有“[双引号]en[双引号]”(字符串420)的关键字“lang=”,其指示文档用英语书写。在该方面中,模型350可以指示“=”将跟随双引号的可能性520是35%(例如,当“lang”被用作关键字时),“u”将跟随“[空格]lang”的可能性521是25%(例如,当词语“language”被使用在语句中时),并且任何其他字符将跟随[双引号]的可能性可能接近于零(并且因此未示出在图5的图表中)。结果,在字符串“[空格]lang”之后的字符可以被认为是具有相对中等的复杂度,因为模型350指示存在60%机会其将是两个值中的一个。还如在图5中所指示的,如果在“[空格]lang”之后的下一字符是“=”,则下一字符是双引号符号的可能性相对高,例如88%。由于包含字符串“[空格]lang=[双引号]en[双引号]”的HTML文档的数目,因而在那之后的字符将是“e”的可能性523是显著的。然而,因为存在除英语之外的HTML文档的许多其他潜在语言,所以“e”可以是具有跟随“lang=[双引号]”的显著的可能性的许多字符中的一个。结果,在字符串“ang=[双引号]”之后的字符可以被认为是具有相对中等的复杂度和可预测性,并且神经网络340可以因此返回字符串“lange=[双引号]e”中的字符“e”的相对中等的得分。
图5还图示了跟随字符串430,例如“inter”的字符的可预测性。包含字符串“inter”的通俗词的数目可能太众多以致于许多字符具有作为下一个的小但相对相等的可能性530。因此,由于跟随字符串“inter”的字符的相对复杂度是相对高的,因而神经网络340可以返回针对该字符的相对低的得分。
系统可以基于由神经网络返回的得分,选择用于修改的序列的文本元素。修改文档中的关键字可能导致应用不能够解析文档并且可能因此使得应用完全停止处理文档或崩溃;那在一些情况下可能是有帮助的,但是其也可能导致应用的许多例程未所测试。如上所述,关键字倾向于与高得分相关联。结果并且如在图6中所示,系统可以将部分611和612(包含许多关键字)内的字符指定为足够地可预测以保持未修改并且可以将部分610(包含一个或许多可能的语言代码)和630(包含旨在显示给用户的文本)内的字符指定为足够地不可预测以被修改。
系统可以通过将文本元素的得分与阈值相比较确定文本元素是否有资格修改。例如,设备110可以迭代通过文本文档400的字符的值,并且对于每个字符而言,基于神经网络来确定得分并且将该得分与修改资格阈值相比较。修改资格阈值可以对应于可能性阈值。通过示例并且参考图4和图5,模型350可以指示“=”是在“[空格]lang”之后的下一字符的可能性是35%,其超过30%的阈值(线550)。结果,由神经网络340返回的得分可以超过对应的修改资格阈值,并且如果这样的话,设备110可以将字符指定为没有资格修改。(虽然为了便于说明图5指示30%的阈值,但是与90%或更大的可能性阈值相关联的修改资格阈值可能产生更感兴趣的结果)。然而,如果跟随“[空格]lang”的字符的值已所是“u”而不是“=”,并且如果“u”的得分低于修改资格阈值(例如,模型指示字符是“u”的几率是相对不可能的),设备110可能已将字符指定为有资格修改。系统还可以将高可预测性的部分之间的所有部分——诸如分别在部分611-12与部分631-32之间的部分610和630——指定为有资格修改。
得分和修改资格阈值还可以基于非特定于文本元素的值的因素。例如,如果许多字符值具有跟随特定字符串的相对一致的可能性,则修改资格阈值可以降低,例如,系统100可能更可能将字符指定为有资格修改。还可以动态地确定修改资格阈值。例如,阈值可以是随机地确定的数目。通过示例,文档400内的字符可以被标识为当S>Random(0.00-1.00)时没有资格修改,其中,S是由神经网络340针对字符返回的得分,并且得分和潜在随机值在0.01到1.00之间变化。作为推论,系统可以将文本元素指定为当S>1-Random(0.00-1.00)时有资格修改。得分还可以基于大于最小阈值的潜在值的数目或针对文本元素的最可能值的得分。
可以随机地改变被指定为有资格修改的文档的部分。通过示例并且如在图7中所示,系统可以通过700向基于变化的模糊模块指示部分610和630可用于变化——例如,字符可以随机地改变、添加或者删除,来生成所修改的文档。
有资格修改的部分还可以被选择用于由来自相同或其他文档的部分替换。例如并且如在图7中所示,系统已交换部分640和650的位置。测试文档的部分还可以利用来自其他测试文档的部分替换。而且,替换部分不必是与被替换的部分相同大小,特别地如果替换是从另一文档取得的。例如,可以添加越来越大的替换序列直到到达最大长度或者到达相对高的复杂度点为止。
当确定文本元素是否应该被修改时,系统可以不仅考虑先前的文本元素,而且考虑后续的文本元素。例如,图6将字符串“</head><body>”示出为单个块631。然而,模型可以指示字符“b”是相对不可预测的,因为关键字将跟随“ead><”但是精确的关键字其自身可能难以预测可能是高度可能的。然而,一旦已知下一字符的值是“b”,模型就可以指示块631的剩余的字符是高度可预测的,因为标签“<body>”常常跟随“<head>”。结果并且在一些方面中,如果单个低评分的字符被夹在高评分的字符的字符串之间,则系统可以检查更低评分的字符和后续的高评分的字符是否形成单个关键字。
当其处理测试序列时,系统可以测量计算机指令集的性能的一个或多个特性。通过示例并且如在图8中所示,设备110可以将测试文档700加载到浏览器810中并且生成关于浏览器被执行得多么良好的报告805。报告可以包括文档的名字811和诸如是否加载引起特定例程820-23(例如,与渲染内容、执行javascript、通过网络和安全数据传递信息有关的例程)的文档和待调用的第三方插件830-32并且如果这样的话,任何错误是否发生的信息。基于诸如文档的覆盖范围(例如,已调用的不同的例程的数目、已执行的唯一代码行的总数)、处理速度(例如,加载时间)、CPU和存储器使用、是否遭遇任何感兴趣的结果(例如,诸如缓冲区溢出错误和解压炸弹、插件故障832、应用崩溃等的错误、安全性问题)的其他性能特性以及与性能有关的任何其他可测量的方面,系统还可以计算并且报告还可以包括测试得分815。不同的事件可以在计算测试得分时不同地加权。
性能特性可以被用于确定是否应该对应用或文档做出进一步的修改。例如,在初始测试之后,文档可以如上文所描述地被修改并且再一次被测试。如在图9中所示,系统可以然后生成第二报告905,其指示浏览器的附加例程921和第三方插件931被调用。报告还指示容易地处理文档的先验版本的第三方插件930利用缓冲区溢出错误失败,其可以在一些情况下创建用于由该插件处理的数据的安全性问题。结果,文档的计算的测试得分915相对于第一报告805增加。系统可以重复以下过程:基于由神经网络所返回的得分,标识有资格修改的文档的部分,修改文档的有资格部分,并且确定针对文档的测试得分直到文档的测试得分停止增加为止。如果定义格式是PDF,则系统可以测试PDF阅读器——例如,用于显示PDF文档的浏览器的功能性、用于显示和编辑PDF文档的独立PDF应用等。
系统还可以被用于按照定义格式的模型生成完全地新一组测试文档。例如,系统可以创建新测试文档并且基于如由神经网络所表示的模型所指示的其发生的可能性,随机地选择文本元素的值。通过示例并且如在图5中部分地所示,模型350可以指示语料库中的所有HTML文档从“<DOCTYPE html”开始。因此,当系统100使用神经网络340来随机地生成新文档时,文档的前十四个字符将是“<DOCTYPE html”。在下文中,然而,概率可以改变,例如,模型可以指示80%的时间字符串“html”跟随有空格并且20%的时间其跟随有“>”。因此,系统可以通过生成0.00与1.00之间的随机数随机地选择空格或“>”并且确定该数是大于还是小于0.80并且因此将空格或“>”选择为所生成的文档的下一字符。可以类似地确定文档的剩余的字符。随机生成的测试文档可以然后被修改并且被测试,如上文所描述的。
模型可以周期性地更新以反映对定义格式的要求和特征的改变。例如,神经网络340可以周期性地利用最近创建的文档训练,以便使模型350与定义格式的改变保持一致。取决于定义格式的复杂性和其他情况,训练并且维护诸如神经网络340的神经网络所要求的成本和其他资源可以比写入并且维护基于由定义格式的人或组织所设定的严格的语法规则集创建或分析文档的计算机程序所要求的成本和资源更少。
虽然在某些应用中将文本元素评分的递归神经网络的使用可以是特别有利的,但是系统可以使用其他部件来提供基于文本元素值的给定序列与符合定义格式的文本元素值的序列的关系的得分。例如,代替递归神经网络,机器学习部件可以是利用从符合变形格式的文档复制的N-grams训练的支持向量机,或者隐藏马尔可夫模型。而且,代替机器学习,文本元素评分部件可以包括统计回归例程,其将包含文本元素的序列用作因变量并且将语料库中的序列用作自变量。
图10提供了可以由一个或多个计算设备执行的方法的流程图。在块1010,接收文本元素的值的序列。在块1020,确定序列的文本元素值的得分,其中,关于特定文本元素值的得分与特定文本元素值将等于一个或多个给定值的概率有关,并且其中,所述概率基于与定义格式一致的文本元素值的序列而确定。在块1030,将得分与阈值相比较。在块1040,当得分小于阈值时,文本元素的值被修改以形成文本元素值的所修改的序列。在块1050,利用指令集处理所修改的序列。在块1060,通过利用计算机指令处理所修改的序列测试计算机指令的性能的特性。
当能够利用上文所讨论的特征的这些和其他变型和组合而不脱离如由权利要求定义的本发明时,实施例的前述描述应该通过图示而不是通过如由权利要求定义的本发明的限制来理解。本发明的示例的提供(以及如“诸如”、“例如”、“包括”等措辞的条款)不应该被解译为将本发明限于特定示例;相反,示例旨在图示许多可能方面中的仅一些方面。类似地,对“基于”等的引用意指“至少部分地基于”。

Claims (18)

1.一种利用定义的输入格式来测试应用的方法,包括:
接收第一文本元素值序列,
利用一个或多个计算设备确定跟随文本元素的值,其中,所述跟随文本元素是出现在所述第一文本元素值序列之后的文本元素,其中,确定所述跟随文本元素的所述值包括:
基于所述第一文本元素值序列确定与第一文本元素值相关联的概率值,其中,所述概率值是使用概率模型来确定的,所述概率模型是利用根据所述定义的输入格式排序的文本元素值的语料库来训练的,其中,所述概率值与跟随所述第一文本元素值序列的所述第一文本元素值的可能性有关,
将所述概率值与修改资格阈值进行比较,以及
基于所述概率值是否超过所述修改资格阈值来选择所述第一文本元素值或第二文本元素值作为所述跟随文本元素的所述值,其中,所述第二文本元素值是与所述第一文本元素值不同的预定文本元素值;
在确定所述概率值未超过所述修改资格阈值之后,利用所述一个或多个计算设备利用指令集处理第二文本元素值序列,所述第二文本元素值序列包括跟随有所选择的跟随文本元素的值的所述第一文本元素值序列;以及
在所述指令集处理所述第二文本元素值序列时,利用所述一个或多个计算设备测试所述指令集的性能特性,其中,测试性能特性包括确定是否存在与所述指令集相关联的安全性问题。
2.根据权利要求1所述的方法,还包括通过向所述概率模型提供所述第一文本元素值序列,从所述概率模型接收对所述跟随文本元素的所述值的预测,以及选择所预测的值作为所述第一文本元素值来确定所述第一文本元素值。
3.根据权利要求1所述的方法,其中,所述第一文本元素值是根据所述概率模型最可能跟随所述第一文本元素值序列的文本元素值。
4.根据权利要求1所述的方法,还包括生成包括所述第二文本元素值序列的测试文档,并将所述测试文档提供给所述指令集以用于处理。
5.根据权利要求4所述的方法,其中,所述指令集包括用于在浏览器中显示所述测试文档的指令。
6.根据权利要求1所述的方法,其中,所述定义格式是PDF,并且所述语料库从web服务器中检索。
7.根据权利要求1所述的方法,其中,所述性能特性包括由于处理所述第二文本元素值序列而产生的覆盖范围。
8.根据权利要求1所述的方法,其中,选择所述第一文本元素值或所述第二文本元素值作为所述跟随文本元素的所述值是取决于随机生成数的。
9.一种利用定义的输入格式来测试应用的系统,所述系统包括:
一个或多个计算设备,以及
存储器,所述存储器存储能够由所述一个或多个计算设备执行的指令,
其中,能够由所述一个或多个计算设备执行的所述指令包括:
接收第一文本元素值序列,
确定跟随文本元素的值,其中,所述跟随文本元素是出现在所述第一文本元素值序列之后的文本元素,其中,确定所述跟随文本元素的所述值包括
基于所述第一文本元素值序列确定与第一文本元素值相关联的概率值,其中,所述概率值是使用概率模型来确定的,所述概率模型是利用根据所述定义的输入格式排序的文本元素值的语料库来训练的,其中,所述概率值与跟随所述第一文本元素值序列的所述第一文本元素值的可能性有关,
将所述概率值与修改资格阈值进行比较,以及
基于所述概率值是否超过所述修改资格阈值来选择所述第一文本元素值或第二文本元素值作为所述跟随文本元素的所述值,其中,所述第二文本元素值是与所述第一文本元素值不同的预定文本元素值;
在确定所述概率值未超过所述修改资格阈值之后,利用测试指令集处理第二文本元素值序列,所述第二文本元素值序列包括跟随有所选择的跟随文本元素的值的所述第一文本元素值序列;以及
在所述测试指令集处理所述第二文本元素值序列时,测试所述测试指令集的性能特性,其中,测试性能特性包括确定是否存在与所述指令集相关联的安全性问题。
10.根据权利要求9所述的系统,其中,能够由所述一个或多个计算设备执行的所述指令还包括通过向所述概率模型提供所述第一文本元素值序列,从所述概率模型接收对所述跟随文本元素的所述值的预测,以及选择所预测的值作为所述第一文本元素值来确定所述第一文本元素值。
11.根据权利要求9所述的系统,其中,所述第一文本元素值是根据所述概率模型最可能跟随所述第一文本元素值序列的文本元素值。
12.根据权利要求9所述的系统,其中,能够由所述一个或多个计算设备执行的所述指令还包括生成包括所述第二文本元素值序列的测试文档,并将所述测试文档提供给所述测试指令集以用于处理。
13.根据权利要求9所述的系统,其中,所述性能特性包括由于处理所述第二文本元素值序列而产生的覆盖范围。
14.根据权利要求9所述的系统,其中,所述跟随文本元素是单个字符。
15.根据权利要求9所述的系统,其中,所述第一文本元素值序列中的至少一个文本元素值包括定界符之间的字符序列。
16.一种非暂时性计算设备可读存储介质,在所述非暂时性计算设备可读存储介质上存储程序的计算设备可读指令,所述指令在由一个或多个计算设备执行时,使所述一个或多个计算设备执行一种方法,所述方法包括:
接收第一文本元素值序列,
确定跟随文本元素的值,其中,所述跟随文本元素是出现在所述第一文本元素值序列之后的文本元素,其中,确定所述跟随文本元素的所述值包括
基于所述第一文本元素值序列确定与第一文本元素值相关联的概率值,其中,所述概率值是使用概率模型来确定的,所述概率模型是利用根据定义的输入格式排序的文本元素值的语料库来训练的,其中,所述概率值与跟随所述第一文本元素值序列的所述第一文本元素值的可能性有关,
将所述概率值与修改资格阈值进行比较,以及
基于所述概率值是否超过所述修改资格阈值来选择所述第一文本元素值或第二文本元素值作为所述跟随文本元素的所述值,其中,所述第二文本元素值是与所述第一文本元素值不同的预定文本元素值;
在确定所述概率值未超过所述修改资格阈值之后,利用测试指令集处理第二文本元素值序列,所述第二文本元素值序列包括跟随有所选择的跟随文本元素的值的所述第一文本元素值序列;以及
在所述测试指令集处理所述第二文本元素值序列时,测试所述测试指令集的性能特性,其中,测试性能特性包括确定是否存在与所述指令集相关联的安全性问题。
17.根据权利要求16所述的介质,其中,所述方法还包括通过向所述概率模型提供所述第一文本元素值序列,从所述概率模型接收对所述跟随文本元素的所述值的预测,以及选择所预测的值作为所述第一文本元素值来确定所述第一文本元素值。
18.根据权利要求16所述的介质,其中,所述第一文本元素值是根据所述概率模型最可能跟随所述第一文本元素值序列的文本元素值。
CN202110308048.9A 2016-11-23 2017-09-27 利用定义的输入格式来测试应用 Active CN113110988B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/360,554 US9977729B1 (en) 2016-11-23 2016-11-23 Testing applications with a defined input format
US15/360,554 2016-11-23
CN201710892789.XA CN108089974B (zh) 2016-11-23 2017-09-27 利用定义的输入格式来测试应用

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201710892789.XA Division CN108089974B (zh) 2016-11-23 2017-09-27 利用定义的输入格式来测试应用

Publications (2)

Publication Number Publication Date
CN113110988A CN113110988A (zh) 2021-07-13
CN113110988B true CN113110988B (zh) 2022-07-29

Family

ID=60162247

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201710892789.XA Active CN108089974B (zh) 2016-11-23 2017-09-27 利用定义的输入格式来测试应用
CN202110308048.9A Active CN113110988B (zh) 2016-11-23 2017-09-27 利用定义的输入格式来测试应用

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201710892789.XA Active CN108089974B (zh) 2016-11-23 2017-09-27 利用定义的输入格式来测试应用

Country Status (5)

Country Link
US (2) US9977729B1 (zh)
CN (2) CN108089974B (zh)
DE (2) DE202017105654U1 (zh)
GB (2) GB2556978B (zh)
WO (1) WO2018097895A1 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10514913B2 (en) 2017-06-23 2019-12-24 International Business Machines Corporation Compiler controls for program regions
US10740067B2 (en) 2017-06-23 2020-08-11 International Business Machines Corporation Selective updating of floating point controls
US10684852B2 (en) 2017-06-23 2020-06-16 International Business Machines Corporation Employing prefixes to control floating point operations
US10725739B2 (en) 2017-06-23 2020-07-28 International Business Machines Corporation Compiler controls for program language constructs
US10379851B2 (en) 2017-06-23 2019-08-13 International Business Machines Corporation Fine-grained management of exception enablement of floating point controls
US10481908B2 (en) 2017-06-23 2019-11-19 International Business Machines Corporation Predicted null updated
US10474562B2 (en) * 2017-09-20 2019-11-12 Salesforce.Com Machine learning based ranking of test cases for software development
EP3782082A1 (en) * 2018-05-18 2021-02-24 Google LLC Systems and methods for debugging neural networks with coverage guided fuzzing
CN108944930B (zh) * 2018-07-05 2020-04-21 合肥工业大学 一种基于lstm的模拟驾驶员特性的自动跟车方法及系统
EP3857330A1 (en) * 2018-09-27 2021-08-04 Google LLC Automatic navigation of interactive web documents
CN109522221B (zh) * 2018-10-26 2021-08-31 中国科学院信息工程研究所 一种提高模糊测试效率的方法和系统
CN109598334B (zh) * 2018-12-03 2021-06-29 中国信息安全测评中心 一种样本生成方法及装置
US10474564B1 (en) * 2019-01-25 2019-11-12 Softesis Inc. Identifying user interface elements using element signatures
US11281567B1 (en) * 2020-06-02 2022-03-22 Meta Platforms, Inc. Selecting an optimal subset of software tests for execution
CN112530235A (zh) * 2020-12-15 2021-03-19 深圳市新亚恒利科技有限公司 一种快速阅读训练控制方法、装置、设备及存储介质
US11775878B2 (en) 2020-12-22 2023-10-03 Sas Institute Inc. Automated machine learning test system
CN114385491A (zh) * 2021-12-30 2022-04-22 大连理工大学 一种基于深度学习的js转译器缺陷检测方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104965784A (zh) * 2015-06-16 2015-10-07 广州华多网络科技有限公司 自动测试方法及装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369574A (en) * 1990-08-01 1994-11-29 Canon Kabushiki Kaisha Sentence generating system
DE4306508A1 (de) * 1993-03-03 1994-09-08 Philips Patentverwaltung Verfahren und Anordnung zum Ermitteln von Wörtern in einem Sprachsignal
US5523945A (en) * 1993-09-17 1996-06-04 Nec Corporation Related information presentation method in document processing system
US7117153B2 (en) * 2003-02-13 2006-10-03 Microsoft Corporation Method and apparatus for predicting word error rates from text
KR100857862B1 (ko) * 2007-06-05 2008-09-10 한국전자통신연구원 파일 영역 정보와 변이 규칙을 이용한 파일 변이 방법 및그 시스템
US8862940B2 (en) 2012-02-14 2014-10-14 Microsoft Corporation Integrated fuzzing
US9043349B1 (en) * 2012-11-29 2015-05-26 A9.Com, Inc. Image-based character recognition
US9367435B2 (en) * 2013-12-12 2016-06-14 Vertafore, Inc. Integration testing method and system for web services
US9558089B2 (en) 2014-11-12 2017-01-31 Intuit Inc. Testing insecure computing environments using random data sets generated from characterizations of real data sets
CN106095684B (zh) * 2016-06-17 2019-01-29 北京大学 一种预测性变异测试方法
US10452526B2 (en) * 2017-06-15 2019-10-22 Microsoft Technology Licensing, Llc Machine learning for constrained mutation-based fuzz testing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104965784A (zh) * 2015-06-16 2015-10-07 广州华多网络科技有限公司 自动测试方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
An Adaptive Sequence Approach for OOS Test Case Prioritization;Jinfu Chen;《2016 IEEE 27th International Symposium on Software Reliability Engineering Workshops》;20161027;全文 *
概率神经网络下测试数据的分析处理;房梁;《电脑知识与技术》;20091130;第5卷(第32期);全文 *

Also Published As

Publication number Publication date
DE202017105654U1 (de) 2018-01-19
CN108089974A (zh) 2018-05-29
US9977729B1 (en) 2018-05-22
CN113110988A (zh) 2021-07-13
GB201715225D0 (en) 2017-11-08
DE102017121649A1 (de) 2018-05-24
GB202015227D0 (en) 2020-11-11
WO2018097895A1 (en) 2018-05-31
GB2556978B (en) 2020-11-04
GB2590140A (en) 2021-06-23
US10095610B2 (en) 2018-10-09
GB2590140B (en) 2021-09-08
GB2556978A (en) 2018-06-13
US20180181486A1 (en) 2018-06-28
CN108089974B (zh) 2021-03-26
US20180143896A1 (en) 2018-05-24

Similar Documents

Publication Publication Date Title
CN113110988B (zh) 利用定义的输入格式来测试应用
US8224641B2 (en) Language identification for documents containing multiple languages
US20120158742A1 (en) Managing documents using weighted prevalence data for statements
US11481554B2 (en) Systems and methods for training and evaluating machine learning models using generalized vocabulary tokens for document processing
US20210073257A1 (en) Logical document structure identification
US10885281B2 (en) Natural language document summarization using hyperbolic embeddings
JP7337979B2 (ja) モデル訓練方法および装置、テキスト予測方法および装置、電子デバイス、コンピュータ可読記憶媒体、およびコンピュータプログラム
WO2011076585A1 (en) Indexing documents
US9984065B2 (en) Optimizing generation of a regular expression
US9298694B2 (en) Generating a regular expression for entity extraction
US9208142B2 (en) Analyzing documents corresponding to demographics
WO2022134577A1 (zh) 翻译错误识别方法、装置、计算机设备及可读存储介质
US20150199332A1 (en) Browsing history language model for input method editor
US11056215B2 (en) Performing chemical textual analysis to discover dangerous chemical pathways
US11544449B2 (en) Annotating chemical reactions
JP2024507029A (ja) ウェブページ識別方法、装置、電子機器、媒体およびコンピュータプログラム
US11531811B2 (en) Method and system for extracting keywords from text
CN114580399A (zh) 文本纠错方法、装置、电子设备及存储介质
JP7135641B2 (ja) 学習装置、抽出装置及び学習方法
US9305117B2 (en) String generation tool
US20230342561A1 (en) Machine translation method and apparatus, device and storage medium
JP7135640B2 (ja) 学習装置、抽出装置及び学習方法
KR20220045797A (ko) 축약형 번역 제공 방법 및 장치
CA2862955A1 (en) Kernel based string descriptors

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