Talking Testing with Daniel Smart

As part of her fantastic Testing blog series Gabbi Trotter recently caught up with Daniel Smart – Test Engineering Lead at Rentalcars.com about his experience of Testing and Test meet ups.

Hey Dan, can you introduce yourself and give us a brief overview of your role at the moment…

I guess the best way to describe myself is as a tech enthusiast. As a hobby, I tinker in hardware building my own computer systems, networking my flat, online gaming, and general computing. Professionally, I work in software testing promoting quality and efficiency, including the principle of “Left Shifting” or breaking down the barriers between each role and thinking of the final requirements during the initial design. In other words, quality-by-design, testability-by-design, security-by-design, deployability-by-design, ops-by-design, etc.

My current role is Test Engineering Lead at RentalCars (BookingGo). I look after several product groups which are made up of specialised teams that look at specific areas of the web site. These teams are, in turn, made up of developers and testers, amongst other roles.

My primary responsibility as a Test Engineering Lead is to the testers who work on the teams I look after. I keep them motivated and able to do their job. If there’s an issue blocking them, I’m their go-to person in order to remove the blockers, or to organise a training session, or to talk through various testing or business scenarios.
On top of all that, I often do the heavy lifting, business and technologically speaking. I’m often at meetings to understand what’s coming down the pipeline or to help guide the larger technological processes to ensure we keep testing in mind. If there’s a question around a new technology for testing, I’m one of the people that will research it and put together a proof of concept that the other testers can follow.

You have been in Testing for nearly 10 years now, how did the journey begin for you and what was your first role like?

I fell into my first testing role, which is the way many testers I talk to often start in testing…

As I was young & naïve, I felt I should be doing something kind of related to my university degree, so I was working for an engineering company that made computer systems for monitoring and maintaining pipeline systems. This company did computer modelling for leak detection, and flow optimisation, and other things like that. Through it all, I kept playing with the software, trying new things, asking questions, such as, “why?” and “how?” to the other engineers and developers. Pretty soon, the Head of Development paired me with a developer so that we could investigate all these questions to make sure the software was working optimally. It was my first testing gig before getting the official title of tester and starting down that path.

Before long, a few more engineers and developers were brought into this group and we became the company’s first dev-test team and started formally writing stories, bugs, and testcases. We grasped everything agile… sprints, story points, velocity, stand-ups, retros, we did it all. To further improve, we implemented automated testing.
I recently heard, much to my surprise, that some of the first automated tests I wrote are still being run to verify builds.

You have progressed from your first Testing role in 2011 to your current position as a Test Engineering Lead at Manchester Tech giant RentalCars (BookingGo), I imagine there have been some big learning curves along the way. What has your biggest challenge to date been?

My biggest learning curve has been, and still is, knowing what to learn.

There are so many aspects to testing and technology that there is an overabundance of areas to know and I’ve made the mistake to try to learn everything. While this sounds like an amazing feat to know manual testing, automated testing, performance testing, ops testing, deployment pipelines, continuous integrations & deployment, security testing, test planning, and test management, I feel that at times I’ve spread myself too thin across all those areas. Going forward, I’ve picked a couple areas to focus my learnings. This way & with the help of the varied skills of the other Test Engineering Leads at RentalCars (BookingGo) we can offer well rounded support to our testers and the wider test community.

As the industry evolves automation skills are more and more in demand, how did you first come to learn test automation and how was that transition from a “non-technical” to a “technical tester”?

My first automation was created using TestComplete. I was able to start learning the automation process with front-end record & playback. From there, I was able to move into scripting to add complexity and some stronger validations. We decided that VB Script was the language to use that complimented the tech stack of the company. I did various development-based courses in high school and university so getting into automation wasn’t too strenuous.

Nowadays, when I tutor testers in automation, I use Python. I find that Python is conceptually easier to teach, especially when the tester is non-technical. On top of that, I find Python is quicker to get going and you can create an executable script with very little effort or technical understanding. Then you can build complexity incrementally as you work through the lessons and as the lessons start covering more complex topics.

With it being THE buzzword at the moment, how do we make sure we don’t over automate? How do you identify when automation testing is really needed?

Start small. Begin with the one, simplest test that will give you confidence that your system has been deployed correctly. Then improve that first test in a considered way. Over-engineer it so it’s highly reliable. You need to build confidence in your system as well as your automated tests. Once there’s established confidence, add another, but do it in the same, considered way.

When confidence is established, your team will know that a fail is a true fail. Run the automated tests often. That way, if a fail does arise, then it’s a small change that caused the fail and is therefore a quick fix that can be looked at and remedied immediately.

Too often people rush to the complicated tests that are unreliable due to too many moving parts. These tests fail too often to provide confidence in system or the automated testing. Then you start to lose buy-in from the stakeholders. Then you end up with an overload of manual tests.

However, periodically, review the automations, especially those that have been around a while and that consistently, reliably pass. Is that test, that is always passing, still telling you valuable information? What would happen if that test wasn’t run? Would it be missed if you deleted it? If you answered NO, be bold & delete it to keep your testing lean. If you’re not that bold, comment it out in case you want to bring it back later.

How can we get Automation wrong, do you have any examples of when you have seen this happen?

In my opinion, the greatest wrong way to do test automation is to jump directly to front-end automation as use it as the silver bullet that tests everything in one go. Primarily, this ignores the lessons from the testing pyramid and turns automated testing into the unstable testing cone. Apart from that, it also fails to answer the question, “What are you testing?”. Ideally, tests should be specific and zero-in to a particular piece of functionality, like a laser instead of a machete.

I’ve seen many examples where teams have tried to use selenium (or other) as the only automated tool to test an entire slice (front-end to database). This produces instability. Also, this is prone to undesired failures and false negatives. A varied and well-rounded automated tool box is one that uses a mixture of unit test, API, integration, and front-end tests proves to provide the best mixture of stability and reliable results.

You help to organise numerous Tech events in Manchester the most recent being Techs & the City – how important do you feel these events are for the Testing/Tech community?

You go to work and see the same people every day. I don’t at all say this is a problem. However, by attending meetups, this throws some different opinions and new methods to take back to work and try out, hopefully for the better.

Meetups also provide an avenue for some training. Get some experts together & they’ll want to show & tell about their latest projects and sometimes these come with steps to implement yourself.

Can you give us an insight to behind the scenes of organising a tech event/meetup?

A big chunk of time is put into coming up with snappy names for the sessions.

We have a large team of contributors who are always willing to talk (or volunteer their co-workers to talk). We’re also very fortunate because Manchester is becoming a tech-hub so there are a lot of businesses that want to host or sponsor. Otherwise, finding a venue would be a lot of work on top everything else as well as a huge expense that would almost make these meetups unfathomable.

The planning of a specific event is a rolling, overlapping cycle as there are multiple meetups in the pipeline at any one time. However, 3 months before the meetup is due, the group of contributors meet to discuss speakers, sponsors, and venue ideas. Hopefully we have concrete examples and can get a soft commitment at that point. Then, 1 month before, we meet again to make sure we’ve received hard commitments from speakers doing the presenting & the company that is doing the hosting. In the run up to the event, primarily the week before, we’re coordinating with the business supplying the venue to make sure the space has been reserved and the host has ordered the food & refreshments. Finally, the evening of the event, we show up & have a good time eating pizza and listening to the presentations.

You must have a pretty demanding role at RentalCars (BookingGo), how do you stay motivated to then use your own time to give back to the Tech Community?

There have been many people who have helped me get to where I am today. I feel that helping out at the meetups is my way of paying it forward to the next generation of testers, tech enthusiast, as well as other colleagues.

RentalCars (BookingGo) are striving to be leaders within the greater tech community. To achieve this, they actively encourage everyone to be involved in conferences and meetups. I can, at times, clear an hour here or there to take care of some meetup business or to try to recruit a colleague into being a speaker at one of the meetups.

What events would you like to see in Manchester, are there any meetups or events we are lacking?

That is truly an incredibly tough question. So far, with a bit of searching, I have always been able to find at least a couple meetups related to what I was searching. Although, being a fan of Python, who wouldn’t want more tech meetups related to that.

Finally, if you hadn’t ever got into Testing what job do you think you’d be doing now?

Genetics. My first love was genetics. I studied a lot of biology in high school and was fascinated by the building blocks of life. I even took this as far as doing a mixed engineering/genetics degree in university, Biomedical Engineering & Bioinformatics. My genetics-based plans fell through after university, which lead to a European adventure and an entirely different career direction in testing.

Follow Daniel on twitter here and to keep up to date with the latest Talking Testing blogs follow Gabbi here!

Leave a Comment

Your email address will not be published. Required fields are marked *