Saturday, March 18, 2006

Principles of Software Testing

All tests should follow the specified requirement
No matter How Big or Small the software is, there should be a precise document that mentions about what the software does and what are all its features. Strictly following such documents causes no harm to testing; also there would be a proof for the testers to show that the application deviates from the specified condition or requirement. During test planning and design phases of testing life cycle, the tester has to follow the requirements document to make sure that the application developed is the same as what the user wants.

Plan the test before you start executing
Every test has to have a proper planning. The testing team has to plan first about how they are going to proceed further with testing. Without proper planning there will be chances of facing hazardous situations that might result in releasing defective software to the users. There should also be a common understanding among the team members about how have they planned the testing and what are the different milestones to be achieved during this phase.

Documenting the test results
Test results have to be documented to provide proper understanding about what the software is doing or rather not doing. Based upon these results a tester may conclude whether the results are matching the expected or they are deviating from the specified requirement. The tester may always raise a flag for the deviated results. Test results also provide inputs in making decisions on whether the testing should be continued or not.

Test the software thoroughly
Partially tested software is as good as non-tested software. The testing team has to make a note of what have they tested and what they have not tested in particular software. It is very much advisable to test the entire functionality of the software at least once.

What makes you a good Software Tester?

It is very important to have a character that is inclined towards software testing. Let us see what would be the general characteristics of a good tester: -
  1. A good tester has both constructive as well as a destructive attitude for testing.
  2. Diplomatic in nature that helps in preserving a cooperative relationship with the software developers and Sr. Managers.
  3. Ability to analyze from customers/business point of view.
  4. Concentration and dedication to each and every area of the software.
  5. A precise judging skill to assess the requirements as well as the application developed for finding out the risky areas.
  6. Good written and oral communication skills to deal with both technical as well as non-technical customers and aspects.
  7. Fair technical skills for better understanding of the system architecture.

Friday, March 17, 2006

Objective of Software Testing

Every task to be accomplished has its own objective. Similarly, even software testing has to have an objective that aims at releasing successful software.

“Optimum utilization of the available resources to methodically plan, design and execute the test that exposes all types of errors”

Be Proud to be a Software Tester

A lot of effort is put to reach a stage where you find yourself to see there are no mission critical bugs in software and is developed within the alloted budget. One of the value added effort that is utilized during a software development/maintenance phase is from the testing team. Testing team has an equal contribution as other teams that are involved in software development. An organization with an Independent Verification and Validation team has always been a major player in the industry. This does not mean that the other organizations are not quality oriented but the only difference is that they do not have specialized testers who can perform the test in a well-defined process. An independent testing team involved right from the start of the development stage to the release of the software plays a vital role for the success of the project.

The testing team can contribute to its best only if they are skilled. Yes, not all can become a good software tester. Software Testing is an Art. A good tester has his/her own way of breaking the software.
After knowing all these it is very much unfortunate that there are many individuals in the industry who still have the following understanding on software testing,

  • Testing is an easy job, you do not need any specific skills.
  • Testing is not a challenging work since it has no coding involved.
  • Testers are involved only in testing phase of a software development life cycle.
  • Anybody and everybody can be good testers.
  • Any candidate fresh out of college can also be a good tester.
  • A tester has to know only the functionality and nothing other than that.
  • Place all the fresh candidates under one senior person who has a fair knowledge in software development and run it as your testing team.
  • A tester knows nothing apart from commenting on others work.
  • Testing is just an initial phase of a career in IT industry.
No, not all of the listed above are true. Most of the people who know about software testing have a different opinion and my personal opinion to consolidate them in short are as listed below,
  • Testing does not appear challenging to those who are not aware or do not know the challenging part of it.
  • There are many specialized areas in testing. For example: Performance Testing, Functional Test Automation etc.,
  • Testers can play a major role in all the phases of software development life cycle.
  • You can make an individual as a good tester only when you properly mentor him.
  • A fresh candidate out of a college can be a good tester provided you train him on software testing.
  • Apart from system functionality, a good tester also needs to know about the non-functional areas of the software.
  • Only an experienced, competitive and a skilled tester can manage and guide a testing team and drive them better.
  • Software Testing is a profession as such; it’s a career choice provided one follows the right path in testing.
  • Above all this one should develop interest in software testing to excel in this field.

What does Quality mean to you?

Quality is a widely used term with a lot of fluidity in its meaning. Each team has their own way of measuring the quality. When we talk about the software customers, they might be an end user or customer acceptance testing team or even may be your own management. Each individual will have his or her own view of quality. An end user might say the software is of good quality based on the ease of use. A customer acceptance tester might rate your software as good quality if all his acceptance criteria are met. Your management might say that it has released a high quality software if it is delivered on time within the budget and meets all the stated requirements which are easily maintainable. Finally it ends with, whether the customers are happy using your software and your software has influenced them to improve their business.

So, can we compromise with this that quality software has no mission critical bugs, developed within the estimated budget by meeting the stated requirements, which can be easily maintainable?

I leave it to you to decide "What does Quality mean to you?"