Software Testing basics
Testing Basics:
In today´s fast
moving world, it is a challenge for any company to continuously maintain and
improve the quality and efficiency of software systems development. In many
software projects, testing is neglected because of time or cost constraints.
This leads to a lack of product quality, followed by customer dissatisfaction
and ultimately to increased overall quality costs. Software testing is
important for a quality delivery.
Software Testing:
Software testing is an investigation conducted to
provide stakeholders with information about the quality of the product or service under test.It is the process of validating and verifying that a software program or application or product.
Two major categories of Software Testing :
a)Manual Testing
b)Automation Testing
Manual Testing:
Manual Testing is a process carried out to find the defects. In this method the tester
plays an important role as end user and verify all features of the application
to ensure that the behavior of the application. The Manual Testing is very
basic type of testing which helps to find the bugs in the application under
test. It is preliminary testing, must be carried out prior to start automating
the test cases and also needs to check the feasibility of automation testing.
Automation Testing:
Test automation is the use of special software (separate from the software being tested) to control the execution of tests and the comparison of actual outcomes with predicted outcomes.
In Software, Automation
refers to the use of computers and other automated machinery for the execution
of business-related tasks. Automated machinery may range from simple sensing
devices to robots and other sophisticated equipment.
Types of
automation:
· Information technology
(IT)
· Computer-aided
manufacturing (CAM)
· Numerically controlled
(NC) equipment
· Robots
· Flexible manufacturing
systems (FMS)
· Computer integrated
manufacturing (CIM)
1. Decreased
Overhead Costs
2. Increased
Productivity
3. Consistency,
Reliability, and Accuracy
4. High Volume
Production.
5. Increase in
Safety
Disadvantages
of automated software testing
Although
automated testing has many advantages it also has its own disadvantages.
One big
disadvantage of automated testing is that initially a high investment is needed
to buy the tools and train the staff to use the tools. Also in the test
preparation stages a high man power is needed. Another thing is that a lot of
areas in testing are left uncovered. There are not enough tools out there yet
to cover all the tests so some testing has to be done manually.
Also a
lot of skill is needed to write the automation test scripts, so it is expensive
to develop the tools to make them custom made.
What is
regression Testing?
Regression testing is a type of
software testing that seeks to uncover new software bugs, or regressions,
in existing functional and non-functional areas of a system after changes such
as enhancements, patches or configuration changes, have been made to them.
What is performance testing?
Performance testing is in general testing performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.
Performance testing is in general testing performed to determine how a system performs in terms of responsiveness and stability under a particular workload. It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.
§ It is a type of non-functional testing.
§ Performance testing is testing that is performed,
to determine how fast some aspect of a system performs under a particular
workload.
§ It can serve different purposes like it can
demonstrate that the system meets performance criteria.
§ It can compare two systems to find which performs
better. Or it can measure what part of the system or workload causes the system
to perform badly.
Differences between Performance, Load
and stress testing:
1) Performance Testing:
Performance
testing is the testing, which is performed, to ascertain how the components of
a system are performing, given a particular situation. Resource usage,
scalability and reliability of the product are also validated under this
testing. This testing is the subset of performance engineering, which is
focused on addressing performance issues in the design and architecture of
software product.
Performance
Testing Goal:
The
primary goal of performance testing includes establishing the benchmark behavior
of the system.
Example:
For
instance, you can test the application network performance on Connection Speed
vs. Latency chart. Latency is the time difference between the data to reach
from source to destination. Thus, a 70kb page would take not more than 15
seconds to load for a worst connection of 28.8kbps modem (latency=1000
milliseconds), while the page of same size would appear within 5 seconds, for
the average connection of 256kbps DSL (latency=100 milliseconds). 1.5mbps T1
connection (latency=50 milliseconds) would have the performance benchmark set
within 1 second to achieve this target
2) Load Testing:
Load
testing is meant to test the system by constantly and steadily increasing the
load on the system till the time it reaches the threshold limit. It is the
simplest form of testing which employs the use of automation tools such as
LoadRunner or any other good tools, which are available. Load testing is also
famous by the names like volume testing and endurance testing.
The sole
purpose of load testing is to assign the system the largest job it could
possible handle to test the endurance and monitoring the results. An
interesting fact is that sometimes the system is fed with empty task to
determine the behaviour of system in zero-load situation.
Load
Testing Goal:
The goals
of load testing are to expose the defects in application related to buffer
overflow, memory leaks and mismanagement of memory. Another target of load
testing is to determine the upper limit of all the components of application like
database, hardware and network etc
Example:
For
example, to check the email functionality of an application, it could be
flooded with 1000 users at a time. Now, 1000 users can fire the email
transactions (read, send, delete, forward, reply) in many different ways. If we
take one transaction per user per hour, then it would be 1000 transactions per
hour. By simulating 10 transactions/user, we could load test the email server
by occupying it with 10000 transactions/hour.
3) Stress testing
Under
stress testing, various activities to overload the existing resources with
excess jobs are carried out in an attempt to break the system down. Negative
testing, which includes removal of the components from the system is also
done as a part of stress testing. Also known as fatigue testing, this
testing should capture the stability of the application by testing it beyond
its bandwidth capacity.
The
purpose behind stress testing is to ascertain the failure of system and to
monitor how the system recovers back gracefully
Stress
Testing Goal:
The goal
of the stress testing is to analyze post-crash reports to define the behavior
of application after failure
Example:
As an
example, a word processor like Writer1.1.0 by OpenOffice.org is utilized in
development of letters, presentations, spread sheets etc… Purpose of our stress
testing is to load it with the excess of characters.
Smoke
Testing:
Smoke testing (also confidence testing)
is preliminary testing to reveal simple failures severe enough to reject a
prospective software release. A subset of test cases that cover the most
important functionality of a component or system is selected and run, to
ascertain if crucial functions of a program correctly work. When used to determine if a computer program should be subjected to
further, more fine-grained testing, a smoke test may be called an intake
test.
Unit Testing:
Unit testing is a software testing
method by which individual units of source code, sets of one or more
computer program modules together with associated control data, usage
procedures, and operating procedures, are tested to determine whether
they are fit for use.
Integration Testing:
Integration testing (sometimes called integration and testing,
abbreviated I&T) is the phase in software testing in which
individual software modules are combined and tested as a group. It
occurs after unit testing and before validation testing.
Approaches followed in Integration Testing:
1.Bottom Up Testing is an approach to integrated
testing where the lowest level components are tested first, then used to
facilitate the testing of higher level components. The process is repeated
until the component at the top of the hierarchy is tested.
2.Top Down Testing is an approach to integrated
testing where the top integrated modules are tested and the branch of the
module is tested step by step until the end of the related module.
3.Sandwich Testing is an approach to combine top
down testing with bottom up testing.
System Testing:
System testing of software or hardware is testing conducted on
a complete, integrated system to evaluate the system's compliance with its
specified requirements.
What is
Acceptance testing?
§ After
the system test has corrected all or most defects, the system will be delivered
to the user or customer for acceptance testing.
§ Acceptance
testing is basically done by the user or customer although other stakeholders
may be involved as well.
§ The
goal of acceptance testing is to establish confidence in the system.
§ Acceptance
testing is most often focused on a validation type testing.
What does User Acceptance Testing (UAT) mean?
User acceptance
testing (UAT) is the last phase of the software testing process. During UAT,
actual software users test the software to make sure it can handle required
tasks in real-world scenarios, according to specifications.
UAT is one of the final and critical software project procedures that must occur before newly developed software is rolled out to the market.
UAT is also known as beta testing, application testing or end user testing.
UAT is one of the final and critical software project procedures that must occur before newly developed software is rolled out to the market.
UAT is also known as beta testing, application testing or end user testing.
Comments
Post a Comment