  Blockchain and smart contract technology are novel approaches to data and
code management that facilitate trusted computing by allowing for development
in a distributed and decentralized manner. Testing smart contracts comes with
its own set of challenges which have not yet been fully identified and
explored. Although existing tools can identify and discover known
vulnerabilities and their interactions on the Ethereum blockchain through
random search or symbolic execution, these tools generally do not produce test
suites suitable for human oracles. In this paper, we present AGSOLT (Automated
Generator of Solidity Test Suites). We demonstrate its efficiency by
implementing two search algorithms to automatically generate test suites for
stand-alone Solidity smart contracts, taking into account some of the
blockchain-specific challenges. To test AGSOLT, we compared a random search
algorithm and a genetic algorithm on a set of 36 real-world smart contracts. We
found that AGSOLT is capable of achieving high branch coverage with both
approaches and even discovered some errors in some of the most popular Solidity
smart contracts on Github.
