Patents by Inventor Wolfram Schulte

Wolfram Schulte has filed for patents to protect the following inventions. This listing includes patent applications that are pending as well as patents that have already been granted by the United States Patent and Trademark Office (USPTO).

  • Publication number: 20070157169
    Abstract: The technology contributes the inference of formal specifications automatically, which can increase the acceptance of specifications. The technology introduces the symbolic execution of a modifier method to explore its behavior and then summarizing the results of the exploration using observer methods. This often results in concise, understandable specifications, which are a prerequisite for human analysis. Optionally, a generated specification is deemed sound and or complete. The specifications are presented as traditional pre-/post-condition specifications or parameterized unit tests. The former often serve as inputs to a program verification system, whereas the latter often provide inputs for tools that generate test cases.
    Type: Application
    Filed: December 30, 2005
    Publication date: July 5, 2007
    Applicant: Microsoft Corporation
    Inventors: Feng Chen, Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Patent number: 7216338
    Abstract: To perform conformance checking of a software implementation with a (possibly non-deterministic) specification, a software implementation and a software specification are applied to produce a CT enabled implementation. Nondeterministic choices of the software specification result in assigning a corresponding choice of the CT enabled implementation to a variable. The CT enabled implementation includes a test that the variable then comprises one of the nondeterministic choices of the software specification. To perform conformance testing where the software specification includes ordered steps, and calls to methods of other classes (mandatory calls), a software object is produced and organized such that each step of the software specification has a corresponding code section in the software object.
    Type: Grant
    Filed: February 20, 2002
    Date of Patent: May 8, 2007
    Assignee: Microsoft Corporation
    Inventors: Michael Barnett, Wolfram Schulte
  • Publication number: 20070033443
    Abstract: A computer system provides a test program and one or more unit tests, such as a traditional unit test and or a parameterized unit test. The system also includes a constraint solver, a theorem prover, an implementation under test, a symbolic executor, a generalizor, and generated test cases. The generalizor receives a traditional unit tests as input, and modifies the traditional unit test into a parameterized unit test. The modification includes replacing plural concrete values in the traditional unit test with symbols, and exporting the symbols into a signature of the parameterized unit test. A symbolic executor identifies constraints while symbolically executing the created parameterized unit test of the implementation under test. A constraint solver and or theorem prover generates a set of test cases by solving for values that satisfy the series of constraints. The test program executes the automatically generated test cases.
    Type: Application
    Filed: December 30, 2005
    Publication date: February 8, 2007
    Applicant: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Publication number: 20070033440
    Abstract: Separation of parameterized unit tests from specific test cases supports many benefits including automated test case generation. Symbolic execution assigns symbolic input variables to parameters of a parameterized unit test. Path constraints of an implementation under test (IUT) are identified during symbolic execution. A constraint solver automatically generates test cases by determining the test inputs that satisfy one of more paths, each described by constraints, through the IUT. Parameterized unit tests are used to populate behavioral summaries. Behavioral summaries are used later in future symbolic executions to emulate summarized methods. An intensional heap is provided to represent state changes performed by summarized methods. The extensional heap is used to explicitly update memory locations, e.g. object fields or array elements.
    Type: Application
    Filed: August 4, 2005
    Publication date: February 8, 2007
    Applicant: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Publication number: 20070033576
    Abstract: Symbolic execution identifies possible execution paths of a computer program or method, each having certain constraints over the input values. The symbolic execution also records updates of memory locations, e.g. updates of the fields of symbolic objects in the heap of an object oriented program, involving a description of the previous heap, the updated symbolic object, a field identification, and a newly assigned symbolic value. The symbolic execution can also record calls to summarized methods, involving a description of previous calls, an identification of the summarized methods, and its symbolic arguments. The behavior of summarized methods can be expressed by axioms. Axioms describe the relationship between summarized methods under certain conditions. Axioms can be generated from parameterized unit tests. A parameterized unit test is a method with parameters which executes a sequence of calls to methods of an implementation under test; it asserts constraints over the inputs and outputs of the calls.
    Type: Application
    Filed: August 4, 2005
    Publication date: February 8, 2007
    Applicant: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Publication number: 20070033442
    Abstract: A system for testing programs using a digital processor and programs in computer memory. A mock behavior generator identifies an interface indicated for mock behavior. The interface is identified as an input parameter of a parameterized unit test. The mock behavior generator creates a symbolic object with stubs to receive calls and mock behavior that returns symbolic values upon receiving a call to the stub. A symbolic executor, symbolically executes the parameterized unit test to obtain path constraints for an implementation under test, and at least one path constraint includes the symbol returned in response to the call to the stub. A constraint solver provides solutions for the paths including concrete values assigned to returned symbols. The mock behavior generator creates mock objects that return the concrete values when the implementation under test is executed.
    Type: Application
    Filed: December 30, 2005
    Publication date: February 8, 2007
    Applicant: Microsoft Corporation
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Publication number: 20060242466
    Abstract: Techniques and tools for generating test cases for methods or programs with input preconditions are described. For example, after finding feasible control flow paths for a tested method along with each path's associated input conditions, a new program is created which tests these conditions along with the precondition. By analyzing this new program's control flow graph, a class of test cases is found while avoiding inefficiencies created by doing complete searches of paths through the combined control flow graph of the precondition and the method. Additional efficiencies are introduced by partitioning a control flow graph for the precondition into branched and straight sections.
    Type: Application
    Filed: April 21, 2005
    Publication date: October 26, 2006
    Applicant: Microsoft Corporation
    Inventors: Nikolai Tillmann, Colin Campbell, Wolfgang Grieskamp, Lev Nachmanson, Wolfram Schulte, Margus Veanes
  • Publication number: 20060224924
    Abstract: Techniques and tools for generating finite state machines (“FSMs”) for a software system with asynchronous callbacks are described. For example, method invocations in a model of the software system are partitioned into observable and controlled method invocations. The controlled method invocations are those which can be run from a test harness while the observed method invocations are those which are observed asynchronously as they are invoked in the system. An FSM is created with observation and control nodes such that observable transitions are found from observation nodes and controlled transitions are found from control nodes. If a state of the model contains both controlled and observable invocations, a timeout transition is added to the FSM to give an implementation time to come up with an observed method invocation before continuing to controlled invocations.
    Type: Application
    Filed: March 31, 2005
    Publication date: October 5, 2006
    Applicant: Microsoft Corporation
    Inventors: Wolfgang Grieskamp, Colin Campbell, Lev Nachmanson, Margus Veanes, Michael Barnett, Nikolai Tillmann, Wolfram Schulte
  • Publication number: 20060212759
    Abstract: Techniques and tools for testing multi-threaded or distributed software systems are described. For example, a multi-threaded system is instrumented and executed to produce logs of events that are performed by each of its agents. The agent logs contain a totally ordered series of events per agent, as well as information about accesses to resources shared between the agents. With this information, a partial ordering of the events performed by all the agents is described for the execution. The agent logs are then multiplexed into one or more serialized event orderings, which can then be compared to a specification of the system in a conformance testing engine.
    Type: Application
    Filed: March 18, 2005
    Publication date: September 21, 2006
    Applicant: Microsoft Corporation
    Inventors: Colin Campbell, Lev Nachmanson, Margus Veanes, Michael Barnett, Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Publication number: 20060179383
    Abstract: State spaces are traversed to produce test cases, or test coverage. Test coverage is a test suite of sequences. Accepting states are defined. Expected costs are assigned to the test graph states. Strategies are created providing transitions to states with lower expected costs. Linear programs and other approximations are discussed for providing expected costs. Strategies are more likely to provide access to an accepting state, based on expected costs. Strategies are used to append transitions to test segments such that the new test segment ends in an accepting state.
    Type: Application
    Filed: January 21, 2005
    Publication date: August 10, 2006
    Applicant: Microsoft Corporation
    Inventors: Andreas Blass, Colin Campbell, Lev Nachmanson, Margus Veanes, Michael Barnett, Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte, Yuri Gurevich
  • Patent number: 7088864
    Abstract: A method and apparatus to generate a test suite from an abstract state machine (ASM) involves generating a finite state machine (FSM) for the ASM, and generating the test suite from the FSM. An initial state of the ASM is selected. A first encoding having a plurality of bits is generated to represent the initial state. Each bit of the first encoding represents a result of an evaluation of a non-trivial guard condition of the ASM. The initial state is associated with the first encoding in the data structure for the FSM. At least one other states of the ASM are identified that result from applying at least one actions of the ASM to the initial state.
    Type: Grant
    Filed: February 8, 2002
    Date of Patent: August 8, 2006
    Assignee: Microsoft Corporation
    Inventors: Wolfgang Grieskamp, Yuri Gurevich, Wolfram Schulte, Margus Veanes
  • Publication number: 20060161404
    Abstract: Exploration algorithms are relevant to the industrial practice of generating test cases from an abstract state machine whose runs define the predicted behavior of the software system under test. Here, a new exploration algorithm allows multiple state groupings to simultaneously guide the search for states that are interesting or relevant for testing. In some cases, the algorithm allows exploration to be optimized from exponential to linear complexity. An extended example is included that illustrates the use of the algorithm.
    Type: Application
    Filed: January 20, 2005
    Publication date: July 20, 2006
    Applicant: Microsoft Corporation
    Inventors: Colin Campbell, Lev Nachmanson, Margus Veanes, Wolfgang Grieskamp, Wolfram Schulte, Nikolai Tillmann
  • Publication number: 20060155905
    Abstract: Various new and non-obvious systems and methods for ensuring within a multi-threaded environment that object fields hold legal values are disclosed. One of the disclosed embodiments is a method for a thread locking the top object of an object hierarchy. The thread then gains ownership of the locked object and any children of the locked object, by successively unpacking child objects, allowing the thread to write to any unpacked object field. By owning the top hierarchical object, the thread also achieves transitive ownership to any descendants of the object, allowing the thread to read any object fields which it transitively owns. When a thread locks an object within this exemplary embodiment all other threads are denied access to the locked object and to any descendants of the locked object.
    Type: Application
    Filed: January 11, 2005
    Publication date: July 13, 2006
    Applicant: Microsoft Corporation
    Inventors: K. Leino, Wolfram Schulte, Bart Jacobs
  • Publication number: 20050216508
    Abstract: The present invention provides systems and methods that isomorphically maps constructs between domain spaces (e.g., object, markup, relational and user interface domains). The systems and methods employ a mapping component that utilizes at least one suppress label(s), introduce label(s) and/or mediating schema to facilitate construct mapping. Examples of such mapping include transforming a named construct to an anonymous construct, a named construct to a named construct, an anonymous construct to a named construct, and an anonymous construct to an anonymous construct. In general, introduce labels can be utilized to provide names for anonymous constructs and/or modify existing names; suppress labels typically are utilized to suppress names such as introduced names or names a user desires to be suppressed; and mediating schema can be utilized to provide a default or user customized mapping to an intermediate schema before, during and/or after construct mapping.
    Type: Application
    Filed: March 25, 2004
    Publication date: September 29, 2005
    Inventors: Henricus Maria Meijer, Wolfram Schulte, Oludare Obasanjo
  • Publication number: 20050198621
    Abstract: Constraints are defined in view of a program implementation. Constraints check program state or variables to maintain data consistency. A constraint component determines a constraint's scope and variables upon which a constraint depends. Program flow is altered so constraints are checked whenever a variable upon which a constraint depends is updated. Optionally, program flow is altered dynamically to re-establish constraints whenever a variable upon which a constraint depends is updated. Re-establishing constraints provides efficiency, since a program flow is altered for a minimum cost based on a present evolving minimum set of active constraint-variable relationships.
    Type: Application
    Filed: March 2, 2004
    Publication date: September 8, 2005
    Inventors: Nikolai Tillmann, Wolfgang Grieskamp, Wolfram Schulte
  • Publication number: 20050183071
    Abstract: The subject invention pertains to systems and methods for iterating over or otherwise traversing a collection of objects or elements. More specifically, mechanisms are provided for handling both conventional non-nested streams such as enumeratables as well as nested streams. Nested streams provide a more efficient mechanism for traversing certain objects such as recursive generators. One problem with nested streams is that they need to be flattened or simplified. Techniques are provided herein to allow such streams to be flattened quickly and efficiently. Moreover, systems and methods are disclosed to preserve backward compatibility of optimized nested stream processing with conventional non-nested streams.
    Type: Application
    Filed: January 28, 2005
    Publication date: August 18, 2005
    Applicant: Microsoft Corporation
    Inventors: Henricus Meijer, David Schach, Avner Aharoni, Wolfram Schulte
  • Publication number: 20050183058
    Abstract: Techniques and tools are described for flattening nested streams. For example, a stream flattening tool processes nested streams on a stack to traverse the nested streams. The tool produces a flattened stream that enumerates the elements of the nested streams. In one embodiment, the tool initially pushes a stack frame onto the stack for a stream representing all of the nested streams. As the tool iterates across the “active” stream having the frame on the top of the stack, the tool may encounter and produce elements in the “active” stream. Or, the tool may encounter a nested stream and push a stack frame for the nested stream onto the stack, then continuing by iterating across the new active stream. The tool pops the stack frame for the active stream from the stack when the end of the stream is reached, or potentially earlier if handling a nested tail stream.
    Type: Application
    Filed: February 13, 2004
    Publication date: August 18, 2005
    Inventors: Henricus Meijer, Wolfram Schulte
  • Publication number: 20050166181
    Abstract: The present invention relates to a system and methodology to enable programming of generalized comprehensions in an imperative language environment. In one aspect, a system is provided to facilitate employment of user-definable and generalized comprehensions in accordance with imperative languages. The system includes a language component to enable programming of comprehension notations in an imperative language and an interface component to describe a meaning of the comprehension notations. A translation component facilitates execution of the comprehension notations in accordance with the imperative language.
    Type: Application
    Filed: January 27, 2004
    Publication date: July 28, 2005
    Inventors: Wolfgang Grieskamp, Wolfram Schulte, Henricus Johannes Meijer
  • Publication number: 20050050536
    Abstract: A state component saves a present state of a program or model. This state component can be invoked by the program or model itself, thereby making state a first-class citizen. As the state of the program evolves from the saved state, the saved state remains for reflection and recall, for example, for testing, verification, transaction processing, etc. Using a state reference token, the saved state of the program or model can be accessed by the program or model. For example, the program or model by utilizing a state component, can return itself to the saved state. After returning to the saved state, a second execution path can be introduced without requiring re-execution of the actions leading to the saved state. In another example, the state space of an executing model is saved in order to generate inputs required to exercise a program or model.
    Type: Application
    Filed: August 27, 2003
    Publication date: March 3, 2005
    Inventors: Wolfgang Grieskamp, Yuri Gurevich, Wolfram Schulte, Nikolai Tillmann
  • Publication number: 20050050391
    Abstract: A test domain configuration module generates graphical user interfaces for identifying information about desired tests such as data types and domain configurations, and collects information used by other modules to generate tests. The identified information may include, for example, an abstract syntax, a static semantic, max counts on instances of data types, or costs of field accesses or data types for max path costs or max expression costs. A test input generator, generates test input for the identified and configured data types. In one case, the generated test inputs are generated as tree data structures. A predicate determines whether a generated test input follows semantic conditions. A test input evaluator counts instances of data types in, sums paths through, or sums total costs of, the generated test inputs. A test acceptance module saves test inputs acceptable to the predicate and the test input evaluator.
    Type: Application
    Filed: August 27, 2003
    Publication date: March 3, 2005
    Inventors: Wolfgang Grieskamp, Wolfram Schulte, Nikolai Tillmann