Skip to content
0:00 / 0:00

#concolictesting#erlang#symbolicexecution

Concolic Testing of High-Level Languages, Konstantinos Sagonas

RISE SICS

1.6K subscribers • 2 videos on Hallway

YouTube
  • Recommended by 2 people: 2 in engineering communities.
  • Presented by Konstantinos Sagonas, Associate Professor at Uppsala University

Advanced. Deep dive for people who know the field.

1.2K views9 years ago2 recommendations

Tools and practiceProgramming languagesTestingFunctional programmingElixir and Erlang

Konstantinos Sagonas explains how concolic testing can be applied to high-level functional languages like Erlang, demonstrating the CutEr tool.

Concolic testing is a software testing technique that combines concrete execution of a program unit with symbolic execution in an attempt to generate inputs that explore all the paths in this unit. So far, concolic testing has been applied, mainly at the level of bytecode or assembly code, to programs written in imperative languages that manipulate primitive data types such as integers and arrays. In this talk, we will describe how concolic testing can be applicable to high-level languages in general and to functional programming languages in particular. At this high level, the concolic engine needs to efficiently support pattern matching, recursive data types such as lists, recursion and higher-order functions. The talk will also include a short demo of CutEr (as in "more cute"), a concolic testing tool for Erlang, and our experiences from its use so far. Kostis Sagonas is an Associate Professor at the the Department of Information Technology of Uppsala University. His research interests are in programming language and software technology. His Ph.D. thesis work was in the implementation of tabling in logic programming. In the last fifteen years he has been heaviily involved in the design and implementation of the concurrent functional language Erlang, having made significant contributions both to the evolution of the language itself (in particular, he has designed its language of types and specs and bitstring pattern matching), its runtime system and virtual machine, its native code compiler (HiPE, ErLLVM), and to static analysis and transformation tools for the language (Dialyzer, TypEr and Tidier). In the last few years he has been working on developing novel techniques and tools for testing concurrent programs (Concuerror, PropEr, CutEr, Nifty, Target and Nidhugg), and the ArgoDSM system for scalable software distributed shared memory.

Why it's here

2 people recommend this

What people say. Recommended as an insightful introduction to concolic testing and path coverage analysis for high-level languages.

u/agumonkeyin r/compsci • Recommends

Concolic Testing of High-Level Languages, Konstantinos Sagonas

u/pron98in r/programming • Recommends

On “Rethinking Software Testing: Perspectives from the world of Hardware”

The next step in auto-generated tests after randomized tests, is something called concolic tests. Rather than generate test cases by random sampling (or in addition to it), it performs a white-box analysis of the code, and generates tests that increase coverage of program paths. Concolic testing is still very much in the research stage, but this talk demonstrate its abilities.

u/pron98in r/programming • Mentions

On “Mutation vs Property Based testing”

> The advantage of mutation testing over property based testing I don't understand this, or the 'vs' in the title, at all. It's like the advantage of fonts over words -- it compares two things that are completely incomparable and orthogonal. One of these things, property-based randomized tests, is a testing technique, while the other, mutation testing, is a coverage metric (or rather, a tool that produces a coverage metric). The two are so incomparable that I think the author missed something very basic. Mutation tests can be used to produce mutant coverage of any kind of test, and property-based randomized tests can be used with or without obtaining any coverage metric. Neither good muta…