Testing as a collaborative activity

How can you think that testers are superior to developers, or vice versa?

This article has been inspired by the cartoon below:

Image for post
Image for post
The developer and tester in opposing positions

Positioning the developer as a creator, and the tester as the destroyer of work. In opposing positions. Perhaps it is this way in some organisations, however it is certainly not an efficient way of working.

Prerequisites:

  • Some knowledge of the process of software development and quality assurance is helpful

Terminology

Software developer: A person who creates computer software

Software tester: A job role involved in the quality assurance stage of software development and deployment. Conducts automated and manual tests to ensure that software is fit for purpose meaning bugs and issues are removed before deployment.

Quality Assurance: A process to prevent defects in a product before they are delivered to customers.

The issues

Without a testing process, software developers create software and present it to the client (this could be pushing out software to the end user). Better software developers are better at testing their own work (even writing formalised tests), but if the attitude of a software developer is that their job is to create software and features testing work becomes a secondary activity.

As a result QA (quality assurance) or testing departments were created. The role grew as the quality of software became seen as an important part of wider development.

Software developers would develop features, “throw the product over the wall” and wait for it to be either accepted or rejected by the testing team.

Software not accepted may result in a heated discussion on whether the issue is a real problem, a bug, a feature or should be ignored.

If testers are set up to be in conflict with developers, there is an incentive to shift the blame between the two parties. In some organisations, this extends to designers and business analysts. Many companies have a silo mentality where it is seen as better to not share information, best practice and tools within the company as colleagues are in different departments. The self-interest of departments means that the whole company suffers.

Rather than being a department dedicated to hunting bugs, QA teams have a range of responsibilities. The development of the user interface needs to be monitored and improved through the process, and to change this at the end of a cycle (sprint, feature cycle or production cycle) is just too late. Software companies found testing as a discrete process at the end of development just too late to be meaningful. Testing started to move through the software development process; security testing would include conformance to local laws or Europe’s GDPR — once again this is not something that can simply be added to at the end of a long software development process as the requirements are tied up in the design of the system.

Testers who found that software did not work under large loads found that the developers could not solve this problem, it is just too late.

Solutions

One of the ways to decide if there is an issue with software is to refer back to the software requirements as detailed in the specification.

This means that all involved in the process need to have bought in to, understand, and want to implement the software specification.

If a developer asks a designer for a resource and the implements it and then the product fails testing, who is responsible for the failure?

One thing that seems like an easy win is for developers to integrate a test-driven approach into their code. This allows checks of pieces of code (unit testing) to take place during development.

Testing using continuous development and continuous integration processes mean that builds should always, well, build. This means the developer does some of the work (up to smoke testing) without much from the testing team. So what does their role become?

Automated testing means that problems are found early during the cycle. It also creates work to automate these tests and make sure that

Who should ensure that local regulations are followed? As part of testing, this should be performed during the development of the software and not after the fact.

Conclusion

Which team sports work better when the team does not work well together?

Software development means working together with different teams and people inhabiting different roles. It is important that people work together to achieve good quality results, there is no reason not to unless you are incapable in your job and need someone to blame when things go wrong.

And that isn’t you. Is it?

Want to get in contact? Try the link here:

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store