Blockchain technology has been explored for healthcare, financial services (paywall), intellectual property protection and even photojournalism usage. Gartner predicts that by 2023, blockchains will support the movement and tracking of $2 trillion worth of goods and services per year. In my company, we also use blockchains as an additional layer of security in our products. However, this architectural decision affects the way you should test your software.
Software testing helps ensure strong data security, smooth application performance and an enjoyable user experience. The testing basics are pretty standard for all kinds of software. But it turns out there are some peculiarities to building a testing strategy for blockchain-based solutions.
Planning is always the first step.
When we first started adding blockchain features to our products, it became obvious that simply running tests as you go is not the best scenario. There are just too many things that can negatively affect test outcomes.
For example, some of the important development aspects include the way you handle source code and branches and what environments you use in the project matter. And when these aspects are ignored, it can be difficult or even impossible to introduce improvements later in the product development life cycle. So it’s crucial to start planning a testing strategy long before the actual development begins. This way, you can ensure the quality of the final product and spend less time on tests.
A testing strategy should specify in detail what you’ll test, how and when (for every stage of the project). It should also note what tools and approaches you can use to do this. In my company, testing strategies also help us structure and organize specific, complex testing processes and thus improve our overall teamwork.
During our first blockchain-related projects, we followed industry-recognized standards, such as IEEE 829-2008, to bring order to our test documentation and get the most out of it. But as the number of such projects grows, you may want to create your own methodology for testing blockchain-based products based on industry standards and your own experience.
It’s important to understand your product.
Successful testing begins with a deep understanding of your project’s characteristics. For instance, testing applications built on Ethereum will probably have little in common with testing Bitcoin- or Hyperledger-based solutions. That’s why your software testing team should master the basics of blockchain technology and the peculiarities of the particular platform before running any tests.
At the same time, blockchains are often used as part of a more complex solution. Therefore, to plan testing activities for such a product, you’ll also need extensive knowledge of tools and technologies from outside the blockchain domain.
For example, many of today’s blockchain-based applications use application programming interface (API) protocols, so knowing the basics of API testing will surely be a plus. Knowledge of the following will also be useful:
• Continuous integration/continuous delivery tools and processes.
• Standard monitoring systems and tools.
• Blockchain-specific tools and frameworks.
Planning your tests in detail can also help you eliminate hidden and unobvious obstacles. For example, in one of our recent projects, we needed to build and test several product components in parallel. When we were planning our tests, we had to analyze and take into account all interconnections and dependencies between these components. Otherwise, we risked significantly overspending on our testing resources and slowing down the overall development process.
Also, I advise you to share a draft of your testing strategy with all project stakeholders before releasing the final version. That’s what we often do at my company to get valuable insights and advice on how to improve the document.
The complexity of the blockchain can significantly expand the scope of necessary tests. This is why preparing a testing strategy is an important phase of building applications with blockchain features. The more well-thought-through your strategy is, the greater your chance will be of creating a quality product that performs at its best.