A Survey of Verification, Validation and Testing Solutions for Smart Contracts
This is an incremental survey that helps developers and researchers in blockchain by organizing and evaluating testing methods to improve smart contract reliability and reduce costs.
The paper surveys existing solutions for verifying, validating, and testing smart contracts to prevent bugs before deployment, grouping them into categories like public test networks and security analysis tools and analyzing their pros and cons.
Smart contracts are programs stored on a blockchain that run when predetermined conditions are met. However, designing and implementing a smart contract is not trivial since upon deployment on a blockchain, it is no longer possible to modify it (neither for improving nor for bug fixing). It is only possible by deploying a new version of the smart contract which is costly (deployment cost for the new contract and destruction cost for the old contract). To this end, there are many solutions for testing the smart contracts before their deployment. Since realizing bug-free smart contracts increase the reliability, as well as reduce the cost, testing is an essential activity. In this paper, we group the existing solutions that attempt to tackle smart contract testing into following categories: public test networks, security analysis tools, blockchain emulators and blockchain simulators. Then, we analyze these solutions, categorize them and show what their pros and cons are.