Nothing Special   »   [go: up one dir, main page]

SEPM Module 5 - Software Testing & Maintenance

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

SEPM

Module 5- Software testing & maintenance


1. Why Integration Testing is needed to test a software?
Explain the different incremental integration strategies. 10M
Integration testing is the second level of the software testing process comes after unit
testing. In this testing, units or individual components of the software are tested in a
group. The focus of the integration testing level is to expose defects at the time of
interaction between integrated components or units.

Unit testing uses modules for testing purpose, and these modules are combined and
tested in integration testing. The Software is developed with a number of software
modules that are coded by different coders or programmers. The goal of integration
testing is to check the correctness of communication among all the modules.
Different incremental integration strategies are:

1.Top-Down Integration:
In this approach, testing begins at the highest level or the main module, and
then the lower-level modules are integrated and tested gradually. The process
continues until all the modules are integrated and tested as a complete system.

Advantages:

o Identification of defect is difficult.


o An early prototype is possible.

Disadvantages:

o Due to the high number of stubs, it gets quite complicated.


o Lower level modules are tested inadequately.
o Critical Modules are tested first so that fewer chances of defects.

2.Bottom-Up Integration:
This approach starts testing from the lowest level or the individual unit, and
gradually the higher-level units are integrated and tested. The process
continues until all the units are integrated and tested as a complete system.

Advantages

o Identification of defect is easy.


o Do not need to wait for the development of all the modules as it saves time.

Disadvantages

o Critical modules are tested last due to which the defects can occur.
o There is no possibility of an early prototype.

3.Big-Bang Integration:
In this approach, all the components of the software application are integrated
and tested together as a complete system. This approach is usually used when
the components are small and easily manageable.

Advantages:

o It is convenient for small size software systems.

Disadvantages:

o Identification of defects is difficult because finding the error where it came from
is a problem, and we don't know the source of the bug.
o Small modules missed easily.
o Time provided for testing is very less.
o We may miss to test some of the interfaces.
4.Hybrid Integration:
This approach combines the advantages of both top-down and bottom-up
integration approaches. It starts with the integration of critical modules or
units, followed by integration of lower-level modules.

2.Explain Cyclomatic complexity? How is it computed?


• Cyclomatic complexity of a code section is the quantitative measure of
the number of linearly independent paths in it.
• Its a software metric used to indicate the complexity of a program. It is
computed using the Control Flow Graph of the program.
• Thomas J. McCabe developed this metric in 1976.
• If source code contains no control flow statement then its cyclomatic
complexity will be 1 and source code contains a single path in it.
Similarly, if the source code contains one if condition then cyclomatic
complexity will be 2 because there will be two paths one for true and the
other for false.

M = E – N + 2P
where, E = No. of edges in the control flow graph
N = No. of nodes in the control flow graph
P = No. of connected components (predicate nodes- nodes that contain
condition).
CODE: -
A = 10
IF B > C THEN
A=B
ELSE
A=C
ENDIF
Print A
Print B
Print C
Control Flow Graph: -

The graph shows 7 nodes, 7 edges, hence cyclomatic complexity is


E-N+2*P = 7-7+2 = 2.
3. What are the different testing types?
https://www.javatpoint.com/types-of-software-testing

The software testing mainly divided into two parts, which are as follows:

o Manual Testing
o Automation Testing
Manual Testing: -
Testing any software or an application according to the client's needs without
using any automation tool is known as manual testing.

In other words, we can say that it is a procedure of verification and validation.


Manual testing is used to verify the behavior of an application or software in
contradiction of requirements specification.

Classification of Manual Testing


In software testing, manual testing can be further classified into three different types
of testing, which are as follows:

o White Box Testing


o Black Box Testing
o Grey Box Testing

1.White Box Testing

In white-box testing, the developer will inspect every line of code before handing it
over to the testing team or the concerned test engineers.
2.Black Box Testing

Another type of manual testing is black-box testing. In this testing, the test
engineer will analyze the software against requirements, identify the defects or
bug, and sends it back to the development team.

The main objective of implementing the black box testing is to specify the
business needs or the customer's requirements.

Types of Black Box Testing


Black box testing further categorizes into two parts, which are as discussed below:

o Functional Testing
o Non-function Testing
Functional Testing
The test engineer will check all the components systematically against requirement
specifications is known as functional testing. Functional testing is also known
as Component testing.

Types of Functional Testing


Just like another type of testing is divided into several parts, functional testing is also
classified into various categories.

The diverse types of Functional Testing contain the following:

o Unit Testing
o Integration Testing
o System Testing

1. Unit Testing
Unit testing is the first level of functional testing in order to test any software. In this,
the test engineer will test the module of an application independently or test all the
module functionality is called unit testing.

2. Integration Testing
Once we are successfully implementing the unit testing, we will go integration testing.
It is the second level of functional testing, where we test the data flow between
dependent modules or interface between two features is called integration testing.

3. System Testing
Whenever we are done with the unit and integration testing, we can proceed with the
system testing.

In system testing, the test environment is parallel to the production environment. It is


also known as end-to-end testing.
Non-function Testing
The next part of black-box testing is non-functional testing. It provides detailed
information on software product performance and used technologies.
Non-functional testing will help us minimize the risk of production and related costs
of the software.
Non-functional testing is a combination of performance, load, stress, usability and,
compatibility testing.
Types of Non-functional Testing
Non-functional testing categorized into different parts of testing, which we are going
to discuss further:

o Performance Testing
o Usability Testing
o Compatibility Testing

1. Performance Testing
In performance testing, the test engineer will test the working of an application by
applying some load.

In this type of non-functional testing, the test engineer will only focus on several
aspects, such as Response time, Load, scalability, and Stability of the software or
an application.

2. Usability Testing
Another type of non-functional testing is usability testing. In usability testing, we
will analyze the user-friendliness of an application and detect the bugs in the
software's end-user interface.

3. Compatibility Testing
In compatibility testing, we will check the functionality of an application in specific
hardware and software environments. Once the application is functionally stable then
only, we go for compatibility testing.

Here, software means we can test the application on the different operating systems
and other browsers, and hardware means we can test the application on different
sizes.
4. What is maintenance? Explain the different types of
maintenance. 10M
-Imp phase of SDLC.
Need-
1. Correct errors
2. Change in user requirement with time
3. Changing hardware/software requirements
4. To improve system efficiency
5. To optimize the code to run faster
6. To modify the components
7. To reduce any unwanted side effects.
So, maintenance is required to ensure that the system continues to satisfy user
requirements.
Types of Software Maintenance
1. Corrective Maintenance
• Does changes & updations for fixing defects found by the end user or
tester.
• Its an emergency maintenance in which unscheduled for temporarily
keeping s/w in operation.
• This type of maintenance involves repairing equipment that has been
identified as defective or not working correctly. Corrective maintenance
is often scheduled based on the results of inspections or other
maintenance activities.
2. Adaptive Maintenance
• modifies the software to match changes in the ever-changing
environment.
• Used to make change in s/w product to maintain it up-to-date.
• consists of adapting software to changes in the environment such
as the hardware or the operating system. The term environment in
this context refers to the conditions and the influences which act
(from outside) on the system. For example, business rules, work
patterns, and government policies have a significant impact on the
software system.
3. Preventive Maintenance
• Also known as "condition-based maintenance," predictive maintenance
uses sensors and other tools to monitor equipment performance and
detect potential issues before they become critical.
• Predictive maintenance can help organizations schedule maintenance
activities more efficiently and reduce the risk of unplanned downtime.
• process by which we prevent our system from being obsolete.
• It involves the concept of reengineering & reverse engineering in which
an old system with old technology is re-engineered using new
technology.
• This maintenance prevents the system from dying out.
4. Perfective Maintenance
• defines improving processing efficiency or performance or
restricting the software to enhance changeability.
• This may contain enhancement of existing system functionality,
improvement in computational efficiency, etc.

5. Differentiate between White Box & Black Box testing.


10M

S.
No. Black Box Testing White Box Testing

It is a way of testing the software


It is a way of software testing in
in which the tester has
which the internal structure or the
1. knowledge about the internal
program or the code is hidden and
structure or the code or the
nothing is known about it.
program of the software.

Implementation of code is not Code implementation is


2.
needed for black box testing. necessary for white box testing.
S.
No. Black Box Testing White Box Testing

It is mostly done by software It is mostly done by software


3.
testers. developers.

No knowledge of implementation Knowledge of implementation is


4.
is needed. required.

It can be referred to as outer or It is the inner or the internal


5.
external software testing. software testing.

It is a functional test of the It is a structural test of the


6.
software. software.

This testing can be initiated based This type of testing of software is


7. on the requirement specifications started after a detail design
document. document.

No knowledge of programming is It is mandatory to have


8.
required. knowledge of programming.

It is the behavior testing of the It is the logic testing of the


9.
software. software.

It is applicable to the higher It is generally applicable to the


10.
levels of testing of software. lower levels of software testing.

It is also called as clear box


11. It is also called closed testing.
testing.

12. It is least time consuming. It is most time consuming.

It is not suitable or preferred for It is suitable for algorithm


13.
algorithm testing. testing.
S.
No. Black Box Testing White Box Testing

Data domains along with inner or


Can be done by trial and error
14. internal boundaries can be better
ways and methods.
tested.

Example: Search something on Example: By input to check and


15.
google by using keywords verify loops

Black-box test design


White-box test design
techniques-
techniques-
• Decision table testing
16. • Control flow testing
• All-pairs testing
• Data flow testing
• Equivalence partitioning
• Branch testing
• Error guessing

Types of Black Box Testing: Types of White Box Testing:


• Functional Testing • Path Testing
17.
• Non-functional testing • Loop Testing
• Regression Testing • Condition testing

It is comparatively more
It is less exhaustive as compared
18. exhaustive than black box
to white box testing.
testing.
6.Differentiate between Alpha testing & Beta Testing.

Alpha Testing Beta Testing

Performed by the software development Performed by a group of end-users or


Performers team customers

Environment Controlled in-house environment Real-world environment

Objective Identify and fix defects Gather feedback and identify defects

Timing Performed before beta testing Performed after alpha testing

Testers Relatively small number of testers Relatively large number of testers

Scope of Testing is done on the software that is not Testing is done on the software that is nearly
Testing yet ready for release to the public ready for release to the public

Focus of The software is tested for defects, The software is tested for usability,
Testing compatibility, and functionality functionality, and compatibility

To ensure the software is bug-free and To get user feedback and make necessary
Purpose functioning properly improvements
Alpha Testing Beta Testing

Beta testing mainly focuses on testing the


Types of Alpha testing mainly focuses on testing the overall user experience and system
Testing internal structures and system functionality functionality

The software is not released to the public The software is released to the public during
Release during alpha testing beta testing

You might also like