Professional Documents
Culture Documents
STA Notes (Unit 4)
STA Notes (Unit 4)
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.
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.
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.
Regression testing:
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.
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.
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.
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.
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
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.
o Networks: It is to check the application in a different network like 3G, WIFI, etc.
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.
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.
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).
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.
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.
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.
Database Testing
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.
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.
-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.
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.
Device performance
Server/API Performance
Network Performance
Device Performance:
Server/API Performance:
Network Performance:
Network Speed
Packet Loss
Few test cases that you can conduct for performance testing are
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. 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 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.
Below are some of the most important security testing test cases for mobile apps that can
ensure better security of your application:
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.
Exploratory Testing is widely used in Agile models and is all about discovery,
investigation, and learning.
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
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:
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
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.
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.
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.
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.