I've just been wondering what mathematical skills I would need to become a software tester.
Kairu I wonder what has stimulated your question? Why do you think that you need mathematical skills?
I'd say the most important things in no particular order are:
- Good broad IT understanding.
- A logical (but not specifically mathematical) mind.
- Experience of people using applications. Try to be an end user yourself and use as many different applications as you can, and be critical.
- Good communication skills.
- With the type of tools and applications available today, even if limiting yourself to UI testing, you will need some level of programming skills.
- Being a detective like Sherlock Holmes is very important. Logical thinking is vital.
- Appreciating you cannot do it all so knowing when to stop and thus awareness of risk assessment.
When looking at performance, my own specialist field, a knowledge of basic statistics is good. Still amazes me the number of people who set or monitor Service Level Agreements (SLAs) who do not know the difference between a percentage and a percentile.
When I started out many years ago I arrived at IT because I studied mathematics. I'm sure many ITers liked mathematics more than say literature. But I do not think it is particularly relevant.
As Nigel has already observed, software testing is a field where the most important skills tend to be difficult to quantify (good communication skills, for example).
In my experience, unless you're testing something that involves heavy mathematical lifting, you don't need more than high school level mathematical skills.
A knowledge of basic statistics is always good. So is being able to dig into a database and spot-check calculations (although my experience is that most of the challenge there is refining the data-set so that the calculations can be performed by a human in a reasonable time-frame).
Here's some of the mathematical skills I've used in my testing career:
- basic arithmetic (usually checking totals and percentage calculations - for some reason I can't escape tax calcs...)
- calculating averages and standard deviations (this is typically a once-and-done test for software that reports averages and SDs - it needs to be done to check that the calculation routines are correct, but after that the main concern is that the correct data gets used)
- calculating conversions - hours/minutes/seconds to decimal time is one I do a fair amount of at the moment. In my last position currency conversions were a big concern.
The logical skills (which can be classed as mathematical or not, depending on who's doing the classifications) I use include:
- tracing execution through code (by reading the code). You don't have to know how to program to do this, but it helps.
- building data sets - it's important to know which data sets exercise which paths through the application, and to be able to view the application as a set of logic gates (IF this condition applies, THEN do A)
- narrowing down problem reproduction. More often than not, the software I test does not have simple bugs. Usually there are multiple conditions, making the bugs appear intermittent. An example I ran into yesterday: if the organization allowed transaction records to have a specific type of linked item, and the transaction record had been entered by any user other than the currently logged in user and the transaction item did not have a linked property with 100% allocation, saving the transaction would copy all transaction lines entered by users other than the logged in user. Tracking that down took me a while.
"Soft" skills I use:
- communication skills - being able to get all the necessary information into a bug report is one thing. Phrasing the report in a way that isn't insulting to the programmer is another.
- ability to learn quickly - this is one of the most important skills in my career. Very few testers work with simple applications - we need to be able to build up a broad domain knowledge very quickly, and then maintain and keep extending our knowledge base.
- switching between big-picture and detail thinking - this is another big one. Without the big picture, it's easy to lose track of how a feature should interact with other areas of the software and just focus on that feature. At the same time, the details have to be correct as well. A good tester can switch between both ways of thinking at need.
- note-taking - that might sound mundane, but jotting down the important stuff can be a major help. I typically operate with two monitors, plus pen and paper at hand.
This is all a long way from a complete list, but it should be enough to give you an idea of where mathematical skills fit in the overall testing picture.
Statistics is probably a must in order to understand testing, for example the Birthday Paradox that can be used to reduce the number of tests, analyzing numerical results of tests and performance tests or planning stop conditions of test runs.
Some basic (or even more) Algebra and Combinatorics are also important for solving day to ay algorithmic problems.
Basically, I Am Working on E-commerce domain for which below Mathematical skills helps me to do testing in a better way. It looks to be simple skills but if we did any calculations incorrectly it will impact client business in a drastic way.
- Arithmetic operation - For calculating the tax
- Percentage calculation - When testing the Promotions sales.
Apart from this, the testers Good to have the below skills
- Software tester should have sharp analytical skills. Analytical skills will help break up a complex software system into smaller units to gain a better understanding and create test cases.
- Every software tester must have an excellent communication skills. A tester should be ready to communicate his thoughts and ideas effectively, using different tools and media.
- Think Out of the box.
- Willing to Learn New Technologies.