My QA Journey: Adobo & Avocado Podcast

This past month I had the opportunity to be a guest on the Adobo and Avocado podcast πŸ₯‘ to discuss my journey in Quality Assurance (QA). As someone who has worked in the tech industry for several years, it is interesting to see how I ended up in this area since my first option was to be a web developer back in the times using FrontEnd, Dreamweaver, Photoshop, Flash 🀣.

I shared my entire career journey, moving to UK and the industry differences between here and Brazil, also including some of the challenges and how I’ve overcome them, so some ideas for you that might be going through the same. And in the last part I shared my recently adventures on the Blockchain and Web3 World !

Great great time speaking with Marie and Nicole on Adobo and Avocado Podcast. Thanks for your support, and happy listening!

London Blockchain ConferenceΒ 2023

Last week I went to the London Blockchain Conference 2023 and was brilliant ! It provided a wealth of information, discussions, and real-world examples of how blockchain technology can drive innovation, improve trust (Specially with AI coming – Infocalypse), and transform various industries.

Some of the highlights over its three days were:

Day 1:

  • The conference opened with nChain Group CEO Christen Ager-Hanssen posing a question about the purpose of blockchain, eliciting answers ranging from profit to education and business.
  • Discussions focused on showcasing the potential of scalable and lawful blockchain technology to generate revenue.

Day 2:

  • The concept of improving trust with blockchain technology was the central theme of the day.
  • Keynote speaker Peter Schiff talked about how “digital gold” could replace fiat currencies like the dollar, emphasizing the role of blockchain in enabling this transition.
  • Presentations from the Philippines highlighted the country’s digital transformation efforts, including partnerships between government agencies and private companies like nChain.

Day 3:

  • The focus was on driving innovation with blockchain technology and looking towards the future.
  • Projects demonstrating real-world use cases for blockchain were showcased, such as the United Nations World Food Program’s “Building Blocks” project and Gate2Chain’s Trace application for supply chain traceability.
  • Code-along sessions provided practical insights on building blockchain-powered applications, and there was a keynote presentation by nChain Chief Scientist Dr. Craig Wright on leveraging blockchain for business efficiency and cost reduction.

It might be over, but you can still catch up on content you missed by viewing recordings from the event! You will need to register before but then you can access the past event that is going to be available for 1 year.

Web3 Test Series: Rhian Lewis

Rhian Lewis

Rhian Lewis is a consultant software engineer and former digital journalist at The Times who is a regular international conference speaker and panellist on all things blockchain and cryptocurrency. She launched the altcoin portfolio tracker countmycrypto.com, co-founded the London Women in Bitcoin meetup group in 2014 and has acted as an advisor and strategist on various blockchain projects for the last seven years. She blogs on cryptocurrency and is the author of The Cryptocurrency Revolution (Kogan Page) and Understanding Decentralized Finance (Kogan Page). She is based near Plymouth, UK.

How can we test the performance and scalability of our DApp on Web3, especially when it comes to handling high volumes of transactions?

Testing dApps challenges many of our assumptions about testing, primarily the idea that we can provide a controlled test environment that closely mirrors Production. Of course. It is still important to adhere to all our good practices for the non-Web3 parts of the application: if we are making requests to APIs for the non-blockchain parts of the dApp or if the front end is complex, we would apply all the normal strategies and tools that we would apply for a standard Web 2.0 application.

However, as the back end for the dApp is effectively supplied by a public blockchain, our application can only be as scalable and performant as the underlying network itself. Choice of blockchain will influence our approach: we may opt to use a Layer 2 solution, for example, rather than directly using a blockchain like Ethereum.

But sometimes all the testing in the world can’t help you. There have been several instances where Ethereum has more or less ground to a halt where the system is under a lot of pressure, such as the doomed Bored Ape Yacht Club Otherside NFT drop. In cases like this, even the best designed dApp will fail to deliver: the role of the tester in this case is to have ensured that the behaviour of the dApp when the system is under such pressure is such that it communicates to users exactly what is happening and – as far as possible – attempts to conserve the current state so that transactions can happen later. So you should always ensure your tests cover the β€œvery unhappy path” scenario.

What tools and frameworks are available for testing smart contracts and other components of Web3 applications?

The good news is that we have a lot of choice when it comes to tools and frameworks, especially for automated tests. Most of these involve wrappers around existing test tools, or custom matchers for assertion libraries: for example, Waffle and Hardhat both provide their own versions of Mocha and Chai packaged with their one-stop development-test-and-deployment toolboxes.

Truffle, the original all-in-one Ethereum development solution, offers various choices for testing including the opportunity to run tests natively in Solidity with the `truffle test` command. Any of the frameworks I’ve mentioned could be used by someone with experience of JavaScript testing or development.

But there are also solutions based around Rust (Foundry) or Python (Brownie). Your choice of tools and language will, of course, be heavily influenced by the blockchain that your team are developing on top of and the smart contract languages that are used.

All of these I’ve mentioned are focused around testing smart contracts, but it’s also important to test the other elements that make up a dApp, including the front end. For that you could consider using Dappeteer, which is a fork of Puppeteer originally developed by the developers at Decentraland.

How can we ensure that our DApp is secure and resistant to attacks, such as denial-of-service (DoS) attacks, double-spending attacks, and others?

This is a very relevant question, when we consider the billions of dollars worth of value that has been stolen or lost from the ecosystem through hacks and bugs.There are some very simple things that developers can do to close some of the more common loopholes, such as using pre-existing secure libraries such as OpenZeppelin during development.

And there are various good security practices such as protocols around how private keys are stored and how any client funds are stored, which are not specifically the tester’s responsibility to ensure, but which are a whole-team responsibility that everyone should be involved in.

One of the most important things a tester can do is to think outside the box: if I was a hacker, how would I behave? Manual exploration and curiosity is your primary tool here.

I mention the importance of this because many of the so-called bugs that have happened in Web3 are not actually software bugs at all – they are bugs in the requirements caused by product owners failing to anticipate that people may use the application in a certain way. Many so-called exploits on DeFi exchanges have been traders simply using the smart contract as it was designed: it was just that no one anticipated they would be able to do this.

Most reputable teams will hire an audit team and also offer bug bounties to white-hat hackers because the level of complexity of smart contracts is such that the expertise needed to spot potential attack vectors goes far beyond what an average developer or tester can spot. However, we still need to rule out all the bugs we can reasonably find at an early stage of development so we are not paying specialists to find issues that could have been caught earlier.

What are some common bugs and vulnerabilities that can arise in Web3 applications, and how can we detect and address them?


If we look at a list of the biggest Web3 hacks and attacks, one thing that jumps out is the vulnerability of bridges, which are a special type of smart contract that enables value and information to be exchanged between blockchains. These are notoriously fragile – and should be approached with caution.

Another area to be aware of is issues caused by the existence of the mempool in Ethereum and Ethereum-like chains. When your transactions are public, and when there is a delay between your contracts becoming public and actually being written to the blockchain, you need to think very carefully about whether there is information there that could be exploited. Some of this may be legitimate, like MEV, but in some cases it can allow attackers to benefit from this knowledge.

In the last question, you mentioned the double spend problem, which is something that always needs to be guarded against. Using static analysis tools such as Slither is also really important for defining potential weaknesses in smart contracts.


How can we collaborate with other developers and testing experts to improve the quality and reliability of our Web3 applications since it is a bit of a wild west at the moment ?

I feel this is something that is really lacking in Web3 at the moment, especially when it comes to testers. Your Web3 testing community is definitely the sort of thing that will make a difference. The main issue is that the whole ecosystem is in its infancy, and many projects are so early-stage that they don’t even have test teams. I believe this will change organically over time, but in the meantime, communities like the one you are creating has a chance to shape the way we test dApps in the future.

What resources and communities are available for learning and collaborating on Web3 development?

Chainacademy, of course! And Web3 testing community. And I would also encourage people to check out the B9Lab Academy, with whom I have worked in the past. They have been around since 2014 and Elias, the co-founder, spoke at the very first Ethereum DevCon. They have a great Cosmos program running, among other courses. The Ethereum Foundation has a good list of links, and you should also look out for great developer relations people like Camila Ramos (Fuel Labs) and Nader Dabit (Lens), who have written a lot of excellent tutorials.

And finally, nothing beats getting your hands dirty building your own dApp, or even playing around with tools like Remix. The more people who get involved in this community, the better.

Thanks for the participation Rhian ! You rock 🀘

Web3 Tests Series

Hey there ! Are you ready to dive into the world of Web3 testing? We’re about to take a deep dive into the exciting and ever-evolving world of blockchain technology.

Web3, or the third generation of the internet, is a term used to describe a new era of the web that is focused on decentralization, security, and user privacy. Unlike the current web (Web2) which relies on centralized servers and applications, Web3 is built on decentralized technologies like blockchain and peer-to-peer networks.

This means that instead of relying on a central authority to manage and store data, Web3 relies on a network of users and nodes to collectively verify and manage transactions. This decentralization creates a more secure and transparent web, where users have more control over their data and can trust that their personal information is being handled safely.

One of the key technologies driving Web3 is blockchain. Blockchain is a decentralized ledger that records transactions across a network of computers, making it virtually impossible to hack or alter data. This makes it a perfect fit for Web3 applications, where security and transparency are essential.

Another important aspect of Web3 is the focus on user privacy. With the current web, users often have to sacrifice their personal data in order to use online services. But with Web3, users can maintain control over their data and choose what information they want to share.

Overall, Web3 is a promising new era for the internet that puts users back in CONTROL of their data and creates a more SECURE and TRANSPARENT web. From testing smart contracts to decentralized applications (dApps), there’s always something new to learn and explore.

So, if you’re a fellow Web3 enthusiast, or just someone who loves a good challenge, be sure to follow my upcoming posts. I’ll be chatting with some of the leading minds in the industry and sharing their insights.

Until then, join our Web3 Testing Discord Community or our Twitter and stay curiousπŸ”₯

Graphql Contract Testing with Lewis Prescott

It was an honour to participated on one of the episodes of Lewis Prescott Pactman podcast last month. We talked about contract testing and a blog post I have published some years ago (Excuse me my Alzheimer πŸ˜‚) and then we also touched a bit about web3 tests in the end. Check the episode and follow his podcast if you are interested on more contract tests content.

Are you considering a career change or a move to a new country?

Hello guys,

Today it is going to be a different post, not as technical as the other ones, but I saw the need to share some inspirational story. It can be a daunting and overwhelming decision to move to another career like QA or another country, but it can also be an exciting opportunity to pursue your dreams and create a better life for yourself.

I have interviewed Jeferson who have made the leap to a career in Quality Assurance (QA) and moved to Canada from Brazil. His experience can provide valuable insights and encouragement for anyone considering a similar path. (Which I also have gone through the same 10 years ago πŸ™‚)

Can you tell us about your experience moving from Brazil to Canada?Β 

I first came to Canada at the end of 2015 with the intent of getting fluent in English while having an experience of living in a different country, which was my first time I was going to be outside Brazil.

What motivated you to make the move? 

Brazil’s economy got worse and I had no perspective of getting a job returning to Brazil, so I decided to stay in Canada and try something new.

What led you to transition from your previous career to a career in Quality Assurance? 

Back In Brazil I was a Occupational Health and Safety Engineer working as Mechanical Designer, and I found myself with a hard path in front of myself if I decided to remain in the same field here, in a nutshell I’d have to start everything from scratch, doing a 4-year degree and it’d cost an amount of money I didn’t have. So with some eye opening inputs from friends, I decided to embark on a new challenge and get into tech, which my initial intent was to become a Software Developer working with Virtual Reality.

After graduating the Computer Systems Certificate Program I got my first job as a QA Engineer, where 90% of the time I was doing something else and only 10% of the time I worked as a tester, which was mainly manual regression testing and I hated, excepting for one project I worked on to create the Test Automation in Selenium. I was not happy with the job and found an opportunity in another company ( my current one) as an SDET (Software Developer Engineer in Test) which I only applied to get to a bigger company and transition to a Software Developer role within the company. In this company, I was presented, by my manager, a whole new testing world, where was not unstructured manual testing where I was just navigation through the system in the hopes of finding bugs, instead the approach here is to use critical thinking to do risk analysis and invest time and effort where it matters to improve the product, and go beyond ACs (Acceptance Criteria) to see where the system can brake and thus to a job that matters, is exciting and with very little boundaries on where to go. This new approach of testing made me get excited and want to become a professional in testing where I could code, explore and contribute to shape a better product by using a wide range of skills.

How did you prepare yourself for the transition into QA? 

I did a Computer Systems Certificate Program to learn how to code which led me to my first job opportunity in QA, even though I knew almost nothing about testing I was given a chance to step into this field. In this job I didn’t do much testing , but I got to work on a project to create the Test Automation in Selenium for the company, which was essential to get my second and current job, and here I really work in testing.

In a nutshell my preparation was the 2-years part-time certification course to learn programming and the Selenium project I worked on in my first job.

Did you take any courses or obtain any certifications? 

I did some courses on programming but none focused on testing, all I learned about testing (besides unit testing) I learned on the job. I’m currently seeking the ISTQB Foundation Certification to grow as a professional.

What aspects of your previous career do you think have helped you in your current role as a QA professional? 

The skills I acquired from being an Occupational Health and Safety Engineer and a Mechanical designer really helped me in my QA role. Among them, risk assessment and management came in handy when analyzing where to put efforts on testing and tackle areas where big issues can come up, also problem-solving skills, attention to detail and critical thinking were essential to excel in this field. So even though I didn’t have proper training to work in QA, I already knew where to look for issues, analyze what could lead to an issue and how to prioritize efforts.

Can you walk us through a recent project you worked on as a QA professional? 

Recently we upgraded an existing old feature to meet the business needs. It’s an import tool where a list in an excel file is provided and based on the file rows and rules in place, we manage the users by creating, updating, deactivating or reactivating them.

How did you approach it and what was your role? 

I was responsible for the test design and test approach. I started by doing a combinatory approach to discover the possible exception and happy paths to prevent redundant testing, and bring more value to the test suite with lower runtime.
Based on the information gathered in the combinatory approach, we analyzed all existing tests to remove what was no longer valid and refactoring the tests that were still relevant and create new tests for remaining uncovered scenarios.

In your opinion, what is the most important skill for a QA professional to have? 

Problem-solving and critical thinking: We should be able to analyze complex system problems and answer the question β€œWhere and how can this break?”. Rarely the issues are in the acceptance criterias / requirements, everyone is looking at it already, the issue comes from other places, like non-written requirements, where something is expected to behave in a certain way, for a common sense perspective, and it was not written down, so people will not pay much attention it, but it’s expected to comply to it, other common places to fail are integration, where both sides work perfectly on their own, but brake when put together.

How do you stay up to date with industry trends and developments in QA? 

In the company we have a QA Guild where we constantly present trends and new approaches to testing. Besides that, I use the feature I’m working at the moment to google how other people are approaching the same problems and recently using chatGPT for ideas and explanations.

Finally, what advice would you give to someone considering a move to Canada and a career change to QA?

Whether you’re moving to a new country or starting a job in QA, a certain mindset is required for success. To thrive in these situations, it’s important to have an open mind and be willing to embrace challenges. Try new approaches, develop critical thinking skills, and don’t be afraid to question what others tell you. Remember that everyone’s experience is different, and there is no single “right” way of doing things. Instead, focus on what works for you and be willing to take chances along the way.

Hope this story gives more support to people that are transitioning into the QA career or moving to another country as well.

If you want to contact Jeferson, feel free to send him a message on Linkedin 😁

Thanks again for sharing this Jeferson πŸ™ŒπŸ™Œ

Google Cloud Summit 2023

Hey guys !

Last week I joined the Google Cloud Summit 2023 and watched some sessions. The main goal of the conference was, of course, to do a bit of marketing on Google AI and Google Cloud, but was also interesting to see ideas on how you can use AI in different areas.

The event has ended, but you can still watch the sessions on demand, you might need to register your email tho.

Starting

For an overview on Google AI and to see what Google is offering then I suggest starting with this video:

Sessions and Demos

My favourite demos and sessions from the conference:

You can also check this interesting Balancing your Database page where you can select the best relational database between Cloud SQL and Cloud Spanner according to the different traffic patterns.

Learning paths

And to conclude you can also see some of the learning paths for the careers you can achieve, you can enroll for free in any of the courses they provide:

What the QA Position Will Look Like in the Future – TAU Conference

Hey guys, on 16th March I talked a bit about what the QA position will look like in the future on one of the Lightning Talks at Test Automation University Conference.

To watch the session on-demand recording just check out the link: applitools.info/6ob

A recurrent question is if AI is going to steal our jobs. I just want to remind you all we used to work in farms without any equipment, then machines came and some people stayed doing manual work and some others had to adjust themselves to still work in the farm. They had to learn to operate these machines.

What I mean is: It is a cycle. There is no need to panic! 😱 You will need to ADAPT and more important LEARN how you can improve your work using AI. There are many people sharing how you can do it and I will be sharing soon as well, just need to finish a research using ChatGPT haha

And yes there are new jobs already being created, for example: https://www.linkedin.com/jobs/view/3503646880/

Not everybody knows, but on that day I had my myopia laser surgery booked last minute and was rushing to go to the hospital, so apologise for being a bit all around the place ! I was panicking but not because AI is going to steal our jobs πŸ˜‚

ChatGPT approved seal:

Implement Synpress support methods in your Web3 tests

Hello guys,

Today I am going to post a quick and easy to use snippet with Synpress MetaMask support methods in your Web3 E2E (end-to-end) Test Project.

Create a base class to get the Synpress methods and extend it to use across the project. Here are some examples of methods that you can have:

export default class MetaMaskSupport {
  getCurrentNetwork() {
    return cy.getNetwork();
  }

 isMetamaskWindowActive() {
      return cy.isMetamaskWindowActive();
  }

  getMetamaskWalletAddress() {
    return cy.fetchMetamaskWalletAddress();
  }

  acceptMetamaskAccessRequest() {
    cy.acceptMetamaskAccess();
  }
}

Then you can either extend the class:

import MetaMaskSupport from '../metaMaskSupport';

export default class HomePage extends MetaMaskSupport {
  constructor() {
    super();
  }

  visit() {
    cy.visit('/');
  }

  waitUntilLoggedIn() {
    cy.waitUntil(() => {
      const walletAddress = this.getMetamaskWalletAddress();
      return walletAddress.should('exist');
    });
  }

  getLoggedInWalletAddress() {
    const walletAddress = this.getMetamaskWalletAddress();
    return walletAddress.invoke('text');
  }
}

Or you can instantiate as an object:

import MetaMaskSupport from '../metaMaskSupport';

export default class HomePage {
  constructor() {
    super();
    this.metaMaskSupport = new MetaMaskSupport();
  }

  visit() {
    cy.visit('/');
  }

  waitUntilLoggedIn() {
    cy.waitUntil(() => {
      const walletAddress = this.metaMaskSupport.getMetamaskWalletAddress();
      return walletAddress.should('exist');
    });
  }

  getLoggedInWalletAddress() {
    const walletAddress = this.metaMaskSupport.getMetamaskWalletAddress();
    return walletAddress.invoke('text');
  }
}

Now, get yourself a drink, you deserve it 🀣

2022 – End of the year learnings

Finally this year is over ! I have done a lot of things, mostly of them were solving problems that arose all of the sudden, but I’m mostly grateful for everything that I have been through, even the shit shows that happened. You know what people say, good times are great, but bad times help you to build character.

I finally was able to go to San Francisco Bay Area for an entrepreneurship course at Draper University that I’ve signed up for before the pandemic to focus on my new/old goal.

It has been a tornado of things to learn/refresh my mind, but here are some things that I took from this first week:

  • Never travel with tight connections. But when you do attach an airtag to your luggage! And in case your luggage gets lost, buy second hand or clothes that you can return.
    • Aer Lingus lost my bag during a connection in Dublin to San Francisco, it was 3 weeks without my clothes, not a really nice experience.
  • Everybody is in a different stage and journey in life, don’t feel demotivated by others. NO MATTER WHAT.
  • Keep learning (This is my every day reminder)
  • Make real connections with genuine good-quality people and life becomes more joyful even when things are difficult. Also, it is way easier to learn from people like this.
  • Observe and listen more than speak. (Every day reminder as well, but I am more a listener than a talker since I can remember)
  • Travelling by yourself is amazing (not new, but for all the people out there that are afraid to try, GO FOR IT)
  • Build your network independently if they are only virtual connections (for now) or not.
    • C’mon we have enough tools nowadays to allow us to drink some wine together with a friend on the other side of the world.
  • If you are at the beginning of your journey, look for mentorship and advice. Knowledge saves loads of time.
    • But be careful and look for real mentors, there are plenty of frauds around there.I can keep a healthy mindset in my old age to listen to others no matter their level. ❀️
  • Be a rebel ! (Another reminder, sorry mom haha)
  • Don’t wait too long and just do it, but also enjoy the journey.
  • Flying cars are real and they are available for sale already.
  • Don’t trust on those water-resisting plastic bags for your mobile ! The water is going to come inside even if you are in the shallow part !!
  • Have a dash cam on your car !
  • Have backups when you travel ! A backup phone and maybe even a paper with important phone numbers on your wallet (Don’t trust in tech that much)
  • Stay far from negative and prepotent people, but not too far. I believe they help you to build emotional intelligence, you have the power to decide if what they say is going to be the fuel for you to progress or if you are going to allow them to drag you down. Transform the judgemental comments into constructive feedback and ignore the rest.

And last just sharing my 360 review result, for all the people that have helped me with this, my big thanks. Looks like all this time interested in communication styles and human behaviour made me a more self aware person and I am not an asshole after all πŸ˜‚