Skip to main content

Treating Test Code as Production Code

It's important when writing automated tests to remember that the code you write should be up to production standards, meaning any conventions that you have in place should be adhered to and that it should follow good design patterns.

Too many people often say why does it have to be as good as production code, it's "Only" a test, so long as it passes then that's fine...

To answer this we need to look at why we want our tests to be written in such a structured and efficient manner:

- Maintainability - by making the test code structured and efficient, it becomes far easier to maintain and in doing so changes in the future can happen quickly as the test isn't linked to anything that it shouldn't be and it's easy to understand for a new set of eyes.
- Durability- Again by making the tests structured they should be resistant to changes, if you change a variable name for instance then it shouldn't effect the unit test unless it absolutely has to.
- Flaky - We've all been there, had tests flaky and failing when they really shouldn't be failing, you run it again and hey presto! it works!

And finally, and perhaps the most important:

- Defects - The main reason in writing automated tests is to identify defects earlier and often and quickly. If we ignore the above, then we'll end up ignoring tests or in some cases removing tests that are flaky, and if we're removing tests then the defects that the tests were put into find, could quite easily work their way into production which is not what we want.

I know maintaining tests is time consuming and people struggle to comprehend the value in keeping tests maintained and up to date, until of course bugs are found in production, then if only we had a time machine to go back and run the tests that were removed or commented out!

So this is why I believe that test code is just as important (and you could easily argue that it is more important) than the actual code that it tests.

Anyone agree/disagree????


Comments

  1. At this link you can find even more great writing tips and tutorials for bloggers.

    ReplyDelete

Post a Comment

Popular posts from this blog

Coding something simple.... or not! Taking a screenshot on error using Selenium WebDriver

I recently wrote a little function that takes a screenshot at the end of a test if it has errored. What sounded very simple at the start turned out to be quite a bit of work, and quite a few lines of code to handle certain scenarios! It's now over 50 lines of code! I'll start with what I had at the beginning, this was to simply take a screenshot in the working directory, we are using SpecFlow and Selenium to run the tests, so we are going to check if the ScenarioContext.Current.TestError isn't null, if it is, then using Selenium, take a screenshot (note the below code is a simplified version of what I had at the beginning). [AfterScenario]         public static void TakeScreenShotOnError()         {             if (ScenarioContext.Current.TestError == null) return;             var screenshotDriver = Driver as ITakesScreenshot;             if (screenshotD...

Testers: Be more like a Super-Villain!

Who doesn't love a Super Hero? Talk to my son, and he'll tell you how much he loves them, talk to many adults and they'll say the same! Deep down, we all love to be the Super Hero, we all want to save the day! However, I want to talk about the flip side of Super Heroes, the Super Villains... I often play Imaginext with my son, and I (unfortunately?) am nearly always the Super Villain! Be it Lex Luthor, Joker, Two Face, Mr Freeze or The Riddler! These are all great characters and great Super Villains, but why would I want to write about Super Villains? A while ago where I worked, we had a few Super Heroes, people who would be able to come in and "fix" things that had broken and help deliver projects on time. We then shifted, we decided to do away with the Super Hero culture and try and prevent from being in that position in the first place, whilst we didn't go as far as wanting to hire Super Villains, it's definitely a story that has stuck with me and t...

Value in QA Courses/Qualifications?

I have in the past questioned the value in getting certifications/going on courses for the sake of getting a certificate in testing. Whilst I do still question the worth of such an issue, I have recently read some articles which has shown me there is more value in these courses/certificates than I previously gave them credit for. The main positive that I can think of, upon completing a course like an ISEB Foundation, is that it ensures that testers are on the same page when it comes to communicating. A bug is a bug, or if I'm speaking to someone about Integration testing, they know exactly what I am talking about and won't get confused. I think in ensuring that everybody is on the same page when it comes to discussing testing issues/testing activities, it helps in gaining respect and confidence from other teams and other team members, as we are all singing from the same hymn sheet.  It isn't just about communication in the term of words however, it is impor...