You are on page 1of 15

Essentials of software testing:-

Software Testing is that part of the entire software development life cycle which can never be

compromised with. While developing an application a developer may be interested in testing the

same in different environments and under different conditions. Testing generally involves

creating test cases, preparing test strategies etc.

The pace at which the software industries are gaining momentum, it becomes a necessity to keep

pace with the latest trends in 'information technology'. Quality assurance becomes the foremost

criteria to ensure that a product to be delivered meets all the technical as well as business

objectives.

There are primarily five essentials of software testing that are imperative to the process of

software testing.

 Test Strategy -Planning a strategy is an essential component in the process of attaining a

successful result. One needs to take into account the possible number of risks involved,

degree of accuracy of test results etc. A test strategy thus helps to uncover the facts like

which type of testing best suits our requirements, the sequence in which the tests are to be

performed etc. Basically, a test strategy helps to sort our tasks in a wise manner and that
results in less wastage of time and efforts.

 Testing Plan -A test plan is a layout of how a project's testing activities are to be carried

out. It is about classifying as to who will be assigned which task, in which order the tasks

shall begin, the optimum time allocated to each task etc. A test plan is exercised after the
test strategy is in place.

 Test Cases -Test cases are the set of conditions that needs to be checked to fulfill a

criteria. Test cases are generally prepared followed by the test strategy. A test case or test

script is intended to check if the software functions as per the given set of requirements.
A test case should be robust enough in order to ascertain that our expected results are
delivered. A good test case also brings out the defects in the system.

 Test Data -Data is crucial. Test data is simply the input values to be passed to the system

under test. For instance, our test data can be customer's phone number, customer's
address, postal address etc.

 Test Environment -The environment here refers to the platform used for testing an

application. The environment could be the operating system used, the automation tool
used or servers/networks.

 Success of any testing effort is determined by the quality of the testing process.
 Deploy early life cycle testing techniques if you want to prevent migration of defects.
 For improving a testing process, a real person must own its responsibility.
 Testing is a professional discipline and requires trained & skilled personnel.
 Use the software testing tools to improve the testng process & save time.
 Positive team attitude of creative destruction must be cultivated.

What are Testing Methodologies?

Testing methodologies are the strategies and approaches used to test a particular product to
ensure it is fit for purpose. Testing methodologies usually involve testing that the product works
in accordance with its specification, has no undesirable side effects when used in ways outside of
its design parameters and worst case will fail-safely (e.g. a nuclear reactor will shut down on
failure).
Software testing methodologies are the different approaches and ways of ensuring that a software
application in particular is fully tested. Software testing methodologies encompass everything
from unit testing individual modules, integration testing an entire system to specialized forms of
testing such as security and performance.
Importance of Testing Methodologies

As software applications get ever more complex and intertwined and with the large number of
different platforms and devices that need to get tested, it is more important than ever to have a
robust testing methodology for making sure that software products/systems being developed
have been fully tested to make sure they meet their specified requirements and can successfully
operate in all the anticipated environments with the required usability and security.

This page describes the various components of a thorough testing methodology and at the end
it illustrates how Spiral Test is best suited to help you implement and manage them on your
projects.

Functional Testing

The functional testing part of a testing methodology is typically broken down into four
components - unit testing, integration testing, system testing and acceptance testing – usually
executed in this order. Each of them is described below:

Unit Testing

The Unit testing part of a testing methodology is the testing of individual software modules or
components that make up an application or system. These tests are usually written by the
developers of the module and in a test-driven-development methodology (such as Agile, Scrum
or XP) they are actually written before the module is created as part of the specification. Each
module function is tested by a specific unit test fixture written in the same programming
language as the module.
SpiraTest includes support for the management and execution of automated unit tests. With its
library of plugins and extensions for all of the major unit test frameworks (xUnit,
JUnit, NUnit, PyUnit, etc.), SpiraTest allows the test manager to ensure that there is full
coverage of all program code and that all unit tests have passed.

Integration Testing

The Integration testing part of a testing methodology is the testing of the different
modules/components that have been successfully unit tested when integrated together to perform
specific tasks and activities (also known as scenario testing or End to End testing (E2E)). This
testing is usually done with a combination of automated functional tests and manual testing
depending on how easy it is to create automated tests for specific integrated components.

SpiraTest includes support for storing, managing and coordinating integration tests across
various modules and components. In addition, specifically for E2E and scenario tests, you
can assign different test cases in a single test scenario to different testers so that they can work
together on an integrated test.
With its library of plugins and extensions for different automated functional testing tools
including our Rapise automation platform, SpiraTest is the perfect solution for managing your
integration testing.

System Testing

The system testing part of a testing methodology involves testing the entire system for errors and
bugs. This test is carried out by interfacing the hardware and software components of the entire
system (that have been previously unit tested and integration tested), and then testing it as a
whole. This testing is listed under the black-box testing method, where the software is checked
for user-expected working conditions as well as potential exception and edge conditions.

SpiraTest includes support for storing, managing and coordinating system tests across all the
modules and components that make up a system. SpiraTest support data-driven testing where test
cases are defined with input parameters and different combinations of test data can be passed to
the manual and automated tests. This ensures that both expected and exception cases can be
tested using the same test frameworks.

Acceptance Testing

The acceptance testing part of a testing methodology is the final phase of functional software
testing and involves making sure that all the product/project requirements have been met and that
the end-users and customers have tested the system to make sure it operates as expected
and meets all their defined requirements:

User Acceptance Testing (UAT)


This is an activity that is vitally important, since in many cases until you have completed UAT,
the customer or organization will not accept the software and sign off on it. Therefore, having a
smooth and successful UAT is very important.
The key aspect of UAT is that the testers will be end users, who may have significant functional
expertise and knowledge, but may be used to how previous systems or processes work, rather
than the new system being tested. Therefore the test cases they will need to execute, will need to
be more prescriptive and outline the discrete steps / tasks to be carried out.

It is important to have a tool for them to use that makes the testing process as easy as possible.
For example, making it easy to follow the script, ideally interact with the system under test in the
same window, and record results, screenshots without unnecessary complexity.
SpiraTest provides a powerful manual testing solution that helps you coordinate and manage you
acceptance testing activities, with all the test scripts, assignments, test results and
associated defects/bugs all tracked in a single unified system. With SpiraTest’s requirements test
coverage capabilities you can validate that all of your requirements have been fully tested to your
customer’s satisfaction.

Non-Functional Testing

In most testing methodologies, functional testing involves testing the application


against the business requirements. Functional testing is done using the functional specifications
provided by the client or by using the design specifications like use cases provided by the design
team.
On the other hand, non-functional testing involves testing the application against the non-
functional requirements, which typically involve measuring/testing the application against
defined technical qualities (also known as the ‘-ilities’ because they all end in ‘-ility), for
example: vulnerability, scalability, usability. Some examples of non-functional testing are
described below:

Performance, Load, Stress Testing

There are several different types of performance testing in most testing methodologies, for
example: performance testing is measuring how a system behaves under an increasing load (both
numbers of users and data volumes), load testing is verifying that the system can operate at the
required response times when subjected to its expected load, and stress testing is finding the
failure point(s) in the system when the tested load exceeds that which it can support.

SpiraTest includes support for storing, managing and coordinating your performance, load and
stress testing activities. With its library of plugins and extensions for different automated
performance testing tools including LoadRunner, JMeter and NeoLoad, SpiraTest is the perfect
solution for managing your performance testing.

Security, Vulnerability Testing

Previously, security was something that was tested after-the-fact. With the rise in cyber-crime
and the awareness of the risks associated with software vulnerabilities, application security is
now something that needs to be designed and developed at the same time as the desired business
functionality. Security testing tests the software for confidentiality, integrity, authentication,
availability, and non-repudiation. Individual tests are conducted to prevent any unauthorized
access to the software code.

Usability Testing

The usability testing part of a testing methodology looks at the end-user usability aspect of the
software. The ease with which a user can access the product forms the main testing point.
Usability testing looks at five aspects of testing, - learnability, efficiency, satisfaction,
memorability, and errors.

Compatibility Testing

The compatibility part of a testing methodology tests that the product or application is
compatible with all the specified operating systems, hardware platforms, web browsers, mobile
devices, and other designed third-party programs (e.g. browser plugins). Compatibility tests
check that the product works as expected across all the different hardware/software combinations
and that all functionality is consistently supported.

Data-Driven Testing
When you can perform compatibility testing using automated tests, one feature that you should
really consider having, is a way to do data-driven testing:

This lets you create sets of different test configurations that need to be tested, which are
automatically generated by a system (e.g. give it all the browsers and all the platforms, and it
creates an N by N matrix of all possible permutations). Then you can run all your tests quickly
and easily through all the combinations to ensure there are no missed ‘edge’ cases.
Difference between Testing and Debugging

Testing is a process of finding bugs or errors in a software product that is done manually by
tester or can be automated.

Debugging is a process of fixing the bugs found in testing phase. Programmer or developer is
responsible for debugging and it can’t be automated.

Lets differentiate both terms in tabular form.

Testing:
Testing is the process of verifying and validating that a software or application is bug free, meets
the technical requirements as guided by its design and development and meets the user
requirements effectively and efficiently with handling all the exceptional and boundary cases.
Debugging:
Debugging is the process of fixing a bug in the software. It can defined as the identifying,
analyzing and removing errors. This activity begins after the software fails to execute properly
and concludes by solving the problem and successfully testing the software. It is considered to be
an extremely complex and tedious task because errors need to be resolved at all stages of
debugging.
Below is the difference between testing and debugging:

Difference between Testing and Debugging

Testing Debugging

The purpose of testing is to find bugs and The purpose of debugging is to correct
errors. those bugs found during testing.
Debugging is done by programmer or
Testing is done by tester. developer.

It can be automated. It can’t be automated.

It must be done only by insider i.e.


It can be done by outsider like client. programmer.

Most of the testing can be done without Debugging can’t be done without proper
design knowledge. design knowledge.

Hardware and Software Testing

Are you preparing to release a new computer product? NTS can exercise your product’s
functionality throughout the entire development cycle – alpha, beta and/or golden master phases
of development. NTS can start by developing comprehensive test plans and detailed test
methodologies or you can supply us with a specific test plan to execute on your behalf.

Functionality Testing

Can be performed on hardware or software products to verify that your product functions exactly
as designed. The general purpose of hardware and software functionality testing is to verify if the
product performs as expected and documented, typically in technical or functional specifications.
Developers creating a new product start from a functional specification, which describes the
product’s capabilities and limitations. NTS Test Engineers utilize this specification, if available,
as a guideline for expected product response. Tasks are exercised to test specific features or
functions, and the results of these tasks are verified by NTS to be in compliance with the
expected response. This type of testing is beneficial to product developers who are creating a
new product or an existing product which has undergone significant enhancements or changes in
capabilities.
Compatibility Testing

Is performed to make sure your product functions in its targeted use environment (e.g., different
platforms, operating systems, chipsets, peripherals, manufacturers, etc.). Often vendors also refer
to compatibility testing as interoperability testing – either term refers to making sure your
product functions correctly with other products in the “real world” when released.

Performance Testing

Validates that your product functions acceptably for the market in which you are releasing your
product. No one wants a product that they have to wait for or that feels sluggish.

Usability Testing

Is performed to provide an independent analysis of a product in terms of how easy or difficult it


is to use. This may cover documentation, installation, and product use cases. In addition, a range
of different user experience levels may be evaluated.

Automation Testing

Allows you to perform repetitive testing quickly and easily by scripting your product with one of
many different industry tools.

Competitive Analysis Testing

Compares your product to similar products already in the market place. These may be products
that you’ve previously released or competitive products, so that you can highlight your
advantages – whether performance or usability.

Key Challenges of s/w testing are:

1. Testing considered late in project.

2. Requirements not testable.

3. Integration is done after all components have been developed: This might result into full
testing not being covered.

4. Complete testing is not possible.

5. The application can be in a stable form so that it can be tested.

6. The testing always should be under time constraint.

7. There is lack of skilled testers.

8. The requirements may keep on changing.

9. There can be some lack of resources tools and training.

10. A complete application has to be tested.

11. A proper understanding of the requirements,domain knowledge and the business user
perspective understanding.

12. To know which tests need to be execute first.


Software Testing Life Cycle (STLC)

Software Testing Life Cycle (STLC) is a sequence of different activities performed during the
software testing process.

Characteristics of STLC:
 STLC is a fundamental part of Software Development Life Cycle (SDLC) but STLC
consists of only the testing phases.
 STLC starts as soon as requirements are defined or software requirement document is
shared by stakeholders.
 STLC yields a step-by-step process to ensure quality software.
In the initial stages of STLC, while the software product or the application is being developed,
the testing team analyzes and defines the scope of testing, entry and exit criteria and also the test
cases. It helps to reduce the test cycle time and also enhance the product quality.
As soon as the development phase is over, testing team is ready with test cases and start the
execution. This helps in finding bugs in the early phase.
Phases of STLC:
1. Requirement Analysis:
Requirement Analysis is the first step of Software Testing Life Cycle (STLC). In this phase
quality assurance team understands the requirements like what is to be tested. If anything is
missing or not understandable then quality assurance team meets with the stakeholders to
better understand the detail knowledge of requirement.

2. Test Planning:
Test Planning is most efficient phase of software testing life cycle where all testing plans
are defined. In this phase manager of the testing team calculates estimated effort and cost
for the testing work. This phase gets started once the requirement gathering phase is
completed.

3. Test Case Development:


The test case development phase gets started once the test planning phase is completed. In
this phase testing team note down the detailed test cases. Testing team also prepare the
required test data for the testing. When the test cases are prepared then they are reviewed by
quality assurance team.

4. Test Environment Setup:


Test environment setup is the vital part of the STLC. Basically test environment decides the
conditions on which software is tested. This is independent activity and can be started along
with test case development. In this process the testing team is not involved. either the
developer or the customer creates the testing environment.
5. Test Execution:
After the test case development and test environment setup test execution phase gets started.
In this phase testing team start executing test cases based on prepared test cases in the
earlier step.

6. Test Closure:
This is the last stage of STLC in which the process of testing is analyzed.

Software Testing | Database Testing

Database Testing is a type of software testing that checks the schema, tables, triggers etc. of the
database under test. It involves creating complex queries for performing the load or stress test on
the database and check its responsiveness. It checks integrity and consistency of data.
Database testing usually consists of a layered process that includes the User Interface (UI) layer,
the business layer, the data access layer and the database.
Objective of the Database Testing:
1. Ensure Data Mapping:
It checks whether the fields in the user interface or front end forms are mapped consistently
with the corresponding fields in the database table.
2. Ensure ACID Properties of Transactions:
Every transaction a database performs has to stick to these four properties: Atomicity,
Consistency, Isolation and Durability.
3. Ensure Data Integrity:
The updated and the most recent values of shared data should appear on all the forms and
screens. The value should not be updated on one screen and display an older value on
another one. The status should also be updated simultaneously.
4. Ensure the Accuracy of the Business Rules:
Complex databases leads to complicated components like relational constraints, triggers and
stored procedures. Hence in order testers come up with appropriate SQL queries to validate
the complex objects.

Database Testing Attributes:


1. Transactions:
Transactions means the access and retrieve of the data. Hence in order during the
transaction processes the ACID properties should be followed.
2. Database Schema:
It is the design or the structure about the organization of the data in the database.
3. Triggers:
When a certain event occurs in a certain table, a trigger is auto-instructed to be executed.
4. Procedures:
It is the collection of the statements or functions governing the transactions in the database.
Database Testing Process:

1. Test Environment Setup:


Database testing starts with the setting up the testing environment for the testing process to
be carried out in order get a good quality testing process.
2. Test Scenario Generation:
After setting up the test environment test cases are designed for conducting the test. Test
scenario involve the different inputs and different transactions related to database.
3. Execution:
Execution is the core phase of the testing process in which the testing is conducted. It is
basically related to the execution of the test cases designed for the testing process.
4. Analysis:
Once the execution phase is ended then all the process and the output obtained is analyzed.
It is checked whether the testing process has been conducted properly or not.
5. Log Defects:
Log defects are also known as report submitting. In this last phase tester informs the
developer about the defects found in the database of the system.
Misconceptions related to Database Testing:
 It requires experts to carry out database testing
 The process of database testing is lengthy
 It adds extra work bottlenecks
 It slows down the overall development process
 It is a highly costly process
What is Web Application Testing?

Web application testing, a software testing technique exclusively adopted to test the
applications that are hosted on web in which the application interfaces and other functionalities
are tested.

Web Application Testing - Techniques:

1. Functionality Testing - The below are some of the checks that are performed but not limited
to the below list:
 Verify there is no dead page or invalid redirects.
 First check all the validations on each field.
 Wrong inputs to perform negative testing.
 Verify the workflow of the system.
 Verify the data integrity.
2. Usability testing - To verify how the application is easy to use with.
 Test the navigation and controls.
 Content checking.
 Check for user intuition.
3. Interface testing - Performed to verify the interface and the dataflow from one system to
other.
4. Compatibility testing- Compatibility testing is performed based on the context of the
application.
 Browser compatibility
 Operating system compatibility
 Compatible to various devices like notebook, mobile, etc.
5. Performance testing - Performed to verify the server response time and throughput under
various load conditions.
 Load testing - It is the simplest form of testing conducted to understand the behaviour of
the system under a specific load. Load testing will result in measuring important
business critical transactions and load on the database, application server, etc. are also
monitored.
 Stress testing - It is performed to find the upper limit capacity of the system and also to
determine how the system performs if the current load goes well above the expected
maximum.
 Soak testing - Soak Testing also known as endurance testing, is performed to determine
the system parameters under continuous expected load. During soak tests the parameters
such as memory utilization is monitored to detect memory leaks or other performance
issues. The main aim is to discover the system's performance under sustained use.
 Spike testing - Spike testing is performed by increasing the number of users suddenly by
a very large amount and measuring the performance of the system. The main aim is to
determine whether the system will be able to sustain the work load.
6. Security testing - Performed to verify if the application is secured on web as data theft and
unauthorized access are more common issues and below are some of the techniques to verify
the security level of the system.

You might also like