After talking with people – recruiters, developers, testers, and many other techie types – I see a lot of people quick to judge testing as a task inferior to development. Seriously?! Inferior?! Ugh! Time to level set and get some people off of their high horses….
Testing as a Subset of Development
Testing – in some regards – can be seen as a subset of development. What do I mean? Development is huge – front-end/back-end, APIs, database development, AI development, microcontrollers, search engines… and more! There are plenty of applications for development. Testing is one of these subsets.
In terms of testing from a development perspective, there are languages and libraries out there that allow us to use our development skills to automate the testing of things. Whether you may be testing JavaScript with Jasmine, .NET with NUnit/RhinoMocks, Java with JUnit/Mockito, Python with PyUnit, ruby with Test::Unit, PHP with PHPUnit, headless testing with headless Chrome or phantomjs, Node with mocha and chai, general front-end testing with Selenium/WatiN/Watir/Watij… and these are just the technologies I personally am aware of. There are a lot of testing frameworks, testing harnesses, testing libraries, and other support for automated testing in various languages. And this development comes in many forms:
- Unit tests – individual methods or blocks of code to be tested in isolation
- Integration tests – how do things play together
- Regression tests – end-to-end testing
And what if you want to take an acceptance test or behavior driven approach? There are ways to integrate coding with that as well! Think of SpecFlow for .NET, Lettuce for Python, RSpec/Cucumber for Ruby, Behat for PHP, JBehave or Cucumber for Java, Jasmine or Cucumber for JavaScript… and again, these are just what I’m aware of. There are other tools out there!
Testing is not Solely Development
A tester’s world is a lot more than just automation. There’s still exploratory testing – manual testing. That’s right – people using an app sometimes with little to no documentation so that they are forced to figure out how the app works and find the flaws.
A tester’s mind is a bit different from a developer in that they think through things with a user’s mind and not just a developer’s mind. Not all devs can think like their users, so the devs don’t know necessarily what to test. This is why testers exist – they ensure the quality of our applications and are meant to help find these pain points for developers ideally before they hit a production environment. Sometimes, testers focus on code, sometimes on user experience, sometimes on other things. Overall, though, testers are a crucial part of software development and should never be seen as inferior.
Testers Aren’t as…
Just stop! Just like there are general developer conferences, there are tester conferences as well, including things such as:
- QA or the Highway
- Test Bash – from Ministry of Testing
- Quality Jam
- STAR Software Testing Conferences
Some of the testers I follow on Twitter include:
- Richard Bradshaw – @FriendlyTester
- Erik Davis – @erikld
- Maaret Pyhäjärvi – @maaretp
Conclusion
I am tired of hearing developers say that testing is an inferior skillset and that the act of testing their code is inferior. Seriously, it’s time to wake up and see that testing is a world of its own, with a lot of awesomeness going on. And if you’re too busy on your high horse, don’t be blaming QA or your testers when your buggy code gets to production.