Skip to content

A curated collection of tools, frameworks, and methodologies for testing and verifying Solidity smart contracts.

Notifications You must be signed in to change notification settings

GianfrancoBazzani/awesome-advanced-smart-contracts-testing-and-verification

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Awesome Advanced Smart Contracts Testing and Verification Awesome

A curated collection of tools, frameworks, and resources for testing and verifying Solidity smart contracts. Meant to be used by blockchain developers and security researchers as a knowledge source.

Contents

Tools

Arsenal of fuzzing and verification tools, tailor-made for probing and dissecting the inner workings of smart contracts.

Fuzzing

Fuzzing or fuzz testing is an automated software testing technique that involves providing invalid, unexpected, or randomly generated data as inputs to a computer program.

Property-based Fuzz Testing

Property-based testing aims to identify and test invariants. Invariants are conditions expressions that should always hold true over the course of a fuzzing campaign. Invariants are about properties of the system as a whole, rather than specific reactions to specific inputs.

Differential Fuzz Testing

Differential testing is used to ensure identical behavior between two or more implementations of equivalent code. Useful if you are upgrading/updating code, or have written a more optimized version but you want to verify congruence among implementations.

Formal Verification

Formal Verification is an approach to assessing the correctness of software by checking whether a formal model of the program matches the formal specification. Unlike testing, formal verification can verify a smart contract's execution satisfies a formal specification for all executions without needing to execute it with sample data.

Mutation Testing

Mutation testing is a technique for evaluating and improving test suites. The key idea is to introduce faults, called mutants, to the program under test and measure a test suite’s ability to detect these mutants.

Branching Tree Technique

Specification framework for writing structured Solidity tests.

Contribute

Contributions welcome! Read the contribution guidelines first.

About

A curated collection of tools, frameworks, and methodologies for testing and verifying Solidity smart contracts.

Topics

Resources

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published