Testing Decentralised-apps on Blockchain

2017 is almost over, and it is ending with the significant change in technology. We all are familiar with the Bitcoins. Bitcoins are the cryptocurrency, which is said to bring the substantial change in how we transact online. When trading with bitcoins not only the transaction is securely logged forever, but it also maintains user anonymity.

Bitcoins introduced us to the concept called blockchains. Blockchains, as the name suggests, is the chain of blocks. These blocks hold the information of the transaction which has happened. The block is secured with hash-function once the transaction is recorded into it. This hashed block is then added to the end of the chain. With every transaction, the blockchain keeps increasing.

Diagram-of-block-getting-added-to-blockchain
Diagram of block getting added to the Blockchain

Another critical concept which blockchains use is decentralisation. Blockchains eradicates the conventional notion of client and server. Instead, it uses peer-to-peer transaction. There is no central server to store data or process requests. In decentralization, data is distributed among the nodes (or peers) in the network. And processing is done by miners. Miners are the middle man who verifies the transaction, happening between two parties. And the applications developed on blockchains are called decentralised applications or simply Dapps.

Testing Dapps is not easy because of the reasons stated above. Features of Dapps are the reason why testing them is not easy. I know it’s hard to understand what I am saying, trust me just read-on.

Challenges in testing Dapps:

Dapps like any standard applications are tested for functionalities, non-functional features, security and reliability. It will require various testing procedures like performance testing, security testing and integration testing.

Apart from all these standard testing procedures, it is also required to test:

* Smart Contract Testing:

Smart Contract is the record that states the rules and penalties for the agreement like the traditional contracts. Smart contracts have been implemented throughout the blockchain. You don’t have download whole blockchain to be able to test Smart Contract. Individual environments provided by Chrome’s Meta Plugin, Truffle and Populus.

* Node testing:

Testing Node.js is quite a familiar concept. The consistency of transactions can be tested by testing the agreement protocol. Agreement protocol test is to guarantee that transactions are stored in sequence under normal conditions as well as in cases where nodes are likely to fail or even if enough nodes do not participate in the network for a period. You can configure Node.js in TDD environment. Or you can use testing frameworks like Mocha or Chai. Both of them are easy to set-up and provide the extensive experience.

You can use our QnA site to get your node testing questions clarified.

*Non-functional testing:

Testing non-functional features of blockchain are to ensure performance and latency of the blockchain. Testing non-functional features are especially crucial because of robust nature of blockchain which comes with the variable size of the network, variable volume of transactions and the agreement protocol used. Non-functional features which are to be tested are performance testing, load testing, stress testing, usability testing, security testing and finally testing for portability.

You can use our QnA site to get your non-functional testing questions clarified.

If blockchain is the future of technology and so is the fate of testing. It is already popular enough and slowly it’s area of acceptance is increasing day by day. Now is the right time to pull up the sleeves and learn blockchain testing in and out. As and when the technology grows it will keep getting complicated, and it may come by too late to learn the basics then. Bottom-line, hundreds of tester out there are adapting to this change, when are you starting?

Feel free to use the comments sections below to share your views.