Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

ARBAMINCH UNIVERSITY

INSTITUTE OF
TECHNOLOGY
Faculty of computing and software engineering
Software Testing Individual Assignment
Section ‘A’

Name ID No
Jiregna Lami……………………………..RAMIT/1046/11

Submitted To: Instructor Mikiyas

Submission Date: December 25, 2021


Q1, Explain the following Black box testing techniques in detail using real world
scenarios as an example
A. Combinatorial Testing
B. Grammar Based Testing
C. Module Base Testing
D. Orthogonal matrix
Answer
A, Combinatorial Testing
Combinatorial software testing is a black-box testing method that seeks to identify
and test all unique combinations of software inputs. An example of combinatorial
software testing it also called all pairs testing. The aim is to ensure that the product
is bug-free and can handle different combinations or cases of the input
configuration.
Combinatory test technique ensures the complete functionality of an application is
tested with a limited and proportionate amount of combinations under test without
compromising on the quality of testing.
Example:
When testing cyber physical systems such as automate driving systems, it is
inevitable to choose real values for physical quantities. Consider an oversimplified
automated driving system, where ego vehicle is given an initial position x and
velocity v (which are real numbers) and there are several obstacles in some
positions, possibly static or moving forward or backward at some velocity. An
exhaustive testing of such a physical system is not just infeasible but impossible:
one will need uncountably many test cases (scenarios) to cover the possibility of
any real-valued parameter.
B, Grammar Based Testing
Grammar based testing is one of the mainstays of language testing. While such
tests test the ability to either recognize or produce correct grammar and usage, they
do not test the ability to use the language to express meaning.
Grammar-Based Testing is an approach to test generation that employs context-
free grammars to create sets of test cases.
C, Module Based Testing
Module testing is defined as a software testing type, which checks individual
subprograms, subroutines, classes, or procedures in a program. Instead of testing
whole software program at once, module testing recommends testing the smaller
building blocks of the program.
The main objective of conducting Module testing is to ensure that the module is
fully tested and functional in order to participate in Application testing.
Advantages of Module based Testing
 Reduces the number of defects or errors
 It also introduces parallelism into the testing approach as it provides an
opportunity to test multiple application modules at the same time.
 The probability of identifying errors or bugs on smaller chunks of program
becomes higher
 Complexity of testing can be easily managed
Disadvantage of Module based Testing
 Non-incremental testing requires more work
 Misunderstanding test doubles
 Debugging test often
 Need to understand the code
D, Orthogonal matrix
Orthogonal matrix is a black box testing technique that is a systematic, statistical
way of software testing. It is used when the number of inputs to the system is
relatively small, but too large to allow for exhaustive testing of every possible
input to the systems.
Orthogonal matrix is software testing technique that uses orthogonal arrays to
create test cases. It is statistical testing approach especially useful when system to
be tested has huge data inputs.
Orthogonal array testing helps to maximize test coverage by pairing and combining
the inputs and testing the system with comparatively less number of test cases for
time saving.
Example:
When a train ticket has to be verified, factors such as – the number of passengers,
ticket number, seat numbers, and train numbers have to be tested. One by one
testing of each factor/input is cumbersome. It is more efficient when the QA
engineer combines more inputs together and does testing. In such cases, we can use
the Orthogonal Array testing method.
Advantage
 Guarantees testing of the pair-wise combinations of all the selected
variables.
 Reduces the number of test cases.
 Creates fewer Test cases which cover the testing of all the combination of all
variables.
 A complex combination of the variables can be done.
Disadvantage
 Useful for Integration Testing of software components.
 As the data inputs increase, the complexity of the Test case increases. As a
result, manual effort and time spent increases. Hence, the testers have to go
for Automation Testing.

Q2, Define and explain with neat diagrams about the Data flow machines, Data
flow graphs, Data flow anomalies, state graph, Data Flow model Testing,
Maintenance and debugging in the Data flow context.
Answer
a, Data flow machines:
Data flow machines require a parallelism of several hundred independent
instructions to saturate the pipeline.
Dataflow machine is a computer in which the primitive operations are triggered by
the availability of inputs or operands.

b, Data flow graphs


A data-flow graph is a collection of arcs and nodes in which the nodes are either
places where variables are assigned or used, and the arcs show the relationship
between the places where a variable is assigned and where the assigned value is
subsequently used.
A data flow graph is a model of a program with no conditionals. In a high-level
programming language, a code segment with no conditionals—more precisely,
with only one entry and exit point—is known as a basic block. shows a simple
basic block.
c, Data flow anomalies
Data flow anomalies are identified while performing while box testing or Static
Testing. Data flow anomalies are represented using two characters based on the
sequence of actions. They are defined (d), killed (k), and used (u).
In Software testing, Anomaly refers to a result that is different from the expected
one. This behavior can result from a document or also from a testers notion and
experiences.
An Anomaly can also refer to a usability problem as the testware may behave as
per the specification, but it can still improve on usability. Sometimes, the anomaly
can also referred as a defect / Bug.
d, State graph
State graph is used to represent states, links, and transitions from one state to
involves a program that detects the character sequence “in the graph. * A state is
defined as: “A combination of circumstances or attributes belonging for the time
being to a person or thing.”
State graph is a type of diagram used in computer science and related fields to
describe the behavior of systems. State diagrams require that the system described
is composed of a finite number of states; sometimes, this is indeed the case, while
at other times this is a reasonable abstraction. Many forms of state diagrams exist,
which differ slightly and have different semantics.

e, Data Flow model Testing


Data Flow model testing is a specific strategy of software testing that focuses on
data variables and their values. It makes use of the control flow graph. When it
comes to categorization Data flow testing will can be considered as a type of white
box testing and structural types of testing. It keeps a check at the data receiving
points by the variables and its usage points. It is done to cover the path testing and
branch testing gap.

f, Maintenance and debugging in the Data flow context


Slicing is the computation of the set of program statements, the program slice, that
may affect the values at some point of interest, referred to as a slicing criterion.
Program slicing can be used in debugging to locate source of errors more easily.
A static program slice is a part of a program defined with respect to a variable ‘v’
and a statement ‘s’; It is the set of all statements that could affect the value of ‘v’ at
statement ‘s’.
Dynamic slicing is a refinement of static slicing in which only statements on
achievable paths to the statement in question are included.
Dicing is a part of slice in which all stmts. which are known to be correct have
been removed.
Obtained from ‘slice’ by incorporating correctness information from testing /
debugging.
Debugging:
 Select a slice.
 Narrow it to a dice.
 Refine the dice till it’s one faulty stmt.

You might also like