A couple weeks ago, me, my four colleagues and around 600 other professionals gathered in Tallinn, Estonia to attend Nordic Testing Days. I had attended the conference before, so the expectations were high. I was looking forward to interesting talks about software testing, good food, great company and new ideas about working in the domain of software development. I was also hoping to gain insights about new skills and tools to: test as early as possible, help the team to become more test-aware, automate the right things, report and communicate testing the right way and measure what is achieved.
Here are two of summaries from interesting talks in the conference, with comments from my point of view.
“Machine Learning from System Quality Perspective” by Mikhail Iljin
Data science and machine learning are a must when a company grows big enough. But in time, it gets adopted in ever more places. Only time will tell what these places will be. When starting a transformation towards data science, first steps are quite clear. Get the data, do some models and make use of the results by optimizing. But after that there are many aspects that are new and must be taken into account. The line between code and data will be blurred and the quality will be more contextual meaning that one can not not know what to expect.
Everyone in the company needs to be more suspicious and vigilant about their work. The customers are after all real people and the software is changing itself by itself according to goals, models and algorithms. This makes communication between people crucial. Everyone needs to be passionate to think, talk and figure out what is next.
For me this raised many questions and ideas about QA in software that uses data science and machine learning. I think that models and data are good drivers for applications that can really excel in their domain. If features can really be tailored again and again to changing production environment fast and reliably, It will give an edge compared to other companies. But as a tester I always tend to think that what if. I think it is not possible to fully model or simulate real world problems and always come up with the right solution. Therefore as Iljin said, it is important to find the right people that are passionate about their work and ready to explore new ideas in a changing environment. Communication, understanding and exploration are the keys to success.
“Utilizing component testing for ultra fast builds” by Tim Cochran
Automated testing will: lower the cost of QA, decrease functional and nonfunctional problems, increase productivity and increase the user sentiment. But still the automation itself does not achieve any goals. If the test automation is done end to end with the whole system or parts of it as black boxes, the complexity is a problem. This will cause anti-patterns like: separate pipelines for different testing that are owned by different teams, flaky tests, deploying when the build is not green, test environment that is not production-like, failed tests or pipelines because of broken environments.
To achieve effectiveness, reliability and resilience, software needs to be separated into testable components that are tested in parallel and independently. These components may be: code modules, data pipelines, third party services, UI components and microservices.
The way to achieve this is to understand what the application does and what capabilities it provides. Then also identify where the complexity in the application really is. Finally, everything needs to be testable and the communication between business and engineers needs to be well established. The key is a culture where quality is everyone’s responsibility, teams are cross-functional, every part of the solution is designed to be testable and testing is thought about from day one.
I couldn’t agree more with Tim Cochran here. Building an application is a complex task to even begin with. Why wouldn’t we make the application itself simple and structured for easier understanding, testing, changing, maintaining and monitoring. This calls for a culture that builds quality in through communication and collaboration.
Nordic Testing Days was once again a success. The food was awesome, I had interesting talks with colleagues and like-minded people. I also hope that this conference inspired me to better use the tools and skills that I have and find new ways to work for the better quality in software development.
These talks emphasized the importance of communication between people from different domains. I eventually think that with the right mindset and willingness to learn and explore people will be able to collaborate and achieve the goals they are aiming for. The technical skills of course play a significant role but the ability to collaborate and learn is in my opinion more important. With trial and error, in an atmosphere of trust and respect, progress can be made. And as Raimond Sinivee said in his keynote: “We have the mindset and skills to be successful in everything!”