Automatic Testing of TCP/IP Implementations Using Quickcheck
Developing a network stack is difficult. It is highly concurrent
by design, there are many time-related tasks that must be performed, and it must be reasonably efficient to be useful. Testing a network stack is also hard, because it involves using a packet sniffer and looking at long packet dumps. Usually, tests are run using a well known stack as peer, such as the Linux kernel TCP/IP stack. However this approach has some problems. Many errors are difficult to find and to reproduce because they only arise under special conditions. Also, the TCP/IP stacks of the most common operating systems tend to be lax about accepting behaviours by their peers that do not fully conformn to the protocol. These errors would only be noticed when connecting with more simple stacks typical in embedded systems.
In this work we present an automatic test case generator for TCP using Quickcheck. This tester generates packet flows to test specific features of a TCP stack. It then controls the stack under test to run the test by using the interface provided by it (for example, the socket interface), and by sending replies to the packets created by the stack under test.
Because this tool controls the packets that are sent to the stack under test it can simulate situations that are not likely to appear in a normal test.
Thomas Arts Professor and co-founder of QuviQ QuviQ AB
Dr. Thomas Arts is the co-founder and CTO of Quviq, a small company that
produced QuickCheck, as testing tool for Erlang. He has successfully
introduced some new technologies in industry, the latest being
QuickCheck, a tool for property based testing and aims to support test
Thomas is also an professor at Chalmers University of Technology
(Gothenburg) in the area of Software Engineering. He holds a PhD in
computer science and after his PhD has been employed at the Ericsson
Computer Science Lab (Where they invented Erlang). He worked on program
verification and the development of the Erlang programming language. He
has also worked in the broad spectrum theoretical computer science,
formal methods and industrial case-study research, mainly applying all
kind of techniques to systems written in Erlang.
University of Coruña, Spain
Javier Paris is a teaching assistant at the University of A Coruña and has been using Erlang since joining the MADS research group in 2002. His main interest are in fault tolerance for network protocols, using Erlang to develop a distributed TCP/IP stack in userspace, and the automatic testing of network stack implementations.