What is the need for testing in a Blockchain?
A block once added to the blockchain remains there forever and if you try to change the data in some block in between the chain, the following blocks become invalid. A single change in block of the blockchain will cause every subsequent blocks to change as well. This makes it important that whenever a new block is added, it’s being added the right way because it cannot be changed at a later date. It becomes complex to exploit a blockchain and the testing of blockchain becomes even more complex. Add to that, it’s contributes to large transactions which goes through validation, encryption, decryption, transmission, etc so it becomes necessary to make sure that these processes go smoothly.
What all do you need to test in a Blockchain?
1. Block Size: The maximum fixed limit of a block is 1 megabyte. After the introduction of bitcoin, the average size of a block for the first 18 months came out to be under 30 KB. But in December 2017, it hovered around 1 MB. What if the size of a block exceeds beyond 1 MB? Well, this is yet to be decided how the blocks above 1 MB pan out.
2. Chain Size: There is no limit on the size of the chain. So it is fun to test it for its function and performance. For example, the bitcoin chain’s size keeps on increasing day by day. If you want to know the current chain size, just hit here (it’s almost 50740 when I am writing this).
3. Load: With so many people on the blockchain, load becomes a major parameter to test in a blockchain. Let’s take an example of bitcoin. It currently has a maximum throughput of 3-4 transactions per second but what if the transaction/second increases as in case of Visa(2000), Paypal(193), etc. Hence load remains the major problem with blockchain as its performance drops when load increases.
4. Security: Since there are many miners involved with a transaction, ensuring security is a little complex. Well, there is a multi-layered security system in a blockchain. If one of the layers have been hacked, the instantaneous transactions cannot be stopped. It is therefore to be tested that one security layer doesn’t affect the other.
5. Transmission of data: Encrypted and decrypted data is transferred from computer to computer so it is necessary to test if the transmission process is working flawlessly. Is the data being sent received on the other end or there is a loss in between. So it becomes necessary to make sure that the data is not lost.
6. Addition of block: Every new block is added to the chain once the transaction’s validity is authenticated. So it must be tested that there should not be any leak in the block addition system and the block must be added after authentication.