Software testing is an important phase of the software development process that evaluates the functionality and quality of a software application. It involves executing a program or system with the intent of finding errors. Some key points:
- Software testing is needed to identify defects, ensure customer satisfaction, and deliver high quality products with lower maintenance costs.
- It is important for different stakeholders like developers, testers, managers, and end users to work together throughout the testing process.
- There are various types of testing like unit testing, integration testing, system testing, and different methodologies like manual and automated testing. Proper documentation is also important.
- Testing helps improve the overall quality of software but can never prove that there
2. Several definitions:
“Testing is the process of establishing confidence
that a program or system does what it is supposed
to.”by Hetzel 1973
“Testing is the process of executing a program or
system with the intent of finding errors.” by
Myers 1979
“Testing is any activity aimed at evaluating an
attribute or capability of a program or system and
determining that it meets its required results.” by
Hetzel 1983
3. One of very important software development phases
A software process based on well-defined software quality
control and testing standards, testing methods, strategy, test
criteria, and tools.
Engineers perform all types of software testing activities to
perform a software test process.
The last quality checking point for software on its production
line
Software testing is about testing a feature by applying test
data to get a result and then comparing the actual result with
expected result.
Expected Result = Its from client side
Actual Result = Its obtain after a test execution.
It is not only finding the defect in the s/w; it is the completely
dedicated discipline of evaluating the quality of s/w
4. It depends on the process and the associated stakeholders of the
project(s). In the IT industry, large companies have a team with
responsibilities to evaluate the developed software in context of
the given requirements. Moreover, developers also conduct
testing which is called Unit Testing. In most cases, the following
professionals are involved in testing a system within their
respective capacities:
◦ Software Tester
◦ Software Developer
◦ Project Lead/Manager
◦ End User
Different companies have different designations for people who
test the software on the basis of their experience and knowledge
such as Software Tester, Software Quality Assurance Engineer,
QA Analyst, etc.
It is not possible to test the software at any time during its cycle.
The next two sections state when testing should be started and
when to end it during the SDLC.
5. Software testing is really required to point out the defects and
errors that were made during the development phases.
It’s essential since it makes sure of the Customer’s reliability and
their satisfaction in the application.
It is very important to ensure the Quality of the product. Quality
product delivered to the customers helps in gaining their
confidence.
Testing is necessary in order to provide the facilities to the
customers like the delivery of high quality product or software
application which requires lower maintenance cost and hence
results into more accurate, consistent and reliable results.
Testing is required for an effective performance of software
application or product.
It’s important to ensure that the application should not result
into any failures because it can be very expensive in the future or
in the later stages of the development.
It’s required to stay in the business.
6. 1) Testing shows presence of defects: Testing can show the defects are present, but
cannot prove that there are no defects. Even after testing the application or
product thoroughly we cannot say that the product is 100% defect free.
2) Exhaustive testing is impossible: Testing everything including all combinations of
inputs and preconditions is not possible. So, instead of doing the exhaustive
testing we can use risks and priorities to focus testing efforts
3) Early testing: In the software development life cycle testing activities should start
as early as possible and should be focused on defined objectives.
4) Defect clustering: A small number of modules contains most of the defects
discovered during pre-release testing or shows the most operational failures.
5) Pesticide paradox: If the same kinds of tests are repeated again and again,
eventually the same set of test cases will no longer be able to find any new bugs.
To overcome this “Pesticide Paradox”.
6) Testing is context depending: Testing is basically context dependent. Different
kinds of sites are tested differently. For example, safety – critical software is
tested differently from an e-commerce site.
7) Absence – of – errors fallacy: If the system built is unusable and does not fulfil the
user’s needs and expectations then finding and fixing defects does not help.
7. The five stages of the fundamental
• Test Planning and Control
• Test Analysis and Design
• Test Implementation and Execution
• Evaluating Exit Criteria and Reporting
• Test Closure Activities
8. 5 Phases of the Fundamental Test Process
Fix test design and repeat
Fix component or test cases/scripts
and repeat
Test
Planning
and Control
Test
Analysis
and Design
Test
Implementation
and Execution
Evaluating Exit
Criteria and
Reporting
Test Closure
Activities
Fix component test plan and repeat
Fix test design and repeat
9. Testing, Quality Assurance and Quality
Control
Most people get confused when it comes to pin down the differences
among Quality Assurance, Quality Control, and Testing. Although they
are interrelated and to some extent, they can be considered as same
activities, but there exist distinguishing points that set them apart.
The following table lists the points that differentiate QA, QC, and
Testing.
10. Quality Assurance Quality Control Testing
QA includes activities that
ensure the implementation of
processes, procedures and
standards in context to
verification of developed
software and intended
requirements.
It includes activities that
ensure the verification of a
developed software with
respect to documented (or not
in some cases) requirements.
It includes activities that
ensure the identification of
bugs/error/defects in a
software.
Focuses on processes and
procedures rather than
conducting actual testing on
the system.
Focuses on actual testing by
executing the software with an
aim to identify bug/defect
through implementation of
procedures and process.
Focuses on actual testing.
Process-oriented activities. Product-oriented activities. Product-oriented activities.
Preventive activities. It is a corrective process. It is a preventive process.
It is a subset of Software Test
Life Cycle (STLC).
QC can be considered as the
subset of Quality Assurance.
Testing is the subset of Quality
Control.
11. Some of the other standards related to QA and Testing processes are
mentioned below:
IEEE 829 Test Documentation.
IEEE 830 A guide for developing system requirements
specifications
IEEE 730 A standard for software quality assurance plans.
IEEE 1008 Unit Testing.
IEEE 12207 A standard for software life cycle processes and
life cycle data
BS 7925-1 Vocabulary of Terms in Software Testing.
BS 7925-2 Software Component Testing Standard.
12. This section describes the different types of testing that may be used to test a software
during SDLC.
Manual Testing:-Manual testing includes testing a software manually, i.e., without using any
automated tool or any script. In this type, the tester takes over the role of an end-user and
tests the software to identify any unexpected behaviour or bug. There are different stages
for manual testing such as unit testing, integration testing, system testing, and user
acceptance testing.
Testers use test plans, test cases, or test scenarios to test a software to ensure the
completeness of testing. Manual testing also includes exploratory testing, as testers explore
the software to identify errors in it.
Automation Testing:- Automation testing, which is also known as Test Automation, is when
the tester writes scripts and uses another software to test the product. This process involves
automation of a manual process. Automation Testing is used to re-run the test scenarios that
were performed manually, quickly, and repeatedly.
13. The following tools can be used for automation testing:
HP Quick Test Professional
Selenium
IBM Rational Functional Tester
Silk Test
Test Complete
Testing Anywhere
Win Runner
Load Runner
Visual Studio Test Professional
WATIR
14. There are three type of testing:-
1) White Box Testing:-
◦ Unit Testing
◦ Structural Testing
2) Black Box Testing:-
◦ Functional Testing
◦ Integration testing
◦ System Testing
◦ Usability Testing
◦ Compatibility Testing
◦ Configuration Testing
◦ Concurrency Testing
3) Non Functional Testing:-
◦ Security Testing
◦ Automation Testing
◦ Performance Testing
◦ Load Testing
◦ Stress Testing
◦ Volume Testing
◦ Recovery Testing
15. Testing documentation involves the documentation of artifacts that should be
developed before or during the testing of Software.
Documentation for software testing helps in estimating the testing effort required,
test coverage, requirement tracking/tracing, etc. This section describes some of
the commonly used documented artifacts related to software testing such as:
Test Plan
Test Scenario
Test Case
Traceability Matrix
16. Following skills are indispensable to become a good software tester. Compare your skill set
against the following checklist to determine whether Software Testing is a really for you-
17. A good 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 created
corresponding test cases.
A good software tester must have strong technical skills . This would include high level of
proficiency in tools like MS Office , Open Office etc , Testing tools like QTP , Load runner, etc..
and of course deep understand of the application under test.
A good software tester must have a good verbal and written communication skill.
Testing at times could be a demanding job especially during the release of code. A software
tester must efficiently manage workload, have high productivity ,exhibit optimal time
management and organization skills
To be a good software tester you must have a GREAT attitude. An attitude to ‘test to break' ,
detail orientation , willingness to learn and suggest process improvements.
To excel in any profession or job, one must have a great degree of the passion for it. A
software tester must have passion for his / her field. BUT how do you determine whether
you have a passion for software testing if you have never tested before?
18. Academic background of a software tester should be in Computer Science. A
BTech/ B.E. , MCA , BCA , BSc- Computers will land you a job easily.
If you do not hold any of these degrees than you must complete a software testing
certification like ISTQB and CSTE which help you learn Software Development/ Test
Life Cycle and other testing methodologies.
20. As mentioned above, from being test engineer one can move to senior
test engineer, test lead to test manager; else can become QA lead, QA
Manager. The options available in the testing tools side are enormous.
There are numbers of functional, performance, security testing tools
besides test management tools like Quality Centre from HP, CQTM from
IBM etc.,
The demand for niche skills like SOA testers, Security testers are on the
increase. There is dearth of skills in test automation areas – scripting skills
in the tools languages like VB, Java and other scripting languages like Perl,
Shell, Python etc., Technical resources with capabilities to evaluate
automation tools, create automation framework and reusable
components are on demand. Always there is demand for good
performance testers who can analyze the performance test results,
identify the bottlenecks and suggest tuning techniques.
21. Software Tester Salary (India)
The average pay for a Software Tester is Rs 310,575 per year. People in this job generally
don't have more than 10 years' experience. Experience strongly influences salary for this job.
The skills that increase pay for this job the most are Test Automation, Test Planning, and SQL.
22. Software Tester Salary (United States)
A Software Tester earns an average salary of $55,334 per year. Most people with this job
move on to other positions after 20 years in this career. The highest paying skills associated
with this job are ASP. NET and .NET.
24. Software testing professionals are in huge demand both in India and
abroad. Indian Testing Board has more than 30, 000 certified testers in
International Software Testing Qualifications Board (ISTQB) foundation
level exam. It is globally accepted certification for software testers.
Software testing is more challenging domain. At the same time, it offer
lucrative salary package for talented professionals. Every day, hundreds
of new software applications are launched in the market. As a result,
there is huge demand for software testers who can validate software
product at various levels.
According to recent survey, India is going to be the popular software
outsourcing destination in world because of its operational efficiency
and talented workforce. As a software tester, you career advancement
will follow the following hierarchy.
Junior Test Engineer –> Test Engineer –> Senior Test Engineer –> Team
Lead –> Project Manager
Editor's Notes
Software Testing & Quality Assurance
START - This diagram shows the sequence of the 5 activities and the relationship between them. There are loops in the process as defects are found.
During the Test Implementation stage we often have to re-execute tests following defect fixes as well as run regression tests (hence the internal loop) and may need to repair faulty tests and re-execute them (hence the loop back to the previous stage).
It is during the ‘Evaluating Exit Criteria and Reporting’ stage that we may need to consider designing more tests (hence the loop back to the previous 2 stages).