Software testing/Introduction

content of course
intro: you are here at the moment history of testing: time phases in testing, some test philosophies, what can testers expect?, theory design techniques: as it says :-) laboratory course: exercises for doing alone, online-sessions with tutors, other collaborations test tools glossary literature results: results that we observe during the course (already one result available)

From now on if you are not familiar with the mentioned terms, please have a look in the glossary. If you do not find it there, tell us please.

principles in testing
Here we talk about some general principles, with which you should be familiar with. In short the main principle is to find your goal and then reach it. This requires asking a lot of questions, and knowing what the right questions are will certainly speed things up. A book Microsoft recommends to new testers is Testing Computer Software by Cem Kaner, Jack Falk, and Hung Quoc Nguyen; published by Wiley in 1999. As a new and unexperienced software tester at Microsoft, this book was referred to as the bible of software testing several times.

Goal
The goal of software testing is to assess the requirements of a project; then the tester will determine if these requirements are met. For example it does not do any good to check for error handling if the programmer will not add it to the project. There are many times when low memory usage and speed are more important than making the program pretty or capable of handling errors. While programming skills are useful when testing software, they are not necessarily required. Many career testers will not have extensive programming knowledge, however it can be useful in determining the cause of errors found in a project. Requirements can usually be categorized into two main categories:
 * Functional
 * Non-Functional

Functional Testing
The first thing to test for is functionality; does the project perform the task it was built to perform. This can be as simple as making sure an addition function can add two numbers. On the other hand, this can be as difficult as: checking for error handling, proper formatting, or network troubleshooting. Everything depends on the intentions of the specific project.
 * After that the tester will look for limits to the project. Is there a number that the addition function is not expected to add?  This will normally be related to the types of variables involved, however many factors outside the code can generate potential limits to keep in mind (e.g. formatting long numbers in tables.)  The best way to test limits is to use the limits themselves and one increment beyond the limit.

Non-Functional Testing
In short this category includes all types of testing that do not include performing the task of the project: Internationalization, Accessibility, Budgets, Deadlines, Resources, etc. There are various types of Non Functional testing, Performance Testing, Load Testing, Stress Testing, usability testing, maintainability testing, reliability testing, portability testing ...which will provide an information on the product that is built.

There is no software without anomalies
Think about it - do you know from your circle of friends someone, who never made an error? Humans make mistakes and, because of this, amongst other things, the goal of testing is to show the anomalies in software. If no anomaly was found, so - utterly - something was overlooked.

but you can't test everything
With infinite time you can test completely. But for those amongst you, who do not have time en masse, the following principle is important: risk and priorities are nuts and bolts.

because of this: start testing as soon as possible (ASAP)
The earlier an anomaly is found, the more time there is, to analyze it and if required to treat it accordingly.

Warming-up
''Please see also the discussion about this story. (This italic sentence is just to eliminate problems about the story and perhaps the selection of another one).''

Here you will read a story like in fairy tales. The intention of this is - like told at the beginning - to show that testing should be seen as something general, what you can apply to anything. Besides this, a discussion should be started with this story, because there is no "one" solution for the story. This means there can be many ways to solve the puzzle. So: fasten your seat belts! and let's start:

Once upon a time...

The princess went along a swamp in the late morning. Then suddenly a frog jumped out of the water.

The princess thought: "What a nice surprise." She assumed that the frog will jump away when she comes near it. But... the frog did not jump away - in fact while she was going to the frog, the frog also approached her. And then the frog spoke to her: "I am a prince from far far away. A witch bewitched me and now I have to be a frog until a princess will kiss me." But, while the frog was speaking, another frog jumped out of the water - and believe it or not, this frog also told, it was a bewitched prince. And then another frog appeared and so on. Suddenly there were frogs everywhere. The princess who had never seen mystical creatures, couldn't bare this and blacked out.

When she awoke again, it was already noon and she saw all the frogs - hundreds of them. When they noticed, the princess was awake, everybody began to speak. There were so much voices that the princess could not bare this and she shouted: "Quiet! I can't rescue you all. Imagine the slime I would have on my mouth. Please tell me, who is the best of you, so I can rescue only him. I mean I also can only marry one guy. But I have 4 pretty sisters, so I could kiss 5 frogs at best."

Of course all the frogs began shouting: "Me. Me. Me...."

Now the princess was in a bad situation, how should she filter out the best frogs (aeh - I mean princes)? How could she test, if the frog would not lie? Imagine the situation of any frog: it would lie through its teeth to be human again. (And imagine the other frogs just wanting to get a kiss from the pretty princess.) Can be assumed that the dynamical approach to kiss all frogs would not be chosen by the princess?

What would you advise the princess, how to test for the best frogs?

Hint for you: there are already existing comments to this story (if you do not like one comment, read the next one, there are always new ideas in each posting). Please add your thoughts, ideas here.