Testing Erlang Concurrency with QuickCheck
Examensarbete för masterexamen
Erlang is a functional language developed by Ericsson AB, in which concurrency belongs to the programming language rather than the operating system. It can make parallel programing much easier by modeling the program as several processes running in parallel which interact with each other only via exchanging messages. There is no shared memory in Erlang, due to its advantages on message passing, Erlang have been widely used in development of telecom and internet products. As the importance of usage of` Erlang increases, to ensure the progams operate as they should becames the most significant and challenging task. QuickCheck is a specification-based testing tool produced by the company Quivq AB. The commercial version of QuickCheck can support generating random test cases for Erlang programs. It offers the ability for test programmer to test Erlang functions by specifying their expected operations and results. It is a tool that can liberate the test programmers from heavy work of writing test cases by hand, and reduce the time that the test programmers spend on simplifying the failing test cases after the execution of the test cases. In the first part of this thesis, we develop specification of main functions in ETS, DETS, by analyzing their operation and results. Then, we test these functions by using QuickCheck state machine. In the second part, with analyzing the shortage of QuickCheck state machine, we modify the property, and test DETS by using PULSE. Meanwhile, main functions in Supervisor are specified and tested as well. Bugs and interesting findings from this project are described in relevant parts as well.
Programvaruteknik , Software Engineering