QuickCheck-Style Testing of Embedded Software using the PropEr Framework

 Testing is an integral part of any software development. It is important for improving the quality of any product. There are several ways of software testing and one of the most common approaches being random testing. One way of realising random testing is to write generators which can produce suit...

Full description

Bibliographic Details
Main Author: Raina, Shivani
Format: Others
Language:English
Published: Uppsala universitet, Institutionen för informationsteknologi 2012
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:uu:diva-168373
Description
Summary: Testing is an integral part of any software development. It is important for improving the quality of any product. There are several ways of software testing and one of the most common approaches being random testing. One way of realising random testing is to write generators which can produce suitable input data with the help of inbuilt and/or user defined data types. In this thesis, we have explored this method with the help of QuickCheck. QuickCheck is one of the first frameworks to support random testing written in Haskell. It has been subsequently ported to many other languages, including Erlang, Scala, and C. In this thesis, we have provided a similar framework for reactive embedded software (i.e., system testing) using Erlang version of QuickCheck called PropEr, where the test generator has to create complex program input streams in an online manner. The goal of this thesis is to create a framework by combining an existing QuickCheck implementation for Erlang called PropEr with WindRiver Simics which is an execution platform for embedded software. It involved design and implementation of an interface between the QuickCheck framework and the execution platform. This approach has been verified with the help of a case study. We have chosen an elevator case study for testing our implementation. We have evaluated the framework using the simulation of an elevator system, verifying a number of safety properties by systematic testing. It can be concluded that testing an embedded system using this embedded interface for QuickCheck is possible. There are many improvements that can be made to the interface with respect to providing more generic functions to evaluate the properties of embedded systems.