0% found this document useful (0 votes)
9 views10 pages

Comprehensive Guide to Software Testing

Uploaded by

pr14042013
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views10 pages

Comprehensive Guide to Software Testing

Uploaded by

pr14042013
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

UNIT 10

TESTING

DEFINITION

Testing is executing Software for the purpose of finding defects


Software Testing is a method to check whether the actual software product matches expected
requirements and to ensure that software product is Defect free. It involves execution of
software/system components using manual or automated tools to evaluate one or more properties of
interest. The purpose of software testing is to identify errors, gaps or missing requirements in contrast
to actual requirements.

PRINCIPLES OF TESTING

 Testing shows the presence of defects, not their absence. ...


 Exhaustive testing is impossible. ...
 Early testing saves time and money. ...
 Defects cluster together. ...
 Beware of the pesticide paradox. ...
 Testing is context dependent. ...
 Absence-of-errors is a fallacy.

NEED OF TESTING

Software testing is very important because of the following reasons:

1. Software testing is really required to point out the defects and errors that were made
during the development phases.
2. It’s essential since it makes sure that the customer finds the organization reliable and their
satisfaction in the application is maintained.
3. It is very important to ensure the Quality of the product. Quality product delivered to the
customers helps in gaining their confidence. (Know more about Software Quality)
4. 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.
5. Testing is required for an effective performance of software application or product.
6. 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.
7. It’s required to stay in the business.
FIVE STAGES/LEVELS OF TESTING

Static testing
During static testing, developers work to avoid potential problems that might arise later. ...

Unit Testing

During this first round of testing, the program is submitted to assessments that focus on specific
units or components of the software to determine whether each one is fully functional. The main
aim of this endeavor is to determine whether the application functions as designed. In this phase,
a unit can refer to a function, individual program or even a procedure, and a White-box
Testing method is usually used to get the job done. One of the biggest benefits of this testing
phase is that it can be run every time a piece of code is changed, allowing issues to be resolved
as quickly as possible. It’s quite common for software developers to perform unit tests before
delivering software to testers for formal testing.

Integration Testing

Integration testing allows individuals the opportunity to combine all of the units within a
program and test them as a group. This testing level is designed to find interface defects
between the modules/functions. This is particularly beneficial because it determines how
efficiently the units are running together. Keep in mind that no matter how efficiently each unit
is running, if they aren’t properly integrated, it will affect the functionality of the software
program. In order to run these types of tests, individuals can make use of various testing
methods, but the specific method that will be used to get the job done will depend greatly on the
way in which the units are defined.

System Testing

System testing is the first level in which the complete application is tested as a whole. The
goal at this level is to evaluate whether the system has complied with all of the outlined
requirements and to see that it meets Quality Standards. System testing is undertaken by
independent testers who haven’t played a role in developing the program. This testing is
performed in an environment that closely mirrors production. System Testing is very important
because it verifies that the application meets the technical, functional, and business requirements
that were set by the customer.

Acceptance Testing

The final level, Acceptance testing (or User Acceptance Testing), is conducted to determine
whether the system is ready for release. During the Software development life cycle,
requirements changes can sometimes be misinterpreted in a fashion that does not meet the
intended needs of the users. During this final phase, the user will test the system to find out
whether the application meets their business’ needs. Once this process has been completed and
the software has passed, the program will then be delivered to production.
TESTING PROCESS & ACTIVITIES

Testing is a process rather than a single activity. Testing must be planned and it requires
discipline to act upon [Link] quality and effectiveness of software testing are primarily
determined by the quality of the test processes used. The activities of testing can be divided into
the following basic steps:

1. Planning and Control


2. Analysis and Design
3. Implementation and Execution
4. Evaluating exit criteria and Reporting
5. Test Closure activities

1) Planning and Control

Test Planning : Test planning involves producing a document that describes an overall approach
and test objectives. It involves reviewing the test basis, identifying the test conditions based on
analysis of test items, writing test cases and Designing the test environment. Completion or exit
criteria must be specified so that we know when testing (at any stage) is complete.

2) Analysis and Design

Test analysis and Test Design has the following major tasks:

 To review the test basis. The test basis is the information on which test cases are based, such as
requirements, design specifications, product risk analysis, architecture and interfaces
 To identify test conditions
 To design the tests
 To design the test environment set-up and identify the required infrastructure and tools

3) Implementation and Execution

Test execution involves actually running the specified test on a computer system either manually
or by using an automated test tool. It is a Fundamental Test Process in which actual work is
done.

4) Evaluating Exit criteria and Reporting

Evaluating exit criteria is a process defining when to stop testing. It depends on coverage of
code, functionality or risk. Basically it also depends on business risk, cost and time and vary
from project to project.
5) Test Closure activities:

Test closure activities are done when software is ready to be delivered. The testing can be closed
for the other reasons also like:

 When a project is cancelled


 When some target is achieved
 When a maintenance release or update is done

TYPES OF SOFTWARE TESTING/ CLASSIFICATION OF TESTING

Software testing is generally classified into two main broad categories: functional testing and
non-functional testing. There is also another general type of testing called maintenance testing.

1. Functional Testing

Functional testing involves the testing of the functional aspects of a software application. When
you’re performing functional tests, you have to test each and every functionality. There are
several types of functional testing, such as:

 Unit testing
 Integration testing
 End-to-end testing
 Smoke testing
 Sanity testing
 Regression testing
 Acceptance testing
 White box testing
 Black box testing
 Interface testing

Functional tests are performed both manually and using automation tools. For this kind of
testing, manual testing is easy, but you should use tools when necessary.

Some tools that you can use for functional testing are Micro Focus UFT (previously known as
QTP, and UFT stands for Unified Functional Testing), Selenium, JUnit, soapUI, Watir, etc.

2. Non-functional Testing

Non-functional testing is the testing of non-functional aspects of an application, such as


performance, reliability, usability, security, and so on. Non-functional tests are performed after
the functional tests.

With non-functional testing, you can improve your software’s quality to a great extent.
Functional tests also improve the quality, but with non-functional tests, you have the opportunity
to make your software even better. Non-functional testing allows you to polish the software.
There are several types of non-functional testing, such as:

 Performance testing
 Security testing
 Load testing
 Failover testing
 Compatibility testing
 Usability testing
 Scalability testing
 Volume testing
 Stress testing
 Maintainability testing
 Compliance testing
 Efficiency testing
 Reliability testing
 Endurance testing
 Disaster recovery testing
 Localization testing
 Internationalization testing

1. Unit Testing

Testing each component or module of your software project is known as unit testing. To perform
this kind of testing, knowledge of programming is necessary. So only programmers do this kind
of tests, not testers.

2. Integration testing

After integrating the modules, you need to see if the combined modules work together or not.
This type of testing is known as integration testing. You need to perform fewer integration tests
than unit tests.

Some good tools for unit and integration testing are Jasmine, Mocha, etc.

3. End-to-end Testing

End-to-end testing is the functional testing of the entire software system. When you test the
complete software system, such testing is called end-to-end testing. You need to perform fewer
end-to-end tests than integration tests.

Cucumber, Protractor, Jasmine, Karma, SpecFlow, etc. are some great end-to-end testing tools.
4. User Interface Testing

User interface testing involves the testing of the application’s user interface. The aim of UI tests
is to check whether the user interfaces have been developed according to what is described in the
requirements specifications document.

By running UI tests, you can make the application’s user interfaces more user-friendly and
appealing to the eyes.

Some great automated user interface testing tools are Monkey test for Android, Saucelabs, and
Protractor.

5. Accessibility testing

Testing whether your software is accessible to disabled people or not is termed as accessible
testing. For this type of tests, you need to check if disabled people such as those who are color
blind, blind, and deaf can use your application.

The right choice of color and contrast need to be made to make your software accessible to
color-blind people.

6. Alpha testing

Alpha testing is a kind of testing to look for all the errors and issues in the entire software. This
kind of test is done at the last phase of app development and is performed at the place of the
developers, before launching the product or before delivering it to the client to ensure that the
user/client gets an error-free software application.

Alpha testing is run before the beta testing, which means that after performing alpha testing, you
need to run beta testing.

Alpha testing is not performed in the real environment. Rather, this kind of tests is done by
creating a virtual environment that resembles a real environment.

7. Beta testing

As said earlier, beta testing takes place after alpha testing. Beta testing is done before the launch
of the product. It is carried out in a real user environment by a limited number of actual
customers or users, in order to be certain that the software is completely error-free and it
functions smoothly. After collecting feedback and constructive criticism from those users, some
changes are made to make the software better.

So when the software is under beta testing, it is called beta version of the software. After this
testing is complete, the software is released to the public.

8. Ad-hoc testing
As the name suggests, ad-hoc testing is a kind of testing that is performed in an ad-hoc manner,
without using any test cases, plans, documentation, or systems. Unlike all other types of testing,
this kind of testing is not carried out in a systematic manner.

Although finding errors can be difficult without using test cases, there are technical issues that
are easily detected through an ad-hoc test, but are hard to find through other testing approaches
that use test cases.

This informal type of software testing can be executed by any person involved with the project.

9. Compatibility testing

Compatibility testing involves compatibility checking of the software with different operating
systems, web browsers, network environments, hardware, and so on. It checks whether the
developed software application is working fine with different configurations.

10. Backward compatibility testing

Backward compatibility testing is carried out to test if a brand new or an updated version of an
application is compatible with the previous versions of the environments (such as operating
systems and web browsers) on which the software runs. Sometimes, some application is updated
specifically to match the standard and style of a newer, more modern environment. In that case,
support for backward compatibility is necessary.

Backward compatibility testing ensures that all those who are using the older versions of a
particular environment can use your software.

11. Browser compatibility testing

As the name says, browser compatibility testing checks a web application for browser
compatibility. More specifically, it is tested whether the web app can easily be accessed from all
versions of the major web browsers.

It is a specific form of compatibility testing, while compatibility testing checks for general
compatibility.

Some popular tools to check browser compatibility include [Link],


LamdaTest, Browsershots, Experitest, Turbo Browser Sandbox, Ranorex Studio, Browsera, etc.

12. Performance testing

Performance tests are run to check if the software’s performance is good or not. There are
performance testing tools that analyze your app’s performance and show you the performance
issues. By fixing those issues, you’ll be able to increase the performance of your software
application.
Some great performance testing tools, also known as load testing tools, for web applications are
WebLOAD, LoadView, NeoLoad, LoadNinja, Appvance, LoadRunner, Apache JMeter,
Loadster, LoadImpact, Testing Anywhere, [Link], Tricentis Flood, Rational Performance
Tester, LoadComplete, etc.

13. Load testing

Load testing is one kind of performance testing that tests how much load a system can take
before the software performance begins to degrade. By running load tests, we can know the
capacity of taking load of a system.

You can run load tests using tools like LoadRunner, WebLoad, JMeter, etc.

14. Recovery testing

Recovery testing involves the checking of whether the application can recover from crashes and
how well it recovers. In this kind of tests, testers observe how well the software can come back
to the normal flow of execution. Crashes can happen anytime. Even if your software is of
exceptional quality, crashes may happen. You don’t know when they may take place and annoy
the users.

So you have to implement mechanisms that will recover the software application quickly and
that will make the application run smoothly again.

15. Regression testing

If you need to make changes in any component, module, or function, you have to see if the
whole system functions properly after those modifications. Testing of the whole system after
such modifications is known as regression testing.

16. Agile testing

Carried out by the QA team, Agile testing is a type of testing that is conducted according to the
rules of agile methodology. This kind of testing is done from the actual customers’ viewpoint.

Some useful tools that you can use for Agile testing are JIRA, PractiTest, JunoOne, VersionOne,
TestRail, SoapUI, etc.

17. API testing

Just like unit testing, API testing is also a code-level testing type. The basic difference between
unit testing and API testing is that unit testing is performed by the development team whereas
API testing is handled by the QA team.
18. Black box testing

Performed by the QA team of a company, black box testing is a testing technique that involves
the checking of the application’s functionality without having any technical knowledge of the
application, like the knowledge of the code’s logic, how the code works, knowledge of the
internal structure, etc.

19. White box testing

Performed by the development team, white box testing is a testing method that requires a good
understanding of the application’s code. It requires great knowledge of the app’s internal logic.

20. Security testing

Security tests are performed to ensure the security of your application, in order that security
breaches can be prevented. Security experts run this kind of tests to see how much your software
is secure from attacks and to find security issues so that the app’s security can be strengthened.

The top website security testing tools include Grabber, Arachni, Iron Wasp, Nogotofail,
SQLMap, W3af, Wapiti, Wfuzz, Zed Attack Proxy, etc.

21. Usability testing

Testing the user-friendliness of an app is known as usability testing. It involves the checking of
how much usable or user-friendly the app is. It is tested whether any user can easily use your
software without getting stuck.

One of the best ways to test the usability of your software is to invite a few people to use your
software. See if they can do certain things in your app without taking any help from you.

Take a look at these useful usability testing tools: Optimizely, Qualaroo, Crazy Egg, Usabilla,
Clicktale, Five Second Test, Chalkmark.

22. Scalability testing

Scalability testing verifies whether the software is scalable or not. In other words, it checks if
your app performs well when the number of users, amount of data, or the number of transactions
increases significantly. A software application that is not scalable may cause great business loss.

23. Reliability testing

Reliability testing is a type of software testing that verifies if the software is reliable or not. In
other words, it checks whether the software runs error-free and that one can rely on it.
For example, if a user’s important information stored in the database of the software gets
suddenly deleted after a few months because of some error in the code, we can say that the
software is not reliable.

24. Acceptance testing

The client who will purchase your software will perform acceptance testing (also known as User
Acceptance Testing) to see if the software can be accepted or not by checking whether your
software meets all the client’s requirements and preferences. If your software doesn’t meet all
the requirements or if your client doesn’t like something in the app, they may request you to
make changes before accepting the project.

Types of testing strategies

Some of the testing methodologies that may be part of an organization’s testing strategy are:

 Analytical strategy
 Model based strategy
 Methodical strategy
 Standards compliant or Process compliant strategy
 Reactive strategy
 Consultative strategy
 Regression averse strategy

You might also like