John Hughes
John Hughes is co-founder and CEO of Quviq AB, and the originator of Quviq QuickCheck. Schooled at a rural comprehensive in Wales, John studied at Oxford and Cambridge Universities, to be appointed Professor of Computing Science at Glasgow University at the tender age of 27. John developed a passion for functional programming early in
his career, and has maintained a distinguished record in the field ever since. Among his many research papers, one of the first, Why Functional Programming Matters, is a classic of the genre.and is still, 24 years later, the third hit for "functional programming" on Google Scholar! John has been invited to speak at prestigious venues such as the ACM's ICFP and POPL conferences and Oxford University's termly Strachey Lecture. John helped found IFIP's international Working Group on functional programming in 1988, and chaired it for six years in the nineties, for which he received IFIP's Silver Core award. He was deeply involved with the
design of Haskell from the start, and co-chaired the committee that defined the current language standard.
Moving to a Chair at Chalmers University in Gothenburg in 1992, John began working on QuickCheck around the turn of the millennium. From 2002-2005 he led a major research project in software verification, funded by the Swedish Strategic Research Foundation. This led to the development of Quviq QuickCheck in Erlang and the foundation of Quviq AB in early 2006. In 2007, John was honoured for this work at the Erlang User Conference, with the award of the Erlang User of the Year title. Today, he divides his time between Quviq, and teaching and research at Chalmers University.
John's Talks
Talk: Quick Check for Erlang
Testing is a major part of all software development. Yet no matter how much effort is spent on it, some errors always seem to slip through. Cases which no-one thought to test crash systems late in development or out in the field, revealing errors which cost time and money to analyze, diagnose, and fix. In the worst case, such errors
reveal fundamental flaws which force a redesign of part of the system, at disproportionate cost.
In this talk we present QuickCheck, a tool which addresses these problems by generating test cases from a concise specification (so that many more cases can be tested) and simplifying failing cases to a minimal example on a test failure (so that fault diagnosis is quick
and easy). QuickCheck enables developers to dramatically improve test coverage, and find obscure errors at an earlier stage, lowering costs and improving quality as a result. QuickCheck success stories include major telecoms products such as, radio base stations and media gateways.
Tutorial: Using QuickCheck to Test Erlang Programs
Testing is a major part of all software development—yet no matter how much effort is spent on it, some errors always seem to slip through. Cases which no‐one thought to test crash systems late in development or out in the field, revealing errors which cost time and money to analyze, diagnose, and fix. In the worst case, such errors reveal fundamental flaws which force a redesign of part of the system, at disproportionate cost.
QuickCheck is an automated testing tool which addresses these problems by generating test cases from a concise specification (so that many more cases can be tested), and simplifying failing cases to a minimal example on a test failure (so that fault diagnosis is quick and easy). QuickCheck enables developers to dramatically improve test coverage, and find obscure errors at an earlier stage, lowering costs and improving quality as a result.
In this tutorial, John Hughes and
Thomas Arts will use examples to show how developers write QuickCheck specifications—which are actually Erlang programs using the QuickCheck API—and use them to test code written in Erlang or other programming languages. We will show how QuickCheck’s shrinking finds tiny examples that provoke errors, making the step from observing a bug to diagnosing it very short indeed, and we will show how property driven development can produce code that is solid from the word go.