Patents by Inventor Nikolai Tillmann

Nikolai Tillmann 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: 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
  • 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: 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: 20050160404
    Abstract: A computerized method creates test coverage for non-deterministic programs. The method receives a graph of edges and states representing a program under test, and creates a continuous cycle of edges that reaches each edge in the graph at least once. In one example, the method splits the continuous cycle into discrete sequences that end at edges reaching non-deterministic nodes in the graph, and verifies that the executing program conforms to the behavior represented by the discrete sequences. In another example, a method creates probabilistic strategies for reaching one or more vertices in a non-deterministic graph. The strategies provide a graph path with a high probability of reaching a desired vertex.
    Type: Application
    Filed: January 15, 2004
    Publication date: July 21, 2005
    Inventors: Lev Nachmanson, Margus Veanes, Wolfgang Grieskamp, Nikolai Tillmann
  • 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: 20050050519
    Abstract: Described herein are methods and systems for interactively configuring and producing a data domain for various data structure elements of a computer program. A domain configuration manager is described which interactively receives domain configuration information corresponding to a data structure element, reads a reflection of the program and produces a data domain according to domain configuration information. The domain configuration manager is capable of producing a data domain for a data structure element according to such domain configuration information such as an explicit expression, inheritance or domain generation technique. The reflection of the computer program exposes the methods and functions of the program to be used in the explicit expression regardless of the visibility rules. Also, predicates and conditions can be used with domain generation techniques to further narrowly configure the data domains.
    Type: Application
    Filed: August 27, 2003
    Publication date: March 3, 2005
    Inventors: Wolfram Schulte, Wolfgang Grieskamp, 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