Monday, January 14, 2008

What should every professional software tester know?

As part of the Professionalism in IT initiative, the British Computer Society (BCS) recently asked for input in order to produce a Core Body of Knowledge for IT professionals. The aim of this work is to counter the “silo effect” that has resulted from increasing specialisation within IT:

“As the scope of IT has broadened, those working in IT have become increasingly specialised. As a result, IT professionals have less understanding of what each other do, are less able to work effectively together and are less likely to know who to turn to when faced with problems beyond their own competence.”

I’d be interested in what you think every professional software tester should know, especially with respect to those areas of knowledge that fall outside the domain of software testing.

Please share your thoughts on this topic.


Erik Boelen said...

Hi Nick,
first of all interesting topic you started! I think that as a tester, knowledge outside of testing is underestimated. Please note that in most cases, I've been on the more functional side of testing. This will probably have an effect on my answer.
There are always three areas that you need to be skilled in as a tester: Testing skills, Soft skills and business related skills. Since this topic is not about the testing skills, I will focus on the other.
So which are some of the items that come to mind right now?

Context specific items
- Knowledge of the full project life cycle. You have to be able to put testing in the correct position, given the project life cycle
- Knowledge of the main business processes. As a tester, you should be able to know where the application you’re testing is positioned in relation with the other business process
- Knowledge of the market the business is in, in order to do the positioning on a higher level

Generic items
- Soft skills like negotiation skills, presentation skills, communication skills and many others
- Reporting skills. I took it deliberately out of soft skills, since I think there is a big ‘non-soft’ needed to provide usefull reports
- Business knowledge in general. How does a company work? What are the generic structures that we can find in almost every company?
- Common sense – no need for explanation here :-)
- Design and/or analysis techniques. What does a designer do in order to provide us with the document that we base our testing on?

These are some items that I can think of at the moment. I hope they are of some use to your survey.
Kind regards,

Isabel Evans said...

Hi Nick, Erik
I agree with Erik's list - a professional tester would need that range of skills.

I would like to add some others for consideration:
- also a level of knowledge of IT outside the development life cycle. (a) The IT infrastructure of hardware, systems software, firmware
(b) the support and maintenance of systems, covered in ITSMF/ITIL

- also an understanding of the politics and social effect of IT. What are the ethical, legal and social aspects that we need to know? A newsletter from the BCS arrived this morning and had the phrase "IT professionals not only need to know the technology, they also need to be aware of how the law applies to the technology."

I have some questions:

Is there a basic level of knowledge we can describe that all testers need?

Are there different tester roles/specialisms which require different parts / levels of this knowledge?

How do we set level of knowledge needed against career progression?

Thanks for raising this topic, Nick


Erik Boelen said...

I've also added the link to this topic in the forum I recently started on, and asked everybody to post comments here.
Kind regards,

Erik Boelen said...

Isabel, some of my thoughts on the questions you raised in your post.
Is there a basic level of knowledge we can describe that all testers need?
When thinking of knowledge, I see two different types: educational knowledge and others, as there are knowledge by interest or knowledge by experience.

Educational knowledge
If I look around me, I see good testers with all sorts of backgrounds and educations. The only level of education that they all have in common is secondary school. So, as far as educational knowledge is concerned, I don’t think we can set a basic level of knowledge. The advantage of having a higher degree is that this way, the person has shown to be capable of handling a large amount of material, which is always a plus in our line of business.

Other knowledge
The knowledge that I think is important is the fact that a person is interested in testing and that they are willing to use this interest to increase their knowledge on testing. In other words, when doing an interview, I always try to find out if they really like testing. If they can support this by knowledge of (structured) testing, that is a plus. But in the case of people with no actual testing experience, the latter is difficult.

Are there different tester roles/specialisms which require different parts / levels of this knowledge?
Yes. Depending on the role to be played in the test process, I think a person’s knowledge/interest should be different. I would feel more comfortable if a person to fill in the role of a technical, non-functional tester can show me educational knowledge and/or other knowledge in that area. I would expect also a more specialist level for these roles, built by educational knowledge. Whereas in the role of a test leader, I would prefer to see a more generalist level, built by knowledge by interest and experience.

How do we set level of knowledge needed against career progression?
Of course, in the case of career progression, I would definitely maintain the general career evaluation done by client/project. But this is not the only item to be evaluated on.
If I was to hire people for my own company, I would stimulate people to show me their interest in testing, no matter the domain this is in. So, I would build a scale on the knowledge by interest/experience and set objectives linked to initiatives, depending on the career phase they are currently in.

So, not really a concrete answer to your questions, Isabel, but maybe some room for discussion?

Alon said...

Nick, Isabel, Erik,all,
It is obvious that those questions are open to different interpretation, and since testing is context dependant, different professionals would look at it in a different ways.
from my experience, mainly as functional and business process testing point of view, we must define our knowledge data base, that would put an end to the question: are we a profession.From that discussion we can have the interesting point made by Nick solved.

I think the questions raised here are very good grounds to start the discussion on that data base of knowledge, among other questions like:
1. what the business world expects the testing to bring to the table? what is the added value they see in testing?

2. classify and devide the testing into slices or pilars of knowledge or different aspects of the knowledge in which we must be trained in.

3. define other classifications that might be needed like: technical/technological, business, functional, soft-skills, other.

4. See what knwoeldge must have educational basis and what OJT one.

and more.

So, I see the answer in a wider perspective.

The EuroSTAR Team said...


Kevin said...
This comment has been removed by a blog administrator.
The EuroSTAR Team said...
This comment has been removed by the author.
The EuroSTAR Team said...

(posted on behalf of Isabel Evans)

Hi All

Very interesting... I agree the context will change the answer and that the business perspective is important. There will be skills and knowledge which our business stakeholders need us to have. There will be skills and knowledge which they cannot articulate/know the detail of which we require - the technical skills/expertise, the IT knowledge AND the skills/knowledge about business, which they will be able to define.

Also I think we need to understand where we are now (as Erik said, many different educational levels, and so on) but we also need to consider where we should be in order to accommodate the increasing risks and pervasiveness of software. So our discussion should look at what the next generation needs so that they are better testers than we have been.

It may be that for some domains, e.g. the safety critical industries and business critical software, we need to aim for a higher level of education.

It may be that for particular roles, e.g. test consultancy, we need to aim for a higher level of evidence of professional competence.

It may be that someone working in a low risk domain, on low-risk software only needs a narrow set of skills and knowledge. I would characterize that as a craft role, which does not make it less valuable, but it does make it less transferable.

I like the idea of a matrix of skill areas against roles/levels.

You remember, Alon, you said to me about the debate on "do all testers need to know abut programming" - if we take that as an example, we could look at a sliding scale e.g.
- I think all need to understand it in principle (IF statements and loops...) and be able to read simple pseudo code
- I think all need to have some understanding of the limits of code/computers and to understand about memory, processors, system software works.

These would help a tester understand why defects arise and therefore where to focus tests.

- in some roles testers will need to review code so will need to understand one or more languages
- in some roles testers will need to write code, so will need to know those languages and keep up to date with them.



The EuroSTAR Team said...