Tuesday, August 30, 2011

So you want to be a Software Tester ?



My best friend is actually one of the best software testers I have ever met. When I began testing for her consultating company I sincerely thought I'd found the perfect job. I could stay at home and work independently.
I received my projects, I completed them and I got paid. Alot. It seemed the perfect scenario until one day I realized that I just didn't enjoy what I was doing. Testing was repetitious, often boring and I found myself dreading the receipt of each and every new project. Trish, on the other hand, was a testing maniac. She saw each and every project as a challenge and the satisfaction she gleaned from finding more bugs than any other tester was almost frightening. Even with her help and coaching, however, I just couldn't get it and finally realized that even despite the excellent pay and flexible schedule, I just wasn't cut out for the wonderful world of testing.


I soon realized that like every other job, testing required a certain personality type and I just wasn't it. Consequently knowing exactly what I am not, I can tell those you who are actually considering this profession, exactly which personality traits will suit you to this industry. First of all, you have to be able to sit still for long periods of time; you need to be well organized and willing to systematically work through a project from the beginning to end. If you're easily bored or find yourself jumping from one task to another, testing will prove to be frustrating and confusing.

Secondly, you've got to be just a little bit intuitive. Quite often, Trish would identify problems within a program that my mind simply could not have even considered. When I'd ask her how in the world she thought to test it that particular way, she'd simply reply, "I just knew." In the world of testing, you've got to trust your gut and in most cases, you'll find that instinctively, you knew just how a program would respond. Many other testers I've spoken with will dismiss the intuition and insist that experience makes all the difference, but quite honestly, I believe some people are just born for this job.

Thirdly, you've got to be able to focus on the little windows inside the big picture and most importantly, I believe you actually have to have a secret desire to break things. The best testers I know were always taking things apart when they were children and trying to put them back together with a different result. Testing is chaotic, it's fast paced and you're often working under extreme deadlines. Communication skills are a must as you attempt to show everyone else what they've done wrong without getting them angry with you.
In the good old days, testing was something that was done at the end of a project. Today, however, testing is a part of the process from the very beginning. The ability to work within a team is essential. While automated testing is making a few waves, I find it extremely difficult to believe that it will ever replace Trish or any of the other born-to-be testers of the IT world.
In fact, automation is not designed as a replacement for manual testing but rather simply supports the skills that most testers have already developed. If you're considering software testing as a possible profession, I'd highly suggest that you find a mentor. Someone who's been in the business. Someone like Trish. Then spend a day with them at their computer. Borrow their project and give it a run yourself. You'll know very quickly if you're meant for this job or not.


Friday, March 18, 2011

What is What in Testing

Testing Fida


Software testing is more than just error detection; 
Testing software is operating the software under controlled conditions, to (1) verify that it behaves “as specified”; (2) to detect errors, and (3) to validate that what has been specified is what the user actually wanted.
  1. Verification is the checking or testing of items, including software, for conformance and consistency by evaluating the results against pre-specified requirements.  [Verification: Are we building the system right?]
  1. Error Detection: Testing should intentionally attempt to make things go wrong to determine if things happen when they shouldn’t or things don’t happen when they should.
  1. Validation looks at the system correctness – i.e. is the process of checking that what has been specified is what the user actually wanted.  [Validation: Are we building the right system?]
In other words, validation checks to see if we are building what the customer wants/needs, and verification checks to see if we are building that system correctly.  Both verification and validation are necessary, but different components of any testing activity.
The definition of testing according to the ANSI/IEEE 1059 standard is that testing is the process of analysing a software item to detect the differences between existing and required conditions (that is defects/errors/bugs) and to evaluate the features of the software item.
Remember: The purpose of testing is verification, validation and error detection in order to find problems – and the purpose of finding those problems is to get them fixed. 
 
Testing in itself cannot ensure the quality of software. All testing can do is give you a certain level of assurance (confidence) in the software. On its own, the only thing that testing proves is that under specific controlled conditions, the software functioned as expected by the test cases executed.
 
Quality software is reasonably bug-free, delivered on time and within budget, meets requirements and/or expectations, and is maintainable.
However, quality is a subjective term. It will depend on who the ‘customer’ is and their overall influence in the scheme of things. A wide-angle view of the ‘customers’ of a software development project might include end-users, customer acceptance testers, customer contract officers, customer management, the development organisation’s management/accountants/testers/salespeople, future software maintenance engineers, stockholders, magazine reviewers, etc. Each type of ‘customer’ will have their own view on ‘quality’ - the accounting department might define quality in terms of profits while an end-user might define quality as user-friendly and bug-free.  

“Quality Assurance” measures the quality of processes used to create a quality product.
Software Quality Assurance (‘SQA’ or ‘QA’) is the process of monitoring and improving all activities associated with software development, from requirements gathering, design and reviews to coding, testing and implementation.
It involves the entire software development process - 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, at the earliest possible stage. Unlike testing, which is mainly a ‘detection’ process, QA is ‘preventative’ in that it aims to ensure quality in the methods & processes – and therefore reduce the prevalence of errors in the software.
Organisations vary considerably in how they assign responsibility for QA and testing. Sometimes they’re the combined responsibility of one group or individual. Also common are project teams that include a mix of testers and developers who work closely together, with overall QA processes monitored by project managers or quality managers.
 
Quality Assurance and development of a product are parallel activities. Complete QA includes reviews of the development methods and standards, reviews of all the documentation (not just for standardisation but for verification and clarity of the contents also). Overall Quality Assurance processes also include code validation.
A note about quality assurance: The role of quality assurance is a superset of testing. Its mission is to help minimise the risk of project failure. QA people aim to understand the causes of project failure (which includes software errors as an aspect) and help the team prevent, detect, and correct the problems. Often test teams are referred to as QA Teams, perhaps acknowledging that testers should consider broader QA issues as well as testing.
 
Simply put:
§  TESTING means “Quality Control”; and
§  QUALITY CONTROL measures the quality of a product; while
§  QUALITY ASSURANCE measures the quality of processes used to create a quality product.
 
7. The Mission of Testing
In well-run projects, the mission of the test team is not merely to perform testing, but to help minimise the risk of product failure. Testers look for manifest problems in the product, potential problems, and the absence of problems. They explore, assess, track, and report product quality, so that others in the project can make informed decisions about product development. It's important to recognise that testers are not out to "break the code." We are not out to embarrass or complain, just to inform. We are human meters of product quality.