You are on page 1of 16

Software Testing and Automation

UNIT-4

Smoke Testing:

Smoke Testing is a software testing method that determines whether the deployed
build is stable or not. It acts as a confirmation whether the quality assurance team can
proceed with further testing. Smoke tests are a minimum set of tests run on each
build.
Smoke testing is a process where the software build is deployed to quality assurance
environment and is verified to ensure the stability of the application. Smoke Testing is
also known as Confidence Testing or Build Verification Testing.
In other words, we verify whether the important features are working and there are no
showstoppers in the build that is under testing.
It is a mini and quick regression test of major functionality. Smoke testing shows that
the product is ready for testing. This helps in determining if the build is flawed as to
make any further testing a waste of time and resources.

Goal of Smoke Testing:


The aim of Smoke Testing is:

 To detect any early defects in software product.


 To demonstrate system stability.
 To demonstrate conformance to requirements.
 To assure that the acute functionalities of program is working fine.
 To measures the stability of the software product by performing testing.
 To test all over function of the software product.

When do we do smoke testing?

Smoke Testing is done whenever the new functionalities of software are developed
and integrated with existing build that is deployed in QA/staging environment. It
ensures that all critical functionalities are working correctly or not.

In this testing method, the development team deploys the build in QA. The subsets of
test cases are taken, and then testers run test cases on the build. The QA team test the
application against the critical functionalities. These series of test cases are designed
to expose errors that are in build. If these tests are passed, QA team continues with
Functional Testing.

Any failure indicates a need to handle the system back to the development team.
Whenever there is a change in the build, we perform Smoke Testing to ensure the
stability.
Example: -New registration button is added in the login window and build is deployed
with the new code. We perform smoke testing on a new build.

Why do we do smoke testing?


Smoke testing plays an important role in software development as it ensures the
correctness of the system in initial stages. By this, we can save test effort. As a result,
smoke tests bring the system to a good state. Once we complete smoke testing then
only we start functional testing.

All the show stoppers in the build will get identified by performing smoke testing.
Smoke testing is done after the build is released to QA. With the help of smoke
testing, most of the defects are identified at initial stages of software development.
With smoke testing, we simplify the detection and correction of major defects.
By smoke testing, QA team can find defects to the application functionality that may
have surfaced by the new code.
Smoke testing finds the major severity defects.

Example 1: Logging window: Able to move to next window with valid username and
password on clicking submit button.

Example 2: User unable to sign out from the webpage.

Regression testing:

REGRESSION TESTING is defined as a type of software testing to confirm that a


recent program or code change has not adversely affected existing features.
Regression Testing is nothing but a full or partial selection of already executed test
cases which are re-executed to ensure existing functionalities work fine.

This testing is done to make sure that new code changes should not have side effects
on the existing functionalities. It ensures that the old code still works once the latest
code changes are done.

How to do Regression Testing:

Software maintenance is an activity which includes enhancements, error corrections,


optimization and deletion of existing features. These modifications may cause the
system to work incorrectly. Therefore, Regression Testing becomes necessary.
Regression Testing can be carried out using the following techniques:
1. Retest All:

This is one of the methods for Regression Testing in which all the tests in the
existing test suite should be re-executed. This is very expensive as it requires
huge time and resources.

2. Regression Test Selection:

Instead of re-executing the entire test suite, it is better to select part of the test
suite to be run
Test cases selected can be categorized as 1) Reusable Test Cases 2) Obsolete
Test Cases.
Re-usable Test cases can be used in succeeding regression cycles.
Obsolete Test Cases can't be used in succeeding cycles.

3. Prioritization of Test Cases:

Prioritize the test cases depending on business impact, critical & frequently
used functionalities. Selection of test cases based on priority will greatly
reduce the regression test suite.

Example of Regression testing

Let’s assume that there is an application which maintains the details of all the students in
school. This application has four buttons Add, Save, Delete and Refresh. All the buttons
functionalities are working as expected. Recently a new button ‘Update’ is added in the
application. This ‘Update’ button functionality is tested and confirmed that it’s working as
expected. But at the same time it becomes very important to know that the introduction of
this new button should not impact the other existing buttons functionality. Along with the
‘Update’ button all the other buttons functionality are tested in order to find any new issues in
the existing code. This process is known as regression testing.
 Compatibility testing

What is Software compatibility?


Compatibility is the ability to live and work together without any discrepancy.
Compatible software applications also work on the same setup. For example, if
Google.com site is compatible, then it should open in all browsers and operating system.

What is Software Compatibility Testing?


Compatibility is non-functional testing to ensure customer satisfaction. It is to determine
whether your software application or product is proficient enough to run in different
browsers, database, hardware, operating system, mobile devices, and networks.

The application could also impact due to different versions, resolution, internet speed and
configuration etc. Hence it’s important to test the application in all possible manners to
reduce failures and overcome from embarrassments of bug’s leakage. As a Non-
functional tests, Compatibility testing is to endorse that the application runs properly in
different browsers, versions, OS and networks successfully.

Compatibility test should always perform in the real environment instead of a virtual
environment.

Test the compatibility of the application with different browsers and operating systems to
guarantee 100% coverage.

Types of Software Compatibility Testing


o Browser compatibility testing : It is very popular in compatibility testing. It is to
check the compatibility of the software application on different browsers like
Chrome, Firefox, Internet Explorer, Safari, and Opera, etc.

o Hardware: It is to check the application/ software compatibility with the different


hardware configurations.

o Networks: It is to check the application in a different network like 3G, WIFI, etc.

o Mobile Devices: It is to check if the application is compatible with mobile devices


and their platforms like android, iOS, windows, etc.

o Operating System: It is to check if the application is compatible with different


Operating Systems like Windows, Linux, Mac, etc.

 Versions: It is important to test software applications in different versions


of the software. There are two different types of version inspection.
Backward Compatibility Testing– Testing of the application or software in old or
previous versions. It is also known as downward compatible.

Forward Compatibility Testing– Testing of the application or software in new or


upcoming versions. It is also known as forward compatible

Why we perform Compatibility testing?


Compatibility testing is to check the application working in the same way for all platforms.

Usually, dev team and testing team test the application in the single platform. But the once
application released in the production, the customer may test our product in different platform
and they may find bugs in the application which is not worthy in terms of quality.

To reduce such issues and not to upset your customers it is important to test the application in
all platforms.

 Web Application Security Testing


Owing to the huge amount of data stored in web applications and an increase in the number
of transactions on the web, proper Security Testing of Web Applications is becoming very
important day-by-day.

What is Security Testing?


Security Testing is the process which checks whether the confidential data stays confidential
or not (i.e. it is not exposed to individuals/ entities for which it is not meant for) and the users
can perform only those tasks that they are authorized to perform.

For Example, a user should not be able to deny the functionality of the website to other users
or a user should not be able to change the functionality of the web application in an
unintended way etc.

The purpose of a security test is to discover the vulnerabilities of the web application so that
the developers can remove these vulnerabilities from the application and make the web
application and data safe from any unauthorized action.

 What Is User Acceptance Testing?


The user in the context of a software product is either the consumer of the software or the
person who requested it to be built for him/her (client).

User Acceptance Testing (UAT), also known as beta or end-user testing, is defined as
testing the software by the user or client to determine whether it can be accepted or
not. This is the final testing performed once the functional, system and regression
testing are completed.
The main purpose of this testing is to validate the software against the business
requirements. This validation is carried out by the end-users who are familiar with the
business requirements.

UAT, alpha and beta testing are different types of acceptance testing.

As the user acceptance test is the last testing that is carried out before the software
goes live, obviously this is the last chance for the customer to test the software and
measure if it is fit for the purpose.

When Is It Performed?
This is typically the last step before the product goes live or before the delivery of the
product is accepted. This is performed after the product itself is thoroughly tested (i.e
after system testing).

Who Performs UAT?


Users or client – This could be either someone who is buying a product (in the case of
commercial software) or someone who has had a software custom-built through a
software service provider or the end-user if the software is made available to them
ahead of the time and when their feedback is sought out.

The team can be comprised of beta testers or the customer should select UAT
members internally from every group of the organization so that each and every user
role can be tested accordingly.

Need For User Acceptance Testing

Developers and functional testers are technical people who validate the software against
the functional specifications. They interpret the requirements according to their knowledge
and develop/test the software (here is the importance of domain knowledge).
This software is complete according to the functional specifications but there are some
business requirements and processes that are known only to the end-users are either missed to
communicate or misinterpreted.

This testing plays an important role in validating if all the business requirements are fulfilled
or not before releasing the software for market use. The use of live data and real use cases
make this testing an important part of the release cycle.

Many businesses that suffered big losses due to post-release issues know the importance of a
successful User Acceptance Test. The cost of fixing the defects after release is many times
greater than fixing it before.
AD HOC TESTING, also known as Random Testing or Monkey Testing is a method of
software testing without any planning and documentation. The tests are conducted informally
and randomly without any formal procedure or expected results.

Ad-hoc testing is carried out without following any formal process like requirement
documents, test plan, test cases, etc. Similarly while executing the ad-hoc testing there is NO
formal process of testing which can be documented.

Ad-hoc testing is usually done to discover the issues or defects which cannot be found by
following the formal process.

The testers who perform this testing should have a very good and in-depth knowledge of the
product or application.

When testers execute ad-hoc testing they only intend to break the system without following
any process or without having any particular use case in mind.

Characteristics of Ad-hoc testing


 Ad-hoc testing is done after the completion of the formal testing on the application or
product.
 This testing is performed with the aim to break the application without following any
process.
 The testers executing the ad-hoc testing should have thorough knowledge on the product.
 The bugs found during ad-hoc testing exposes the loopholes of the testing process
followed.
 Ad-hoc testing can be executed only once until and unless a defect is found which
requires retesting.

When Ad-hoc testing can be done?

Ad-hoc testing can be done at any point of time whether it’s beginning, middle or end of the
project testing. This can be done only when the testers are having complete knowledge of the
product. This testing can also be done when the time is very limited and detailed testing is
required.

Examples of Adhoc Tests


 Testing for the proper working of an application when the browser settings
are different. For example, identifying errors that occur when the option for
JavaScript is disabled in different browsers, etc.
 Testing the application across platforms. It is essential to check whether the
developed application can run fluently in different operating systems or
browsers.
 Providing inputs to the system that are outside the valid-inputs range, to
check whether the resulting action taken by the application is appropriate or
not.
 Copying the application’s URL and manipulating it to run on a different
browser. This is done to ascertain that any unauthorized user is not able to get
unauthenticated access to the system.
 Going through a series of random steps or navigating randomly through the
application so as to check the results obtained by going through a certain
combination of unusual inputs.

Database Testing

The Database is one of the inevitable parts of a Software Application.

It does not matter whether it is a web, desktop or mobile, client-server, peer to peer,
enterprise or individual business; the Database is required everywhere at the backend.

Similarly, whether it is Healthcare, Finance, Leasing, Retail, Mailing application or


controlling a spaceship; a Database is always in action behind the scene.

As the complexity of application increases, the need for a stronger and secure Database
emerges. In the same way, for the applications with a high frequency of transactions (For
Example, Banking or Finance application), the necessity of a fully-featured DB Tool is
coupled.

Nowadays, we have big data that is large and complex that the traditional databases can’t
handle them.

Database testing basically include the following:

1. Data validity testing.


2. Data Integrity testing
3. Performance related to data base.
4. Testing of Procedure, triggers and functions.

-For doing data validity testing one should be good in SQL queries.
-For data integrity testing one should know about referential integrity and different
constraint.
-For performance related things one should have idea about the table structure and
design.
-For testing Procedure triggers and functions one should be able to understand the
same.
What to Test in a Database?
Check all the functionality which is happening on every action performed in the
application. Actions can include deletion, addition or save options. Check whether the
added record is added in the DB with the exact value. Check the deleted record gets
removed from the database. These are major roles which need to be monitored
seriously.
Nowadays database is getting more complex due to the business logic which plays an
important role for the applications. Tester should make sure that values have been
added correctly after the implementation of the business rules.
Database testing is really a complex task and it should always be performed if tester is
much experienced in this field.

 Designing test scenarios and test cases for a Web/Mobile application

Mobile application development is gradually taking a front seat in software development.


Mobile testing is day by day increasing its prospects.

Types of Test Cases


 Performance Testing Test Cases
 Functional Testing Test Cases
 Compatibility Testing Test Cases
 Security Testing Test Cases
 Recoverability Testing Test Cases
 Usability Testing Test Cases

Performance Testing Test Cases

Performance testing for the mobile application ensures that your application performs as
required under certain performance requirements like a number of users, memory
requirements, etc.

In performance testing, we largely need to have test cases for

 Device performance
 Server/API Performance
 Network Performance

Your test cases should deal with the following aspects:

Device Performance:

 Application start-up time


 Memory consumption
 Usage with other Applications
 Battery Time while using the application
 Hardware and Software variation
 An application running in the background

Server/API Performance:

 API calls generated


 Data to and from the server.
 Server downtime

Network Performance:

 Network Speed
 Packet Loss

Also Read: How to create Test cases For Android Application

Few test cases that you can conduct for performance testing are

1. Test application performance under different load conditions.


2. To test if the network coverage supports the application at various user levels.
3. To test the application performance under prevailing client-server configuration
setup.
4. To detect infrastructure and application bottlenecks that hold back your
application from working as expected.
5. To test the response time.
6. To evaluate the application for planned and unplanned load volumes.
7. To evaluate battery time while using application
8. To test application during network change from WIFI to 2G/3G/4G or vice versa.
9. To test the memory leaks, Camera, battery consumption, resources like GPS.
10. To test if the application works well when the device is being moved from one
location to another.

Functional Testing Test Cases

In mobile testing functional testing generally deals with testing the user interactions and
the transactions. When conducting functional testing, you have to consider a few
scenarios

1. Business functionality usage of your application like banking, gaming, social or


business
2. Target audience type like consumer, enterprise, education
3. Distribution channel you would like your application to share one.eg. Apple App
Store, Google play, direct distribution
Based on your application and requirement you can have following test cases for
your testing:

1. To verify if the essential and non-essential fields can be easily identified and are
displayed on the screen in a distinctive way.
2. To test the essential fields for their proper working.
3. To test that during an incoming call the application goes to minimized mode.
4. To verify your application does not crop up any hindrance for other applications
installed on the system.
5. To test the application’s compatibility with required versions of the devices.
6. To test the application for the proper working during starting and closing.
7. To test your application supports required social network options such as posting,
sharing, and navigation, etc.
8. To test for truncation errors. Any truncation error should not harm your system
and should be under a safe limit.
9. To test for proper network error message during improper network connection.
10. To test the smooth installation of the application provided all requirements are
fulfilled.
11. To test the auto-start facility based on the requirements.
12. To test if the mobile is able to receive and store messages while your application is
running.
13. To test if your application does not hinder the multitasking capability of the
device.
14. To verify the required navigation among the related modules
15. To test if application restarts at the same point after a system crash.
16. To test the availability of the user guide.
17. To test any payment gateway transaction support if required by the application.
18. To test for required page scrolling scenarios.
19. To test newly added functionalities or changes made to the code.

Compatibility Testing Test Cases

Compatibility testing is very important as markets are flooded with various kinds of
mobile devices. Your application should be compatible with all these devices to reach
wider customers. Compatibility tests your application compatibility with various mobile
devices, OS, and a combination of both.

Some of the prominent test cases for compatibility testing are:

1. To test user Interface of the application on various screen size.


2. To test your application supports various mobile devices.
3. Test application’s compatibility with various OS
4. Test applications compatibility with a combination of different devices and
different OS.
Security Testing Test Cases

In times of increasing cyber-crime, security testing is very important. It checks whether


your application fulfills all the security requirements.

Below are some of the most important security testing test cases for mobile apps that can
ensure better security of your application:

1. To your application withstanding capabilities against brute force attack


2. To test the application against buffer overflows and memory corruption cases.
3. Test custom created files and test that they do not perform any malicious deeds.
4. To test applications immunity against malicious runtime injections.
5. To test the well-being of cryptography code.
6. To test if your application supports a strong password protection system, and does
not allow an unauthorized person to change password.
7. To detect dynamic dependencies.
8. To test security against SQL injection-related attacks.
9. To detect and recuperate from unmanaged code scenarios.
10. To test if certificates are verified and whether your application support Certificate
Pinning.
11. To test the application response from the denial of service attacks.
12. To analyze data validation requirements.
13. To test the business logic implementation is secured.
14. To test file system interactions.
15. To test the protocol handlers.
16. To test applications immunity tonasty client-side injections.
17. To test that keyboard cache is protected from apprehensive data storage.
18. To test if regular audits for data protection analysis are supported.
19. To test if your application goes through a proper authentication process before
sharing sensitive information.
20. To test your application is immune to insufficient session expiration.
21. To inspect file caching.
22. To test for cookies.
23. To test whether session management is enabled to prevent unauthorized users to
access unwanted information.
24. To test different data streams.

Recoverability Testing Test Cases

1. Test for Crash recovery


2. Verify recovery state of the application after unanticipated crash
3. Test for Transaction interruptions.
4. Verify application’s transaction handling capabilities during a power failure (i.e.
Battery dies or sudden manual shutdown of the device)
5. The application recoverability when the connection is suspended.
Usability Testing Test Cases

The usability testing tests whether your mobile application is easy for the users to use.
The main objective of usability testing is to whether your application supports intuitive,
easy-to-use, and industry-accepted interfaces.

1. Test that the buttons on your application are of the required size.
2. To test icons consistency with the application.
3. To test for the colour coding of the buttons as per the requirements.
4. To test for zoom- out and zoom-in facilities support in your application.
5. To test the proper acceptance of keyboard input.
6. To test the support for undoing an action within a time limit, when any wrong item
is touched.
7. To test no overloading of contextual menus.
8. To test that the text is simple, readable and clearly visible to the users.
9. To test for the apt font.
10. To test that the users are prompted when they download a large amount of data not
beneficial for the application performance.
11. To verify the closing and reopening of application from various states.
12. To test for language translation facility.
13. To test the synchronization of application items as per the user actions.
14. To ensure the availability of user manual for the ease of the users.

What is Exploratory Testing?


EXPLORATORY TESTING is a type of software testing where Test cases are not
created in advance but testers check system on the fly. They may note down ideas
about what to test before test execution. The focus of exploratory testing is more on
testing as a "thinking" activity.

Exploratory Testing is widely used in Agile models and is all about discovery,
investigation, and learning.

“Exploratory testing” – as the name suggests, is a simultaneous learning, test design,


and test execution process. We can say that in this testing test planning, analysis,
design and test execution, are all done together and instantly.

This testing is about exploring the system and encouraging real-time and practical
thinking of a tester.

In layman terms, exploratory testing involves concurrent test case design and test
execution of an application or system under test. The tester will create or write down a
test idea to give direction, and explore the system while testing to further create critical,
practical and useful tests for the successful testing of an application.
This requires minimal planning. Testers continuously make a decision on her next step
of action. It completely depends upon the tester's thought process.

Sometimes this testing can be more beneficial than the formal testing approach
for finding some subtle defects which go missing in formal testing.

For Example, if you open a shopping website, you have a general idea that this
shopping website will let you shop by selecting a product of your choice and then paying
for the same.
During this process, you might learn that the website provides you with virtual human
look-alike which helps you in product selection process. You also found that you can
order a number of products for home trial or that you can make payment through
rewards points of some banks, etc.

As a tester, you not only need to verify whether a system is working as expected but
also check if that system is not behaving in a way which is not expected.

API testing

API is an acronym and it stands for Application Programming Interface. API is


a set of routines, protocols, and tools for building Software Applications. APIs
specify how one software program should interact with other software
programs.

In simple words, API stands for Application Programming Interface. API acts
as an interface between two software applications and allows the two software
applications to communicate with each other. API is a collection of software
functions that can be executed by another software program.

Example:

If you are using a flight service engine say Expedia, where you search for flights on a specific
date. Once you pass the data such as Source, Destination, Onward Date, and Return Date and
click on search. Expedia sends a request to airlines through an API as per your search details.
The API then takes the airline’s response to your request and delivers it right back to
Expedia.
API gets the request from the user and gives the response without exposing
internal logic. API acts like an Abstraction in the OOPs concept.

API testing is a type of software testing that involves testing APIs directly and also as a part
of integration testing to check whether the API meets expectations in terms of functionality,
reliability, performance, and security of an application. In API Testing our main focus will be
on a Business logic layer of the software architecture. API testing can be performed on any
software system which contains multiple APIs. API testing won’t concentrate on the look and
feel of the application. API testing is entirely different from GUI Testing.

n simple terms, API testing is intended to reveal bugs, inconsistencies or deviations from the
expected behavior of an API. Commonly, applications have three separate layers:

 Presentation Layer or user interface


 Business Layer or application user interface for business logic processing
 Database Layer for modeling and manipulating data

API testing is performed at the most critical layer of software architecture, the Business
Layer. It is in the business layer, business logic processing is carried out, and all
transactions between User Interface(UI) and database happen. So, making sure that, API
offers complete intended functionality allows for easy future expansion of the software
product. More reasons as to why API testing is

How to Perform API Testing?


Listed below are the steps that you can follow to perform API testing:
API Specification Review

The first step is documenting the API testing requirements. What is the purpose of the API?
What is the workflow of the application? Which integrations are supported by the API? What
are the features of the API? Documenting all these API testing requirements is the first thing
you need to do. This will help you in planning API tests throughout the testing process.

Setting Up Test Environment

Next step is setting up a testing environment, with the required set of parameters around the
API. This involves configuring the database and server for the application requirements.

Integrating Application Data

In this step, you need to combine your application data with the API tests to ensure that the
API functions as expected against all possible input configurations.

Deciding Type of API Test

After you’ve created the testing boundaries and requirements, you need to decide what you
want to test your API for. There are different types of API tests like functionality testing,
validation testing, load testing, security testing, end-to-end testing, fuzz testing and many
more.

You might also like