└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Blockchain Testing 2 | Curated list of blog posts, videos and resources on testing blockchains and Web3 (blockchain-based) applications 3 | 4 | ## Contents 5 | - [Awesome Blockchain Testing](#awesome-blockchain-testing) 6 | - [Contents](#contents) 7 | - [Blockchain Testing](#blockchain-testing) 8 | - [Books](#books) 9 | - [Courses](#courses) 10 | - [Videos](#videos) 11 | - [Posts](#posts) 12 | - [Blockchain for Test Engineers (Series)](#blockchain-for-test-engineers-series) 13 | - [Whitepapers](#whitepapers) 14 | - [Blockchain Consensus](#blockchain-consensus) 15 | - [Blockchain Performance](#blockchain-performance) 16 | - [Blockchain Security](#blockchain-security) 17 | - [Cardano](#cardano) 18 | - [Bitcoin](#bitcoin) 19 | - [Hyperledger](#hyperledger) 20 | - [Ethereum](#ethereum) 21 | - [Smart Contract Testing](#smart-contract-testing) 22 | - [Smart Contract Security](#smart-contract-security) 23 | - [Web3 Testing](#web3-testing) 24 | 25 | ## Blockchain Testing 26 | 27 | ### Books 28 | * [Blockchain and decentralized systems](https://books.distributedlab.com/) - 3 - volume book that covers everything you need to know about blockchain and how it works. Recommended for CS students 29 | * [Mastering Blockchain: A deep dive into distributed ledgers, consensus protocols, smart contracts, DApps, cryptocurrencies, Ethereum, and more, 3rd Edition](https://www.amazon.com/Mastering-Blockchain-distributed-consensus-cryptocurrencies/dp/1839213191) - one book to get every piece of knowledge on how modern blockchain work 30 | * [Cardano For the M₳sses: A Financial Operating System for people who don’t have one](https://www.amazon.com/Cardano-M%E2%82%B3sses-Financial-Operating-System/dp/B0B5KQVJ3T) - first book on what is Cardano blockchain and how it works 31 | * [Mastering Ethereum: Building Smart Contracts and DApps](https://www.amazon.com/Mastering-Ethereum-Building-Smart-Contracts/dp/1491971940) - good overview on basics of Ethereum blockchain. Miss the latests upgrades of PoS consensus 32 | 33 | ### Courses 34 | * [Introduction to Blockchain Testing](https://testautomationu.applitools.com/blockchain-testing/) - free introductory course to get a glance on what blockchain testing is 35 | * [Learn Blockchain, Solidity, and Full Stack Web3 Development with JavaScript – 32-Hour Course](https://youtu.be/gyMwXuJrbJQ?si=Uini5LuPalQmaSbd) - free 32-hour course on smart contract development with Javascript / Solidity 36 | * [Blockchain Specialization](https://www.coursera.org/specializations/blockchain) 37 | * [Decentralized Finance (DeFi): The Future of Finance Specialization](https://www.coursera.org/specializations/decentralized-finance-duke) 38 | 39 | ### Videos 40 | 41 | * [What does it mean to test a blockchain?](https://youtu.be/LLF45RHA3AM?si=iHrLQUxdoLp0Sc7c) - by Oleksandr Romanov 42 | * [Testing Blockchain Applications](https://youtu.be/FKoKaugeSBE) - by Rafaela Azevedo 43 | * [How To Test Blockchain Applications?](https://www.youtube.com/watch?v=iw5nHuA1SUs) - by Daniel Knott 44 | * [Testing smart contracts with QuickCheck](https://www.youtube.com/watch?v=V9_14jjJiuQ) - by John Hughes 45 | * [Adding Testing and Automatic Verifications to a Decentralized Application](https://www.youtube.com/watch?v=AB-qBfKL7Q0) - by blondiebytes 46 | * [Webinar: Blockchain Testing – How to Create Trust and Test its Effectiveness?](https://youtu.be/1OKCcfd2awE) 47 | * [Blockchain Testing BrownBag session](https://youtu.be/llylmSbVsjw) 48 | * [Testing Tools for Blockchains](https://youtu.be/1woVse_HhE8) 49 | 50 | ### Posts 51 | 52 | * [Blockchain Testing Tutorial: Process, Tools, and Best Practices](https://www.lambdatest.com/learning-hub/blockchain-testing) 53 | * [The complete guide to blockchain testing](https://blog.logrocket.com/complete-guide-blockchain-testing/) 54 | * [Blockchain Testing](https://blog.testproject.io/2022/02/15/blockchain-testing/) 55 | * [Solutions for Testing Blockchain: Private Blockchains, Permutations, and Shifting Left](https://www.infoq.com/articles/testing-blockchain-solutions/) 56 | * [Blockchain Testing by Qtek Systems](https://www.qteksystems.com/wp-content/uploads/2019/11/Block_Chain_Testing_Final.pdf) 57 | * [Understanding Cybersecurity Through the Lens of Blockchain Applications](https://blog.qasource.com/understanding-cybersecurity-through-the-lens-of-blockchain-applications) 58 | * [25 Most Commonly Used Blockchain Terms Explained](https://blog.qasource.com/25-most-commonly-used-blockchain-terms-explained) 59 | * [How to Ensure QA for Smart Contracts in Decentralized Applications](https://blog.qasource.com/how-to-ensure-qa-for-smart-contracts-in-decentralized-applications) 60 | * [Blockchain in Mobile Applications](https://blog.qasource.com/blockchain-in-mobile-applications) 61 | * [How to Test Bitcoin Wallet Apps](https://dzone.com/articles/testing-tips-how-to-test-bitcoin-wallet-apps) 62 | * [5 Popular Tools for Testing Blockchain Applications](https://www.cigniti.com/blog/5-popular-tools-for-testing-blockchain-applications/) 63 | * [Testing Blockchain Applications](https://azevedorafaela.com/2020/12/29/testing-blockchain-applications/) 64 | * [Testing Blockchain](https://qualitestgroup.com/insights/white-paper/testing-blockchain/) 65 | * [Blockchain Testing in 2020: Ultimate Checklist & Tools](https://blog.qatestlab.com/2020/08/04/blockchain-testing-in-2020/) 66 | * [Blockchain Testing Tools](https://testguild.com/blockchain-testing-tools/) 67 | * [Blockchain Tests Workshop at The National Software Testing Conference](https://azevedorafaela.com/2021/10/15/blockchain-tests-workshop-at-the-national-software-testing-conference/) 68 | 69 | ### Blockchain for Test Engineers (Series) 70 | * [Blockchain for Test Engineers: Roadmap](https://testengineeringnotes.com/posts/2022-04-24-blockchain-testing-mindmap/) 71 | * [Blockchain for Test Engineers: Hashing](https://testengineeringnotes.com/posts/2022-05-01-bchain-testing-1-hashing/) 72 | * [Blockchain for Test Engineers: Encryption](https://testengineeringnotes.com/posts/2022-05-08-bchain-testing-2-encryption/) 73 | * [Blockchain for Test Engineers: Digital Signatures](https://testengineeringnotes.com/posts/2022-05-08-bchain-testing-3-signatures/) 74 | * [Blockchain for Test Engineers: Distributed Systems](https://testengineeringnotes.com/posts/2022-05-22-bchain-test-4-distributed-systems/) 75 | * [Blockchain for Test Engineers: P2P networks and Gossip protocol](https://testengineeringnotes.com/posts/2022-05-29-bchain-test-5-p2p-gossip-protocols/) 76 | * [Blockchain for Test Engineers: What is blockchain?](https://testengineeringnotes.com/posts/2022-06-05-bchain-test-what-is-blockchain/) 77 | * [Blockchain for Test Engineers: Merkle Trees](https://testengineeringnotes.com/posts/2022-06-19-bchain-test-7-merkle-tree/) 78 | 79 | ### Whitepapers 80 | * [Blockchain Testing: Challenges, Techniques, and Research Directions](https://arxiv.org/pdf/2103.10074.pdf) 81 | * [Test Strategies for Blockchain Technology](https://bbrc.in/wp-content/uploads/2021/03/Spcial-Issue-13-13-39.pdf) 82 | * [Functional Testing for Blockchain Applications](https://us.nttdata.com/en/-/media/assets/white-paper/404734-blockchain-testing-white-paper.pdf) 83 | 84 | #### Blockchain Consensus 85 | * [Blockchain Consensus Algorithms: A Survey](https://arxiv.org/pdf/2001.07091.pdf) 86 | * [A BLOCKCHAIN SIMULATOR FOR EVALUATING CONSENSUS ALGORITHMS IN DIVERSE NETWORKING ENVIRONMENTS](https://digitalcommons.odu.edu/cgi/viewcontent.cgi?article=1050&context=vmasc_pubs) 87 | 88 | #### Blockchain Performance 89 | * [Why blockchain performance is hard to measure](https://a16zcrypto.com/posts/article/why-blockchain-performance-is-hard-to-measure/) 90 | * [Understanding Blockchain Latency and Throughput](https://www.paradigm.xyz/2022/07/consensus-throughput) 91 | * [Demystifying Blockchain Performance: An In-Depth Guide](https://coinmarketcap.com/community/articles/648893bc4319ef64c5370719/) 92 | * [Introducing flood: a load testing tool for benchmarking EVM nodes](https://www.paradigm.xyz/2023/06/flood) 93 | * [BBSF: Blockchain Benchmarking Standardized Framework](https://dl.acm.org/doi/pdf/10.1145/3595647.3595649) 94 | * [Blockchain Performance Metrics](https://www.lfdecentralizedtrust.org/learn/publications/blockchain-performance-metrics) 95 | * [Proof-of-Authority Performance Benchmark Tool](https://github.com/Azure-Samples/blockchain/blob/master/ledger/template/ethereum-on-azure/performance-benchmarking/README.md) 96 | * [Performance Evaluation of Blockchain Systems: A Systematic Survey](https://ieeexplore.ieee.org/ielx7/6287639/8948470/09129732.pdf) 97 | * [Towards Scaling Blockchain Systems via Sharding](https://arxiv.org/pdf/1804.00399.pdf) 98 | * [Performance Analysis of the Raft Consensus Algorithm for Private Blockchains](https://arxiv.org/pdf/1808.01081.pdf) 99 | * [Performance Modeling and Analysis of a Hyperledger-based System Using GSPN](https://arxiv.org/pdf/2002.03109.pdf) 100 | * [Performance Analysis of Blockchain Systems with Wireless Mobile Miners](https://par.nsf.gov/servlets/purl/10203510) 101 | * [Performance Benchmarking and Analysis of Blockchain Platforms](https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4385643) 102 | * [Benchmarking Performance of Ethereum Blockchain on Resource Constrained Devices](https://conferences.computer.org/cpsiot/pdfs/CPS-IoTBench2022-3AaWaJDp8u8wWtVZuifZ3/703800a012/703800a012.pdf) 103 | * [BBSF: Blockchain Benchmarking Standardized Framework](https://dl.acm.org/doi/fullHtml/10.1145/3595647.3595649) 104 | * [Gromit: Benchmarking the Performance and Scalability of Blockchain Systems](https://arxiv.org/pdf/2208.11254.pdf) 105 | * [Performance and Scalability Evaluation of a Permissioned Blockchain Based on the Hyperledger Fabric, Sawtooth and Iroha](https://doiserbia.nb.rs/img/doi/1820-0214/2022/1820-02142200002W.pdf) 106 | * [Exploring Blockchain Performance with CPUHEAVY Microbenchmark on Smart Contracts](https://iacis.org/iis/2021/4_iis_2021_330-345.pdf) 107 | * [Performance Analysis of Blockchain Platforms](https://digitalscholarship.unlv.edu/cgi/viewcontent.cgi?article=4370&context=thesesdissertations) 108 | * [Testing at Scale of IoT Blockchain Applications](https://www.dre.vanderbilt.edu/~schmidt/PDF/blockchain-testing-book-chapter.pdf) 109 | 110 | #### Blockchain Security 111 | * [A Survey on Ethereum Systems Security: Vulnerabilities, Attacks and Defenses](https://arxiv.org/pdf/1908.04507.pdf) 112 | * [Security Analysis Methods on Ethereum Smart Contract Vulnerabilities — A Survey](https://arxiv.org/pdf/1908.08605.pdf) 113 | * [A Survey of Security Vulnerabilities in Ethereum Smart Contracts](https://arxiv.org/pdf/2105.06974.pdf) 114 | * [Smart Contracts Vulnerabilities: A Call for Blockchain Software Engineering](https://dspace.stir.ac.uk/bitstream/1893/27135/1/smart-contracts-vulnerabilities-3.pdf) 115 | * [A Survey of Tools for Analyzing Ethereum Smart Contracts](https://publik.tuwien.ac.at/files/publik_278277.pdf) 116 | * [Securify: Practical Security Analysis of Smart Contracts](https://arxiv.org/pdf/1806.01143.pdf) 117 | * [Harvey: A Greybox Fuzzer for Smart Contracts](https://mariachris.github.io/Pubs/FSE-2020-Harvey.pdf) 118 | * [CONFUZZIUS: A Data Dependency-Aware Hybrid Fuzzer for Smart Contracts](https://arxiv.org/pdf/2005.12156.pdf) 119 | * [Manticore: A User-Friendly Symbolic Execution Framework for Binaries and Smart Contracts](https://arxiv.org/pdf/1907.03890.pdf) 120 | * [Slither: A Static Analysis Framework For Smart Contracts](https://arxiv.org/pdf/1908.09878.pdf) 121 | * [SmartCheck: Static Analysis of Ethereum Smart Contracts](https://s-tikhomirov.github.io/assets/papers/smartcheck.pdf) 122 | * [Automated Test-Case Generation for Solidity Smart Contracts: the AGSolT Approach and its Evaluation](https://arxiv.org/pdf/2102.08864.pdf) 123 | * [A Fuzz Testing Service for Assuring Smart Contracts](https://scholars.cityu.edu.hk/files/47679267/qrsc2019_mei_ashraf_jiang_chan.pdf) 124 | * [Detecting Nondeterministic Payment Bugs in Ethereum Smart Contracts](https://dl.acm.org/doi/pdf/10.1145/3360615) 125 | * [ETHPLOIT: From Fuzzing to Efficient Exploit Generation against Smart Contracts](https://siqima.me/publications/saner20b.pdf) 126 | 127 | ## [Cardano](https://cardano.org/) 128 | 129 | * [Functional tests for Cardano node](https://github.com/input-output-hk/cardano-node-tests) 130 | * [Testing Plutus Contracts with Contract Models](https://plutus-apps.readthedocs.io/en/latest/plutus/tutorials/contract-models.html) 131 | * [How we test at Cardano](https://iohk.io/en/blog/posts/2017/08/30/how-we-test-cardano/) 132 | * [tasty: Modern and extensible testing framework](https://hackage.haskell.org/package/tasty) 133 | 134 | ## [Bitcoin](https://github.com/bitcoin/bitcoin) 135 | 136 | * [Bitcoin Tests](https://github.com/bitcoin/bitcoin/tree/master/test) 137 | * [Testing Applications](https://developer.bitcoin.org/examples/testing.html) 138 | * [bitcoinj](https://bitcoinj.org/testing) 139 | 140 | ## [Hyperledger](https://www.hyperledger.org/) 141 | 142 | * [Caliper](https://github.com/hyperledger/caliper) - blockchain performance benchmark framework, which allows users to test different blockchain solutions with predefined use cases, and get a set of performance test results. 143 | * [fabric-test](https://github.com/hyperledger/fabric-test) 144 | * [indy-test-automation](https://github.com/hyperledger/indy-test-automation) 145 | 146 | ## [Ethereum](https://ethereum.org/en/) 147 | 148 | * [MixBytes Tank](https://github.com/mixbytes/tank) - console tool which can set up a blockchain cluster in minutes in a cloud and bench it using various transaction loads. Supported blockchains are Haya and Polkadot. 149 | * [Bitcoin-Simulator, capable of simulating any re-parametrization of Bitcoin](https://github.com/arthurgervais/Bitcoin-Simulator) 150 | * [MADT - a distributed application modelling system](https://github.com/dltcspbu/madt) 151 | * [quorum-acceptance-tests](https://github.com/ConsenSys/quorum-acceptance-tests) 152 | * [polkadot-lab](https://github.com/w3f/polkadot-lab) 153 | * [solidity-coverage](https://github.com/sc-forks/solidity-coverage) - code coverage for Solidity testing 154 | * [hevm](https://github.com/dapphub/dapptools/tree/master/src/hevm) - an implementation of the Ethereum virtual machine (EVM) made specifically for symbolic execution, unit testing and debugging of smart contracts 155 | * [Whiteblock Genesis](https://github.com/whiteblock/genesis) - allows users to provision multiple fully-functioning nodes over which they have complete control within a private test network 156 | * [OpenZeppelin Test Environment](https://github.com/OpenZeppelin/openzeppelin-test-environment) - JS based framework for smart contract testing 157 | * [OpenZeppelin Test Helpers](https://github.com/OpenZeppelin/openzeppelin-test-helpers) - Assertion library for Ethereum smart contract testing 158 | * [Waffle](https://github.com/EthWorks/Waffle) - the most advanced framework for testing smart contracts. 159 | * [Truffle](https://www.trufflesuite.com/docs/truffle/overview) - development environment, testing framework and asset pipeline for blockchains using the Ethereum Virtual Machine (EVM), aiming to make life as a developer easier. 160 | * [Hardhat](https://hardhat.org/) - development environment to compile, deploy, test, and debug your Ethereum software. 161 | * [Embark](https://framework.embarklabs.io/docs/contracts_testing.html) - fast, easy to use, and powerful developer environment to build and deploy decentralized applications, also known as “DApps”. 162 | * [Hive is a system for running integration tests against Ethereum clients.](https://github.com/ethereum/hive/blob/master/docs/overview.md) 163 | * [mythril](https://github.com/ConsenSys/mythril) - security analysis tool for EVM bytecode (Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains) 164 | * [slither](https://github.com/crytic/slither) - Solidity & Vyper static analysis framework written in Python3 165 | * [echidna](https://github.com/crytic/echidna/) - Haskell program designed for fuzzing/property-based testing of Ethereum smart contracts 166 | * [manticore](https://github.com/trailofbits/manticore) - symbolic execution tool for the analysis of smart contracts and binaries 167 | * [eth-tester](https://github.com/ethereum/eth-tester) - tools for testing Ethereum applications 168 | * [Populus](https://populus.readthedocs.io/en/latest/testing.html) - framework provides for testing your Solidity smart contracts 169 | * [brownie](https://github.com/eth-brownie/brownie) - Python-based development and testing framework for smart contracts targeting the Ethereum Virtual Machine 170 | 171 | ## Smart Contract Testing 172 | 173 | * [TESTING SMART CONTRACTS](https://ethereum.org/en/developers/docs/smart-contracts/testing/) 174 | * An In-Depth Guide to Testing Ethereum Smart Contracts. Parts: [One](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297), [Two](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-d403574a8c42), [Three](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-3e07b8c38755), [Four](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-fd699e3087e6), [Five](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-31534a48e177), [Six](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2236902bf826), [Seven](https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-ff061e79bb86) 175 | * [How to Test Ethereum Smart Contracts](https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d) 176 | * [The many ways of testing Smart Contracts in Ethereum](https://www.innoq.com/en/blog/testing-ethereum/) 177 | * [Ethereum Mainnet Testing with Python and Brownie](https://iamdefinitelyahuman.medium.com/ethereum-mainnet-testing-with-python-and-brownie-82a61dee0222) 178 | * [Blockchain Tests with Truffle - Solidity](https://azevedorafaela.com/2021/03/19/blockchain-test-workshop-with-truffle/) 179 | * [TESTING SMART CONTRACTS](https://ethereum.org/en/developers/docs/smart-contracts/testing/#unit-testing) 180 | * [Tips for Unit Testing Ethereum Smart Contracts in Solidity](https://betterprogramming.pub/a-few-tips-for-unit-testing-ethereum-smart-contract-in-solidity-d804062068fb) 181 | * [Smart Contract Code Coverage In Hardhat](https://medium.com/coinmonks/smart-contract-code-coverage-in-hardhat-d4a5ff6c9ba6) 182 | * [Smart Contract Testing course](https://youtu.be/vLEB-YRukws?si=t2oyafQ5_jSQVvj_) 183 | 184 | ## Smart Contract Security 185 | 186 | * [Getting Started with Smart Contract Fuzzing](https://www.immunebytes.com/blog/getting-started-with-smart-contract-fuzzing/) 187 | * [smart-contract-vulnerabilities](https://github.com/kadenzipfel/smart-contract-vulnerabilities) 188 | * [Solidity Security: Comprehensive list of known attack vectors and common anti-patterns](https://blog.sigmaprime.io/solidity-security.html) 189 | * [Blockchain Attack Vectors: Main Vulnerabilities Against Blockchain Technology](https://www.apriorit.com/dev-blog/578-blockchain-attack-vectors) 190 | * [Smart Contract Randomness or ReplicatedLogic Attack](https://blog.finxter.com/randomness-or-replicatedlogic-attack-on-smart-contracts/) 191 | * [Ethereum Smart Contract Security Best Practices](https://consensys.github.io/smart-contract-best-practices/) 192 | * [Damn Vulnerable DeFi](https://www.damnvulnerabledefi.xyz/) 193 | * [Capture the Ether](https://capturetheether.com/) 194 | * [Smart Contract Security and Auditing 101](https://www.youtube.com/watch?v=0aJfCug1zTM) 195 | * [Smart Contract Fuzzing](https://youtu.be/LRyyNzrqgOc?si=a7td8lNkXwqGDKTB) 196 | * [Smashing Ethereum Smart Contracts for Fun and Real Profit](https://github.com/b-mueller/smashing-smart-contracts?utm_source=pocket_mylist) 197 | * [Kerala chapter Meet - Pen testing Blockchain Solutions (Ethereum Nodes & Smart Contracts)](https://youtu.be/ahZ_V6qdBjQ) 198 | * [Fuzzing Ethereum Smart Contract using Echidna - Blockchain Security #1](https://www.youtube.com/watch?v=EA8_9x4D3Vk) - by Patrick Ventuzelo 199 | 200 | ## Web3 Testing 201 | 202 | * [E2E Tests for Web3 Applications - TestJS Summit 2022](https://azevedorafaela.com/2022/12/14/e2e-tests-for-web3-applications-testjs-summit-2022/) 203 | * [synpress](https://github.com/Synthetixio/synpress) - E2E testing framework based on Cypress and Playwright with support for MetaMask 204 | * [dAppeteer](https://github.com/ChainSafe/dappeteer) - E2E testing for dApps using Puppeteer + MetaMask 205 | * [dappwright](https://www.npmjs.com/package/@tenkeylabs/dappwright) - E2E testing for dApps using Playwright + MetaMask & Coinbase Wallet 206 | * [Web3 E2E Tests Workshop](https://github.com/thechaincademy/web3-tests-workshop) - an example of project with synpress --------------------------------------------------------------------------------