Quality Assurance for Blockchain: Why it’s Critical
Blockchain, a technology that spawned a nearly half a trillion dollar cryptocurrency industry. As of July 17th there are 1641 various coins registered and being traded in equivalent of billions of dollars every 24 hours. With so much talk across internet, news channels and TV shows about the waves it is making, there is one group that remains near silent on the topic: Quality Assurance.
Blockchain QA: Where are you?
“I did some testing and my code works perfectly”, “It runs on my computer just fine”, “Just ship it” — if you are a QA engineer you probably heard these famous “last words” many times before finding that one juicy bug which brings big chunk of system to its knees. That’s why we have Quality Assurance department in the first place: We try to catch these issues before customer does. So what exactly is the problem here?
Like any other group in the software world, QA has a very active community spread across many discussion groups with members ranging from just few thousand to hundreds of thousands. There are general topics about doing various type of Testing as well as hundreds of very minute detailed ones on how automation can do a click on a given type of objects (with a lot of debates on who’s code is the best one to achieve the objective). But when it comes to the world of Blockchain, there are practically no active groups or discussions for it.
In fact, it seems to be eerily quite from Quality Assurance in general when it comes to testing Blockchain. Looking through the existing QA communities doesn’t bring up anything related to testing this technology and the usual grapevine of information is very quiet about that as well.
Is there something worth discussing though?
Abso-freaking-lutely! There are indeed a lot of things that can and should be discussed about testing the blockchain. The technology itself is not a “good ol’” web based application or a mobile app, it is an intricate peer-to-peer decentralized database that rely’s on many people/machines (aka nodes) to operate. Going even further, there is no single Blockchain technology out there to rule them all. As an example, the two of the biggest chain’s that you probably heard about: Bitcoin and Ethereum both contain core concepts of immutable ledger but otherwise have very different features like Smart Contracts and Gas. This means a testing approach to any system which is based on these capabilities will be different as well.
Now let’s add another layer of complexity in to equation here: What happens if there are code changes that need to be introduced in to the production/live environment of your companies blockchain? A person who is not fully familiar with this might just say “Test the change, deploy to production, make sure things work there fine and go out for drinks to celebrate another successful patch!”. Not so fast! For any major patch to take hold you would need a consensus of majority of the users to bring the patch on board and if it doesn’t happen you get a split in a community who will start using different currency to support it.
And this is just a tip of a HUGE Iceberg that makes up Blockchain technological challenge!
Are Blockchain companies doing Quality Assurance?
In my earlier blog post I have described how spectacularly Blockchain related technology can fail because of the bugs and the amount of money it can cost to end-users. So with so many companies in Blockchain business and the deafening silence around QA around them, this makes me think that they either:
a) Don’t really care about quality of their product and assume “It’ll just work”.
b) Their company might not even know what QA is really for and the critical role they play in any software development.
I’m hoping it’s more of a case of ignorance about QA rather than a willful blindness and assumptions that “everything is going to be okey dokey” when things go live.
Blockchain QA: Start Early!
Ok, so when should QA start then? Should project wait for that perfect opportune time when all pieces are in place and just needs that final testing polish before shipping it? Well, the earlier the better!
Here are just some things to consider even before the first test case is fired in anger:
- Identify functional components and designing test plan/cases
Work with developers in identifying functionality of the Blockchain your team is creating. What features share concepts with other chains and what is truly unique to what yours is trying to accomplish.
Out of that you’ll be able to build your initial test plan and even start designing the skeleton of test cases that will be needed to test the system.
- Setup initial Test Automation Framework
What test automation framework is the best for your project? There are multiple things to consider like what interfaces does it need to access: Web, API, Node-to-node, etc. Multiple tools/languages to support these interface (eg: Postman for API, Java Selenium for Web, etc.). A lot of considerations before you even automate your first test.
- Continuous Integration
Chances are your project will be Open Source, so what CI system should you use that will also expose the results out to the public? You would also need to consider what operating systems it should run on (having a windows and linux should definitely be a priority).
- Performance/load testing
Identify the performance metrics that will be gathered and tools that will be used for that.
- Asking questions!
QA can contribute greatly to how Blockchain works by bringing up various scenario’s from testing perspective to make sure they are being considered by the developers.
Calling all Blockchain Quality Assurance Engineers
So what are the next steps in Quality Assurance when it comes to Blockchain world? Well, I’ll be doing my part by blogging about all the parts of testing phases that we’ll be going through here in Dispatchlabs. It doesn’t mean that what I’ll be writing is THE only way of doing things, but hopefully it’ll start more conversations in the QA community.
You can also join us on the discord channel where you can talk to us directly about what we are doing with Dispatch and how: https://discordapp.com/invite/eDxHVDK