Sometimes things come from small conversation snippets.
Some of you may know that I did a testinginthepub episode not too long ago. In there I talk a lot about what is awesome in my job now, like being valued as a team member, being invited to kick off meetings (these help us talk about what we are building and why) teams ask me for mind mapping the testing areas.
However this was not always the case. It is important to remember that anyone can encourage change. I was not here before the changes so I will base my advice on what I did in my previous role as the first and only tester.
I did a talk on this last year at Tiny Testbash as well. The recording is available through the dojo subscription.
Encouraging change when you are the only tester.
In my previous job, I was introduced into a company which had a successful product that was starting to make them money but they had no testing department. When I questioned how they test their product I got the following answers:
“We don’t have any testers. Our product owners and stakeholders do the manual testing and we have a vast suite of front end automation tests.”
Nevertheless they decided to hire me, and subsequently a team of tester. How this came about and some learning along the way is what I would like to share below.
So I mentioned that the company had a successful product, they had people testing it and a vast suite of automation tests. So what was the problem? The company was 6 years old at this point, had moved to their version of agile software development and the need for a fast feedback loop from the product owners and stakeholders was becoming apparent.
However these individuals generally already had a full time job and could not attend stand-ups, reviews, planning meetings, let alone test the product. More often than not the stakeholders were shown a feature at the review, and then they would find out that it may not have been what they asked for.
So the problems they were having were:
- Slow or no feedback from stakeholders
- No dedicated feature testing of new or existing features
- Front end automation tests that back to back would take over 60 hours, and run in parallel would run for 4 hours. (these were also fragile)
- No trust in the selenium tests – the tests are being fixed rather than the code.
- No unit tests
- Some business logic tests but they relied on experts being available to check them
- No stakeholder involvement in meetings
- No-one is thinking like the user
How did I approach this list?
Slow or no feedback from stakeholders:
Well this wasn’t so easy, but I tried to do a couple of things.
First of all it became clear very quickly that the business side of the company and the development side of the company actually did not know what each other did. To be able to be a representative of the user I had to understand who our users are and what they do.
Engage with the whole company:
So my first point of call was to spend time with the business, but not the managers, the actual people who use the systems from an admin POV and understand the user pains.
This would help manifold. I could understand where their frustrations may come from, and in turn the users’ frustrations and also see how the system is actually being used. In some places it wasn’t being used like the development team thought but there were workarounds in place to go around bugs. Now we didn’t even know those bugs existed.
This in turn led me to propose we talk and communicate with each other more. We set up specific projects for the internal bugs to be raised and had a dedicated team working on those, improving and maintaining the current systems rather than purely focusing on getting new features out. Which had 2 spokespeople from the business who ran teams of account managers or accountants so both sides of the system were represented. These then owned a backlog and could priorities their bug fixes and discuss them as well as progress in weekly meetings.
The important thing here was to engage with everyone across the business. Try to find out what everyone’s job role is, what do they love about their job, what isn’t going too well and why.
I did get pushbacks though when I asked the teams to forward issues to their managers which would then be logged in the dedicated project. I heard things such as “it has always been like that. I tried to tell someone before.”
We as a development team even offered to automate some data inputs but people are always wary when it comes to change.
Once we started with the engagement I tried to create regular sessions on what testing is, what development is etc.
So we learned from the business but now we needed to see if they are willing to understand what we do. We set up fun little coding dojos over lunchtimes, where we used a language called Processing and tried to illustrate how the numbers and letters create systems ( or code).
Furthermore we set up a brown bag lunch on agile testing. When I first joined I was asked if I would be writing the unit tests. This got me thinking and I tried to collaborate instead. I am no coder or automation tester but I can pair on writing those tests and give feedback.
This way I tried to illustrate what I do and I decided to make my commitments public to the team. This came about because I was constantly being asked if I would write the automation tests, such as unit and selenium tests for the devs, which wasn’t the case. I stumbled upon the Tester’s commitments from James Bach around that time and wrote my own version, covering how I provide a service, etc.
Alongside this I made suggestions what the business/stakeholders could focus on for their UAT, held a brown bag lunch about how a manual tester fits into an agile team working on bi-weekly sprints, and did some pairing with developers to understand how they work.
Consequences of change:
As much as this driving of change and engagement with the business had a positive effect – we were now on the road to better unit test coverage, understanding of testing, it also ended up backfiring a little bit, where I was starting to be seen as a quality gatekeeper, with there being a reliance on manual regression testing before a release, so testing became a bottleneck, especially as the team of developers grew and more streams of work were happening. More streams of work also meant context switching a lot from regression testing bug fixes, to new features, to new architecture.
Note to self: Do not let anyone call you QA, gatekeeper, etc when you first start somewhere and if that is not your role.
The effect of this was the thinking that we need a tester per product team to embed into each agile team, as well as dedicated product owners. A stakeholder or business person with a full time job was not going to cut it anymore if we wanted to get back up to speed and be focused.
So we wanted to work towards integrated a tester into each team, to be able to test small iterations of work frequently, and aim for full time product owners so we can reduce the feedback loop and having to spend time chasing stakeholders.
Hiring and building a team:
I was mainly involved with the hiring of the testers.
We have discussed the problem briefly and why hiring was a solution. We were trying to find tester who can integrate into the various teams and be the testing professional. As the product teams were quite different it was important to keep this in mind and not just hire 3 of the same type of tester.
For the hiring process I had a good idea of what I wanted, a good fit, an experienced self starter and not an automation tester but someone who would be a front end tester, with complimentary skills to myself. As I was keen for the devs to own the automation tests.
For the actual process we did phone interviews, and face to face interviews which included a live action testing problem. Just to see how someone would test and tackle a tasks and if they ask questions or not. How proactive are they? There are some very succinct and good resources on the ins and outs of hiring testers, I am mainly thinking of the ones by Rob Lambert if you want to have a further read and get some more ideas.
Once we had a team (I counted 2 testers as a team, but we grew to 4 in total within my first year), I wanted the team to be engaged and constantly learning about testing.
Time boxed Sprints give you the great advantage to try new techniques and experiment with testing techniques and I didn’t want anyone to feel boxed in, while having some consistency. Also each tester was working on a different product which would need different testing activities and tools anyway based on their context.
This meant we had bi-weekly knowledge sharing sessions, new features, testing techniques you name it.
I also set up monthly one to ones and tried to share a blog a week or whenever I saw a good one with the team. Furthermore we added testing related books to the library which had the nice side effect that developers would see the titles of the books and have a chat with you, so you could sell them more on the subject.
There was an especially a good session with jerry weinberg’s Perfect software- where a dev walked past and challenged me that perfect software doesn’t exist. Of course the full title is “perfect software and other illusions about software testing”.
Also being an organiser of the brighton tester meet up, I encouraged the team to attend events or even speak at them. One thing I learned from this was that not everyone wants to engage as much as I maybe do. At least not on the surface. And this is OK. Just keep doing your thing and don’t get downhearted. It can seem frustrating, like you are not getting through but I would just persevere.
We did manage to have developers attend the tester meet up and even speak about testing as well.
So what does my story tell you?
The main thing I did was to communicate.
Find like minded people in your organisation and start sharing ideas, product knowledge, skills and experience and collaborate with them.
Start creating a library of resources and learning. This could be a physical library of books, or a wiki page with suggested reading/watching or regular events that you host inside and/or outside of the company.
Seek out people in different roles within your organisation and learn about their work. Try to understand what works for them and what does not.
But don’t forget people in the same role as you. Start pairing with other people in the same role in an effort to learn more about what they do, but also to help to build relationships.
Start socialising your improvement ideas with anyone who will listen. In my experience, planting the seed of an idea can make discussions about change easier later down the line. Get feedback on the ideas. Talk to people about how the future could be different. Listen to others.
I was passionate about what I do and tried to be positive in the light of change and when driving it.
Start gathering interesting trends about the work you’re doing – and then socialise these with the rest of the business.