Testers Help

Software Testing


What is Software Quality Assurance?
The other technical terminology for Software Quality Assurance is Verification and Validation. To put in simple words, Verification speaks on "Are we building the right system?" and Validation speaks on "Are we building the system right?". SQA is an umbrella activity that is applied throughout the software process. Quality as the American Heritage Dictionary defines is, "A Characteristic or attribute of something..."

What is Software Testing by the way?
In general, testing is finding out how well something works. In terms of human beings, testing tells what level of knowledge or skill has been acquired. In computer hardware and software development, testing is used at key checkpoints in the overall process to determine whether objectives are being met. For example, in software development, product objectives are sometimes tested by product user representatives. When the design is complete, coding follows and the finished code is then tested at the unit or module level by each programmer; at the component level by the group of programmers involved; and at the system level when all components are combined together. At early or late stages, a product or service may also be tested for usability.

At the system level, the manufacturer or independent reviewer may subject a product or service to one or more performance tests, possibly using one or more benchmarks. Whether viewed as a product or a service or both, a Web site can also be tested in various ways - by observing user experiences, by asking questions of users, by timing the flow through specific usage scenarios.

The answer to the primary role of software testing is two fold:
Determine whether the system meets specifications (Producer View), and Determine whether the system meets business and user needs (Customer View)

Testing encompasses three concepts:
The demonstration of the validity of the software at each stage in the system development life cycle.
Determination of the validity of the final system with respect to user needs and requirements.
Examination of the behavior of a system by executing the system on sample test data.

Goal of Testing
The primary Goal of Testing is to uncover requirement, design or coding errors in the programs. Let us look at some fundamental concepts of Software Testing. "Verification" is the process of determining whether or not the products of a given phase of software development fulfill the specifications established during the previous phase. The verification activities include proving, testing and reviews.

"Validation" is the process of evaluating the software at the end of the software development to ensure compliance with the software requirements. Testing is a common method of validation.

For high reliability we need to perform both activities. Together they are called the "V & V" activities.

Software Testing is an Art. A good tester can always be a good programmer, but a good programmer need not be a good tester.

Test Objectives
The following can be described as test objectives as per Glen Mayer:
Testing is a process of executing a program with the intent of finding an error.
A good test case is one that has a high probability of finding an as-yet-undiscovered error.
A successful test is one that uncovers an as-yet-undiscovered error.

Testing Principles
The following can be described as testing principles: All tests should be traceable to customer requirements.
Tests should be planned long before testing begins.
The Pareto principle applies to testing.
Testing should begin “in small” and progress toward testing “in large”.
Exhaustive testing is not possible.
To be most effective, testing should be conducted by an independent third party.

Verification Strategies
The following can be categorized into Verification Strategies: Requirements Reviews.
Design Reviews.
Code Walkthrough.
Code Inspection.

Validation Strategies
The following can be described as the basic Validation Test strategies.
1. Unit Testing.
2. Integration Testing.
3. System Testing.
4. Performance Testing.
5. Alpha Testing.
6. User Acceptance Testing (UAT)
7. Installation Testing.
8. Beta Testing.

Software Testing Life Cycle

1. Requirements stage
2. Test Plan
3. Test Design.
4. Design Reviews
5. Code Reviews
6. Test Cases preparation.
7. Test Execution
8. Test Reports.
9. Bugs Reporting
10. Reworking on patches.
11. Release to production.

Requirements Stage

Normally in many companies, developers itself take part in the requirements stage. Especially for product-based companies, a tester should also be involved in this stage. Since a tester thinks from the user side whereas a developer can’t. A separate panel should be formed for each module comprising a developer, a tester and a user. Panel meetings should be scheduled in order to gather everyone’s view. All the requirements should be documented properly for further use and this document is called “Software Requirements Specifications”.

Test Plan

Without a good plan, no work is a success. A successful work always contains a good plan. The testing process of software should also require good plan. Test plan document is the most important document that brings in a process – oriented approach. A test plan document should be prepared after the requirements of the project are confirmed. The test plan document must consist of the following information:

• Total number of features to be tested.
• Testing approaches to be followed.
• The testing methodologies
• Number of man-hours required.
• Resources required for the whole testing process.
• The testing tools that are to be used.
• The test cases, etc

Test Design

Test Design is done based on the requirements of the project. Test has to be designed based on whether manual or automated testing is done. For automation testing, the different paths for testing are to be identified first. An end to end checklist has to be prepared covering all the features of the project.

The test design is represented pictographically. The test design involves various stages. These stages can be summarized as follows:

• The different modules of the software are identified first.
• Next, the paths connecting all the modules are identified.

Then the design is drawn. The test design is the most critical one, which decides the test case preparation. So the test design assesses the quality of testing process.

Test Cases Preparation

Test cases should be prepared based on the following scenarios:

• Positive scenarios
• Negative scenarios
• Boundary conditions and
• Real World scenarios

Design Reviews

The software design is done in systematical manner or using the UML language. The tester can do the reviews over the design and can suggest the ideas and the modifications needed.

Code Reviews

Code reviews are similar to unit testing. Once the code is ready for release, the tester should be ready to do unit testing for the code. He must be ready with his own unit test cases. Though a developer does the unit testing, a tester must also do it. The developers may oversee some of the minute mistakes in the code, which a tester may find out.

Test Execution and Bugs Reporting

Once the unit testing is completed and the code is released to QA, the functional testing is done. A top-level testing is done at the beginning of the testing to find out the top-level failures. If any top-level failures occur, the bugs should be reported to the developer immediately to get the required workaround.

The test reports should be documented properly and the bugs have to be reported to the developer after the testing is completed.

Release to Production

Once the bugs are fixed, another release is given to the QA with the modified changes. Regression testing is executed. Once the QA assures the software, the software is released to production. Before releasing to production, another round of top-level testing is done.

The testing process is an iterative process. Once the bugs are fixed, the testing has to be done repeatedly. Thus the testing process is an unending process.


"Testing is the INFINITE PROCESS of comparing the INVISIBLE to the AMBIGUOUS so as to avoid the UNTHINKABLE happening to the ANONYMOUS!" -- James Bach








My Profile



Software Models

Interview FAQs

Software Configuration Management

Bug Life Cycle

Metrics and Measures

Risk Analysis

Security Testing

Templates & Checklists

Testing Types

Automation Testing

SOA Testing

Web Service Testing

Performance Testing

FIX Protocol Testing

Project Management

Auditing Software Testing Process




Latest Updates



Call for Papers


TesterHelp is currently accepting submissions for New Articles, Best Practices, and White Papers. We would like to extend an invitation to researchers, authors and academicians for submissions on topics of interest to Software Quality Assurance and Software Testing Community.


Submissions should include a short summary along with author’s communication details.


All submissions should be in MS Word format and should be sent to: testershelp@gmail.com