Professional Documents
Culture Documents
Winston Royce introduced the Waterfall Model in 1970.This model has five
phases: Requirements analysis and specification, design, implementation, and
unit testing, integration and system testing, and operation and maintenance.
The steps always follow in this order and do not overlap. The developer must
complete every phase before the next phase begins. This model is named
"Waterfall Model", because its diagrammatic representation resembles a
cascade of waterfalls.
4. Integration and System Testing: This phase is highly crucial as the quality
of the end product is determined by the effectiveness of the testing carried
out. The better output will lead to satisfied customers, lower maintenance
costs, and accurate results. Unit testing determines the efficiency of individual
modules. However, in this phase, the modules are tested for their interactions
with each other and with the system.
o Activity Diagram: It models the flow of control from one activity to the
other. With the help of an activity diagram, we can model sequential
and concurrent activities. It visually depicts the workflow as well as what
causes an event to occur.
o Class Diagram: Class diagrams are one of the most widely used
diagrams. It is the backbone of all the object-oriented software
systems. It depicts the static structure of the system. It displays the
system's class, attributes, and methods. It is helpful in recognizing the
relation between different objects as well as classes.
o Component Diagram: It portrays the organization of the physical
components within the system. It is used for modeling execution
details. It determines whether the desired functional requirements have
been considered by the planned development or not, as it depicts the
structural relationships between the elements of a software system.
o Deployment Diagram: It presents the system's software and its
hardware by telling what the existing physical components are and
what software components are running on them. It produces
information about system software. It is incorporated whenever
software is used, distributed, or deployed across multiple machines
with dissimilar configurations.
Prototype Model
The prototype model requires that before carrying out the development of
actual software, a working prototype of the system should be built. A
prototype is a toy implementation of the system. A prototype usually turns
out to be a very crude version of the actual system, possible exhibiting limited
functional capabilities, low reliability, and inefficient performance as compared
to actual software. In many instances, the client only has a general view of
what is expected from the software product. In such a scenario where there is
an absence of detailed information regarding the input to the system, the
processing needs, and the output requirement, the prototyping model may be
employed.
Steps of Prototype Model
Software Design
Software design is a mechanism to transform user requirements into some
suitable form, which helps the programmer in software coding and
implementation. It deals with representing the client's requirement, as
described in SRS (Software Requirement Specification) document, into a form,
i.e., easily implementable using programming language.
The software design phase is the first step in SDLC (Software Design Life
Cycle), which moves the concentration from the problem domain to the
solution domain. In software design, we consider the system to be a set of
components or modules with clearly defined behaviors & boundaries.
Verification:
Verification is the process of checking that a software achieves its goal without any
bugs. It is the process to ensure whether the product that is developed is right or not.
It verifies whether the developed product fulfills the requirements that we have.
Inspections
Reviews
Walkthroughs
Desk-checking
Validation:
Validation is the process of checking whether the software product is up to the mark
or in other words product has high level requirements. It is the process of checking
the validation of product i.e. it checks what we are developing is the right product. it is
validation of actual and expected product.
Unit testing
Integration testing
Levels of Testing
In this section, we are going to understand the various levels of software
testing.
As we learned in the earlier section of the software testing tutorial that testing
any application or software, the test engineer needs to follow multiple testing
techniques.
In order to test any application, we need to go through all the above phases
of SDLC. Like SDLC, we have multiple levels of testing, which help us maintain
the quality of the software.
The levels of software testing involve the different methodologies, which can
be used while we are performing the software testing.
1. Unit Testing
2. Integration Testing
3. System Testing
4. Acceptance Testing
In a small software development project a single person can analyze requirements, perform
design, generate code, and conduct tests. As the size of a project increases, more people must
become involved. (We can rarely afford the luxury of approaching a ten person-year effort
with one person working for ten years!)
There is a common myth that is still believed by many managers who are responsible for
software development effort: "If we fall behind schedule, we can always add more
programmers and catch up later in the project." Unfortunately, adding people late in a project
often has a disruptive effect on the project, causing schedules to slip even further. The people
who are added must learn the system, and the people who teach them are the same people
who were doing the work. While teaching, no work is done, and the project falls further
behind.
In addition to the time it takes to learn the system, more people increase the number of
communication paths and the complexity of communication throughout a project. Although
communication is absolutely essential to successful software development, every new
communication path requires additional effort and therefore additional time.
Extreme programming (XP) is one of the most important software development frameworks of
Agile models. It is used to improve software quality and responsiveness to customer
requirements. The extreme programming model recommends taking the best practices that have
worked well in the past in program development projects to extreme levels. Good practices need
to be practiced in extreme programming: Some of the good practices that have been recognized
in the extreme programming model and suggested to maximize their use are given below:
Code Review: Code review detects and corrects errors efficiently. It suggests pair programming as
coding and reviewing of written code carried out by a pair of programmers who switch their
works between them every hour.
Testing: Testing code helps to remove errors and improves its reliability. XP suggests test-driven
development (TDD) to continually write and execute test cases. In the TDD approach test cases
are written even before any code is written.
Simplicity: Simplicity makes it easier to develop good quality code as well as to test and debug it.
Design: Good quality design is important to develop good quality software. So, everybody should
design daily.
Integration testing: It helps to identify bugs at the interfaces of different functionalities. Extreme
programming suggests that the developers should achieve continuous integration by building and
performing integration testing several times a day.
Agile Model
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.
Introduction
Are you outsourcing enough? This was one of the main questions asked by
management consultants during the outsourcing boom. Outsourcing was
viewed as one of the best ways of getting things done for a fraction of the
original cost.
Outsourcing is closely related to make or buy decision. The corporations
made decisions on what to make internally and what to buy from outside in
order to maximize the profit margins.
As a result of this, the organizational functions were divided into segments
and some of those functions were outsourced to expert companies, who can
do the same job for much less cost.
Make or buy decision is always a valid concept in business. No organization
should attempt to make something by their own, when they stand the
opportunity to buy the same for much less price.
This is why most of the electronic items manufactured and software systems
developed in the Asia, on behalf of the organizations in the USA and Europe.
The volume
The fixed cost of making
Per-unit direct cost when making
Per-unit cost when buying
The test engineer will test the application to make sure that the application is
bug or defects free. While doing testing, we can only identify that the
application or software has any errors. The primary purpose of doing testing is
to identify the numbers of unknown bugs with the help of various methods
and testing techniques because the entire test should be traceable to the
customer requirement, which means that to find any defects that might cause
the product failure to meet the client's needs.
Early Testing
Here early testing means that all the testing activities should start in the early
stages of the software development life cycle's requirement analysis stage to
identify the defects because if we find the bugs at an early stage, it will be
fixed in the initial stage itself, which may cost us very less as compared to
those which are identified in the future phase of the testing process.
Defect clustering
The defect clustering defined that throughout the testing process, we can
detect the numbers of bugs which are correlated to a small number of
modules. We have various reasons for this, such as the modules could be
complicated; the coding part may be complex, and so on.
These types of software or the application will follow the Pareto Principle,
which states that we can identify that approx. Eighty percent of the
complication is present in 20 percent of the modules. With the help of this, we
can find the uncertain modules, but this method has its difficulties if the same
tests are performing regularly, hence the same test will not able to identify the
new defects.
Pesticide paradox
This principle defined that if we are executing the same set of test cases again
and again over a particular time, then these kinds of the test will not be able
to find the new bugs in the software or the application. To get over these
pesticide paradoxes, it is very significant to review all the test cases frequently.
And the new and different tests are necessary to be written for the
implementation of multiple parts of the application or the software, which
helps us to find more bugs.
Testing is context-dependent
Once the application is completely tested and there are no bugs identified
before the release, so we can say that the application is 99 percent bug-free.
But there is the chance when the application is tested beside the incorrect
requirements, identified the flaws, and fixed them on a given period would not
help as testing is done on the wrong specification, which does not apply to
the client's requirements. The absence of error fallacy means identifying and
fixing the bugs would not help if the application is impractical and not able to
accomplish the client's requirements and needs.
SEI CMM categorized software development industries into the following five
maturity levels. The various levels of SEI CMM have been designed so that it is
easy for an organization to build its quality system starting from scratch
slowly.
White Box testing
The term 'white box' is used because of the internal perspective of the system.
The clear box or white box, or transparent box name denotes the ability to
see through the software's outer shell into its inner workings.
To read more about white box testing, you can refer to the following link
– White box testing.
In this method, the tester selects a function and gives input value to examine
its functionality, and checks whether the function is giving the expected
output or not. If the function produces the correct output, then it is passed in
testing, otherwise failed.
Black box testing is less exhaustive than White Box and Grey Box testing
methods. It is the least time-consuming process among all the testing
processes. The main objective of implementing black box testing is to specify
the business needs or the customer's requirements.
In other words, we can say that black box testing is a process of checking the
functionality of an application as per the customer's requirement. Mainly,
there are three types of black-box testing: functional testing, Non-
Functional testing, and Regression testing. Its main objective is to specify
the business needs or the customer's requirements.