What’s in a name – Part 3, I am a tester

This third post on the use of titles for software testing focuses on being a tester. Not that if you are a software test engineer or in software quality assurance (previous posts)  you do not test or can think of yourself being a tester. In my model however I am making a distinction. I believe that being called, or calling yourself, a tester affects the way you see your function or role in such a way so that it is different from that of being a test engineer or quality assurer.

So what is a tester?

Well to be honest it differs. To start-off  I see two sorts of distinctions to be made in defining what a “tester”  is. The first one has to do with how you approach the title. From an employers perspective, for instance, looking for a “tester” often means that the employer has not felt the need to be more specific. So a tester in this situation can be anything from a software engineer,  a quality assurer or all the way up to someone pushing keys for a test that  someone else scripted. As uninformative as the job title might be the job description that goes with it usually is much more descriptive. It will tell you if the company favors testing as engineering, quality assurance, as something tailored to their needs or simply as any other job.

That “any other job” approach to being a tester forms the first part of my idea of how testers see themselves. To some testers being a tester really does not mean much more than doing what the “boss” asks you to do. Perhaps that they have an affection to IT or a nag in analyzing stuff, but generally they just as likely could have been doing a completely different job to make a living or to build a career.

This section of the model represents the any-job paradigm

The any-job paradigm does not mean you are bad at wat you do. It’s just that you are not doing it to be a tester. You do it because you need the money, you are on route for something higher, you happened to  end up there, or for whatever other reason. And now that you are a software tester you will do that for as long as nothing better comes along. You will most likely even educate yourself to what you perceive is essential or to a level someone, that matters, tells you to. But since your heart is not in it,  you go for  “proof of knowledge”  by showing attendance lists or certificates and likely value that over the actual use of practical knowledge.

My kind of tester

In contrast to this I see a tester who even if he became a software tester by chance, now that he is puts his heart into it. This kind of tester educates himself to get better, he follow trends by reading magazines, blogs and testing books. He visits conferences, workshops and discusses testing with his peers. This tester thinks of his job as a skilled craft. A craft that continuously requires his skills to be sharpened.

This section of the model represents the craftsmanship paradigm

I am sure there are testing engineers or quality assurers that perceive what they do as skilled and they also educate themselves and go to conference. The essential difference however is that a software craftsman goes the extra mile. He does not limit his focus to a technical or process approach. A software testing craftsman has a wider view upon the world. He also gathers technical-and quality assurance skills, but just as likely he gathers analytical, social, management or other skills. Furthermore he does not value one over the other. He lets the usefulness depend on the problem to solve and to the context in which it occurs.

Currently I like to think of myself as a, context driven, software testing craftsman. At what level of craftmanship I am I leave for others to judge.

I do not see my self as a master in software testing yet.

I am however aiming to get there….

What’s in a name – Part 2, I am a quality assurer

This second post on the use of titles for software testing focusses on software quality assurance. Quality assurance, or QA, as such is not exclusive to software development. QA is practised in almost every other industry like e.g. car manufacturing or medicine.

Quality Assurance

Quality Assurance in essence involves monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with according to those same standards and procedures. Quality assurance is often seen as an activity to be executed independent of its subject.

Principles

The following two principles are included in the aim of Quality Assurance:

  • Fit for purpose; the product should be suitable for its intended purpose
  • Right the first time; faults in the product should be eliminated

The guiding principle behind Quality Assurance is that quality is malleable. This is achieved by working hierarchically according to detailed plans, use accurate planning and control, rationalise processes, standardise and uniform. In this sense quality assurance is continuation of Frederick W. Taylor’s ideas of Scientific Management. In line with this all skill and knowledge is transferred into standard processes, procedures, rules and templates and thus removed from individual workers.

Software quality assurance

By and in large software quality assurance follows the same lines of thought as quality assurance.

This part of the model then represents the assurance paradigm.

Like in quality assurance a tester in software quality assurance seeks the use of rationalized processes, standards and uniformity. She prefers the use of specific standards and methodologies. IEEE, ISTQB and TMap are well know examples of this. These methods provide the tester with (seemingly) clear guidelines to follow and artifacts to use so that if used properly software testing itself should provide adequate information about the state of the product and its readiness for use.

There is however a distinct difference between software quality assurance and quality assurance . In contrast with quality assurance in the traditional sence software does not have something tangible to measure. This is partly overcome with the use of software related quality attributes. Quality attributes are used to help guide the focus of testing and consist of characteristics that are considered typical to software development.

SQA – testing

Software quality assurance has the advantage that it is an understandable and recognizable proposition. To testers the appeal is that it provides a uniform solution for “all” situations and the handbook approach can be followed from the get go. To managers the appeal is that the procedures are recognizable in relation to mainstream management ideas and in combination with a phased interpretation of software development and testing, e.g. the V-Model, it is highly useful for project planning.

Following the process and filling templates alone (even) software quality assurance admits does not produce tests. So software quality assurance has teamed up with software engineering in that it uses test design techniques to identify and describe tests. In turn software quality assurance has developed means to limit the scope of testing with using a combination of quality attributes and risk assessment to order and if necessary limit the amount of tests to be designed and/or executed.

Improvement

In practise the use of software quality assurance, together with test engineering, has admittedly helped to establish software testing as a craft of its own. It has put software testing on the map and in general software testing is seen as part of the development process. But the use of software quality assurance as such has been no guarantee in stopping the development of ‘bad’ software. With bad software I mean software that did not provide a solution for the problem it was intended for.

In response to this limit to success several lines of improvement have evolved. One of them is to quality assess the software quality assurance itself with the use of models like TMMi or Test Process Improvement. These might help to forge a smoother adherence to the standards, procedures and templates, but the emergence of better software seems to be more of a side effect then that is the result of these new models themselves.

A second response is to more stress that quality assurance of software is an independent activity performed in separate (QA) departments that kind of police software development. Although this helps to adhere to external regulations and audit rules it has little effect in the pursuit of building good software that solves the or is fit to be used for problem it is intended for.

These models, and others like them, have widened the gap between quality assurance through process and the act of testing software through skill. So much so that increasingly quality assurance and testing are considered as different activities that oppose each other. In my opinion we need both aspects of software development to do a good job. How we mix them however should depend on the context in which you apply them. But in whichever context the testing of software should have the purpose of delivering useful information about the product. To do this, in my opinion testing skills come first and then knowledge and use of standards or procedures follows to aid or enhance the act of delivering useful information.