Blockchain
-
March 14, 2023

How QA Can Help With Blockchain Testing

Those of us using computers since 1985 have lived an impressive technological journey thus far. We were the last generation to use analog devices and witnessed many types of technology slowly becoming obsolete, as well as those that become part of our daily lives.

One of the greatest discoveries in technology was the creation of the blockchain. This technology transformed how we used to think and manipulate information and spawned a huge number of new projects, including Bitcoin.

As expected, IT professionals also had to “mutate” their work, common knowledge, and the areas in which they used to be involved. These changes were suddenly happening without hesitation, and we, the QA engineers, were affected too. It’s now time to mutate again into something else.

But first, we must understand why this mutation is necessary and what makes this new technology so outside of the box, metaphorically speaking.

A Little Software History 

In the 90s, IT professionals used highly complex software (in terms of knowledge required to handle it) full of not-so-friendly UI components, adding another layer of difficulty. 

In addition, the trend was to generate many different types of software to manage various problems, such as one software to write a document, one to print it, one to check grammar, etc.

So, the 90s IT world was all about complexity and competitiveness between software manufacturers. When 2000 came, the software with it changed the entire IT world, including best practices manuals and methodologies, into something much better than its predecessor. 

Computer from the 2000s

Software was understood as a way to make our daily work faster, simpler, and scaled. So, today, almost all companies worldwide have global business partners and clients generating products, services, and earnings 24hrs daily.

We have reached a moment in the evolution of technology that makes us capable of resolving working problems with the click of a button.

An entirely new “philosophy of work” was raised from technological improvements. Those changes came to stay. We had a lot of work on our hands, with better salaries and career opportunities.

Then, another new stage of the IT world came along: the blockchain.

Why is Blockchain so Outstanding?

Blockchain has a concept that makes it perfect for today’s world: immutability. Once a new block is generated, it can’t be modified, altered, or destroyed by anyone. This unique characteristic makes it the perfect technology to overcome the always-existing problem of fraud and embezzlement of operations.

This concept provides a new level of security, which can be used on cryptocurrencies and in many applications. These include citizen legal aspects or food traceability (checking where food came from and whether it has been kept under healthy conditions to be consumed) and other applications.

Many IT professionals are entering the “crypto-verse” technology careers and opportunities. Hearing about a blockchain developer opportunity or reading about new languages for blockchain developers is common. You barely hear about “blockchain testers” or something along those lines. It appears that QA teams are not required to be in this world.

I can tell you, from a QA perspective: they’re wrong. And I try, in this article, to bring more light upon why we are still needed and why we should start stepping into this world. Let’s see how. 

Know the Blockchain’s Weaknesses

If we assume there are no failures when creating a new blockchain or a new project for cryptocurrency, then we’re wrong. Every software in the world has errors. And this is not because QA professionals are not competitive in their work or because they’re not giving their 110% daily.

It’s related to the testing fundamentals. The first one, in particular, says: “Tester demonstrates the presence of errors, not their absence.” The 2nd principle states: “Testing exhaustivity is always impossible to reach.”

In other words: there’s no way (at least, for now) to explore all the sentences, the flows, and conditions of specific software and repair all the existing errors to reach such a “non-error existing state.” It’s impossible because of the number of variables to take into count and the complexity of generating highly specific situations to test.

Testing the Crypto-verse

With the crypto-verse, we must keep this in mind. If we test the crypto wallet by transferring cryptocurrencies from one account to another, we’re NOT testing the cryptocurrency or blockchain functionality. We’re testing the portal’s behavior because we’re in the last layer.

With testing science, we define that we have to separate the component to test it and be able also to determine if there are any bugs. Without doing this, we can’t take measures to check whether our app is in the best shape or not to go live on the market.

The second problem is that smart contracts don’t have a user interface to test because they all rely on code structures. The last issue is that the above situations make the current testing lifecycle OBSOLETE. 

We all know that each software development cycle's testing phase for each software development cycle is at the end, i.e., whenever we get the first MVP version to test with.

However, with smart contracts or blockchain and the crypto-verse in general, there is NO MVP to test. So, this situation kept me thinking about how QA engineers can test a cryptocurrency and, by doing that, test the blockchain itself.

The answer is not easy but simple: we have to change the software development paradigm. For QA teams, the testing should start before getting the cryptocurrency launched or deployed into the crypto-verse. 

So, the current software development lifecycle for normal software development would look similar to this:

Software development lifecycle - Source

On the crypto-verse, we should change the 5th phase (testing & integration) to be executed before the 3rd (design) since there won’t be any MVP with UI available to test. It directly implements it into production. 

If there’s no UI to test, should that mean that QA engineers are no longer required in this type of software development lifecycle? The answer is NO.

Testing Science

If we dig deeper into testing science, we know that we have two main types of testing processes: One is the obvious one: testing the software through the MVP version. The technical term for this type of technique is Dynamic Testing.

Surprisingly, many QA Engineers are unfamiliar with the second type of testing process, technically called Static Testing. It has a different focus than the dynamic one. Let's see how.

Static testing

The main purpose of static testing is to ensure that the code itself (done by developers) and the functional documents, the designs, and the business requirements are completed and can be tested using a pencil and paper. 

In other words, doing theoretical tests on paper could show any weak points that the software design or business rules could face as a potential threat. The same can be applied to blockchain and smart contracts in general.

How QA Can Help Blockchain Testing

Having the business requirements and other specifications under “QA surveillance” could be the best way to avoid unexpected situations and border cases that have not been foreseen and could derive in a catastrophic failure. 

All the common methods and techniques (regression test, integration test, smoke test, etc.) may not be applied as they belong to the dynamic test side.

From the static test side, we can apply validation and verification processes, inspections, and revisions for documentation. 

These are the tools we have today to enter into the crypto-verse. I’m sure new tools will have been developed right now or in the near future to work as QA in this new software paradigm.

What are your thoughts on QA and blockchain testing? Let us know in the comments section.