CN102053906A - 用于收集程序运行时信息的***和方法 - Google Patents

用于收集程序运行时信息的***和方法 Download PDF

Info

Publication number
CN102053906A
CN102053906A CN200910211315XA CN200910211315A CN102053906A CN 102053906 A CN102053906 A CN 102053906A CN 200910211315X A CN200910211315X A CN 200910211315XA CN 200910211315 A CN200910211315 A CN 200910211315A CN 102053906 A CN102053906 A CN 102053906A
Authority
CN
China
Prior art keywords
program
information
checkpoint
module
code
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN200910211315XA
Other languages
English (en)
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN200910211315XA priority Critical patent/CN102053906A/zh
Priority to US12/913,635 priority patent/US20110107307A1/en
Publication of CN102053906A publication Critical patent/CN102053906A/zh
Priority to US13/413,181 priority patent/US20120167054A1/en
Pending legal-status Critical Current

Links

Images

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/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler

Landscapes

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

Abstract

提供了一种用于收集程序运行时信息的***和方法,该***包括:插桩模块,用于通过程序插桩将监视代码***到被运行的程序中异常类的构造函数中;以及由所述监视代码实现的监视模块,用于在程序的运行过程中,收集程序的运行时信息。

Description

用于收集程序运行时信息的***和方法
技术领域
本发明涉及计算机领域,具体涉及计算机软件的测试,更具体涉及一种用于收集程序运行时信息的***和方法。
背景技术
功能验证测试(又称黑盒测试)是指由测试人员在不知道程序的内部实现的情况下来测试程序/***。测试人员所知道的信息是输入的数据和观察到的输出结果,但他们不知道程序或***是怎样工作的。
在测试过程中,当执行测试用例的时候,如果发现缺陷(defect),就需要给开发人员开缺陷,这通常包括:1)描述重现缺陷的步骤;2)如果有错误日志,则将错误日志从日志中抽取出来;3)保存快照;4)然后使用诸如Rational ClearQuest等缺陷跟踪和报告工具将上述所有信息发送给开发人员。
由于传统的功能验证测试流程是黑盒测试,测试人员没有方法来分析源代码,去了解被测程序的内部逻辑,而只能在外部理解和分析,所以有时候测试人员很难判断一个缺陷是环境原因导致的还是确实是一个缺陷。这就造成了测试人员常开错缺陷,从而浪费测试人员和开发人员的时间。测试人员也很难精确定位发生错误的代码,因而无法分析错误并向开发人员提供更多的有用信息。由于缺陷描述信息的不准确和不详细,导致开发和测试人员之间的沟通困难。对于跨国企业而言,开发和测试人员常常是跨地域跨时区的,不能即时地、自由地对缺陷进行交流,这进一步增加了沟通的困难。
尽管在有些情况下,被测程序会有异常抛出,并记录在错误日志里,如websphere application server的SystemOut.log,这样测试或开发人员可以根据错误日志中的信息定位错误位置,但在很多情况下,被测程序并不会生成日志,在另一些情况下,生成的日志并不准确。
另外,作为一个测试人员,他不能也不应该像开发人员一样安装一套开发环境来调试程序的错误,并获得有关错误的详细信息。而且,对于一些服务器应用来说,需要在测试的同时能够运行并处理来自其他客户的并发请求,而调试程序却使该应用服务器无法同时运行并处理来自其他客户的请求。
此外,尽管一些测试人员注册了诸如CVS等源代码版本管理工具来查看分析源代码。但这只是一个静态的分析,而不能获取和观察程序的实时运行情况。而且这种方法在某些项目中因为可能涉及到安全的问题,是被禁止的。
从以上所述可见,本领域中目前缺少这样一种处理方法:在功能测试的过程中提供更多更准确的信息来开高质量的缺陷,从而使测试人员能够更准确的定位错误的位置,降低开发人员和测试人员间的沟通成本,提高工作效率。
发明内容
在本发明的一个方面,提供了一种用于收集程序运行时信息的方法,包括:通过程序插桩将监视代码***到将运行的程序中的异常类的构造函数中;以及在程序的运行过程中,通过所述监视代码收集程序的运行时信息。
在本发明的另一个方面,提供了一种用于收集程序运行时信息的***,包括:插桩模块,用于通过程序插桩将监视代码***到将运行的程序中的异常类的构造函数中;以及由所述监视代码实现的监视模块,用于在程序的运行过程中,收集程序的运行时信息。
本发明的方法能向测试者提供被测程序运行过程中发生错误时的更详细和准确的信息,包括发生错误时的调用栈以及参数值,使得测试者更好地为开发者开缺陷,从而使开发者更好地理解程序缺陷的上下文和原因,定位错误并更快地克服程序缺陷。此外,这一切都是在原来的测试环境中实现的,不需要测试者安装额外的开发和调试工具。而且,对于在服务器上运行的程序而言,不需要中断服务,而是可以在测试的同时处理来自其他客户的请求。
附图说明
所附权利要求中阐述了被认为是本发明的特点的创造性特征。但是,通过参照附图阅读下面对说明性实施例的详细说明可更好地理解发明本身以及其优选使用模式、目标、特征以及优点,在附图中:
图1示出了根据本发明的实施例的用于在功能验证测试中收集和提供诊断信息的***的体系结构;
图2描述根据本发明的实施例的用于在功能验证测试中收集和提供诊断信息的方法;
图3示出了在一具体示例场景中用于输入用户信息的用户界面;
图4示出了在该具体示例场景中用于查看用户信息的用户界面;以及
图5示出了在该具体示例场景中用于显示所述调用栈信息和相应的源代码信息的用户界面。
具体实施方式
下面参照附图来说明本发明的实施例。在下面的说明中,阐述了许多具体细节以便更全面地了解本发明。但是,对于本技术领域内的技术人员明显的是,本发明的实现可不具有这些具体细节中的一些。此外,应当理解的是,本发明并不限于所介绍的特定实施例。相反,可以考虑用下面的特征和要素的任意组合来实施本发明,而无论它们是否涉及不同的实施例。因此,下面的方面、特征、实施例和优点仅作说明之用而不应被看作是所附权利要求的要素或限定,除非权利要求中明确提出。
本发明的基本思想是在功能测试的过程中收集和提供程序运行时的准确的诊断信息,以便测试人员开缺陷。
图1示出了根据本发明的实施例的用于在功能验证测试中收集和提供诊断信息的***的体系结构。如图所示,该***包括:插桩模块101,用于通过程序插桩向被测程序***用于收集被测程序运行时信息的监视代码;由所述监视代码实现的监视模块102,用于在被测程序的测试运行过程中,收集被测程序的运行时信息;以及可选的呈现模块103,用于将与程序缺陷有关的运行时信息呈现给测试者。
所述插桩模块101可以由本领域所知的任何插桩工具来实现。如本领域的技术人员所知的,插桩是指在程序的源代码、执行代码或某种中间代码中***额外的监视代码以抽取程序运行过程中的信息。例如,可以将监视代码***到方法的开始和结束的位置,这样在运行时刻,当一个线程进入方法时,就能够记录和报告被该线程调用的方法名称、以及方法的参数信息。再例如,可以将监视代码***以用于读或写堆中的对象或类的域的指令周围,以便记录当前内存操作的所有者类或对象的信息、域信息、操作类型等信息。
在现有技术中,插桩通常应用于程序的覆盖性分析,而没有用于在功能验证测试收集诊断信息以用于开缺陷。本发明首次将程序插桩技术应用于程序的功能验证测试,以收集程序运行过程中与程序缺陷有关的运行时信息。
根据本发明的实施例中,被测程序为Java程序,且所述插桩为字节码插桩,即在Java类中特定的位置***额外的监视代码来抽取类执行过程中的信息。
根据本发明的实施例的***中的所述监视模块102是由***到被测程序中的监视代码实现的。
根据本发明的实施例,为了跟踪被测程序运行过程中的出错点,进行以下两种方式的插桩中的任何一种或两种:
1)用于捕获异常的插桩。在程序执行过程中,抛出异常,表明程序出现异常情况。抛出异常的位置,一般就是出错的位置。当异常出现的时候,一个异常对象会被构造。通过插桩异常对象的构造,就可以捕获到出错位置。因此,对于这样的出错方式,根据本发明的实施例的***对异常类的构造函数进行插桩。例如,出现异常时,会有类似如下代码。
Exception e=new SomeException();
通过修改类Exception的构造函数,在其中***用于记录程序运行时的相关信息的监视代码,就可以捕获到抛出异常时的出错位置等程序运行时信息。因为Exception类是所有异常类的父类,所有异常类的构造都会调用Exception类。以java为例,
public class Exception extends Throwable{
    public Exception(){
      super();
    }
修改后的Exception类变成为,
public class Exception extends Throwable{
    public Exception(){
      super();
      runtimeRecorder.recordExceptionWithThreadStack(this);
    }
如上述代码片断所示,在Exception类构造函数的末尾,通过字节码插桩技术***一个新方法的调用,recordExceptionWithThreadStack(Exception e),这个方法用来的记录这个异常构造和该异常构造的时候当前线程或所有线程的调用栈信息。
recordExceptionWithThreadStack(Exception e){
//步骤1:记录异常e
//步骤2:记录运行时当前线程或所有线程的调用栈
}
在这种插桩方式中,每当被测程序执行过程中抛出异常时,所述监视代码就将发生异常时的程序运行时信息(例如调用栈信息等)记录下来,例如记录在一诊断信息存储库中,以便由呈现模块103呈现给测试者。当然,监视代码也可以直接将发生异常时的程序运行时信息提供给呈现模块103,以便由呈现模块103呈现给测试者。
在传统的异常捕获方法中,都是对异常处理部分进行插桩,以在异常处理部分来捕获程序中的异常,但是由于异常处理部分遍及程序的所有位置,所以需要修改所有的异常处理部分,这不但十分繁琐,而且更严重的是,有些异常不需要显式处理,所以有些异常在异常处理部分是无法捕获到。根据本发明的实施例的***仅对异常的构造函数进行插桩,不但大大减轻了工作量,而且还能有效地捕获到程序运行中产生的所有异常。
如本领域的技术人员所知的,调用栈信息中包括被程序运行到当前时刻的当前线程标识以及一系列被调用的类和方法的名称、输入输出参数信息。通过调用栈信息可以得知当前的程序运行时状态以及发生错误的位置。
2)针对断言变量的插桩。在功能验证测试中,测试用例会使用断言来判断程序执行结果,即设置验证点(verification point)变量及其预期置。如果被测程序运行后验证点变量的值和预期值一致,则判断测试正确,断言通过;否则,判断测试错误,断言失败。根据本发明的实施例,在测试执行前,解析测试用例中的断言,从而获得验证点变量。然后,对被测程序中所有对验证点变量的访问位置(包括对检查点变量的每一次读访问或者写访问)进行插桩,***监视代码,以记录被测程序运行时的相关信息。
在这种插桩方式中,每当被测程序在运行过程中访问验证点时,监视代码就会将被测程序在访问验证点时的运行时信息(例如当前调用栈信息等)以及访问验证点变量时验证点变量的值记录下来(例如记录在诊断信息存储库中)或直接提供给测试工具,以便由测试工具通过分析所记录或提供的信息判断测试用例中的断言是否成功,并响应于判断断言失败,通过呈现模块103将引起断言失败的验证点访问时的程序运行时信息以及验证点变量的值呈现给测试者。
根据本发明的一实施例,该***还包括一可选的解析模块104,用于解析测试用例中的断言以获得其中的验证点变量,以便进行相应的插桩。当然,也可以通过人工解析测试用例中的断言来获得其中的验证点变量。
例如,对于如下的测试用例:
##################################################
##TESTCASE NAME  :test_savingaccount.script
##VERSION        :%W%-%E%
##LINE ITEM      :PythonArrays
##COMPONENT(S)   :DBOP
print″TestCase Start”
……
declare accountSum long;    ----变量声明
……
DepositMoney(accountSum,100)----变量访问1
……
WithdrawMoney(accountSum,20)----变量访问2
……
Assert(accountSum=80)    ----断言,判断变量的值是否满足断言
……
通过解析该测试脚本,可以识别出检查点变量accountSum,并将其与其访问点(即访问该检查点变量的语句)注册到如下所述的检查点变量表中:
  检查点变量   变量访问点
  OperationTimes   RegOper(,,),CheckOper(,,),RevkOper(,...,)
  ......  ......
  accountSum  DepositMoney(parm1),WithdrawMoney(parm1)...
  ......  ......
然后,针对检查点变量accountSum,通过读取变量表中访问点出现的位置,插桩模块101可以自动对被测程序进行字节码插桩,以便监视对该变量的每一次访问。
例如,对于以下示例性Java程序片段:
  class OperateAccount
  {
        int accountSum;
        public void DepositMoney(int sum,int change)
        {
                this.accountSum=this.accountSum+change;
                sum=this.accountSum;
        }
        public void WithdrawMoney(int sum,int change)
        {
                    this.accountSum=this.accountSum-change;
                sum=this.accountSum;
        }
  }
插桩后的程序片段为:
  class OperateAccount
  {
        int accountSum;
        public void DepositMoney(int sum,int change)
        {
               this.accountSum=this.accountSum+change;
               sum=this.accountSum;
               runtimeRecorder.recordWrite(this,sum);
        }
        public void WithdrawMoney(int sum,int change)
        {
               this.accountSum=this.accountSum-change;
               sum=this.accountSum;
               runtimeRecorder.recordWrite(this,sum);
        }
   }
其中,runtimeRecorder.recordWrite()为***到程序中的用于监视对检查点变量的访问的监视代码。
这样,随着测试用例开始执行,被测程序开始运行。在被被测程序运行过程中,通过监视代码,每一个检查点变量的每一次访问都被监视并记录下来。记录的信息可被存储起来,例如存储到诊断信息存储库中的一检查点变量访问历史表中。针对每个检查点变量,所记录并存储的运行时信息可包括:变量的当前值,变量所处的当前环境,如当前的调用栈,以及调用栈中输入输出参数的值等。通过这些信息,可以了解检查点的当前状态,判断检查点的访问过程是否正确,从而当测试用例出现检查点验证错误(即断言失败)时,可以识别程序内部的错误原因,并提供相关的信息。
根据本发明的一实施例,所述***还包括一可选的比较模块105,用于通过将所述由监视模块102所收集的与程序缺陷有关的运行时信息与程序的源代码进行比较来确定与程序缺陷相关的源代码,并通过所述呈现模块103,将所述源代码呈现给测试者,以便由测试者精确定位程序缺陷在源代码中的位置。例如,比较模块105可以首先获取程序源代码包,然后可以根据由监视模块102所返回的类名、方法名和行号从程序源代码包中找到对应的源代码,并通过呈现模块103显示出来。
所述呈现模块103在获得由监视模块102记录或提供的与程序缺陷有关的运行时信息后,可以首先对所述信息进行分析、选择或处理,然后再向测试者呈现经分析、选择或处理后的信息,也可以直接将所获得的由监视模块102记录或提供的与程序缺陷有关的信息提供给测试者进行分析和处理,以便向开发人员开缺陷。
本发明的***既可应用于单机程序的测试,也可应用于在客户-服务器模式下运行的程序的测试。在应用于在客户-服务器模式下运行的程序的情况下,本发明的***中的监视模块102与被测程序在服务器上运行,而本发明的***中的其他模块,包括插桩模块101、呈现模块103、比较模块105等都可以在客户端运行。
本发明的***特别适合于获取在客户-服务器模式下运行的程序测试时的诊断信息。在这种客户机-服务器模式下,程序运行在服务器端,并可能同时接收和处理多个并发的连接请求。使用传统的调试方法,开发者需要启动程序并进入调试模式,独占服务器,这样就无法支持其他的并发连接,从而会极大地影响用户的使用体验,因而是不能接受的。而使用本发明的***,因为插桩后对被测程序本身的运行并没有影响,所以可以在获取各种运行时信息的同时,支持多个连接的并发运行,不会影响到被测程序本身的可使用性,从而提供了更好的用户体验。
以上参照附图描述了根据本发明的实施例的用于在功能验证测试中收集和提供诊断信息的***。应指出的是,以上描述和图示仅为示例,而不是对本发明的限制。在本发明的其他实施例中,该***可具有更多、更少或不同的模块,且各模块之间的关系可以与所描述的不同。
在本发明的另一个方面,还提供了一种用于在功能验证测试中收集和提供诊断信息的方法。下面参照图2描述根据本发明的实施例的用于在功能验证测试中收集和提供诊断信息的方法。该方法可以由以上所述根据本发明的实施例的用于在功能验证测试中收集和提供诊断信息的***来执行。为简明起见,在以下描述中省略了部分与以上描述重复的细节,因此,可参照以上描述获得对本发明的方法的更详细的了解。
如图所示,该方法包括以下步骤:
在步骤201,通过程序插桩向被测程序***用于收集被测程序运行时信息的监视代码。
在步骤202,在被测程序的测试运行过程中,通过所述监视代码收集被测程序的运行时信息。
在步骤203,将所收集的运行时信息呈现给测试者。
根据本发明的实施例,所述监视代码被***在异常类的构造函数中,用于收集被测程序在测试运行过程中创建异常时的运行时信息。
根据本发明的实施例,该方法还包括以下可选步骤:通过解析测试用例中的断言获得其中的检查点变量;且其中,所述监视代码被***在被测程序中访问所述检查点变量的位置,用于收集被测程序在测试运行过程中访问检查点时的运行时信息以及检查点变量的值。
根据本发明的实施例,将与程序缺陷有关的运行时信息呈现给测试者包括:响应于根据检查点变量的值判断判断断言失败,将被测程序在测试运行过程中访问该检查点的运行时信息呈现给测试者。
根据本发明的实施例,所述运行时信息包括被测程序运行中的调用栈信息。
根据本发明的实施例,该方法还包括以下可选步骤:通过将所述与程序缺陷有关的运行时信息与程序的源代码进行比较来确定与程序缺陷相关的源代码;以及将所述源代码呈现给测试者。
下面以一个具体的示例应用场景来说明本发明的***的工作过程。在该应用场景中,测试者为了测试一门户应用的创建用户功能,试图通过门户创建一个用户,该用户的信息提交后,将被保存到数据库中。在测试之前,测试者已对该门户应用进行了插桩,将监视代码***到该门户应用的各检查点位置以及异常类的构造函数中。
在测试过程中,测试者打开门户,进入到创建用户的页面,输入用户信息,并提交。图3示出了在该具体示例应用场景中用于输入用户信息的用户界面。如图所示,在该用户界面中,测试者输入了用户名、角色、电子邮件地址、电话、移动电话、ID、公司、传真信息后,按保存按钮,以便将输入的信息保存在数据库中。其中,用户名为Edmond Dantus,其角色为Managers。
在测试者成功创建该用户帐户后,他在另一用户界面中发现用户的角色信息不对,并不是当初填入的信息。图4示出了在该具体示例应用场景中用于查看用户信息的用户界面,其中示出,用户Edmond Dantus的角色为edmond,这与如图2中所示的测试者的输入信息不一致。
测试者通过根据本发明的实施例的***获得并显示相关的调用栈信息,以及相应的源代码信息。图5示出了在该具体示例应用场景中用于显示所述调用栈信息和相应的源代码信息的用户界面,其中,图中的左侧为调用栈信息,右侧为相应的源代码信息。通过所呈现的调用栈信息和源代码信息,测试者可以很容易地定位发生错误的源代码位置。
此外,应指出的是,本发明提出的用于对异常的构造函数进行插装的方法和***不但可用于程序的功能验证测试,而且还可用于其他场合,以便收集程序运行过程中发生异常时的相关运行时信息。因此,在本发明的另一个方面,还提供了一种用于收集程序运行时信息的方法,包括:通过程序插桩将监视代码***到将运行的程序中的异常类的构造函数中;以及在程序的运行过程中,通过所述监视代码收集程序的运行时信息。并且,在本发明的又一个方面,还提供了一种用于收集程序运行时信息的***,包括:插桩模块,用于通过程序插桩将监视代码***到将运行的程序中的异常类的构造函数中;以及由所述监视代码实现的监视模块,用于在程序的运行过程中,收集程序的运行时信息。
本发明可以硬件、软件、或硬件与软件的结合的方式实现。本发明可以集中的方式在一个计算机***中实现,或以分布方式实现,在这种分布方式中,不同的部件分布在若干互连的计算机***中。适于执行本文中描述的方法的任何计算机***或其它装置都是合适的。一种典型的硬件和软件的组合可以是带有计算机程序的通用计算机***,当该计算机程序被加载和执行时,控制该计算机***而使其执行本发明的方法,并构成本发明的装置。
本发明也可体现在计算机程序产品中,该程序产品包含使能实现本文中描述的方法的所有特征,并且当其被加载到计算机***中时,能够执行所述方法。
尽管已参照优选实施例具体示出和说明了本发明,但是本领域内的那些技术人员应理解,可在形式和细节上对其进行各种改变而不会背离本发明的精神和范围。

Claims (14)

1.一种用于收集程序运行时信息的方法,包括:
通过程序插桩将监视代码***到将运行的程序中的异常类的构造函数中;以及
在程序的运行过程中,通过所述监视代码收集程序的运行时信息。
2.根据权利要求1的方法,还包括:
呈现所收集的运行时信息。
3.根据权利要求2的方法,该方法用于程序的功能验证测试,且还包括:
通过解析测试用例中的断言获得其中的检查点变量;
通过程序插桩将监视代码***到程序中访问所述检查点变量的位置。
4.根据权利要求3的方法,其中,呈现所收集的运行时信息包括:
响应于根据检查点变量的值判断断言失败,将程序在测试运行过程中访问该检查点的运行时信息以及检查点变量的值呈现给测试者。
5.根据权利要求1-4中任何一个的方法,其中,所述程序的运行时信息包括程序运行中的当前线程的调用栈信息。
6.根据权利要求1-4中任何一个的方法,其中,所述程序的运行时信息包括程序运行中的所有线程的调用栈信息。
7.根据权利要求1-4中任何一个的方法,还包括:
通过将所收集的运行时信息与程序的源代码进行比较来确定与程序缺陷相关的源代码;以及
呈现所述源代码。
8.一种用于收集程序运行时信息的***,包括:
插桩模块,用于通过程序插桩将监视代码***到将运行的程序中的异常类的构造函数中;以及
由所述监视代码实现的监视模块,用于在程序的运行过程中,收集程序的运行时信息。
9.根据权利要求8的***,还包括:
呈现模块,用于呈现所收集的运行时信息。
10.根据权利要求9的***,该***用于程序的功能验证测试,且还包括:
解析模块,用于通过解析测试用例中的断言获得其中的检查点变量;
且其中,所述插桩模块还用于将监视代码***到程序中访问所述检查点变量的位置。
11.根据权利要求10的***,其中,所述呈现模块用于:
响应于根据检查点变量的值判断断言失败,将程序在测试运行过程中访问该检查点的运行时信息以及检查点变量的值呈现给测试者。
12.根据权利要求8-11中任何一个的***,其中,所述程序的运行时信息包括程序运行中的当前线程的调用栈信息。
13.根据权利要求8-11中任何一个的***,其中,所述程序的运行时信息包括程序运行中的所有线程的调用栈信息。
14.根据权利要求8-11中任何一个的***,还包括:
比较模块,用于通过将所述与程序缺陷有关的运行时信息与程序的源代码进行比较来确定与程序缺陷相关的源代码;以及
所述呈现模块还用于呈现所述源代码。
CN200910211315XA 2009-10-30 2009-10-30 用于收集程序运行时信息的***和方法 Pending CN102053906A (zh)

Priority Applications (3)

Application Number Priority Date Filing Date Title
CN200910211315XA CN102053906A (zh) 2009-10-30 2009-10-30 用于收集程序运行时信息的***和方法
US12/913,635 US20110107307A1 (en) 2009-10-30 2010-10-27 Collecting Program Runtime Information
US13/413,181 US20120167054A1 (en) 2009-10-30 2012-03-06 Collecting Program Runtime Information

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910211315XA CN102053906A (zh) 2009-10-30 2009-10-30 用于收集程序运行时信息的***和方法

Publications (1)

Publication Number Publication Date
CN102053906A true CN102053906A (zh) 2011-05-11

Family

ID=43926765

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910211315XA Pending CN102053906A (zh) 2009-10-30 2009-10-30 用于收集程序运行时信息的***和方法

Country Status (2)

Country Link
US (2) US20110107307A1 (zh)
CN (1) CN102053906A (zh)

Cited By (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102243609A (zh) * 2011-06-15 2011-11-16 惠州运通信息技术有限公司 一种基于嵌入式软件的测试分析方法及***
CN102360289A (zh) * 2011-09-29 2012-02-22 用友软件股份有限公司 数据管理装置和数据管理方法
CN102521132A (zh) * 2011-12-14 2012-06-27 亿赞普(北京)科技有限公司 实时输出日志的自动化测试方法和***
CN103365775A (zh) * 2013-06-21 2013-10-23 北京大学 基于内部状态检查的单元测试方法
CN103577304A (zh) * 2012-08-10 2014-02-12 百度在线网络技术(北京)有限公司 一种代码动态分析的方法及装置
CN103793317A (zh) * 2012-10-26 2014-05-14 珠海市君天电子科技有限公司 一种跟踪Android程序行为的方法及***
CN103793209A (zh) * 2012-10-26 2014-05-14 珠海市君天电子科技有限公司 一种修改Android程序执行流程的方法及***
CN104102574A (zh) * 2013-04-07 2014-10-15 腾讯科技(深圳)有限公司 应用程序测试方法及装置
CN104915296A (zh) * 2015-06-29 2015-09-16 北京金山安全软件有限公司 埋点测试方法、数据的查询方法及装置
CN105278996A (zh) * 2015-11-03 2016-01-27 亚信科技(南京)有限公司 一种日志采集方法、装置及日志服务***
CN105631341A (zh) * 2015-12-18 2016-06-01 北京奇虎科技有限公司 一种漏洞盲测方法及装置
CN106294175A (zh) * 2016-08-19 2017-01-04 浪潮(北京)电子信息产业有限公司 一种程序执行行为可视化方法及***
CN106371991A (zh) * 2016-08-31 2017-02-01 重庆四联测控技术有限公司 一种程序故障的监控方法及***
CN106610881A (zh) * 2015-10-22 2017-05-03 阿里巴巴集团控股有限公司 提取程序无响应发生时函数栈的提取方法和装置
CN107038103A (zh) * 2017-04-14 2017-08-11 上海交通大学 基于字节码插桩的Android程序监控***及方法
CN107562426A (zh) * 2017-09-04 2018-01-09 清华大学 无埋点式云端收集分析浏览器Trace的方法及***
CN107679400A (zh) * 2017-08-31 2018-02-09 西安电子科技大学 基于源代码插桩的社交网络安全运行时验证方法及***
CN107894889A (zh) * 2017-10-16 2018-04-10 努比亚技术有限公司 埋点方法、设备及计算机可读存储介质
CN108491322A (zh) * 2018-03-06 2018-09-04 平安科技(深圳)有限公司 自动化测试方法、装置及存储介质
WO2018184420A1 (zh) * 2017-04-06 2018-10-11 平安科技(深圳)有限公司 软件测试方法、装置、电子设备及介质
CN109062784A (zh) * 2018-07-06 2018-12-21 北京大学 接口参数约束代码入口定位方法与***
CN109062785A (zh) * 2018-07-06 2018-12-21 北京大学 接口参数约束代码定位方法与***
CN109240700A (zh) * 2018-07-06 2019-01-18 北京大学 关键代码定位方法与***
CN110413345A (zh) * 2019-07-26 2019-11-05 云湾科技(嘉兴)有限公司 程序验证方法、装置、计算设备及计算机存储介质
CN110532036A (zh) * 2019-07-26 2019-12-03 云湾科技(嘉兴)有限公司 程序验证方法、装置、计算设备及计算机存储介质
CN111124937A (zh) * 2020-03-31 2020-05-08 深圳开源互联网安全技术有限公司 基于插桩函数辅助提高生成测试用例效率的方法及***
CN111274143A (zh) * 2020-01-20 2020-06-12 北京字节跳动网络技术有限公司 埋点测试方法、装置、设备及存储介质
CN111737158A (zh) * 2020-08-25 2020-10-02 开立生物医疗科技(武汉)有限公司 一种异常断言的处理方法、装置、电子设备及存储介质
CN111865910A (zh) * 2020-06-09 2020-10-30 北京邮电大学 一种针对应用恶意代码检测与定位的方法
CN112612697A (zh) * 2020-12-17 2021-04-06 航天信息股份有限公司 一种基于字节码技术的软件缺陷测试定位方法及***
CN113742201A (zh) * 2020-05-29 2021-12-03 中国电信股份有限公司 基于灰盒测试的软件缺陷检测方法和***
WO2021244088A1 (zh) * 2020-06-04 2021-12-09 中兴通讯股份有限公司 程序控制方法、装置、计算机设备及存储介质
CN115017015A (zh) * 2022-08-04 2022-09-06 北京航空航天大学 一种边缘计算环境下程序异常行为检测方法及***

Families Citing this family (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102486731B (zh) * 2009-11-30 2015-12-09 国际商业机器公司 增强软件的软件调用栈的可视化的方法、设备和***
US8745598B2 (en) * 2010-12-14 2014-06-03 Bmc Software, Inc. Running injected code prior to execution of an application
US9710356B2 (en) * 2011-09-19 2017-07-18 International Business Machines Corporation Assertions in a business rule management system
CN103034583B (zh) 2011-09-30 2016-03-30 国际商业机器公司 一种用于处理软件自动测试脚本的方法和***
US9053227B2 (en) * 2012-03-09 2015-06-09 Microsoft Technology Licensing, Llc Concurrent assertion
US8869287B2 (en) * 2012-12-31 2014-10-21 International Business Machines Corporation Hybrid analysis of vulnerable information flows
US8954546B2 (en) * 2013-01-25 2015-02-10 Concurix Corporation Tracing with a workload distributor
US9092564B2 (en) * 2013-02-15 2015-07-28 Microsoft Technology Licensing, Llc Call stacks for asynchronous programs
US9052980B2 (en) * 2013-02-20 2015-06-09 Bmc Software, Inc. Exception based quality assessment
KR101669783B1 (ko) * 2013-03-13 2016-11-09 인텔 코포레이션 성능 및 정확도에 대한 멀티 스레드 소프트웨어 프로그램들의 레코딩된 실행들의 시각화
US10664384B2 (en) 2013-03-15 2020-05-26 Microsoft Technology Licensing, Llc Javascript debugging using just my code
CN104281518B (zh) * 2013-07-02 2018-05-15 腾讯科技(深圳)有限公司 终端应用测试方法、装置、***、平台及移动终端
IN2013DE02948A (zh) * 2013-10-04 2015-04-10 Unisys Corp
US9652353B2 (en) 2013-10-15 2017-05-16 Oracle International Corporation Monitoring business transaction failures involving database procedure calls
US10255158B2 (en) * 2013-10-15 2019-04-09 Oracle International Corporation Monitoring and diagnostics of business transaction failures
US9552221B1 (en) * 2013-12-23 2017-01-24 Google Inc. Monitoring application execution using probe and profiling modules to collect timing and dependency information
US9239774B2 (en) * 2014-01-15 2016-01-19 Microsoft Technology Licensing, Llc Classification of JavaScript code for debugging using just my code
US9424163B2 (en) * 2014-01-15 2016-08-23 Microsoft Technology Licensing, Llc Exception and debugging behaviors for JavaScript debugging using just my code
CN104899016B (zh) * 2014-03-07 2018-10-09 腾讯科技(深圳)有限公司 调用堆栈关系获取方法及装置
US9646257B2 (en) * 2014-09-03 2017-05-09 Microsoft Technology Licensing, Llc Probabilistic assertions and verifying them
US10089217B2 (en) * 2014-09-23 2018-10-02 Red Hat, Inc. Identification of software test cases
CN104317723B (zh) * 2014-11-14 2017-02-22 清华大学 一种驱动程序运行信息的跟踪方法及***
CN104375941B (zh) * 2014-12-11 2017-09-22 无锡江南计算技术研究所 可执行程序测试用例集二进制代码覆盖率自动化评估方法
US9582312B1 (en) * 2015-02-04 2017-02-28 Amazon Technologies, Inc. Execution context trace for asynchronous tasks
US9516055B1 (en) 2015-05-29 2016-12-06 Trend Micro Incorporated Automatic malware signature extraction from runtime information
US10037265B2 (en) 2015-08-04 2018-07-31 International Business Machines Corporation Enhancing the debugger stack with recently reported errors under debug
CN105608000B (zh) * 2015-12-16 2019-05-31 北京奇虎科技有限公司 获取代码覆盖率数据的方法及装置
CN107122289B (zh) * 2016-02-25 2021-01-15 创新先进技术有限公司 ***回归测试的方法、装置及***
CN106294149A (zh) * 2016-08-09 2017-01-04 北京邮电大学 一种检测Android应用程序组件通信漏洞的方法
CN106250292B (zh) * 2016-08-11 2018-06-08 上海泛微网络科技股份有限公司 一种办公管理***性能监控平台
US10042739B2 (en) * 2016-09-29 2018-08-07 International Business Machines Corporation Real-time analytics of machine generated instrumentation data
US10248534B2 (en) * 2016-11-29 2019-04-02 International Business Machines Corporation Template-based methodology for validating hardware features
US10169197B2 (en) 2017-01-24 2019-01-01 International Business Machines Corporation Temporary breakpoints during debug process
US10261887B1 (en) * 2017-04-26 2019-04-16 Cadence Design Systems, Inc. Method and system for computerized debugging assertions
US10505822B2 (en) * 2018-02-26 2019-12-10 Servicenow, Inc. Interactive software renormalization
CN108873735B (zh) * 2018-06-29 2021-11-19 许继集团有限公司 一种配电主站***组件仿真测试装置及方法
US10824532B2 (en) * 2018-10-16 2020-11-03 Sap Se Dump analysis generation
US10761961B2 (en) * 2018-12-21 2020-09-01 Fujitsu Limited Identification of software program fault locations
CN113051122B (zh) * 2019-12-26 2023-09-15 百度在线网络技术(北京)有限公司 性能数据获取方法、装置、电子设备和介质
US11722558B2 (en) * 2021-02-23 2023-08-08 Seagate Technology Llc Server-side resource monitoring in a distributed data storage environment
US11907108B2 (en) * 2022-01-05 2024-02-20 International Business Machines Corporation Generating workloads for system verification

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1564137A (zh) * 2004-04-09 2005-01-12 中兴通讯股份有限公司 一种嵌入式***多任务并发调试的方法
US20050039187A1 (en) * 2003-08-12 2005-02-17 Avakian Arra E. Instrumenting java code by modifying bytecodes
US20080147853A1 (en) * 1995-06-02 2008-06-19 Anderson Mark D Remote monitoring of computer programs
CN101561778A (zh) * 2008-04-15 2009-10-21 中兴通讯股份有限公司 一种检测多任务操作***任务死循环的方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080147853A1 (en) * 1995-06-02 2008-06-19 Anderson Mark D Remote monitoring of computer programs
US20050039187A1 (en) * 2003-08-12 2005-02-17 Avakian Arra E. Instrumenting java code by modifying bytecodes
CN1564137A (zh) * 2004-04-09 2005-01-12 中兴通讯股份有限公司 一种嵌入式***多任务并发调试的方法
CN101561778A (zh) * 2008-04-15 2009-10-21 中兴通讯股份有限公司 一种检测多任务操作***任务死循环的方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
B.J.CHOI等: "The Mothra Tool Set", 《SYSTEM SCIENCES》 *

Cited By (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102243609A (zh) * 2011-06-15 2011-11-16 惠州运通信息技术有限公司 一种基于嵌入式软件的测试分析方法及***
CN102360289A (zh) * 2011-09-29 2012-02-22 用友软件股份有限公司 数据管理装置和数据管理方法
CN102360289B (zh) * 2011-09-29 2013-11-27 用友软件股份有限公司 数据管理装置和数据管理方法
CN102521132A (zh) * 2011-12-14 2012-06-27 亿赞普(北京)科技有限公司 实时输出日志的自动化测试方法和***
CN103577304B (zh) * 2012-08-10 2018-11-09 百度在线网络技术(北京)有限公司 一种代码动态分析的方法及装置
CN103577304A (zh) * 2012-08-10 2014-02-12 百度在线网络技术(北京)有限公司 一种代码动态分析的方法及装置
CN103793317A (zh) * 2012-10-26 2014-05-14 珠海市君天电子科技有限公司 一种跟踪Android程序行为的方法及***
CN103793209A (zh) * 2012-10-26 2014-05-14 珠海市君天电子科技有限公司 一种修改Android程序执行流程的方法及***
CN103793317B (zh) * 2012-10-26 2017-08-11 珠海市君天电子科技有限公司 一种跟踪Android程序行为的方法及***
CN104102574A (zh) * 2013-04-07 2014-10-15 腾讯科技(深圳)有限公司 应用程序测试方法及装置
CN104102574B (zh) * 2013-04-07 2017-12-26 腾讯科技(深圳)有限公司 应用程序测试方法及装置
CN103365775A (zh) * 2013-06-21 2013-10-23 北京大学 基于内部状态检查的单元测试方法
CN103365775B (zh) * 2013-06-21 2016-04-06 北京大学 基于内部状态检查的单元测试方法
CN104915296B (zh) * 2015-06-29 2018-07-10 北京金山安全软件有限公司 埋点测试方法、数据的查询方法及装置
CN104915296A (zh) * 2015-06-29 2015-09-16 北京金山安全软件有限公司 埋点测试方法、数据的查询方法及装置
CN106610881A (zh) * 2015-10-22 2017-05-03 阿里巴巴集团控股有限公司 提取程序无响应发生时函数栈的提取方法和装置
CN105278996A (zh) * 2015-11-03 2016-01-27 亚信科技(南京)有限公司 一种日志采集方法、装置及日志服务***
CN105631341A (zh) * 2015-12-18 2016-06-01 北京奇虎科技有限公司 一种漏洞盲测方法及装置
CN105631341B (zh) * 2015-12-18 2020-01-21 北京奇虎科技有限公司 一种漏洞盲测方法及装置
CN106294175A (zh) * 2016-08-19 2017-01-04 浪潮(北京)电子信息产业有限公司 一种程序执行行为可视化方法及***
CN106371991A (zh) * 2016-08-31 2017-02-01 重庆四联测控技术有限公司 一种程序故障的监控方法及***
WO2018184420A1 (zh) * 2017-04-06 2018-10-11 平安科技(深圳)有限公司 软件测试方法、装置、电子设备及介质
CN107038103A (zh) * 2017-04-14 2017-08-11 上海交通大学 基于字节码插桩的Android程序监控***及方法
CN107679400B (zh) * 2017-08-31 2020-09-25 西安电子科技大学 基于源代码插桩的社交网络安全运行时验证方法及***
CN107679400A (zh) * 2017-08-31 2018-02-09 西安电子科技大学 基于源代码插桩的社交网络安全运行时验证方法及***
CN107562426A (zh) * 2017-09-04 2018-01-09 清华大学 无埋点式云端收集分析浏览器Trace的方法及***
CN107562426B (zh) * 2017-09-04 2020-01-10 清华大学 无埋点式云端收集分析浏览器Trace的方法及***
CN107894889A (zh) * 2017-10-16 2018-04-10 努比亚技术有限公司 埋点方法、设备及计算机可读存储介质
WO2019169761A1 (zh) * 2018-03-06 2019-09-12 平安科技(深圳)有限公司 自动化测试方法、装置及存储介质
CN108491322A (zh) * 2018-03-06 2018-09-04 平安科技(深圳)有限公司 自动化测试方法、装置及存储介质
CN109062784A (zh) * 2018-07-06 2018-12-21 北京大学 接口参数约束代码入口定位方法与***
CN109062785A (zh) * 2018-07-06 2018-12-21 北京大学 接口参数约束代码定位方法与***
CN109240700A (zh) * 2018-07-06 2019-01-18 北京大学 关键代码定位方法与***
CN109062784B (zh) * 2018-07-06 2021-04-27 北京大学 接口参数约束代码入口定位方法与***
CN109240700B (zh) * 2018-07-06 2021-04-23 北京大学 关键代码定位方法与***
CN110413345A (zh) * 2019-07-26 2019-11-05 云湾科技(嘉兴)有限公司 程序验证方法、装置、计算设备及计算机存储介质
CN110532036A (zh) * 2019-07-26 2019-12-03 云湾科技(嘉兴)有限公司 程序验证方法、装置、计算设备及计算机存储介质
CN111274143A (zh) * 2020-01-20 2020-06-12 北京字节跳动网络技术有限公司 埋点测试方法、装置、设备及存储介质
CN111124937A (zh) * 2020-03-31 2020-05-08 深圳开源互联网安全技术有限公司 基于插桩函数辅助提高生成测试用例效率的方法及***
CN113742201A (zh) * 2020-05-29 2021-12-03 中国电信股份有限公司 基于灰盒测试的软件缺陷检测方法和***
WO2021244088A1 (zh) * 2020-06-04 2021-12-09 中兴通讯股份有限公司 程序控制方法、装置、计算机设备及存储介质
CN111865910A (zh) * 2020-06-09 2020-10-30 北京邮电大学 一种针对应用恶意代码检测与定位的方法
CN111737158A (zh) * 2020-08-25 2020-10-02 开立生物医疗科技(武汉)有限公司 一种异常断言的处理方法、装置、电子设备及存储介质
CN112612697A (zh) * 2020-12-17 2021-04-06 航天信息股份有限公司 一种基于字节码技术的软件缺陷测试定位方法及***
CN115017015A (zh) * 2022-08-04 2022-09-06 北京航空航天大学 一种边缘计算环境下程序异常行为检测方法及***
CN115017015B (zh) * 2022-08-04 2023-01-03 北京航空航天大学 一种边缘计算环境下程序异常行为检测方法及***

Also Published As

Publication number Publication date
US20110107307A1 (en) 2011-05-05
US20120167054A1 (en) 2012-06-28

Similar Documents

Publication Publication Date Title
CN102053906A (zh) 用于收集程序运行时信息的***和方法
Gyimesi et al. Bugsjs: a benchmark of javascript bugs
Jin et al. Automated behavioral regression testing
US7503037B2 (en) System and method for identifying bugs in software source code, using information from code coverage tools and source control tools to determine bugs introduced within a time or edit interval
Negara et al. Is it dangerous to use version control histories to study source code evolution?
US9448916B2 (en) Software test automation systems and methods
Xu et al. POD-Diagnosis: Error diagnosis of sporadic operations on cloud applications
Tahir et al. A systematic mapping study on dynamic metrics and software quality
Le Goues et al. Specification mining with few false positives
CN101706749B (zh) 基于软件安全缺陷检测的综合处理方法
CN113010413B (zh) 一种接口自动化测试方法和装置
Strandberg et al. Intermittently failing tests in the embedded systems domain
KR102269286B1 (ko) 어노테이션 자동 진단 시스템
Reichhart et al. Rule-based Assessment of Test Quality.
CN111752833A (zh) 一种软件质量体系准出方法、装置、服务器及存储介质
CN112612697A (zh) 一种基于字节码技术的软件缺陷测试定位方法及***
Paul End-to-end integration testing
Suganya et al. A study of object oriented testing techniques: Survey and challenges
CN116541270A (zh) 一种操作***的适配验证测试方法及装置
Vierhauser et al. Evolving systems of systems: Industrial challenges and research perspectives
Jiang et al. On the accuracy of forward dynamic slicing and its effects on software maintenance
Khorram et al. From coverage computation to fault localization: A generic framework for domain-specific languages
Ciancarini et al. Mining concurrency bugs
Vincent et al. Regression Testing of Object-Oriented Software: Towards a Hybrid
Gao et al. Which of my failures are real? Using relevance ranking to raise true failures to the top

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20110511