853 research outputs found

    Finding Regressions in Projects under Version Control Systems

    Full text link
    Version Control Systems (VCS) are frequently used to support development of large-scale software projects. A typical VCS repository of a large project can contain various intertwined branches consisting of a large number of commits. If some kind of unwanted behaviour (e.g. a bug in the code) is found in the project, it is desirable to find the commit that introduced it. Such commit is called a regression point. There are two main issues regarding the regression points. First, detecting whether the project after a certain commit is correct can be very expensive as it may include large-scale testing and/or some other forms of verification. It is thus desirable to minimise the number of such queries. Second, there can be several regression points preceding the actual commit; perhaps a bug was introduced in a certain commit, inadvertently fixed several commits later, and then reintroduced in a yet later commit. In order to fix the actual commit it is usually desirable to find the latest regression point. The currently used distributed VCS contain methods for regression identification, see e.g. the git bisect tool. In this paper, we present a new regression identification algorithm that outperforms the current tools by decreasing the number of validity queries. At the same time, our algorithm tends to find the latest regression points which is a feature that is missing in the state-of-the-art algorithms. The paper provides an experimental evaluation of the proposed algorithm and compares it to the state-of-the-art tool git bisect on a real data set

    Fonte: Finding Bug Inducing Commits from Failures

    Full text link
    A Bug Inducing Commit (BIC) is a commit that introduces a software bug into the codebase. Knowing the relevant BIC for a given bug can provide valuable information for debugging as well as bug triaging. However, existing BIC identification techniques are either too expensive (because they require the failing tests to be executed against previous versions for bisection) or inapplicable at the debugging time (because they require post hoc artefacts such as bug reports or bug fixes). We propose Fonte, an efficient and accurate BIC identification technique that only requires test coverage. Fonte combines Fault Localisation (FL) with BIC identification and ranks commits based on the suspiciousness of the code elements that they modified. Fonte reduces the search space of BICs using failure coverage as well as a filter that detects commits that are merely style changes. Our empirical evaluation using 130 real-world BICs shows that Fonte significantly outperforms state-of-the-art BIC identification techniques based on Information Retrieval as well as neural code embedding models, achieving at least 39% higher MRR. We also report that the ranking scores produced by Fonte can be used to perform weighted bisection, further reducing the cost of BIC identification. Finally, we apply Fonte to a large-scale industry project with over 10M lines of code, and show that it can rank the actual BIC within the top five commits for 87% of the studied real batch-testing failures, and save the BIC inspection cost by 32% on average.Comment: accepted to ICSE'23 (not the final version

    Parallelizing tests with pessimistic speculative execution

    Get PDF
    Fuzzy testing or fuzzing is a technique for finding software vulnerabilities. Fuzzing works by feeding quasi-random, auto-generated input sequences to a target program and searching for failures. Fuzzers find inputs that trigger bugs; however, understanding those bugs is easier when extraneous data is removed to the extent possible. Extraneous data is removed by bisection, which is typically a serial procedure, e.g., doesn’t advance without knowing the result of the previous step. This makes test case optimization slow, sometimes taking hours to complete while CPU cores sit idle. This disclosure describes techniques that parallelize the bisection procedure, e.g., by speculatively executing test cases steps ahead of the current position of the bisection procedure. Test results often become known by the time the bisection procedure reaches a certain step, which substantially accelerates testing

    Visualization of pentatopic meshes

    Get PDF
    We propose a simple tool to visualize 4D unstructured pentatopic meshes. The method slices unstructured 4D pentatopic meshes (fields) with an arbitrary 3D hyperplane and obtains a conformal 3D unstructured tetrahedral representation of the mesh (field) slice ready to explore with standard 3D visualization tools. The results show that the method is suitable to visually explore 4D unstructured meshes. This capability has facilitated devising our 4D bisection method, and thus, we think it might be useful when devising new 4D meshing methods. Furthermore, it allows visualizing 4D scalar fields, which is a crucial feature for our space-time application

    Essential MATLAB for Engineers and Scientists

    Get PDF
    • …
    corecore