  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, no framework exists for applying advanced,
multi-objective algorithms to create test suites for such smart contracts. 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 overage with both approaches and even discovered some errors in some of
the most popular Solidity smart contracts on Github.
