Download as pdf or txt
Download as pdf or txt
You are on page 1of 26

IT-A

STQA Question Bank

Unit 1

1. What is Software Engineering? Explain SDLC with a suitable Diagram.

Software Engineering is a branch of engineering that deals with the development of software
products using various software engineering principles and techniques. It involves the
application of engineering principles to the software development process to produce
high-quality software that meets user requirements.
The Software Development Life Cycle (SDLC) is a process used to guide the software
engineering process. It is a framework for the development of software products and
involves several stages that are typically arranged in a sequential or iterative manner.
The stages of SDLC include:
1. Planning - In this phase, the software development process is initiated, and
requirements are gathered. The feasibility of the project is determined, and the
project scope is defined.
2. Analysis - In this phase, the gathered requirements are analysed, and a detailed
functional specification is developed. The software's functional and non-functional
requirements are identified, and the system architecture is developed.
3. Design - In this phase, the detailed system design is developed based on the
functional specifications developed in the analysis phase. The system's modules,
components, and interfaces are defined, and the software design is documented.
4. Implementation - In this phase, the software is developed based on the system
design. The software code is written and tested, and the software is integrated and
tested as a whole.
5. Testing - In this phase, the software is tested to ensure that it meets the specified
requirements. Different types of testing, including unit testing, integration testing,
system testing, and acceptance testing, are carried out to ensure that the software is
of high quality and meets the user's needs.
6. Deployment - In this phase, the software is deployed in the production environment.
The software is installed, and user training and support are provided.
7. Maintenance - In this phase, the software is maintained, and any issues or defects
identified during production use are addressed.
IT-A
2. Explain Software Engineering with Layered Technology.

Layered technology is an approach to software engineering that involves the use of a


layered architecture for the development of software products. This approach involves
breaking down the software development process into distinct layers or components, with
each layer performing a specific function.

In this approach, each layer is responsible for performing a specific function, and the layers
are designed to work together to form a complete software system. The layered architecture
is organised in such a way that the components in each layer interact with the components
in the layer above and below it.

There are typically four layers in a layered technology approach:

1. Presentation layer - This layer is responsible for presenting the user interface to the
user. It handles input and output from the user, and it displays data and information to
the user in a way that is easy to understand.
2. Application layer - This layer is responsible for implementing the business logic of the
software. It processes user input and performs calculations and data manipulation.
3. Domain layer - This layer is responsible for implementing the data and business rules
of the software. It manages the data and ensures that it is stored and retrieved
correctly.
4. Data layer - This layer is responsible for managing the storage and retrieval of data.
It handles all interactions with the database or other data storage systems.

3. Explain Linear Sequential Model (Waterfall Model) with all the Steps and
Advantages/Disadvantages.

The Linear Sequential Model, also known as the Waterfall Model, is a software development
process that follows a sequential, top-down approach. In this model, the software
development process is divided into a series of distinct phases, with each phase being
IT-A
completed before the next phase begins. The Waterfall Model consists of the following
phases:

1. Requirements gathering and analysis: In this phase, the requirements for the
software system are gathered and analysed. This involves meeting with stakeholders
and determining their needs and expectations for the software.
2. Design: In this phase, the software system is designed based on the requirements
gathered in the previous phase. This involves creating a detailed plan for the
software system, including the architecture, data structures, algorithms, and
interfaces.
3. Implementation: In this phase, the software system is implemented based on the
design created in the previous phase. This involves writing code, creating databases,
and integrating different components of the software system.
4. Testing: In this phase, the software system is tested to ensure that it meets the
requirements and specifications. This involves unit testing, integration testing, and
system testing.
5. Deployment: In this phase, the software system is deployed to the production
environment, where it is made available to end-users.
6. Maintenance: In this phase, the software system is maintained and updated to
ensure that it continues to meet the needs of the end-users.

Advantages of the Waterfall Model:

1. It is simple and easy to understand, making it a good choice for small or


straightforward projects.
2. It provides a clear roadmap for the development process, making it easy to plan and
manage the project.
3. Each phase is completed before the next phase begins, which helps to ensure that
the project stays on track and that issues are identified early on.

Disadvantages of the Waterfall Model:

1. It is inflexible and does not allow for changes to be made once the project has
started. This can be a problem if requirements change or if issues are identified later
in the development process.
2. The testing phase is typically done at the end of the development process, which can
lead to issues being identified too late to be easily fixed.
3. It does not take into account the feedback and input of end-users, which can lead to
software that does not meet their needs and expectations.

4. When to use a Prototype Model? Define it with diagrams and Steps.

A Prototype Model is a software development process that involves creating a preliminary


version of the software in order to test and refine its design. This model is used when the
requirements for the software system are unclear or are likely to change, and when there is
a need to quickly test and refine the design. The Prototype Model consists of the following
steps:
IT-A
1. Requirements gathering: In this phase, the requirements for the software system are
gathered and analysed. However, unlike in the Waterfall Model, the requirements are
not fully defined and may be subject to change.
2. Design and prototyping: In this phase, the design for the software system is created,
and a prototype of the software is developed. The prototype may be a partial or
complete version of the software, depending on the needs of the project.
3. Feedback and testing: In this phase, the prototype is tested by end-users to identify
any issues or areas for improvement. Feedback from end-users is used to refine the
design and improve the prototype.
4. Iteration: Based on the feedback and testing results, the design is refined and a new
prototype is developed. This process is repeated until the software system meets the
requirements and specifications.
5. Implementation: In this phase, the final version of the software system is developed
based on the refined design and prototype.
6. Maintenance: In this phase, the software system is maintained and updated to
ensure that it continues to meet the needs of end-users.

5. Why do we use the RAD Model? Explain it with advantages & Disadvantages.

● When the system should need to create the project that modularizes in a short span
time (2-3 months).
● When the requirements are well-known.
● When the technical risk is limited.
● When there's a necessity to make a system, which is modularized in 2-3 months of
period.
● It should be used only if the budget allows the use of automatic code generating
tools.
IT-A
Advantage of RAD Model:

o This model is flexible for change.


o In this model, changes are adoptable.
o Each phase in RAD brings highest priority functionality to the customer. o It reduced
development time.
o It increases the reusability of features.

Disadvantage of RAD Model:

o It required highly skilled designers.


o All applications are not compatible with RAD.
o For smaller projects, we cannot use the RAD model. o On the high technical risk, it's not
suitable.
o Required user involvement.

6. Describe Spiral Model with its Diagram.

The Spiral Model is a risk-driven software development process model that combines the
iterative nature of prototyping with the controlled and systematic aspects of the Waterfall
Model. The model consists of four phases that are repeated in a spiral, with each loop of the
spiral representing a single iteration of the development process. The four phases of the
Spiral Model are:

1. Planning: This phase involves identifying objectives, alternative solutions, and


constraints, and developing a plan to address them. In this phase, risks are also
identified and evaluated, and a strategy is developed to mitigate or eliminate them.
2. Risk Analysis: This phase involves analysing the identified risks in the previous
phase and evaluating their impact on the project. This phase also involves
developing a risk mitigation plan to address the identified risks.
IT-A
3. Engineering: This phase involves developing and testing the software system based
on the requirements and design developed in the previous phases. This phase
includes coding, testing, and integration of the software components.
4. Evaluation: This phase involves evaluating the results of the previous phase and
using them to refine the project objectives, constraints, and solutions. This phase
also involves determining if the project objectives have been met, and if not, revisiting
the previous phases to address any issues.

Advantages of Spiral Model:

1. Risk Handling: The projects with many unknown risks that occur as the development
proceeds, in that case, Spiral Model is the best development model to follow due to the risk
analysis and risk handling at every phase.
2. Good for large projects: It is recommended to use the Spiral Model in large and complex
projects.
3. Flexibility in Requirements: Change requests in the Requirements at a later phase can be
incorporated accurately by using this model. 4. Customer Satisfaction: Customers can see
the development of the product at the early phase of the software development and thus,
they habituated with the system by using it before completion of the total product.

Disadvantages of Spiral Model:

1. Complex: The Spiral Model is much more complex than other SDLCmodels.
2. Expensive: Spiral Model is not suitable for small projects as it is expensive.
3. Too much dependability on Risk Analysis: The successful completion of the project is very
much dependent on Risk Analysis. Without very highly experienced experts, it is going to be
a failure to develop a project using this model.
4. Difficulty in time management: As the number of phases is unknown at the start of the
project, so time estimation is very difficult.

7. Define an Incremental Model with an example.

The Incremental Model is a software development process model where the software
system is developed in increments or modules, each of which represents a functional subset
of the complete software system. Each module is developed and tested separately, and then
integrated into the overall software system. This allows for a more flexible and iterative
approach to software development, as each module can be tested and refined before being
integrated into the larger system.

Advantages of the Incremental Model:

1. Flexibility: The Incremental Model is highly flexible and can be adapted to suit the
specific needs of a project.
2. Early Delivery: The Incremental Model allows for early delivery of working software
modules, which can help to demonstrate progress and secure stakeholder buy-in.
3. Testing: Each module is tested separately, which allows for more thorough testing
and reduces the risk of defects in the final software system.
IT-A
4. Risk Management: The Incremental Model allows for more effective risk
management, as each module can be developed and tested separately, reducing the
impact of potential risks on the overall software system.

Disadvantages of the Incremental Model:

1. Integration: The Incremental Model requires careful integration of the developed


modules into the overall software system, which can be challenging and
time-consuming.
2. Complexity: The Incremental Model can be more complex than other software
development models, as it requires careful coordination and management of the
development and integration process.
3. Cost: The incremental nature of the model can result in higher development costs, as
each module may require additional resources and time to develop and test.

8. Write a Short Note on Evolutionary Process Model.

Evolutionary model is a combination of Iterative and Incremental model of software


development life cycle. Delivering your system in a big bang release, delivering it in
incremental process over time is the action done in this model. Some initial requirements
and architecture envisioning need to be done. It is better for software products that have
their feature sets redefined during development because of user feedback and other factors.

The Evolutionary development model divides the development cycle into smaller,
incremental waterfall models in which users are able to get access to the product at the end
of each cycle. Feedback is provided by the users on the product for the planning stage of the
next cycle and the development team responds, often by changing the product, plan or
process. Therefore, the software product evolves with time. All the models have the
disadvantage that the duration of time from start of the project to the delivery time of a
solution is very high. Evolutionary model solves this problem in a different approach.

Evolutionary model suggests breaking down work into smaller chunks, prioritising them and
then delivering those chunks to the customer one by one. The number of chunks is huge and
is the number of deliveries made to the customer. The main advantage is that the customer’s
IT-A
confidence increases as he constantly gets quantifiable goods or services from the
beginning of the project to verify and validate his requirements. The model allows for
changing requirements as well as all work broken down into maintainable work chunks.
Application of Evolutionary Model:
1. It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer wants to
start using the core features instead of waiting for the full software.
2. The Evolution model is also used in object oriented software development because
the system can be easily portioned into units in terms of objects.
Advantages:
● In an evolutionary model, a user gets a chance to experiment with a partially
developed system.
● It reduces the error because the core modules get tested thoroughly.
Disadvantages:
● Sometimes it is hard to divide the problem into several versions that would be
acceptable to the customer which can be incrementally implemented and delivered.

9. What is an Agile Process Model? Explain it.

The meaning of Agile is swift or versatile."Agile process model" refers to a software


development approach based on iterative development. Agile methods break tasks into
smaller iterations, or parts do not directly involve long term planning. The project scope and
requirements are laid down at the beginning of the development process. Plans regarding
the number of iterations, the duration and the scope of each iteration are clearly defined in
advance.
Each iteration is considered as a short time "frame" in the Agile process model, which
typically lasts from one to four weeks. The division of the entire project into smaller parts
helps to minimise the project risk and to reduce the overall project delivery time
requirements. Each iteration involves a team working through a full software development
life cycle including planning, requirements analysis, design, coding, and testing before a
working product is demonstrated to the client.

Following are the Agile Manifesto principles −


IT-A
Individuals and interactions − In Agile development, self-organisation and motivation are
important, as are interactions like co-location and pair programming.
Working software − Demo working software is considered the best means of communication
with the customers to understand requirements, instead of just depending on documentation.
Customer collaboration − As the requirements cannot be gathered completely in the
beginning of the project due to various factors, continuous customer interaction is very
important to get proper product requirements.
Responding to change − Agile Development is focused on quick responses to change and
continuous development.

10. Explain the following :


(a) Component Based Development
(b) Product & Process
11. What is Software testing? Define the need of Testing.

Software testing is the process of evaluating a software application or system to identify any
defects, bugs, or errors that may affect its functionality or performance. It involves executing
the software with the intention of finding faults or errors, and then reporting those issues to
the development team so they can be fixed before the software is released to the end users.
The need for software testing is critical to ensure the quality, reliability, and security of the
software. Testing helps to identify defects in the software, which can cause malfunctions,
data loss, security vulnerabilities, and other problems that may lead to negative
consequences for the end-users, such as decreased productivity or financial losses. Testing
also helps to ensure that the software meets the requirements and expectations of the
end-users and that it performs as expected in different operating environments and
scenarios.
In addition, software testing is important for the reputation of the software development team
and the company that produces the software. High-quality software that is tested thoroughly
is more likely to gain the trust and loyalty of the end-users, leading to increased user
satisfaction and business success.

12. Explain the terms : (a) Errors (b) Faults (c) Defects (d) Failures (e) Bug

(a) Errors: An error is a human mistake or a mistake made in the software development
process that produces incorrect or unexpected results. It is a deviation from the expected
behaviour of the software.
IT-A
(b) Faults: A fault, also known as a defect or a bug, is a flaw or a mistake in the software that
can cause it to behave incorrectly, produce incorrect results or crash. A fault is introduced in
the software during the design or coding phase of the software development process.
(c) Defects: Defects are the manifestation of faults in the software that can be observed or
detected during the testing process. A defect is a deviation from the expected behaviour of
the software, and it can cause the software to malfunction, produce incorrect results, or
crash.
(d) Failures: A failure occurs when the software does not perform its intended function or
produces incorrect results. A failure is a visible manifestation of a defect or a fault in the
software.
(e) Bug: The term "bug" is often used interchangeably with "defect" or "fault". It refers to an
error, fault, or defect in the software that causes it to malfunction, produce incorrect results
or crash. The term "bug" was first used by Grace Hopper when she found a moth in a
computer and referred to it as a "bug".

13. Describe Testing Principles & Goals.

Software testing is a critical part of software development that helps to ensure the quality,
reliability, and functionality of the software. There are several principles and goals of testing
that guide the testing process to ensure that the software meets the expectations and
requirements of the end-users.

Testing Principles:
1. Testing shows the presence of defects: Testing is used to identify defects or faults in
the software that can cause it to behave unexpectedly or produce incorrect results.
The purpose of testing is to find as many defects as possible so that they can be
fixed before the software is released.
2. Exhaustive testing is impossible: It is impossible to test every possible scenario that
the software may encounter. Therefore, testing must focus on the most critical and
high-risk scenarios that are likely to occur in the real world.
3. Early testing saves time and money: It is more cost-effective to identify and fix
defects early in the development process, rather than waiting until the software is
fully developed or deployed.
4. Defect clustering: In most software systems, a small number of modules or
components contain most of the defects. Testing efforts should be focused on these
high-risk areas to ensure that defects are identified and fixed.
5. Pesticide paradox: Repeated testing of the same set of test cases will eventually lead
to diminishing returns, as the same defects will be identified and fixed. To overcome
this, new test cases should be developed and existing test cases should be modified
or updated.
6. Testing is context-dependent: The testing approach and techniques used will depend
on the context of the software being developed, including the requirements, the
technology used, and the project timeline.

Testing Goals:
1. To ensure that the software meets the requirements and expectations of the
end-users.
IT-A
2. To identify defects or faults in the software that can cause it to malfunction or produce
incorrect results.
3. To ensure that the software is reliable, stable, and secure.
4. To verify that the software performs as expected in different operating environments
and scenarios.
5. To ensure that the software is easy to use and understand by the end-users.
6. To ensure that the software is maintainable, scalable, and extensible.
7. To build confidence in the quality of the software and increase the trust and loyalty of
the end-users.

14. Describe the steps of Testing Life Cycle with its Roles & Activities.

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 documents are 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 analyses
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, the testing team is ready with test cases and starts the
execution. This helps in finding bugs in the early phase.
Phases of STLC:

1. Requirement Analysis:
IT-A
Requirement Analysis is the first step of Software Testing Life Cycle(STLC). In this phase the
quality assurance team understands the requirements like what is to be tested. If anything is
missing or not understandable then the quality assurance team meets with the stakeholders
to better understand the detailed knowledge of requirements.
2. Test Planning:

Test Planning is the most efficient phase of the software testing life cycle where all testing
plans are defined. In this phase the 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 the testing teamnote down the detailed test cases. Testing team also prepares the
required test data for the testing. When the test cases are prepared then they are reviewed
by the 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 an 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, the test execution phase gets
started. In this phase testing teamstart 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 analysed.

15. What is the Test Plan (IEEE Format). Also define how to form a Test Team.

“A test plan is a document that outlines the strategy for ensuring that a product or system is
built in accordance with its specifications and requirements.”
It specifies the scope of software testing, the testing techniques to be utilised, the resources
needed for testing, and the test activities to be performed. The scope aids in the
identification of test items and features to be evaluated. A test plan also includes information
on who will do each duty.
IT-A
“A Test Plan Is a Document Detailing the Objectives, Target Market, Internal Beta Team, And
Processes for A Specific Beta Test for ASoftware or Hardware Product,” according to
Wikipedia. ADetailed
Understanding of The Actual Workflow Is Usually Included inThePlan.”
In the Software Development Life Cycle, a solid test plan encompasses all of the testing
phases (SDLC).
You build a test strategy to ensure that your design meets the standards. Following design,
product development begins, with the goal of developing a manufacturing or production test
plan. If your product has multiple components and modules, you’ll also need a regression
testing strategy to ensure that everything works as it should.
The test plan document’s format varies depending on the product and organisation. You can
create a master plan with high-level specifics on overall requirements for larger and more
complex projects. The master test plan is backed up by subsidiary test plans that provide all
of the information needed to test each component or module.
To form a Test Team, follow these steps:
1. Determine the testing needs and scope of the project.
2. Identify the necessary roles for the testing team, such as test manager, test engineer,
test analyst, and automation engineer.
3. Determine the number of resources required for each role.
4. Determine the required skill set for each role.
5. Identify and recruit team members who meet the skill set requirements.
6. Define the roles and responsibilities for each team member.
7. Provide training for team members as needed.
8. Ensure effective communication and collaboration between team members.
9. Continuously monitor and evaluate the performance of the testing team to ensure
that the project goals are met.

16. Differentiate Verification & Validation.

Verification and validation are two important processes in software testing that are often
used interchangeably. However, they have different meanings and serve different purposes:
1. Verification: Verification is the process of evaluating a software system or component
to determine whether it meets the specified requirements or not. It involves checking
the code against the design documents and specifications to ensure that the system
meets the required standards and quality levels.
2. Validation: Validation is the process of evaluating a software system or component to
determine whether it meets the user's requirements or not. It involves checking the
code against the actual user requirements and expectations to ensure that the
system meets the intended purpose and is fit for use.
In other words, verification is concerned with checking whether the software is built correctly,
while validation is concerned with checking whether the right software is built. Verification is
often performed during the development phase, while validation is typically performed during
the testing phase.
IT-A
17. Explain Software testing Strategies with the criteria for completion of testing.

Software Testing is a type of investigation to find out if there's a default or error present in the
software so that the errors can be reduced or removed to increase the quality of the software
and to check whether it fulfils the specified requirements or not. According to Glen Myers,
software testing has the following objectives:
The process of investigating and checking a program to find whether there is an error or not
and whether it fulfils the requirements or not is called testing.
When the number of errors found during the testing is high, it indicates that the testing was
good and is a sign of a good test case.
Finding an unknown error that wasn’t discovered yet is a sign of a successful and a good
test case.
The main objective of software testing is to design the tests in such a way that it
systematically finds different types of errors without taking much time and effort so that less
time is required for the development of the software. The overall strategy for testing software
includes:

UNIT 2

18. What is Unit Testing?Which tools & Techniques are used in Unit testing? Explain it
with a suitable Example.

Unit testing is a software testing technique where individual units or components of software
are tested in isolation from the rest of the system. The objective of unit testing is to verify the
correctness of each unit of the software and to ensure that they behave as expected.
Tools used in Unit testing:

1. JUnit: It is a popular open-source unit testing framework for Java. It provides a simple
and elegant way to write and run automated tests for Java code.
2. NUnit: It is a unit testing framework for .NET languages like C# and VB.NET. It is
similar to JUnit and provides a rich set of assertions and annotations for writing tests.
3. PHPUnit: It is a unit testing framework for PHP. It is similar to JUnit and NUnit and
provides a simple and easy way to write tests for PHP code.
IT-A
4. Jest: It is a JavaScript testing framework developed by Facebook. It is used for
testing React applications and provides a powerful set of testing utilities.

Techniques used in Unit testing:

1. White-box testing: This technique is also known as structural testing, where the
internal structure of the code is analysed, and test cases are designed accordingly.
2. Black-box testing: This technique is also known as functional testing, where the code
is tested without knowing the internal structure of the code.
3. Test-driven development (TDD): This is a development process where tests are
written before the code. This approach ensures that the code is developed to pass
the tests.

19. Explain four approaches of Integration Testing with an example.

Integration testing is a software testing technique that tests the integration or interaction
between different modules or components of a software system. It verifies that each module
works correctly when combined with other modules and that the data flows correctly
between them.

There are several approaches to integration testing, including the following:

Big Bang Integration Testing:

1. In this approach, all the modules or components of the system are integrated
together and tested as a whole. This approach is suitable for small systems where
there are only a few modules, and it is easy to integrate them all at once. For
example, consider a simple web application that consists of three modules: a user
interface, a database, and a server. In the big bang approach, all three modules
would be integrated together and tested as a whole.

Top-Down Integration Testing:

2. In this approach, testing starts with the highest-level modules and gradually works its
way down to the lower-level modules. The higher-level modules are tested first, and
then the lower-level modules are added and tested incrementally. For example,
consider the same web application mentioned earlier. In the top-down approach, the
user interface module would be tested first, followed by the server module, and then
the database module.

Bottom-Up Integration Testing:

3. In this approach, testing starts with the lowest-level modules and gradually works its
way up to the higher-level modules. The lower-level modules are tested first, and
then the higher-level modules are added and tested incrementally. For example, in
the web application mentioned earlier, the database module would be tested first,
followed by the server module, and then the user interface module.
IT-A
Hybrid Integration Testing:

4. In this approach, a combination of the top-down and bottom-up approaches is used.


Some modules are integrated using the top-down approach, while others are
integrated using the bottom-up approach. This approach allows for both early
detection of defects in lower-level modules and early validation of higher-level
functionality. For example, in the web application, the database and server modules
could be tested using the bottom-up approach, while the user interface module could
be tested using the top-down approach.

20. What are the test Strategies for Object oriented Software testing?Explain the
Techniques of Object oriented testing.

Object-Oriented Software Testing is a testing approach that focuses on testing the


object-oriented features of the software system. The testing strategies for Object-Oriented
Software Testing are as follows:
1. Class Testing: In this strategy, individual classes are tested independently to ensure
that they behave as expected. This includes testing the class methods, attributes,
and the interactions between the methods and attributes.
2. Integration Testing: In this strategy, the interactions between classes are tested to
ensure that they work together as expected. This includes testing the communication
between objects and the collaboration between classes.
3. System Testing: In this strategy, the entire system is tested as a whole to ensure that
it meets the functional and non-functional requirements. This includes testing the
system as a user would, to ensure that all features and functionalities work as
expected.
4. Acceptance Testing: In this strategy, the system is tested against the acceptance
criteria to ensure that it meets the customer's requirements. This includes testing the
system's usability, performance, security, and other non-functional requirements.

The Techniques of Object-Oriented Testing are as follows:

1. Black-Box Testing: This technique focuses on testing the external behavior of the
system without considering the internal implementation details. This includes testing
the inputs and outputs of the system to ensure that they behave as expected.
2. White-Box Testing: This technique focuses on testing the internal implementation
details of the system. This includes testing the individual methods, attributes, and
interactions between them.
3. Grey-Box Testing: This technique is a combination of Black-Box and White-Box
testing. This includes testing the external behavior of the system while considering
some of the internal implementation details.
IT-A
4. Mutation Testing: This technique involves introducing faults into the software system
to test the effectiveness of the test suite. This includes intentionally introducing faults
into the code to see if the test suite can detect them.
5. Object-Oriented Metrics Testing: This technique involves measuring the complexity of
the software system using metrics such as inheritance, coupling, and cohesion. This
includes using these metrics to identify potential areas of weakness in the software
system and then testing these areas thoroughly.

21. Explain Unit testing & Integration testing in Object oriented Context.

Unit Testing in Object-Oriented Context:

Unit Testing is a testing technique that focuses on testing individual units or components of a
software system in isolation. In an object-oriented context, a unit refers to an individual class
or method. Unit testing ensures that each class or method works as expected and meets its
requirements. It is important to test each unit independently to ensure that it is functioning
correctly before integrating it into the system.

Unit testing in an object-oriented context involves creating test cases that focus on testing
individual methods and classes. This includes testing the input and output of the method or
class, as well as its behaviour in different scenarios. Unit testing frameworks such as JUnit,
NUnit, and PyUnit provide a framework for creating and executing unit tests in an
object-oriented context.

Integration Testing in Object-Oriented Context:

Integration Testing is a testing technique that focuses on testing the interactions between
different components or modules of a software system. In an object-oriented context,
integration testing ensures that different classes and methods work together as expected
and that the data flows correctly between them. It is important to test the integration of
different components to ensure that the system works as a whole.
Integration testing in an object-oriented context involves creating test cases that focus on
testing the interactions between different classes and methods. This includes testing the
communication between objects and the collaboration between classes. Integration testing
frameworks such as Mockito, EasyMock, and PowerMock provide a framework for creating
and executing integration tests in an object-oriented context.

22. What is Web Application Testing? Describe the techniques & types of Web
Application testing.

Web application testing is the process of testing web applications to ensure that they
function as intended and meet the required quality standards. Web applications are software
programs that run on a web server and are accessed through a web browser.
Techniques of Web Application Testing:
IT-A
1. Functional Testing: This technique focuses on testing the functional requirements of
the web application. It includes testing the user interface, navigation, data input and
output, and database transactions.
2. Performance Testing: This technique focuses on testing the performance of the web
application under different loads and stress conditions. It includes testing the
response time, load time, and throughput of the web application.
3. Security Testing: This technique focuses on testing the security of the web
application against different types of attacks. It includes testing the authentication,
authorization, and data confidentiality of the web application.
4. Usability Testing: This technique focuses on testing the user-friendliness of the web
application. It includes testing the ease of use, navigation, and accessibility of the
web application.

Types of Web Application Testing:

1. Manual Testing: This involves manually testing the web application using a web
browser. It includes testing the user interface, navigation, and functionality of the web
application.
2. Automated Testing: This involves using automated testing tools to test the web
application. It includes testing the functionality, performance, and security of the web
application.
3. Regression Testing: This involves testing the web application after making changes
or updates to the code. It includes testing the functionality, performance, and security
of the web application to ensure that the changes did not introduce any new issues.
4. Cross-Browser Testing: This involves testing the web application on different web
browsers to ensure that it works correctly on all browsers.
5. Load Testing: This involves testing the web application under different loads to
ensure that it can handle the expected number of users and transactions.
6. Security Testing: This involves testing the web application for vulnerabilities and
weaknesses that could be exploited by attackers.

23. What are the activities of Validation Testing? Explain the flow of Validation Testing
with a Diagram.

Validation Testing is a software testing process that focuses on evaluating the software
product to ensure that it meets the customer's requirements and is fit for its intended
purpose. The activities involved in Validation Testing are as follows:

1. Requirement Analysis: In this activity, the requirements of the software product are
analysed to ensure that they are clear, concise, and complete. The requirements are
compared to the customer's needs to ensure that they are aligned.

2. Test Planning: In this activity, the test plan is created to define the scope, objectives,
and approach of the Validation Testing process. The test plan includes the test
strategy, test scenarios, and test cases.
IT-A
3. Test Design: In this activity, the test cases are designed based on the requirements
and test plan. The test cases are designed to cover all the possible scenarios and
use cases of the software product.

4. Test Execution: In this activity, the test cases are executed to validate the software
product. The results of the test cases are documented and any defects found are
reported to the development team for resolution.

5. Defect Tracking and Reporting: In this activity, the defects found during the test
execution are tracked and reported to the development team for resolution. The
defects are assigned to the development team and tracked until they are resolved.

6. Test Closure: In this activity, the Validation Testing process is concluded. The results
of the test execution and defect tracking are documented, and the final report is
prepared.

The flow of Validation Testing can be represented by the following diagram:

24. Differentiate Alpha & Beta Testing.

Alpha testing and beta testing are two different stages in the software testing process. Here
are the main differences between them:

1. Definition:
● Alpha testing is the initial testing of a software application before its release. It is
typically conducted by the software development team, and it is done in-house.
IT-A
● Beta testing is the testing of a software application by a group of end-users before its
release. It is done outside of the company by a selected group of people who
represent the target audience.

2. Purpose:
● Alpha testing is done to ensure that the software application is working as expected
and that all features and functionalities are working correctly. It is an opportunity for
the developers to find and fix any issues before the software is released to the public.
● Beta testing is done to gather feedback from the end-users and to identify any issues
that were not found during the alpha testing stage. It is an opportunity for the
company to receive feedback on the user experience and to make any necessary
changes before the official release.

3. Participants:
● Alpha testing is conducted by the software development team, and it is done
in-house.
● Beta testing is conducted by a group of end-users who represent the target audience.
The users are selected by the company and are often required to sign a
non-disclosure agreement.

4. Timing:
● Alpha testing is done before the software is released to the public.
● Beta testing is done after the alpha testing stage and before the official release of the
software.

5. Environment:
● Alpha testing is done in a controlled environment, often with a limited number of
users.
● Beta testing is done in a real-world environment, with a larger group of users who
represent the target audience.

25. Define the process of System testing. Also Explain the types & Tools of System
Testing with a short example.

System testing is a type of software testing that verifies that the entire software system, as a
whole, meets the specified requirements and functions correctly. The process of system
testing involves testing the software system in its entirety, including its functionality,
performance, and compatibility. The main objective of system testing is to ensure that the
software system meets the customer's requirements and performs as expected in a
real-world environment.

The process of system testing typically includes the following steps:

1. Test Planning: Identify the objectives, scope, and risks associated with system
testing.
2. Test Design: Develop test scenarios and test cases based on the requirements and
specifications.
IT-A
3. Test Execution: Execute the test cases and record the results.
4. Test Reporting: Report the test results, including any issues or defects found during
the testing.

There are several types of system testing, including:

1. Functional Testing: Testing the software system's functionality to ensure that it meets
the specified requirements.
2. Performance Testing: Testing the software system's performance under different
loads and conditions.
3. Security Testing: Testing the software system's security features to ensure that they
are working as expected.
4. Compatibility Testing: Testing the software system's compatibility with different
hardware, software, and network configurations.
5. Usability Testing: Testing the software system's usability and user experience.

There are several tools used for system testing, including:

1. Selenium: An open-source testing tool used for automating web browsers.


2. JMeter: An open-source tool used for testing the performance of web applications.
3. Appium: An open-source tool used for testing mobile applications on different
platforms.
4. LoadRunner: A commercial tool used for testing the performance of large-scale
systems.
5. SoapUI: An open-source tool used for testing web services and APIs.

Example: Let's say a company has developed an e-commerce website. In the system testing
phase, the testers will test the website's functionality, performance, security, compatibility,
and usability. They will use tools such as Selenium to automate the testing of web browsers,
JMeter to test the website's performance under different loads and conditions, and SoapUI to
test the website's web services and APIs. The testers will report any issues or defects found
during the testing and work with the developers to fix them before the website is released to
the public.

26. Explain the following Terms : (a) Recovery Testing (b) Security testing (c) Stress
Testing (d) Performance testing

(a) Recovery Testing: Recovery testing is a type of testing that verifies the system's ability to
recover from a failure or disaster. It involves intentionally creating system failures or errors
and then testing the system's ability to recover from them. The goal of recovery testing is to
identify the system's weaknesses and to ensure that it can recover from a failure or disaster
without losing data or compromising the system's security.

(b) Security Testing: Security testing is a type of testing that verifies the system's ability to
protect its data and resources from unauthorised access, attacks, and vulnerabilities. It
involves testing the system's security features, such as authentication, authorization,
encryption, and firewalls, to ensure that they are working as expected. The goal of security
IT-A
testing is to identify security vulnerabilities and weaknesses and to ensure that the system
can protect its data and resources from unauthorised access.

(c) Stress Testing: Stress testing is a type of testing that verifies the system's ability to
handle high loads and stress conditions. It involves testing the system's performance under
extreme loads, such as high user traffic, data input, or heavy computation. The goal of stress
testing is to identify performance issues, such as slow response times, system crashes, or
data loss, and to ensure that the system can handle high loads and stress conditions without
compromising its performance or stability.

(d) Performance Testing: Performance testing is a type of testing that verifies the system's
performance under normal and expected loads. It involves testing the system's response
times, throughput, and resource utilisation, such as CPU, memory, and network usage. The
goal of performance testing is to identify performance bottlenecks, such as slow response
times, poor scalability, or resource constraints, and to ensure that the system can perform
efficiently and effectively under normal and expected loads.

27. What is the need of Deployment Testing? Explain the Activities of Deployment
testing with a suitable Diagram.

Deployment testing is a type of software testing that verifies the system's behaviour and
performance after it has been deployed in the production environment. The main purpose of
deployment testing is to ensure that the system operates correctly and as expected in the
real-world environment, and to identify and fix any issues or defects that may arise during
the deployment process.
The need for deployment testing arises because the production environment may differ
significantly from the development and testing environments, and there may be issues with
system configuration, hardware, or network settings that can affect the system's
performance and behaviour.
The activities of deployment testing typically include the following:
1. Pre-Deployment Testing: This involves testing the system in a staging or
pre-production environment before it is deployed in the production environment. The
goal is to ensure that the system operates correctly and as expected in a simulated
production environment.
2. Deployment Verification Testing: This involves testing the system after it has been
deployed in the production environment to ensure that it is working as expected and
that there are no issues or defects that may have been introduced during the
deployment process.
3. Rollback Testing: This involves testing the system's ability to revert to a previous
version or configuration in case of a deployment failure or issue.
4. Post-Deployment Testing: This involves testing the system after it has been deployed
in the production environment for a certain period of time to ensure that it is operating
correctly and that there are no performance or behaviour issues that may have been
introduced over time.

The following diagram illustrates the activities of deployment testing:


IT-A

28. Define the steps to perform Acceptance Testing. Also Explain the types of
Acceptance Testing with its Advantages/Disadvantages.

Acceptance testing is a type of software testing that is performed to verify if the system
meets the customer's requirements and is ready for delivery. The purpose of acceptance
testing is to ensure that the system functions as expected and meets the customer's
business needs.

The following are the steps involved in performing acceptance testing:

1. Define Acceptance Criteria: Acceptance criteria are the set of requirements that the
system must meet to be accepted by the customer. These criteria should be
well-defined and documented before starting acceptance testing.

2. Create Acceptance Test Plan: The acceptance test plan should be created based on
the acceptance criteria. It should include the testing approach, test cases, test data,
and the expected results.
IT-A
3. Execute Acceptance Tests: The acceptance tests should be executed by following
the acceptance test plan. The results of each test case should be documented, and
any defects or issues should be reported.

4. Analyse Test Results: The test results should be analysed to identify any issues or
defects in the system. The issues should be prioritised based on their severity and
impact on the system.

5. Retest: Any issues or defects found during acceptance testing should be fixed and
retested to ensure that they have been resolved.

6. Obtain Sign-off: Once all the acceptance tests have been executed, and the system
meets the acceptance criteria, the customer should be asked to sign-off on the
system.

There are two types of acceptance testing:

1. User Acceptance Testing (UAT): UAT is performed by the end-users of the system to
verify if the system meets their business requirements. UAT ensures that the system
is user-friendly, easy to use, and meets the business needs of the users.

Advantages of UAT:

● Ensures that the system meets the customer's business needs


● Provides feedback from the end-users
● Helps to identify any issues or defects in the system

Disadvantages of UAT:

● Can be time-consuming and expensive


● May require a significant amount of resources from the end-users

2. Business Acceptance Testing (BAT): BAT is performed by the customer's business


stakeholders to verify if the system meets the business requirements. BAT ensures
that the system is aligned with the customer's business goals and objectives.

Advantages of BAT:

● Ensures that the system is aligned with the customer's business goals and objectives
● Helps to identify any issues or defects in the system
● Helps to ensure that the system meets the customer's business needs

Disadvantages of BAT:
● Can be time-consuming and expensive
● May require a significant amount of resources from the customer's business
stakeholders
IT-A
29. What is the Debugging process in Software Testing? Explain the steps involved in
the Debugging Process. Also write the name of Debugging tools.

Debugging is the process of identifying, analysing, and fixing errors, defects, or issues in
software code to ensure that it functions correctly. The process of debugging is an important
part of software testing to ensure that the software is functioning as expected. The following
are the steps involved in the debugging process:

1. Identify the Issue: The first step in the debugging process is to identify the issue or
defect. This can be done by reviewing the software code or analysing the software's
behaviour.

2. Reproduce the Issue: Once the issue has been identified, the next step is to
reproduce the issue. This involves creating the conditions that cause the issue to
occur. Reproducing the issue is important to understand the cause of the problem.

3. Debug the Issue: After reproducing the issue, the next step is to debug the issue.
This involves analysing the software code and identifying the source of the problem.
Debugging can be done using various debugging tools, which help to identify the
location and cause of the issue.

4. Fix the Issue: Once the issue has been identified and debugged, the next step is to
fix the issue. This involves modifying the software code to address the issue.

5. Verify the Fix: After the issue has been fixed, the next step is to verify the fix. This
involves testing the software to ensure that the issue has been resolved and the
software is functioning as expected.

Some of the popular debugging tools used in software testing include:

1. Debuggers: Debuggers are software tools used to identify and fix errors in software
code. Some popular debuggers include Eclipse Debugger, Visual Studio Debugger,
and Xcode Debugger.
2. Profilers: Profilers are tools used to measure the performance of software code.
Some popular profilers include Java VisualVM, GProf, and Xdebug.
3. Log Analysis Tools: Log analysis tools are used to analyze software logs and identify
errors or issues in software code. Some popular log analysis tools include Log4j,
Logback, and ELK Stack.

30. Explain the three sections of Psychological Considerations in


Software Testing.

Psychological considerations play an important role in software testing as they can have a
significant impact on the effectiveness of testing. There are three main sections of
psychological considerations in software testing:
IT-A
1. Tester's Psychology: Tester's psychology refers to the mental and emotional state of
the tester during testing. This includes factors such as motivation, attitude, and stress
level. It is important for testers to maintain a positive attitude and stay motivated
during testing to ensure that they are focused and effective in their work. Additionally,
testers should be aware of the potential stressors that can arise during testing and
take steps to manage their stress levels, such as taking breaks or practising
relaxation techniques.

2. User's Psychology: User's psychology refers to the mental and emotional state of the
end-users who will be using the software. It is important for testers to consider the
user's perspective during testing and to test the software in a way that is reflective of
how it will be used in real-world situations. This can include considering factors such
as user experience, usability, and accessibility.

3. Organisational Psychology: Organisational psychology refers to the organisational


context in which testing takes place. This includes factors such as communication,
teamwork, and leadership. It is important for testers to work effectively as part of a
team and to communicate effectively with other stakeholders, such as developers
and project managers. Additionally, effective leadership can help to ensure that
testing is given the necessary resources and support to be effective.

You might also like