6 week course
6-8 hours per week
Note! It is a prerequisite for the course that you have EITHER completed the B9lab Ethereum Developer course or an equivalent program of blockchain study. You need to know already how to write a simple smart contract and to run a local Ethereum node
A computer with at least 8 GB RAM
and 50GB free hard-disk space
About This Course
This course has been developed to meet the growing need for blockchain-focused QA Engineers.
Everyone is talking about blockchain technology, especially in relation to smart contracts, which have the power to touch almost every area of our lives. Ethereum in particular has 30 times the number of developers involved in its ecosystem than its nearest competitor does. But where are all the QA engineers? It's a sad fact that many projects have gone live with little or no formal testing by anyone other than the person who developed the dApp. The consequence of working with bleeding-edge technology combined with a lack of formal quality assurance is that there have been bugs. Some have been minor, but others have caused the loss of hundreds of thousands of dollars.
A project built on the Ethereum blockchain may look identical to a normal, centralised application or API. But the differences are so great that the whole quality assurance process needs to be approached in a completely different way, requiring the QA engineer to dig deep into the code and conceptualise ways of pushing the underlying smart contracts to their limits with different data inputs and variations in network conditions and transaction fees.
This course has been developed to meet the growing need for blockchain-focused QA Engineers. The course provides hands-on examples of this type of rigorous exploratory testing and explains how to set up different test environments in order to do it.
Assuming the QA engineer – like any modern testing professional on an Agile project – is involved at the earliest stage of the project, he or she needs to ask questions about transaction fees, latency, privacy and data compliance. You will learn to specify acceptance criteria that can later be used as the basis for automating your acceptance tests, with quizzes, screencasts and exercises to test your understanding of the requirements. Test automation is a critical part of the QA process. You will learn about the most common test libraries and how to run your suite in a continuous integration environment.
Someone needs to build it
The infrastructure of tomorrow needs sound developers. Stay ahead.Enroll Now!
The role of the tester. Testing ethics. Test environments [1 Module]
Why we need dedicated testers on blockchain projects. Role of the modern tester and how it applies to blockchain. For applications where data is immutable and millions of dollars (and potentially lives) are at stake, a strong ethical stance is important, and this should be part of quality assurance for the product. How far can we replicate the live network with local nodes and testnets? Evaluating how and when to test.
- Examples of smart contract bugs
- How might these have been mitigated?
- The modern test engineer - an evolving career
- Shifting left in software development
- Ethical responsibilities
- When would you use a mock (TestRPC), a local node, the testnet, the live network?
- Recap of smart contract deployment, with a look at boundary testing inputs
- Testing to minimise gas fees
Acceptance criteria and requirements [2 Modules]
In a ‘shift left’ development environment, the QA engineer should be an integral part of the team who develops the user stories and requirements. How do these differ from the requirements in a non-blockchain project? And how can we write even the most Agile test plans in a world that is rapidly evolving? We take a deep dive into writing BDD scenarios that can be later used for acceptance tests, and take a qualitative overview of how the user interface reflects what is happening in the blockchain. Manually testing smart contracts using exploratory and session-based techniques is covered here.
- Behaviour-driven development
- Deriving scenarios from user stories
- Working with non-technical product owners
- Is blockchain tech the right solution?
- Consequences of immutability
- UI and messaging - highlighting immutability to end user
- Handling latency - how much is acceptable
- User-generated data - testing at the boundary
- Testing combinations of data, caller and value
- Test planning
Automation testing, static analysis and tooling [2 Modules]
Many of the tools we use for automated testing in a blockchain context are familiar, others less so. Automated tests are critical to the success of a project. Here we cover the most popular options and write our own test contracts and functional tests, both with and without using a framework. This is important because while Truffle provides a clean room each time the tests are run (so the tests do not share state with each other), we need to ensure we do this ourselves if we are not using a framework.
- Testing using Remix
- Compiler warnings
- Overview of static analysis tools
- How state works in Ethereum
- Continuous integration
- Solidity test contracts
- Automated tests for Truffle
- Automated tests for contract without framework
- Automated checks for gas costs
Test techniques, monitoring in Production, nonfunctional requirements [1 Module]
How do some of the more popular test techniques relate to developing blockchain applications? We look at effectively running sessions and conducting risk-based testing. Nonfunctional requirements are often ignored, but this is dangerous. With public blockchains, gas costs add a new dimension to NFRs that need to be taken into account. How can we test our business model against fluctuating gas costs? When using a public blockchain, events such as forks can force a need for monitoring in production to ensure the resilience of our app. We cover tools and techniques that can be used to do this, and finish with a roundup of some of the most popular bug bounty programs that are around at the moment.
- Session-based testing
- Risk-based testing
- Security audits
- Performance testing
- Monitoring gas cost
- Forks and replay attacks
- Regulatory requirements
- Bug bounty programs
Your final project will be to find and report all the bugs in a fictional application, and to provide automated acceptance tests for it. And at the end of the course, we'll be sure to suggest links to some of the best bug bounty programs around, so you can hone your newly developed blockchain QA engineer skills.
Support & Interaction
For the duration of the course participants will be provided with a high level support by instructors. Participants are able to collaborate and exchange experiences within their cohort through different communication channels on slack.
Your course team
Rhian Lewis is a freelance software engineer specialising in test automation who has worked on projects for some of the world's best-known brands since 2009. She has been deeply involved in the cryptocurrency and blockchain community since 2013, as the co-developer of altcoin portfolio tracker CountMyCrypto and the co-host of London Women in Bitcoin. She writes about blockchain tech at medium.com/@rhian_is and is a regular speaker on the subject, especially in the context of testing.
Xavier is a software and infrastructure engineer. In the past 15 years, he has coded, deployed, customised, troubleshot, and supported various software systems. He has also guided, educated, taught, and coached customers across Asia. Xavier used to be based in Thailand and Singapore. For more than two years now, he has been a keen member of the blockchain community.
B9lab awards certificates to participants who show very strong ability and understanding during the course. The pass mark is fairly high and requires an average of 80% or more. Successful participants receive a certificate that is verified on the Ethereum blockchain.
You can see how this looks like in the B9lab Certificate Center.
Exam and Timeline
At the end of the 6 week course, participants can decide on the date of their exam within a 8 week window.