Receiver Object

14,000,000 Leading Edge Experts on the ideXlab platform

Scan Science and Technology

Contact Leading Edge Experts & Companies

Scan Science and Technology

Contact Leading Edge Experts & Companies

The Experts below are selected from a list of 108 Experts worldwide ranked by ideXlab platform

Tao Xie - One of the best experts on this subject based on the ideXlab platform.

  • ESEC/SIGSOFT FSE - MSeqGen: Object-oriented unit-test generation via mining source code
    Proceedings of the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engi, 2009
    Co-Authors: Suresh Thummalapenta, Tao Xie, Nikolai Tillmann, Jonathan De Halleux, Wolfram Schulte
    Abstract:

    An Objective of unit testing is to achieve high structural coverage of the code under test. Achieving high structural overage of Object-oriented code requires desirable method-call sequences that create and mutate Objects. These sequences help generate target Object states such as argument or Receiver Object states (in short as target states) of a method under test. Automatic generation of sequences for achieving target states is often challenging due to a large search space of possible sequences. On the other hand, code bases using Object types (such as Receiver or argument Object types) include sequences that can be used to assist automatic test-generation approaches in achieving target states. In this paper, we propose a novel approach, called MSeqGen, that mines code bases and extracts sequences related to Receiver or argument Object types of a method under test. Our approach uses these extracted sequences to enhance two state-of-the-art test-generation approaches: random testing and dynamic symbolic execution. We conduct two evaluations to show the effectiveness of our approach. Using sequences extracted by our approach, we show that a random testing approach achieves 8.7% (with a maximum of 20.0% for one namespace) higher branch coverage and a dynamic-symbolic-execution-based approach achieves 17.4% (with a maximum of 22.5% for one namespace) higher branch coverage than without using our approach. Such an improvement is significant as the branches that are not covered by these state-of-the-art approaches are generally quite difficult to cover.

  • ASE - Improving Structural Testing of Object-Oriented Programs via Integrating Evolutionary Testing and Symbolic Execution
    2008 23rd IEEE ACM International Conference on Automated Software Engineering, 2008
    Co-Authors: Kobi Inkumsah, Tao Xie
    Abstract:

    Achieving high structural coverage such as branch coverage in Object-oriented programs is an important and yet challenging goal due to two main challenges. First, some branches involve complex program logics and generating tests to cover them requires deep knowledge of the program structure and semantics. Second, covering some branches requires special method sequences to lead the Receiver Object or non-primitive arguments to specific desirable states. Previous work has developed the symbolic execution technique and the evolutionary testing technique to address these two challenges, respectively. However, neither technique was designed to address both challenges at the same time. To address the respective weaknesses of these two previous techniques, we propose a novel framework called Evacon that integrates evolutionary testing (used to search for desirable method sequences) and symbolic execution (used to generate desirable method arguments). We have implemented our framework and applied it to test 13 classes previously used in evaluating white-box test generation tools. The experimental results show that the tests generated using our framework can achieve higher branch coverage than the ones generated by evolutionary testing, symbolic execution, or random testing within the same amount of time.

  • ASE - Evacon: a framework for integrating evolutionary and concolic testing for Object-oriented programs
    Proceedings of the twenty-second IEEE ACM international conference on Automated software engineering - ASE '07, 2007
    Co-Authors: Kobi Inkumsah, Tao Xie
    Abstract:

    Achieving high structural coverage such as branch coverage in Object oriented programs is an important and yet challenging goal due to two main challenges. First, some branches involve complex program logics and generating tests to cover them requires deep knowledge of the program structure and semantics. Second, covering some branches requires special method sequences to lead the Receiver Object or non-primitive arguments to specific desirable states. Previous work has developed the concolic testing technique (a combination of concrete and symbolic testing techniques) and the evolutionary testing technique to address these two challenges, respectively. However, neither technique was designed to address both challenges at the same time. To address the respective weaknesses of these two previous techniques, we propose a novel framework called Evacon that integrates evolutionary testing (used to search for desirable method sequences) and concolic testing (used to generate desirable method arguments). We have implemented our framework and applied it on six classes taken from the Java standard library and basic data structures. The experimental results show that the tests generated using our framework can achieve higher branch coverage than evolutionary testing or concolic testing alone

  • TACAS - Symstra: a framework for generating Object-oriented unit tests using symbolic execution
    Tools and Algorithms for the Construction and Analysis of Systems, 2005
    Co-Authors: Tao Xie, Darko Marinov, Wolfram Schulte, David Notkin
    Abstract:

    Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the method's arguments and the state of the Receiver at the beginning of the invocation. Correspondingly, generating unit tests involves two tasks: generating method sequences that build relevant Receiver-Object states and generating relevant method arguments. This paper proposes Symstra, a framework that achieves both test generation tasks using symbolic execution of method sequences with symbolic arguments. The paper defines symbolic states of Object-oriented programs and novel comparisons of states. Given a set of methods from the class under test and a bound on the length of sequences, Symstra systematically explores the Object-state space of the class and prunes this exploration based on the state comparisons. Experimental results show that Symstra generates unit tests that achieve higher branch coverage faster than the existing test-generation techniques based on concrete method arguments.

  • ASE - Rostra: a framework for detecting redundant Object-oriented unit tests
    2004
    Co-Authors: Tao Xie, David Notkin, Darko Marinov
    Abstract:

    Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the state of the Receiver Object and method arguments at the beginning of the invocation. Existing tools for automatic generation of Object-oriented test suites, such as Jtest and J Crasher for Java, typically ignore this state and thus generate redundant tests that exercise the same method behavior, which increases the testing time without increasing the ability to detect faults. This work proposes Rostra, a framework for detecting redundant unit tests, and presents five fully automatic techniques within this framework. We use Rostra to assess and minimize test suites generated by test-generation tools. We also present how Rostra can be added to these tools to avoid generation of redundant tests. We have implemented the five Rostra techniques and evaluated them on 11 subjects taken from a variety of sources. The experimental results show that Jtest and JCrasher generate a high percentage of redundant tests and that Rostra can remove these redundant tests without decreasing the quality of test suites.

David Notkin - One of the best experts on this subject based on the ideXlab platform.

  • TACAS - Symstra: a framework for generating Object-oriented unit tests using symbolic execution
    Tools and Algorithms for the Construction and Analysis of Systems, 2005
    Co-Authors: Tao Xie, Darko Marinov, Wolfram Schulte, David Notkin
    Abstract:

    Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the method's arguments and the state of the Receiver at the beginning of the invocation. Correspondingly, generating unit tests involves two tasks: generating method sequences that build relevant Receiver-Object states and generating relevant method arguments. This paper proposes Symstra, a framework that achieves both test generation tasks using symbolic execution of method sequences with symbolic arguments. The paper defines symbolic states of Object-oriented programs and novel comparisons of states. Given a set of methods from the class under test and a bound on the length of sequences, Symstra systematically explores the Object-state space of the class and prunes this exploration based on the state comparisons. Experimental results show that Symstra generates unit tests that achieve higher branch coverage faster than the existing test-generation techniques based on concrete method arguments.

  • ASE - Rostra: a framework for detecting redundant Object-oriented unit tests
    2004
    Co-Authors: Tao Xie, David Notkin, Darko Marinov
    Abstract:

    Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the state of the Receiver Object and method arguments at the beginning of the invocation. Existing tools for automatic generation of Object-oriented test suites, such as Jtest and J Crasher for Java, typically ignore this state and thus generate redundant tests that exercise the same method behavior, which increases the testing time without increasing the ability to detect faults. This work proposes Rostra, a framework for detecting redundant unit tests, and presents five fully automatic techniques within this framework. We use Rostra to assess and minimize test suites generated by test-generation tools. We also present how Rostra can be added to these tools to avoid generation of redundant tests. We have implemented the five Rostra techniques and evaluated them on 11 subjects taken from a variety of sources. The experimental results show that Jtest and JCrasher generate a high percentage of redundant tests and that Rostra can remove these redundant tests without decreasing the quality of test suites.

  • Improving Generation of Object-Oriented Test Suites by Avoiding Redundant Tests
    2004
    Co-Authors: Tao Xie, Darko Marinov, David Notkin
    Abstract:

    Object-oriented tests consist of sequences of method invocations. Behavior of an invocation depends on the state of the Receiver Object and method arguments at the beginning of the invocation. Existing tools for automatic generation of Object-oriented test suites, such as Jtest and JCrasher for Java, typically ignore Object states. These tools generate redundant tests that exercise the same method behavior, which increases the testing time without increasing the ability to detect faults. We propose a formal framework for detecting redundant tests and present five fully automatic techniques within this framework. Based on these techniques, we have developed a test-minimization tool that removes redundant tests from test suites and a test-generation tool that iteratively augments test suites with non-redundant tests. We evaluate our tools on eight subjects taken from a variety of sources. The experimental results show that our test minimization can remove over 90% of the tests generated by Jtest for most subjects and 30% of the tests generated by JCrasher for half of the subjects, without decreasing the quality of test suites. The results also show that our test generation can effectively generate new tests that increase the quality of test suites generated by Jtest and JCrasher.

Wolfram Schulte - One of the best experts on this subject based on the ideXlab platform.

  • ESEC/SIGSOFT FSE - MSeqGen: Object-oriented unit-test generation via mining source code
    Proceedings of the 7th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engi, 2009
    Co-Authors: Suresh Thummalapenta, Tao Xie, Nikolai Tillmann, Jonathan De Halleux, Wolfram Schulte
    Abstract:

    An Objective of unit testing is to achieve high structural coverage of the code under test. Achieving high structural overage of Object-oriented code requires desirable method-call sequences that create and mutate Objects. These sequences help generate target Object states such as argument or Receiver Object states (in short as target states) of a method under test. Automatic generation of sequences for achieving target states is often challenging due to a large search space of possible sequences. On the other hand, code bases using Object types (such as Receiver or argument Object types) include sequences that can be used to assist automatic test-generation approaches in achieving target states. In this paper, we propose a novel approach, called MSeqGen, that mines code bases and extracts sequences related to Receiver or argument Object types of a method under test. Our approach uses these extracted sequences to enhance two state-of-the-art test-generation approaches: random testing and dynamic symbolic execution. We conduct two evaluations to show the effectiveness of our approach. Using sequences extracted by our approach, we show that a random testing approach achieves 8.7% (with a maximum of 20.0% for one namespace) higher branch coverage and a dynamic-symbolic-execution-based approach achieves 17.4% (with a maximum of 22.5% for one namespace) higher branch coverage than without using our approach. Such an improvement is significant as the branches that are not covered by these state-of-the-art approaches are generally quite difficult to cover.

  • A Static Analysis to Detect Re-Entrancy in Object Oriented Programs
    The Journal of Object Technology, 2008
    Co-Authors: Manuel Fähndrich, Diego Garbervetsky, Wolfram Schulte
    Abstract:

    We are interested in Object-oriented programming methodologies that enable static verification of Object-invariants. Reasoning soundly and effectively about the consistency of Objects is still one of the main stumbling blocks to pushing Object-oriented program verification into the mainstream. More precisely, any sound methodology must be able to guarantee that the invariant of the Receiver Object holds at all method call sites. Establishing this proof obligation is tedious, and instead programmers would like to reason informally as follows: methods should be able to assume that the Object invariant holds on entry, as long as all constructors establish it, and all methods guarantee that the Receiver invariant holds on exit. This reasoning is only correct under certain conditions. In this paper we present sufficient conditions that make reasoning as above sound and show how these conditions can be checked separately, allowing us to divide the verification problem into two well-defined parts: 1) reasoning about Object consistency of the Receiver within a single method, and 2) reasoning about the absence of inconsistent re-entrant calls. In particular, when reasoning about the Object consistency of the Receiver within a method, our approach does not require proving invariants on other Objects whose methods are called. We present a novel whole program analysis to determine the absence of inconsistent re-entrant calls. It warns developers when re-entrant calls are made on Objects whose invariants may not hold. The analysis augments a points-to analysis to compute potential call chains in order to detect re-entrant calls.

  • TACAS - Symstra: a framework for generating Object-oriented unit tests using symbolic execution
    Tools and Algorithms for the Construction and Analysis of Systems, 2005
    Co-Authors: Tao Xie, Darko Marinov, Wolfram Schulte, David Notkin
    Abstract:

    Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the method's arguments and the state of the Receiver at the beginning of the invocation. Correspondingly, generating unit tests involves two tasks: generating method sequences that build relevant Receiver-Object states and generating relevant method arguments. This paper proposes Symstra, a framework that achieves both test generation tasks using symbolic execution of method sequences with symbolic arguments. The paper defines symbolic states of Object-oriented programs and novel comparisons of states. Given a set of methods from the class under test and a bound on the length of sequences, Symstra systematically explores the Object-state space of the class and prunes this exploration based on the state comparisons. Experimental results show that Symstra generates unit tests that achieve higher branch coverage faster than the existing test-generation techniques based on concrete method arguments.

Darko Marinov - One of the best experts on this subject based on the ideXlab platform.

  • TACAS - Symstra: a framework for generating Object-oriented unit tests using symbolic execution
    Tools and Algorithms for the Construction and Analysis of Systems, 2005
    Co-Authors: Tao Xie, Darko Marinov, Wolfram Schulte, David Notkin
    Abstract:

    Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the method's arguments and the state of the Receiver at the beginning of the invocation. Correspondingly, generating unit tests involves two tasks: generating method sequences that build relevant Receiver-Object states and generating relevant method arguments. This paper proposes Symstra, a framework that achieves both test generation tasks using symbolic execution of method sequences with symbolic arguments. The paper defines symbolic states of Object-oriented programs and novel comparisons of states. Given a set of methods from the class under test and a bound on the length of sequences, Symstra systematically explores the Object-state space of the class and prunes this exploration based on the state comparisons. Experimental results show that Symstra generates unit tests that achieve higher branch coverage faster than the existing test-generation techniques based on concrete method arguments.

  • ASE - Rostra: a framework for detecting redundant Object-oriented unit tests
    2004
    Co-Authors: Tao Xie, David Notkin, Darko Marinov
    Abstract:

    Object-oriented unit tests consist of sequences of method invocations. Behavior of an invocation depends on the state of the Receiver Object and method arguments at the beginning of the invocation. Existing tools for automatic generation of Object-oriented test suites, such as Jtest and J Crasher for Java, typically ignore this state and thus generate redundant tests that exercise the same method behavior, which increases the testing time without increasing the ability to detect faults. This work proposes Rostra, a framework for detecting redundant unit tests, and presents five fully automatic techniques within this framework. We use Rostra to assess and minimize test suites generated by test-generation tools. We also present how Rostra can be added to these tools to avoid generation of redundant tests. We have implemented the five Rostra techniques and evaluated them on 11 subjects taken from a variety of sources. The experimental results show that Jtest and JCrasher generate a high percentage of redundant tests and that Rostra can remove these redundant tests without decreasing the quality of test suites.

  • Improving Generation of Object-Oriented Test Suites by Avoiding Redundant Tests
    2004
    Co-Authors: Tao Xie, Darko Marinov, David Notkin
    Abstract:

    Object-oriented tests consist of sequences of method invocations. Behavior of an invocation depends on the state of the Receiver Object and method arguments at the beginning of the invocation. Existing tools for automatic generation of Object-oriented test suites, such as Jtest and JCrasher for Java, typically ignore Object states. These tools generate redundant tests that exercise the same method behavior, which increases the testing time without increasing the ability to detect faults. We propose a formal framework for detecting redundant tests and present five fully automatic techniques within this framework. Based on these techniques, we have developed a test-minimization tool that removes redundant tests from test suites and a test-generation tool that iteratively augments test suites with non-redundant tests. We evaluate our tools on eight subjects taken from a variety of sources. The experimental results show that our test minimization can remove over 90% of the tests generated by Jtest for most subjects and 30% of the tests generated by JCrasher for half of the subjects, without decreasing the quality of test suites. The results also show that our test generation can effectively generate new tests that increase the quality of test suites generated by Jtest and JCrasher.

Matthew B. Dwyer - One of the best experts on this subject based on the ideXlab platform.

  • ASE - Increasing Test Granularity by Aggregating Unit Tests
    2008 23rd IEEE ACM International Conference on Automated Software Engineering, 2008
    Co-Authors: Matthew Jorde, Sebastian Elbaum, Matthew B. Dwyer
    Abstract:

    Unit tests are focused, efficient, and there are many techniques to support their automatic generation. Coarser granularity tests, however, are necessary to validate the behavior of larger software components, and are also likely to be more robust in the presence of program changes. This paper investigates whether coarser granularity tests can be automatically generated by aggregating unit tests. We leverage our Differential Unit Test (DUT) framework to represent unit tests, define a space of potential aggregations of those unit tests, and implement a strategy to traverse that space to generate Aggregated DUTs (A- DUTs) that validate the effects of multiple method calls on a (set of) Receiver Object(s). An empirical study of A-DUTs on two applications shows their tradeoffs with DUTs and their potential to increase the number of versions for which tests remain usable relative to method level tests.