Abstract:
Methods and systems for generating software analysis test inputs include generating a path query to cover a target branch of a program by executing a symbolic test driver concretely and partially symbolically, where at least one symbolic expression is partially concretized with concrete values; determining whether it is feasible to execute the target branch based on whether the generated path query is satisfiable or unsatisfiable using a constraint solver; if the target branch is feasible, generating a new test driver by replacing symbolic values in the symbolic test driver with generated solution values; and if the target branch is not feasible, analyzing an unsatisfiable core to determine whether unsatisfiability is due to a concretization performed during generation of the path query.
Abstract:
Disclosed are typestate and lifetime dependency analysis methods for identifying bugs in C++ programs. Disclosed are an abstract representation (ARC++) that models C++ objects and which makes object creation/destruction, usage, lifetime and pointer operations explicit in the abstract model thereby providing a basis for static analysis on the C++ program. Also disclosed is a lifetime dependency analysis that tracks implied dependency relationships between lifetimes of objects, to capture an effective high-level abstraction for issues involving temporary objects and internal buffers, and subsequently used in the static analysis that supports typestate checking for the C++ program. Finally disclosed a framework that automatically genarates ARC++ representations from C++ programs and performs typestate checking to detect bugs that are specified as typestate automata over ARC++ representations.
Abstract:
Disclosed is a method of performing static data race detection in concurrent programs wherein a control flow graph (CFG) is decomposed into layers of bounded call-depth which are then used to perform a resulting analysis. Next, a set of pointers of interest are segmented into classes such that each pointer may only be aliased to pointers within its own class, these classes related to computation of shared variables, locksets, waitsets, and notifysets. A flow sensitive context sensitive points-to-analysis for program statements that impact aliases of members within the given class is performed—advantageously reducing the overall size of the problem at hand. Notably, the analysis for individual threads is performed independently of one another, on multiple layers of the CFG, and subsequently merging the results from the individual layers.
Abstract:
A system and method for discovering a set of possible iteration sequences for a given loop in a software program is described, to transform the loop representation. In a program containing a loop, the loop is partitioned into a plurality of portions based on splitting criteria. Labels are associated with the portions, and an initial loop automaton is constructed that represents the loop iterations as a regular language over the labels corresponding to the portions in the program. Subsequences of the labels are analyzed to determine infeasibility of the subsequences permitted in the automaton. The automaton is refined by removing all infeasible subsequences to discover a set of possible iteration sequences in the loop. The resulting loop automaton is used in a subsequent program verification or analysis technique to find violations of correctness properties in programs.
Abstract:
Disclosed are a testing framework—SETSUD Ō—that uses perturbation-based exploration for robustness testing of modern scalable distributed systems. In sharp contrast to existing testing techniques and tools that are limited in that they are typically based on black-box approaches or they focus mostly on failure recovery testing, SETSUD Ō is a flexible framework to exercise various perturbations to create stressful scenarios. SETSUD Ō is built on an underlying instrumentation infrastructure that provides abstractions of internal states of the system as labeled entities. Both novice and advanced testers can use these labeled entities to specify scenarios of interest at the high level, in the form of a declarative style test policy. SETSUD Ō automatically generates perturbation sequences and applies them to system-level implementations, without burdening the tester with low-level details.
Abstract:
A network testing method implemented in a software-defined network (SDN) is disclosed. The network testing method comprising providing a test scenario including one or more network events, injecting said one or more network events to the SDN using an SDN controller, and gathering network traffic statistics. A network testing apparatus used in a software-defined network (SDN) also is disclosed. The network testing apparatus comprising a testing system to provide a test scenario including one or more network events, to inject said one or more network events to the SDN using an SDN controller, and to gather network traffic statistics. Other methods, apparatuses, and systems also are disclosed.