Learning to Encode and Classify Test Executions

01/08/2020
by   Foivos Tsimpourlas, et al.
0

The challenge of automatically determining the correctness of test executions is referred to as the test oracle problem and is one of the key remaining issues for automated testing. The goal in this paper is to solve the test oracle problem in a way that is general, scalable and accurate. To achieve this, we use supervised learning over test execution traces. We label a small fraction of the execution traces with their verdict of pass or fail. We use the labelled traces to train a neural network (NN) model to learn to distinguish runtime patterns for passing versus failing executions for a given program. Our approach for building this NN model involves the following steps, 1. Instrument the program to record execution traces as sequences of method invocations and global state, 2. Label a small fraction of the execution traces with their verdicts, 3. Designing a NN component that embeds information in execution traces to fixed length vectors, 4. Design a NN model that uses the trace information for classification, 5. Evaluate the inferred classification model on unseen execution traces from the program. We evaluate our approach using case studies from different application domains: 1. Module from Ethereum Blockchain, 2. Module from PyTorch deep learning framework, 3. Microsoft SEAL encryption library components, 4. Sed stream editor, 5. Value pointer library and 6. Nine network protocols from Linux packet identifier, L7-Filter. We found the classification models for all subject programs resulted in high precision, recall and specificity, over 95 while only training with an average 9 show that the proposed neural network model is highly effective as a test oracle and is able to learn runtime patterns to distinguish passing and failing test executions for systems and tests from different application domains.

READ FULL TEXT
research
04/11/2023

Execution traces and reduction sequences

In this note, we defend that the notion of algorithm as a set of executi...
research
09/04/2019

Learning Test Traces

Modern software projects include automated tests written to check the pr...
research
01/15/2020

Learning Concise Models from Long Execution Traces

Abstract models of system-level behaviour have applications in design ex...
research
09/04/2019

Predicting Software Tests Traces

Modern software projects include automated tests written to check the pr...
research
02/08/2021

Learning from Shader Program Traces

Deep networks for image processing typically learn from RGB pixels. This...
research
06/19/2023

Pipit: Enabling programmatic analysis of parallel execution traces

Performance analysis is an important part of the oft-repeated, iterative...
research
09/14/2017

TraceTracker: Hardware/Software Co-Evaluation for Large-Scale I/O Workload Reconstruction

Block traces are widely used for system studies, model verifications, an...

Please sign up or login with your details

Forgot password? Click here to reset