Lect 6 Generic Testing Types
Lect 6 Generic Testing Types
Instructor: Mehwish
OUTLINE
• Generic Types of Testing
• Functional Testing
• Nonfunctional
• Testing of Software Structure
• Testing Related to Changes
• Regression Testing
• Dynamic testing helps in identifying
– Functional defects related to the requirements of the
software and
– Non-functional defects like performance and usability.
• These techniques evaluate the software against the
requirements of the user.
• Example
• The bicycle being able to stop within one second of
applying the brakes is a functional requirement. These
requirements can be tested only by using the bicycle.
• Dynamic techniques are used to examine code
through its execution.
• Dynamic techniques can be conducted manually or
through an automated tool.
• Dynamic testing helps in identifying functional and
non-functional defects.
• Example
– Riding the bicycle on dull surfaces, rocky grounds, slippery
surfaces, and at high speeds to test the level of control and
comfort it offers is a dynamic testing technique
Functional Testing
Functional Testing
• Functional testing can be defined as
– ‘Testing of all features and functionalities of software to
ensure all the requirements and specifications provided in
Business Requirement Documents or BRD are met.’
• Functional testing is considered as Black Box testing
as the software is tested based on functional
requirements.
• Here, the internal structure of the software is not
considered.
• Functional testers normally do not need to
understand the coding of software.
• Functional testing mainly involves
– identifying the functionalities to be tested
– preparing the test data
– documenting the expected result
– executing the planned test case
– comparing the actual result with the expected result
– reporting the deviation, if any.
• Functional testing can be done at any level of unit,
integration, and system testing.
• Functional test cases can also be automated to
execute them constantly with different data sets.
– The test cases ensure proper coverage of all the
scenarios during testing.
– The primary focus is on the exact real-world usage
of the application and testing is done in a similar
environment that simulates the production
environment.
Types Functional Testing
Types Functional Testing
• There are different types of Functional testing such
as:
– Unit Testing
– Smoke or Sanity Testing
– Integration Testing
– Interface and Usability Testing
– Security Testing
– System Testing
– Regression Testing
– Pre-user Acceptance Testing
– User Acceptance Testing
– White Box
– Black Box Testing
– Globalization and Localization Testing
• In unit testing
– the developer will test their developed code against the
functional requirements.
• Smoke or Sanity testing
– the first type of testing done once the code is deployed in
the test environment.
• Integration Testing
– includes testing the requirements along with a few
technical aspects.
Non Functional Testing
Non Functional Testing
• Non-functional requirements are often referred to as
qualities of a system.
• They include
– all the behavioral requirements not defined in functional
requirements such as performance, and stability of the
application.
• These requirements are not directly related to the
business functionally, however, are essential to
maintaining the system.
• Non-functional testing can be performed at all levels.
• For example
– the functional requirement of delete employee’s record
deletes it and should no longer be viewable from the
interface.
– A non-functional requirement of the delete functionality
might include a soft delete as the data, though the
employee is no longer associated with the company.
Types of Non-Functional Testing
Types of Non-Functional Testing
• There are different types of non-functional testing
like
– Baseline Testing
– Compatibility Testing
– Compliance Testing
– Documentation Testing
– Endurance Testing
– Load Testing
– Localization and Internationalization Testing etc
• Following are the common types of non-
functional testing:
– Performance Testing
– Recovery Testing
– Usability Testing
– Scalability Testing
– Stress Testing
• Performance Testing
– Performance Testing measures the performance of the
system regarding response time, ability to handle the
number of users and so on.
• Load Testing
– Load Testing tests the amount of load a system is able to
handle without hampering the response time.
• Stress Testing
– Stress Testing involves testing the system behavior beyond
normal operational conditions.
• Usability Testing
– Usability Testing tests the user-friendliness of the system.
• Security Testing
– Security Testing tests how secure the system is to ensure
the system cannot be hacked, or user information is not
leaked.
• Non-Functional testing depends on the needs of the
specific organization and the customer.
– The names of many non-functional tests are often used
interchangeably due to the overlap in scope between
various non-functional requirements.
• For example
– software performance is a broad term that includes many
specific requirements like reliability and scalability.
Test Types – Example
• In an online banking software, the functional testing
includes
– testing whether the funds are transferred accurately, if
interest calculations are correct, and if bill payments are
made on time.
• Non-functional testing focus on
– the security of the system, to ensure all access is safe.
– It will ensure that the system can handle the load
especially during peak time like the start of the month
when there are salary disbursements and payments.
Testing of Software Structure
Testing of Software Structure
• Structural testing is also referred to as White Box
testing, where the testers are required to know the
internal implementations of the code.
• During structural testing, the focus is to test how the
code in the software is functioning.
• For example
– a structural technique would check how the loops in the
software are working.
• Structural testing is a phased process
– which requires work on test data
– followed by simulation of the test environment
– execution of the prepared cases
– verification of code coverage
– the final evaluation of test results
– leading to the structural test report.
• Structural testing is also used in a system and
acceptance testing, however, the structures are
different.
• For example
– the coverage of menu options or major business
transactions could be the structural element in the system
or acceptance testing.
Testing Related to Changes
Regression Testing
Testing Related to Changes
• Re-testing is repeatedly testing the same
functionality with different sets of input data.
– Whenever a tester finds a defect and a developer fixes it,
the tester needs to retest the functionality.
• Retesting process can also be termed as
‘Confirmation’ which means that the defect has been
resolved.
Regression Testing
• Regression Testing is re-executing the same test case
whenever the code is modified, or some new
functionality is added to it, to ensure no further
defects have been introduced.
• The extent of regression testing is determined based
on the risks of the system.
• Test cases selected for regression testing should be
repeatable.
• In most cases, regression testing is conducted using
automated tests, which will enable testers to
increase test coverage during regression testing.
• Both re-testing and regression testing can be
performed at all levels and can include both
functional and non-functional testing objectives.
• In most of the cases, Regression testing needs more
effort than retesting and retesting is almost followed
by regression testing.
• There are 1000 test cases to be executed in the first
build, and after executing 100 test cases, 90 passes
and 10 fail.
– After the bugs are fixed and when the second build is
released for testing, the tester first conducts re-testing.
– They test the 10 test cases that had failed earlier.
– Once the tests have passed, the tester conducts regression
testing which executes all the previously passed 90 test
cases or few selected ones from the 90 based on
calculated risk.
– This is done to ensure that while fixing the 10 failed tests,
any changes made to the system did not impact the
already running functionality.
THE END
Thanks