938 research outputs found
Automating test oracles generation
Software systems play a more and more important role in our everyday life. Many relevant human activities nowadays involve the execution of a piece of software. Software has to be reliable to deliver the expected behavior, and assessing the quality of software is of primary importance to reduce the risk of runtime errors. Software testing is the most common quality assessing technique for software. Testing consists in running the system under test on a finite set of inputs, and checking the correctness of the results. Thoroughly testing a software system is expensive and requires a lot of manual work to define test inputs (stimuli used to trigger different software behaviors) and test oracles (the decision procedures checking the correctness of the results). Researchers have addressed the cost of testing by proposing techniques to automatically generate test inputs. While the generation of test inputs is well supported, there is no way to generate cost-effective test oracles: Existing techniques to produce test oracles are either too expensive to be applied in practice, or produce oracles with limited effectiveness that can only identify blatant failures like system crashes. Our intuition is that cost-effective test oracles can be generated using information produced as a byproduct of the normal development activities. The goal of this thesis is to create test oracles that can detect faults leading to semantic and non-trivial errors, and that are characterized by a reasonable generation cost. We propose two ways to generate test oracles, one derives oracles from the software redundancy and the other from the natural language comments that document the source code of software systems. We present a technique that exploits redundant sequences of method calls encoding the software redundancy to automatically generate test oracles named CCOracles. We describe how CCOracles are automatically generated, deployed, and executed. We prove the effectiveness of CCOracles by measuring their fault-finding effectiveness when combined with both automatically generated and hand-written test inputs. We also present Toradocu, a technique that derives executable specifications from Javadoc comments of Java constructors and methods. From such specifications, Toradocu generates test oracles that are then deployed into existing test suites to assess the outputs of given test inputs. We empirically evaluate Toradocu, showing that Toradocu accurately translates Javadoc comments into procedure specifications. We also show that Toradocu oracles effectively identify semantic faults in the SUT. CCOracles and Toradocu oracles stem from independent information sources and are complementary in the sense that they check different aspects of the system undertest
Software redundancy: what, where, how
Software systems have become pervasive in everyday life and are the core component of many crucial activities. An inadequate level of reliability may determine the commercial failure of a software product. Still, despite the commitment and the rigorous verification processes employed by developers, software is deployed with faults. To increase the reliability of software systems, researchers have investigated the use of various form of redundancy. Informally, a software system is redundant when it performs the same functionality through the execution of different elements. Redundancy has been extensively exploited in many software engineering techniques, for example for fault-tolerance and reliability engineering, and in self-adaptive and self- healing programs. Despite the many uses, though, there is no formalization or study of software redundancy to support a proper and effective design of software. Our intuition is that a systematic and formal investigation of software redundancy will lead to more, and more effective uses of redundancy. This thesis develops this intuition and proposes a set of ways to characterize qualitatively as well as quantitatively redundancy. We first formalize the intuitive notion of redundancy whereby two code fragments are considered redundant when they perform the same functionality through different executions. On the basis of this abstract and general notion, we then develop a practical method to obtain a measure of software redundancy. We prove the effectiveness of our measure by showing that it distinguishes between shallow differences, where apparently different code fragments reduce to the same underlying code, and deep code differences, where the algorithmic nature of the computations differs. We also demonstrate that our measure is useful for developers, since it is a good predictor of the effectiveness of techniques that exploit redundancy. Besides formalizing the notion of redundancy, we investigate the pervasiveness of redundancy intrinsically found in modern software systems. Intrinsic redundancy is a form of redundancy that occurs as a by-product of modern design and development practices. We have observed that intrinsic redundancy is indeed present in software systems, and that it can be successfully exploited for good purposes. This thesis proposes a technique to automatically identify equivalent method sequences in software systems to help developers assess the presence of intrinsic redundancy. We demonstrate the effectiveness of the technique by showing that it identifies the majority of equivalent method sequences in a system with good precision and performance
Solving Linear Constraints in Elementary Abelian p-Groups of Symmetries
Symmetries occur naturally in CSP or SAT problems and are not very difficult
to discover, but using them to prune the search space tends to be very
challenging. Indeed, this usually requires finding specific elements in a group
of symmetries that can be huge, and the problem of their very existence is
NP-hard. We formulate such an existence problem as a constraint problem on one
variable (the symmetry to be used) ranging over a group, and try to find
restrictions that may be solved in polynomial time. By considering a simple
form of constraints (restricted by a cardinality k) and the class of groups
that have the structure of Fp-vector spaces, we propose a partial algorithm
based on linear algebra. This polynomial algorithm always applies when k=p=2,
but may fail otherwise as we prove the problem to be NP-hard for all other
values of k and p. Experiments show that this approach though restricted should
allow for an efficient use of at least some groups of symmetries. We conclude
with a few directions to be explored to efficiently solve this problem on the
general case.Comment: 18 page
Methods for Optimal Model Fitting and Sensor Calibration
The problem of fitting models to measured data has been studied extensively, not least in the field of computer vision. A central problem in this field is the difficulty in reliably find corresponding structures and points in different images, resulting in outlier data. This thesis presents theoretical results improving the understanding of the connection between model parameter estimation and possible outlier-inlier partitions of data point sets. Using these results a multitude of applications can be analyzed in respects to optimal outlier inlier partitions, optimal norm fitting, and not least in truncated norm sense. Practical polynomial time optimal solvers are derived for several applications, including but not limited to multi-view triangulation and image registration. In this thesis the problem of sensor network self calibration is investigated. Sensor networks play an increasingly important role with the increased availability of mobile, antenna equipped, devices. The application areas can be extended with knowledge of the different sensors relative or absolute positions. We study this problem in the context of bipartite sensor networks. We identify requirements of solvability for several configurations, and present a framework for how such problems can be approached. Further we utilize this framework to derive several solvers, which we show in both synthetic and real examples functions as desired. In both these types of model estimation, as well as in the classical random samples based approaches minimal cases of polynomial systems play a central role. A majority of the problems tackled in this thesis will have solvers based on recent techniques pertaining to action matrix solvers. New application specific polynomial equation sets are constructed and elimination templates designed for them. In addition a general improvement to the method is suggested for a large class of polynomial systems. The method is shown to improve the computational speed by significant reductions in the size of elimination templates as well as in the size of the action matrices. In addition the methodology on average improves the numerical stability of the solvers
Methodologies synthesis
This deliverable deals with the modelling and analysis of interdependencies between critical infrastructures, focussing attention on two interdependent infrastructures studied in the context of CRUTIAL: the electric power infrastructure and the information infrastructures
supporting management, control and maintenance functionality. The main objectives are: 1) investigate the main challenges to be addressed for the analysis and modelling of interdependencies, 2) review the modelling methodologies and tools that can be used to address these challenges and support the evaluation of the impact of interdependencies on the dependability and resilience of the service delivered to the users, and 3) present the preliminary directions investigated so far by the CRUTIAL consortium for describing and modelling interdependencies
- …