  The widespread recognition of the smart contracts has established their
importance in the landscape of next generation blockchain technology. However,
writing a correct smart contract is notoriously difficult. Moreover, once a
state-changing transaction is confirmed by the network, the result is
immutable. For this reason, it is crucial to perform a thorough testing of a
smart contract application before its deployment. This paper's focus is on the
test coverage criteria for smart contracts, which are objective rules that
measure test quality. We analyze the unique characteristics of the Ethereum
smart contract program model as compared to the conventional program model. To
capture essential control flow behaviors of smart contracts, we propose the
notions of whole transaction basis path set and bounded transaction
interaction. The former is a limited set of linearly independent
inter-procedural paths from which the potentially infinite paths of Ethereum
transactions can be constructed by linear combination, while the latter is the
permutations of transactions within a certain bound. Based on these two
notions, we define a family of path-based test coverage criteria. Algorithms
are given to the generation of coverage requirements. A case study is conducted
to compare the effectiveness of the proposed test coverage criteria with random
testing and statement coverage testing.
