TestCon Europe 2020 was the second Online Conference I’ve fully followed during this year. The organizers team has done a very good job switching to an online format that was much more friendly that what I would have imagined, especially through the “Ask me anything” sessions and the virtual cafes. During the event, I’ve joined the following sessions:
Integration Testing with Docker and Testcontainers – Kevin Wittek
Kevin started his talk by explaining his experience developing software for automating the milking process of cows, where integration tests were critical, as it would allow his team to minimize the effort of deploying a patch version in case of failures (and drive to the farm to do it). From that sense, he challenges the pyramid shape, proposing Spotify’s Testing HoneyComb, where the focus is more on integration tests.
That’s why he contributes to testcontainers-java, a tool that is allowing engineers to run containers from java code, making it very easy to write integration tests, spinning up fastly all the dependencies on the fly. I really liked the idea of everyone being able to run any integration test against any real service simply by doing a typical command (eg: gradle build). With this we can forget about creating endless wikis explaining all the setup needed to be done just to run one test.
96% Successful Daily Deploys with 6500+ Functional Automated Tests – Antoine Craske
The presentation was a showcase of the success story of a classical company that started in 1927, and was, back then, “deploying” its product once 6 months. Antoine explained the results of a steady effort towards a Digital Transformation project that made their company switch from long and slow manual testing windows, to modern development practices that allows them to deploy daily to production. I got the feeling that most of the tech processes / decisions are driven by business, rather than Engineering, thus explaining the inverted Pyramid shape that makes sense for their organization. I was expecting to understand how their organization is challenging the current state of things. I very much enjoyed the part of the personal learning he took from this process: start small with tools, processes and resources and scale in your own way from there. This example could be a great one to follow for established companies in sectors such as pharma, insurance, banking, etc.
Extreme Learning Situations as Testers – How to Add Value While You’re Still Learning – Christian Baumann
Christian opened the talk by explaining his experience starting to work in a new project that was completely new to him: APIs, financial processes and regulations, a 400 pages PSD2 document.He joined 2 months before the official launch and everybody was expecting the best possible delivery.
Throughout the talk, he was sharing his challenges that were: coping with delivering while learning, multitasking, expectation management. I’ve enjoyed some tips and tricks that he shared like: accepting one’s limit, the extreme use of Pomodoro technique (planning work in blocks of 25minutes), limit the multitasking to a bare minimum. I really liked the analogy of learning in IT with learning to play an instrument: you just need to learn the minimum in order to get started. The label for hamster-wheel projects (projects that have very low impact, with very high effort) was hilarious, and the ability to realize we’re in one of them and to properly flag it, would definitely help us.
Testing in Production: Ideas, Experiences, Limits, Roadblocks – Jorge Marin
Jorge started with an introduction on the whys and the what is production testing, while listing some benefits behind it, with proper examples.
These tests are focused just from a user perspective (eg: not on services!) and they are fast, easy to run, automatic, extendable, behavior focused, reliable and critical.
We went through the main drawbacks which are: noise, impact on business metrics, impact on the load of the platform, and the extra need to be tidy and cleanup after yourself (separate logs, cleanup databases), false negatives with some concrete examples on how to solve them. At Dyson teams collaborate on creating such tests, and they own them.
Stacking The Automation Deck – Paul Grizzaffi
Even though Paul started by explaining why not to build a Test Automation Framework from scratch (basically because we will work into something that is not directly solving the problem we need to solve!), his talk was exactly about this. Paul has a very large experience in building automation tools, before Selenium. He explained how to build a basic Test Automation Architecture to reduce maintenance, using a conceptual stack, divided in the following layers: raw tools (eg: Selenium), encapsulation/abstraction (for future proofing and help), actions (domain specific actions eg: click login button), behavior (reusable group of actions eg: perform login), and scripts, and somewhere on the side having some utilities (eg: Infrastructure). I enjoyed the talk as it refreshed the advantages of similar approaches that I was having in past projects with similar challenges as his.
How to Manage Quality in Shift Left Environments – Gil Tayar
From Gil’s keynote, I’ve taken the following things:
- Egoprogramophobia – the fear of one’s code and The Shake-o-meter (how much you shake before a deploy)
- The shift left movement hasn’t focused too much on what is important: Quality. The speaker was mentioning that shift left is perceived as Quantitative and not Qualitative. We are pushing more tests to developers but we are not making the process of test more efficient
- If developers are lucky enough to work with QA, they should give QA a working product, so they can focus on doing the real job: ensuring the product is good.
DevOps: Test Alone – Bjorn Boisschot
The talk of Bjorn was about the life of the tester and how to succeed or not to die in the attempt, focusing on key aspects such as: Coaching Developers, Coaching Business, Empowering Collaboration.
Tests at TransferWise: Challenges to test a system with more than 300 services – Andrei Tognolo
Andrei’s talk was around the fact that as better as we get at testing in isolation and in production, as less we feel the need to have a pre-production environment and, thus, a more complex process. To prove this point, he went to some examples from Transferwise that make him feel this way: their focus on getting the confidence, rather than respecting the Pyramid, the high cost of Contract Testing that they have experienced, the dashboards, alerts, metrics, tracing, canary releases, spinning up an environment on demand. Still, even with all of these implemented, in absence of confidence, the need of lower environments sometimes still appears.
Automated SLO-based Testing as a Self-Service with Keptn – Andreas Grabner
Andreas shared his knowledge about Keptn, a tool which allows apart from unique company wide pipelines, with common blocks to use.
One of their greatest functionality is that allows engineers to automatically analyze and compare results of different metrics, to understand if a build was successful or not, allowing for example a revert. Here the concepts of SLI, SLO and SLA enter, that can be monitored automatically as part of a pipeline, and trigger further decisions based on what the metrics say.
Let’s get Cloud – Introduction to Functional Testing of Microsoft Azure – Milovan Pocek
Milovan gave us a quick and high level overview on Azure IoT Web, Azure Service Bus, Azure Functions, Cosmos DB, API Management, tools that would empower engineers to test better in the cloud, especially under the Azure ecosystem.
DevOps + MongoDB Realm Serverless Apps = 🤩 – Lauren Schaefer
Lauren introduced us to the world of Serverless Apps, showing an example of one, that were generating some visualizations in MongoDB Charts. Further on, we went through discussing how this is tested, and how this pipelined. What was interesting is her feeling that the Test Pyramid is more house shaped for serverless apps, as one would want to test more at an integration level, that was for me one important takeaway from this session.
Quality Titans – Finn Lorbeer
Finn’s talk was around balancing Speed and Quality, and doing that by creating an environment where the team can properly balance both. This can be done in many ways, but the most critical ones are building proper relationships with the PO and with the developers, and staying focused and prioritizing what is actually important. I would have switched Stability for Quality, as my understanding here is that quality is both: Speed and Stability.
Overall, it was a great experience to be part of this conference, and I’m looking forward to joining it again, to either give another talk, or just listen to the experiences of others. Hopefully in person.