Вы находитесь на странице: 1из 37

Unit 13 Assignment

By Jawaj Duha
Testing Methodologies
Testing Methodologies in software engineering are testing strategies, approaches or methods
used to test a specific product to ensure its usability. It makes sure that the product works as
per given the specifications and has no side effects when used outside the design
parameters.

Why are Software Testing Methodologies important?

● It manages your project requirements, test cases, bugs, issues in a single integrated
environment throughout the testing lifecycle.
● It is complete testing solution that includes requirements management , test case
designs, release management, defect tracking etc.
● It is a highly intuitive testing approach that provides a complete picture of the software
product and health status.
Functional Vs Non-Functional Testing
Methodologies
Functional Testing involves application testing against business requirements that includes
multiple test types designed to guarantee that each part of the software behaves in the same
way as expected by the users.

Non-Functional Testing methods incorporate different test types focused on the operational
aspects of a piece of software. These are the key to releasing high - quality software can be
easily adopted by end-users by building a robust testing framework that implements both
functional and non-functional testing methodologies.
Unit Testing
● It is the beginning level of testing that is usually performed by the developers in a test-
driven environment write and run test cases before the software is passed over to the
testing team.
● Unit testing is a software testing methodology which makes sure that individual
components of software are working perfectly for which purpose they are designed to.
● Unit testing makes the debugging easy because bugs are detected much earlier and easy
to fix by the testing team.
Unit Testing - Advantages
● Reduces Defects in the newly developed features or reduces bugs when changing the
existing functionality
● Reduces Cost of Testing as defects are captured in very early phase
● Improves design and allows better refactoring of code
● Unit Tests, when integrated with build gives the quality of the build as well
Disadvantages/Limitations of Unit
Testing:
● Testing cannot catch each and every bug in an application
● It is impossible to evaluate every execution path in every software application
● There is a limit to the number of scenarios and test data that the developer can use to
verify the source code.
Unit Testing Life Cycle:
Unit Testing Techniques:

1. Black Box Testing - Using which the user


interface, input and output are tested
2. White Box Testing - used to test each one
of those functions behaviour is tested
3. Gray Box Testing - Used to execute tests,
risks and assessment methods.
Acceptance Testing
● Acceptance testing is the last phase of the functional testing to assess the final piece of
software for delivery.
● It makes sure that the product is in compliance with the business criteria and meets the
end user needs completely.
● It performs testing internally and externally. It means the product is given into the hands
of users for beta testing and it is tested by the quality team too.
● Beta testing is key to getting potential feedback from users and address them before the
final product delivery.
Acceptance Testing in SDLC
The following diagram explains acceptance testing in the software development life
cycle.

The acceptance test cases are executed


against the test data or using acceptance
testing script and then the results are
compared with the expected one.
Acceptance Testing - Criteria
Acceptance criteria are defined on the basis of the following attributes:

● Functional Correctness and Completeness


● Data Integrity
● Data Conversion
● Usability
● Performance
● Timeliness
● Confidentiality and Availability
● Installability and Upgradability
● Scalability
● Documentation
Acceptance Testing Plan - Attributes
The acceptance test activities are carried out in phases. Firstly, the basic tests are executed,
results are satisfactory then the execution of more complex scenarios are carried out.

The Acceptance test plan has the following attributes:

● Introduction
● Acceptance Test Category
● Operation Environment
● Test Case ID
● Test Title
● Test Objective
Acceptance Test Report - Attributes
The Acceptance test report has the following attributes:

● Report Identifier
● Summary of Results
● Variations
● Recommendations
● Summary of To-Do List
● Approval Decision
Who performs Acceptance Testing?
● Internal Acceptance Testing (also known as Alpha Testing) is performed by members of
the organisation that develop the software . but are not directly involved in the project.
Usually members of Product Management, Sales or Customer Support.
● External Acceptance Testing - is performed by people who are not employees of the
organization that developed software.
● Customer Acceptance Testing is performed by the customers of the organization that
developed the software. They are the ones who asked the organization to develop the
software.
● User Acceptance Testing - (Also known as Beta Testing) is performed by the end user’s of
the software.
Advantages of Acceptance Testing:
● Validates that business requirements are met based on the in-scope user stories
● Reduces the risk of defects being identified in production
● End users will gain skills and confidence while using the new system prior to go live.
Disadvantages/Limitations of Acceptance
Testing:
● You might not test all functions or features
● Test progress is difficult to measure
● Users might confirm to the way the system works and not see or report the defects
● Users may focus on comparing the new system to a legacy system, rather than looking
for defects.
Functional Testing
Functional Testing is a testing technique that is used to test the features/functionality of the
system or software, should cover all the scenarios including failure paths and boundary
cases.

Functional Testing Techniques:

There are two major Functional Testing techniques as shown below:


The other major Functional Testing techniques include:

● Unit Testing
● Integration Testing
● Smoke Testing
● User Acceptance Testing
● Localization Testing
● Interface Testing
● Usability Testing
● System Testing
● Regression Testing
● Globalization Testing
Advantages of Functional Testing:
● It produces a defect-free product/software
● It ensures that the customer/end-user is satisfied
● It ensures the all the requirements are met
● It ensures the proper working of all the functionality of an application/software/product.
Disadvantages/Limitations of Functional
Testing:
● Functional testing is a process in which various logical mistakes in the software are not
detected in the testing process
● It doesn’t care how the developer implements the actual source code because it only
focuses on the results of the source code.
System Testing
● System testing is the black box testing method used to evaluate the integrated system as
a whole and ensures it meets all specific requirements.
● In the case of system testing, the functionality of the product is tested end-to-end and it
is usually performed by the testing team, not the development team.
● System testing is performed before pushing the software product into production.
Types of System Tests:
Advantages of System Testing:
● Verifies the system against the business, functional and technical requirements of the
end users.
● It helps in getting maximum bugs before acceptance testing.
● System testing increases the confidence level of the team in the product before the
product goes for acceptance testing.
Disadvantages/Limitations of System
Testing:
● Only limited coverage of application as the tester cannot target specific code segment.
● Test cases are difficult to design as the tester doesn’t have prior knowledge on
specifications and coding.
● Some possible inputs will only be tested.
Performance Testing
Performance testing, a non-functional testing technique performed to determine the system
parameters in terms of stability under various workload. Performance testing measures the
quality attributes of the system, such as reliability and resource usage.
Performance Testing Techniques:
● Load Testing - it is the simplest form of testing, to understand the behaviour of the
system under specific load. Load testing will result in measuring important business
critical transactions and load on the database, application, server etc.
● 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 test the
parameters such as memory utilization is monitored to detect memory leaks or other
performance issues.
● 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.
Performance Testing Process:
Security Testing
Security testing is a testing technique to determine if an information system protects data
and maintains functionality as intended. It also aims at verifyting 6 basic principles as listed
below:

● Confidentiality
● Integrity
● Authentication
● Authorization
● Availability
● Non-Repudiation
Security Testing - Techniques:
● Injection
● Broken Authentication and Session Management
● Cross-Site Scripting (XSS)
● Insecure Direct Object References
● Security Misconfiguration
● Sensitive Data Exposure
● Missing Function Level Access Control
● Cross-Site Request Forgery (CSRF)
● Using Components with Known Vulnerabilities
● Unvalidated Redirects and Forwards
Regression Testing
Regression testing a black box testing technique that consists of re-executing
those tests that are impacted by the code changes. These tests should be
executed as often as possible throughout the software development life cycle.

Types of Regression Tests:

● Requires knowledge about the system and how it affects by the existing functionalities.
● Tests are selected based on the area of frequent defects
● Tests are selected to include the area, which has undergone code changes many times
● Tests are selected based on the critically of the features.
Regression Testing Steps:
Regression test are the ideal cases of automation which results in better Return On
Investment (ROI).

● Select the Tests for Regression


● Choose the apt tool and automate the Regression Tests
● Verify applications with Checkpoints
● Manage Regression Tests/update when required
● Schedule the tests
● Integrate with the builds
● Analyze the results
Waterfall Methodology
In the waterfall model, software development progress through various phases like
Requirements Analysis, Design etc - sequentially.

In this model, the next phase begins only when the earlier phase is completed.
What is the Testing Approach for
Waterfall Model
The first phase in the waterfall model ?
is the requirements phase in which all the project
requirements are completely defined before starting the testing. During this phase, the test
team brainstorms the scope of testing, test strategy and drafts a detailed test plan.

Only once the design of software is complete, the team will move on to the execution of the
test cases to ensure that the developed software behaves as it expected.

In this methodology, the testing proceeds to the next phase only whn the previous phases is
completed.
Advantages and Disadvantages of Waterfall
Model
Advantages:
?
This software engineering model is very simple to plan and manage. Hence, projects, where
requirements are clearly defined and stated beforehand, can be easily tested using a waterfall
model.

Disadvantages:

In the waterfall model, you can begin with the next phase only once the previous phase is
completed. Hence, this model cannot accommodate unplanned events.
Agile Methodology
In agile methodology, software is developed in rapid cycles. Interactions amongst customers,
developers and client are emphasized rather than processes and tools. The agile
methodology focuses on responding to change rather than extensive planning.

What is the Testing Approach for Agile Methodology?

Incremental testing is used in agile development methods and hence, every release of the
project is tested thoroughly. This ensures that any bugs in the system are fixed before the
next release
Advantages and Disadvantages of Agile
Methodology?
Advantages:

It is possible to make changes in the project at any time to comply with the requirements. This
incremental testing minimise risks.

Disadvantages:

Constant client interaction means added time pressure on all stakeholders including the
client themselves, software development and test teams
Which Software Methodology to Choose?
There are tons of testing methodologies available that are designed for a specific purpose
with its own advantages and disadvantages. The selection of a software methodology
depends on multiple factors like the nature of the project, what are the client requirements,
project schedule etc. in some cases , testing and development go side by side while others
includes testing during later phases when the build is ready.
Setting up Testing Methodologies?
Testing methodologies are not used just for the sake of code testing but they are used for
other purposes too.

● Scheduling: Scheduling is key to implementing the testing methodology successfully that


it should meet the requirements of each member in the team.
● Test Approach: Once you are done with scheduling and project deliverables are defined
well, the next step is formulating the right test approach.
● Reporting: This step will dictate the effectiveness of the test approach and changes
required for setting up the testing methodology successfully.

Вам также может понравиться