[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 2
SOFTWARE ENGINEERING
Software is more than just a program code. A program is an executable code, which serves some
computational purpose. Software is considered to be collection of executable programming code, associated
libraries and documentations. Software, when made for a specific requirement is called Software Product.
Engineering on the other hand, is all about developing products, using well-defined, scientific principles and
methods.
Software Engineering is an engineering branch associated with development of software product using well-
defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and
reliable software product.
3.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 3
Software Engineering principles use two important techniques to reduce problem complexity: Abstraction and Decomposition.
The principle of abstraction implies that a problem can be simplified by omitting irrelevant details. In other words, the main purpose of
abstraction is to consider only those aspects of the problem that are relevant for certain purpose and suppress other aspects that are
not relevant for the given purpose
Once the simpler problem is solved, then the omitted details can be taken into consideration to solve the next lower level abstraction,
and so on. Abstraction is a powerful way of reducing the complexity of the problem.
The other approach to tackle problem complexity is Decomposition. In this technique, a complex problem is divided into several
smaller problems and then the smaller problems are solved one by one. However, in this technique, any random decomposition of a
problem into smaller parts will not help.
The problem has to be decomposed such that each component of the decomposed problem can be solved independently and then
the solution of the different components can be combined to get the full solution.
A good decomposition of a problem should minimize interactions among various components. If the different subcomponents are
interrelated, then the different components cannot be solved separately and the desired reduction in complexity will not be realized.
4.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 4
SOFTWARE EVOLUTION
The process of developing a software product using Software Engineering principles
and methods is referred to as Software Evolution. This includes the initial
development of software and its maintenance and updates, till desired software
product is developed, which satisfies the expected requirements.
Evolution starts from the requirement gathering process. After which developers create
a prototype of the intended software and show it to the users to get their feedback at
the early stage of software product development. The users suggest changes, on
which several consecutive updates and maintenance keep on changing too. This
process changes to the original software, till the desired software is accomplished.
Even after the user has desired software in hand, the advancing technology and the
changing requirements force the software product to change accordingly.
5.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 5
Need of Software Engineering
The need of software engineering arises because of higher rate of change in user requirements and environment on
which the software is working.
• Large software: It is easier to build a wall than to a house or building, likewise, as the size of software become
large, engineering has to step to give it a scientific process.
• Scalability- If the software process were not based on scientific and engineering concepts, it would be easier to
re-create new software than to scale an existing one.
• Cost: As hardware industry has shown its skills and huge manufacturing has lower down the price of computer
and electronic hardware. But the cost of software remains high if proper process is not adapted.
• Dynamic Nature: The always growing and adapting nature of software hugely depends upon the environment in
which user works. If the nature of software is always changing, new enhancements need to be done in the existing
one. This is where software engineering plays a good role.
• Quality Management: Better process of software development provides better and quality software product.
6.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 6
CHARACTERISTICS OF A GOOD SOFTWARE
A software product can be judged by what it offers and how well it can be used. This software must satisfy on the
following grounds:
• Operational
• Transitional
• Maintenance
Well-engineered and crafted software is expected to have the following characteristics
Operational: This tells us how well software works in operations. It can be measured on:
• Budget
• Usability
• Efficiency
• Correctness
• Functionality
• Dependability
• Security and Safety
7.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 7
Transitional: This aspect is important when the software is moved from one platform to another:
• Portability
• Interoperability
• Reusability
• Adaptability
Maintenance: This aspect briefs about how well a software has the capabilities to maintain itself in the ever-changing
environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
8.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 8
SOFTWARE DEVELOPMENT LIFECYCLE
Software Development Life Cycle, (SDLC) is a well-defined, structured sequence of stages
in software engineering to develop the intended software product.
SDLC provides a series of steps to be followed to design and develop a software product
efficiently. SDLC framework includes the following steps.
Communication
This is the first step where the user initiates the request for a desired software product. He
contacts the service provider and tries to negotiate the terms. He submits his request to
the service providing organization in writing.
Requirement Gathering
This step onwards the software development team works to carry on the project. The team
holds discussions with various stakeholders from problem domain and tries to bring out as
much information as possible on their requirements. The requirements are contemplated
and segregated into user requirements, system requirements and functional requirements.
9.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 9
SOFTWARE DEVELOPMENT LIFECYCLE
Feasibility Study
After requirement gathering, the team comes up with a rough plan of software process. At this step, the team analyzes if a software can be
made to fulfill all requirements of the user and if there is any possibility of software being no more useful. It is found out, if the project is
financially, practically and technologically feasible for the organization to take up. There are many algorithms available, which help the
developers to conclude the feasibility of a software project.
System Analysis
In this stage, the developers decide a roadmap of their plan and try to bring up the best software model suitable for the project. System
analysis includes Understanding of software product limitations, learning system related problems or changes to be done in existing
systems beforehand, identifying and addressing the impact of project on organization and personnel etc. The project team analyzes the
scope of the project and plans the schedule and resources accordingly
Software Design
Next step is to bring down whole knowledge of requirements and analysis on the desk and design the software product. The inputs from
users and information gathered in requirement gathering phase are the inputs of this step. The output of this step comes in the form of two
designs; logical design and physical design. Engineers produce meta-data and data dictionaries, logical diagrams, data-flow diagrams and
in some cases pseudo codes.
10.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 10
SOFTWARE DEVELOPMENT LIFECYCLE
Coding
This step is also known as programming phase. The implementation of software design starts in terms of writing program
code in the suitable programming language and developing error-free executable programs efficiently.
Testing
An estimate says that 50% of whole software development process should be tested. Errors may ruin the software from
critical level to its own removal. Software testing is done while coding by the developers and thorough testing is conducted
by testing experts at various levels of code such as module testing, program testing, product testing, in-house testing and
testing the product at user’s end. Early discovery of errors and their remedy is the key to reliable software
Integration
Software may need to be integrated with the libraries, databases and other program(s). This stage of SDLC is involved in
the integration of software with outer world entities
11.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 11
SOFTWARE DEVELOPMENT LIFECYCLE
Implementation
This means installing the software on user machines. At times, software needs post-installation
configurations at user end. Software is tested for portability and adaptability and integration
related issues are solved during implementation.
Operation and Maintenance
This phase confirms the software operation in terms of more efficiency and less errors. If
required, the users are trained on, or aided with the documentation on how to operate the
software and how to keep the software operational. The software is maintained timely by
updating the code according to the changes taking place in user end environment or technology.
This phase may face challenges from hidden bugs and real-world unidentified problems.
Disposition
As time elapses, the software may decline on the performance front. It may go completely
obsolete or may need intense upgradation. Hence a pressing need to eliminate a major portion
of the system arises. This phase includes archiving data and required software components,
closing down the system, planning disposition activity and terminating system at appropriate
end-of-system time.
12.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 12
SOFTWARE DEVELOPMENT PARADIGMS / PROCESS MODELS
The software development paradigm helps developer to select a strategy to develop the software.
A software development paradigm has its own set of tools, methods and procedures, which are expressed clearly
and defines software development life cycle.
A few of software development paradigms or process models are defined as follows:
• Waterfall Model
• Iterative Model
• Spiral Model
• Evolutionary Model
• Spiral Model
13.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 13
WATERFALL MODEL
The Waterfall Model was the first process model to be introduced. It is also referred to as a linear-
sequential life cycle model.
In a waterfall model, each phase must be completed before the next phase can begin and there is no
overlapping in the phases.
Waterfall Model Water is the simplest model of software development paradigm where all the phases
of SDLC will function one after another in linear manner. That is, when the first phase is finished then
only the second phase will start and so on.
This model assumes that everything is carried out and taken place perfectly as planned in the
previous stage and there is no need to think about the past issues that may arise in the next phase.
This model does not work smoothly if there are some issues left at the previous step. The sequential
nature of model does not allow us go back and undo or redo our actions. This model is best suited
when developers already have designed and developed similar software in the past and are aware of
all its domains.
The waterfall Model illustrates the software development process in a linear sequential flow. This
means that any phase in the development process begins only if the previous phase is complete.
In this waterfall model, the phases do not overlap.
14.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 14
The sequential phases in Waterfall model are −
Requirement Gathering and analysis − All possible requirements of
the system to be developed are captured in this phase and documented
in a requirement specification document.
System Design − The requirement specifications from first phase are
studied in this phase and the system design is prepared. This system
design helps in specifying hardware and system requirements and helps
in defining the overall system architecture.
Implementation − With inputs from the system design, the system is
first developed in small programs called units, which are integrated in
the next phase. Each unit is developed and tested for its functionality,
which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation
phase are integrated into a system after testing of each unit. Post
integration the entire system is tested for any faults and failures
15.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 15
Deployment of system − Once the functional and non-functional testing is done; the product is deployed in the
customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix those issues, patches are
released. Also to enhance the product some better versions are released. Maintenance is done to deliver these
changes in the customer environment
16.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 16
WATERFALL MODEL APPLICATION
Every software developed is different and requires a suitable SDLC approach to be followed based on the internal and
external factors.
Some situations where the use of Waterfall model is most appropriate are −
• Requirements are very well documented, clear and fixed.
• Product definition is stable.
• Technology is understood and is not dynamic.
• There are no ambiguous requirements.
• Ample resources with required expertise are available to support the product.
• The project is short.
17.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 17
PROS & CONS OF THE WATERFALL MODEL
The advantages of waterfall development are that it allows for departmentalization and control. A schedule can be set with deadlines
for each stage of development and a product can proceed through the development process model phases one by one.
Development moves from concept, through design, implementation, testing, installation, troubleshooting, and ends up at operation
and maintenance. Each phase of development proceeds in strict order.
Some of the major advantages of the Waterfall Model are as follows −
• Simple and easy to understand and use
• Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
• Phases are processed and completed one at a time.
• Works well for smaller projects where requirements are very well understood.
• Clearly defined stages.
• Well understood milestones.
• Easy to arrange tasks.
• Process and results are well documented
18.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 18
CONS OF THE WATERFALL MODEL
The disadvantage of waterfall development is that it does not allow much reflection or revision. Once an application is in the testing
stage, it is very difficult to go back and change something that was not well-documented or thought upon in the concept stage.
• No working software is produced until late during the life cycle.
• High amounts of risk and uncertainty.
• Not a good model for complex and object-oriented projects.
• Poor model for long and ongoing projects.
• Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with
this process model.
• It is difficult to measure progress within stages.
• Cannot accommodate changing requirements.
19.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 19
ITERATIVE INCREMENTAL MODEL
In an Iterative Incremental model, initially, a partial implementation
of a total system is constructed so that it will be in a deliverable
state. Increased functionality is added. Defects, if any, from the
prior delivery are fixed and the working product is delivered.
The process is repeated until the entire product development is
completed. The repetitions of these processes are called
iterations. At the end of every iteration, a product increment is
delivered.
20.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 20
WHEN TO USE ITERATIVE INCREMENTAL MODEL?
• Most of the requirements are known up-front but are expected to evolve over time.
• The requirements are prioritized.
• There is a need to get the basic functionality delivered fast.
• A project has lengthy development schedules.
• A project has new technology.
• The domain is new to the team.
21.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 21
ADVANTAGES & DISADVANTAGES OF THE ITERATIVE INCREMENTAL MODEL
ADVANTAGES
• You can develop prioritized requirements first.
• Initial product delivery is faster.
• Customers gets important functionality early.
• Lowers initial delivery cost.
• Each release is a product increment, so that the customer
will have a working product at hand all the time.
• Customer can provide feedback to each product
increment, thus avoiding surprises at the end of
development.
• Requirements changes can be easily accommodated.
DISADVANTAGES
• Requires effective planning of iterations.
• Requires efficient design to ensure inclusion of the required
functionality and provision for changes later.
• Requires early definition of a complete and fully functional
system to allow the definition of increments.
• Well-defined module interfaces are required, as some are
developed long before others are developed.
• Total cost of the complete system is not lower.
22.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 22
In summary, the advantage of the iterative-incremental model is that there is a working model of the
system at a very early stage of development which makes it easier to find functional or design flaws.
Finding issues at an early stage of development enables to take corrective measures in a limited budget.
The disadvantage with this model is that, it is applicable only to large and bulky software development
projects. This is because it is hard to break a small software system into further small serviceable
increments/modules.
23.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 23
SPIRAL MODEL
Spiral model is a combination of both, iterative model and one of the SDLC model. It can be seen as if you choose one
SDLC model and combine it with cyclic process (iterative model).
The spiral model combines the idea of iterative development with the systematic, controlled aspects of the waterfall model.
This Spiral model is a combination of iterative development process model and sequential linear development model i.e.
the waterfall model with a very high emphasis on risk analysis. It allows incremental releases of the product or incremental
refinement through each iteration around the spiral.
This model considers risk, which often goes un-noticed by most other models. The model starts with determining objectives
and constraints of the software at the start of one iteration. Next phase is prototyping the software. This includes risk
analysis. Then one standard SDLC model is used to build the software. In the fourth phase of the plan of next iteration is
prepared.
24.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 24
SPIRAL MODEL APPLICATION
When to use the Spiral model
• When there is a budget constraint and risk evaluation is important.
• For medium to high-risk projects.
• Long-term project commitment because of potential changes to economic
priorities as the requirements change with time.
• Customer / User is not sure of their requirements which is usually the case.
• Requirements are complex and need evaluation to get clarity.
• New product line which should be released in phases to get enough
customer feedback.
• Significant changes are expected in the product during the development
cycle.
25.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 25
ADVANTAGES & DISADVANTAGES OF THE SPRIAL MODEL
ADVANTAGES
• Changing requirements can be accommodated.
• Allows extensive use of prototypes.
• Requirements can be captured more accurately.
• Development can be divided into smaller parts and the risky parts
can be developed earlier which helps in better risk management.
• Provides early indication of the risks, without involving much cost.
• Users can view the system early because of the rapid prototyping
tools.
• Critical high-risk functions are developed first.
• The design does not have to be perfect.
• Users can be closely involved in all lifecycle steps.
• Early and frequent feedback from users.
• Cumulative costs assessed frequently
DISADVANTAGES
• The Process and Management is more complex.
• End of the project may not be known early.
• Not suitable for small or low risk projects and could be
expensive for small projects.
• Spiral may go on indefinitely.
• Large number of intermediate stages requires excessive
documentation.
• May be hard to define objectives, verifiable milestones that
indicate readiness to proceed through the next iteration.
• Time spent in planning, resetting objectives, doing risk
analysis and prototyping may be an overhead.
• Time spent for evaluating risks can be too large for small or
low-risk projects.
• Spiral model is complex to understand for new team
members.
• Risk assessment expertise is required.
26.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 26
AGILE MODEL
Agile SDLC model is a combination of iterative and incremental process models with focus on process adaptability and
customer satisfaction by rapid delivery of working software product. Agile Methods break the product into small
incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks.
Every iteration involves cross functional teams working simultaneously on various areas like −
• Planning
• Requirements Analysis
• Design
• Coding
• Unit Testing and
• Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer and important stakeholders.
27.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 27
Agile model believes that every project needs to be handled
differently and the existing methods need to be tailored to best
suit the project requirements. In Agile, the tasks are divided to
time boxes (small time frames) to deliver specific features for a
release.
Iterative approach is taken and working software build is
delivered after each iteration. Each build is incremental in terms
of features; the final build holds all the features required by the
customer.
28.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 28
AGILE METHODOLOGIES
The most popular Agile methods include Rational Unified Process, Scrum, Crystal Clear, Extreme Programming, Adaptive Software
Development, Feature Driven Development, and Dynamic Systems Development Method (DSDM). These are now collectively
referred to as Agile Methodologies, after the Agile Manifesto was published in .
The following are the Agile Manifesto principles
• Individuals and interactions − In Agile development, self-organization 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
their 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.
29.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 29
AGILE MODEL – PROS & CONS
Agile methods are being widely accepted in the software world recently.
However, this method may not always be suitable for all products.
PROS
• Is a very realistic approach to software development.
• Promotes teamwork and cross training.
• Functionality can be developed rapidly and demonstrated.
• Resource requirements are minimum.
• Suitable for fixed or changing requirements
• Delivers early partial working solutions.
• Good model for environments that change steadily.
• Minimal rules, documentation easily employed.
• Enables concurrent development and delivery within an overall
planned context.
• Little or no planning required.
• Easy to manage.
• Gives flexibility to developers
Cons
• Not suitable for handling complex dependencies.
• More risk of sustainability, maintainability and extensibility.
• An overall plan, an agile leader and agile PM practice is a must
without which it will not work.
• Strict delivery management dictates the scope, functionality to be
delivered, and adjustments to meet the deadlines.
• Depends heavily on customer interaction, so if customer is not clear,
team can be driven in the wrong direction.
• There is a very high individual dependency, since there is minimum
documentation generated.
• Transfer of technology to new team members may be quite
challenging due to lack of documentation.
30.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 30
RAPID APPLICATION DEVELOPMENT (RAD)
The RAD (Rapid Application Development) model is based on prototyping and iterative development with no specific planning involved. The
process of writing the software itself involves the planning required for developing the product.
• Rapid Application Development focuses on gathering customer requirements through workshops or focus groups, early testing of the
prototypes by the customer using iterative concept, reuse of the existing prototypes (components), continuous integration and rapid delivery.
• Rapid application development is a software development methodology that uses minimal planning in favor of rapid prototyping. A prototype
is a working model that is functionally equivalent to a component of the product.
• In the RAD model, the functional modules are developed in parallel as prototypes and are integrated to make the complete product for faster
product delivery. Since there is no detailed preplanning, it makes it easier to incorporate the changes within the development process.
• RAD projects follow iterative and incremental model and have small teams comprising of developers, domain experts, customer
representatives and other IT resources working progressively on their component or prototype.
• The most important aspect for this model to be successful is to make sure that the prototypes developed are reusable.
31.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 31
RAD
The RAD Model has the following phase;
• Requirements Planning phase − In the requirements planning phase,
aworkshop needs to be conducted to discuss business problems in a
structured manner.
• User Description phase − In the User Description phase, automated
tools are used to capture information from users.
• Construction phase − In the Construction phase, productivity tools,
such as code generators, screen generators, etc. are used inside a
time-box, with a “Do until Done” approach.
• Cut Over phase − In the Cut over phase, installation of the system,
user acceptance testing and user training are performed.
32.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 32
WHEN TO USE RAD MODEL
• User can be involved throughout the life cycle.
• Project can be time-boxed.
• Functionality can be delivered in increments.
33.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 33
RAD MODEL: STRENGTHS
• Reduced cycle time and improved productivity with fewer team members would mean lower costs.
• Customer’s involvement throughout the complete cycle minimizes the risk of not achieving customer
satisfaction and business value.
• Focus moves to the code in a what-you-see-is-what-you-get mode (WYSIWYG). This brings clarity on
what is being built is the right thing.
• Uses modelling concepts to capture information about business, data, and processes.
34.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 34
RAD MODEL: WEAKNESS
• Accelerated development process must give quick responses to the user.
• Risk of never achieving closure.
• Hard to use with legacy systems.
• Developers and customers must be committed to rapid-fire activities in an abbreviated time frame.
35.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 35
SOFTWARE TESTING
Software Testing is a process of verifying a computer system/program to decide whether it meets the specified requirements and produces the
desired results. As a result, you identify bugs in software product/project.
Software Testing is indispensable to provide a quality product without any bug or issue
Why Software Testing is Important?
Software Testing is Important because if there are any bugs or errors in the software, it can be identified early and can be solved before
delivery of the software product. Properly-tested software product ensures reliability, security and high performance which further results in
time saving, cost effectiveness and customer satisfaction.
• Testing in Software Engineering is a process of evaluating a software product to find whether the current software product meets the
required conditions or not.
• The testing process involves evaluating the features of the software product for requirements in terms of any missing requirements, bugs or
errors, security, reliability and performance.
36.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 36
WHY IS TESTING IMPORTANT?
Testing is important because software bugs could be expensive or even dangerous. Software bugs can potentially cause
monetary and human loss.
History is full of such examples.
• In April 2015, Bloomberg terminal in London crashed due to software glitch affected more than 300,000 traders on
financial markets. It forced the government to postpone a 3bn pound debt sale.
• Nissan cars recalled over 1 million cars from the market due to software failure in the airbag sensory detectors. There
has been two accident reported due to this software failure.
• Starbucks was forced to close about 60 percent of stores in the U.S and Canada due to software failure in its POS
system. At one point, the store served coffee for free as they were unable to process the transaction.
• In May of 1996, a software bug caused the bank accounts of 823 customers of a major U.S. bank to be credited with 920
million US dollars.
37.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 37
BENEFITS OF SOFTWARE TESTING
Cost-Effective: It is one of the important advantages of software testing. Testing any IT project on time helps you to save your money
for the long term. In case if the bugs caught in the earlier stage of software testing, it costs less to fix.
Security: It is the most vulnerable and sensitive benefit of software testing. People are looking for trusted products. It helps in
removing risks and problems earlier.
Product quality: It is an essential requirement of any software product. Testing ensures a quality product is delivered to customers.
Customer Satisfaction: The main aim of any product is to give satisfaction to their customers. UI/UX Testing ensures the best user
experience.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 40
TYPES OF SOFTWARE TESTING
Typically Testing is classified into three
categories.
• Functional Testing
• Non-Functional Testing or Performance Testing
• Maintenance (Regression and Maintenance)
40
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 42
DIFFERENT TYPES OF TESTING
• Development testing
• Test-driven development
• Release testing
• User testing, etc…
43.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 43
USER TESTING
User or customer testing is a stage in the testing process in which users or customers provide input and
advice on system testing.
User testing is essential, even when comprehensive system and release testing have been carried out.
‒ The reason for this is that influences from the user’s working environment have a major effect on
the reliability, performance, usability and robustness of a system. These cannot be replicated in a
testing environment.
44.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 44
TYPES OF USER TESTING
• Alpha testing
‒ Users of the software work with the development team to test the software at the developer’s
site.
• Beta testing
‒ A release of the software is made available to users to allow them to experiment and to raise
problems that they discover with the system developers.
• Acceptance testing
‒ Customers test a system to decide whether or not it is ready to be accepted from the system
developers and deployed in the customer environment. Primarily for custom systems.
45.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 45
ALPHA TESTING
Alpha Testing is a type of acceptance testing; performed to identify all possible issues and bugs before releasing the final product
to the end users. Alpha testing is carried out by the testers who are internal employees of the organization. The main goal is to
identify the tasks that a typical user might perform and test them.
To put it as simple as possible, this kind of testing is called alpha only because it is done early on, near the end of the
development of the software, and before beta testing.
The main focus of alpha testing is to simulate real users by using a black box and white box techniques.
The team of developer themselves perform alpha testing by using the system as if it is being used in work environment. They try
to find out how user would react to some action in software and how the system should respond to inputs.
46.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 46
PROS AND CONS OF ALPHA TESTING
Advantages of Alpha Testing:
• Provides better view about the reliability of the software at an early stage
• Helps simulate real time user behavior and environment.
• Detect many showstopper or serious errors
• Ability to provide early detection of errors with respect to design and functionality
Disadvantages of Alpha Testing:
• In depth, functionality cannot be tested as software is still under development stage Sometimes developers and
testers are dissatisfied with the results of alpha testing
47.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 47
BETA TESTING
Beta Testing is performed by “real users” of the software application in “real environment” and it can be
considered as a form of external User Acceptance Testing. It is the final test before shipping a product to the
customers. Direct feedback from customers is a major advantage of Beta Testing.
This testing helps to test products in customer’s environment.
Beta version of the software is released to a limited number of end-users of the product to obtain feedback on
the product quality. Beta testing reduces product failure risks and provides increased quality of the product
through customer validation.
48.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 48
TYPES OF BETA TESTING
Traditional Beta testing: Product is distributed to the target market, and related data is gathered in all aspects. This data can be
used for Product improvement.
Public Beta Testing: Product is publicly released to the outside world via online channels and data can be gathered from anyone.
Based on feedback, product improvements can be done. For example, Microsoft conducted the largest of all Beta Tests for its OS —
Windows 8 before officially releasing it.
Technical Beta Testing: Product is released to the internal group of an organization and gathers feedback/data from the employees
of the organization.
Focused Beta: Product is released to the market for gathering feedback on specific features of the program. For example, important
functionality of the software.
Post-release Beta: Product is released to the market and data is gathered to make improvements for the future release of the
product.
49.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 49
PROS AND CONS OF BETA TESTING
• Reduces product failure risk via customer validation.
• Improves product quality via customer feedback
• Creates goodwill with customers and increases customer satisfaction
• Beta testing delivers prompt feedback on the product; and this helps to improve the product quality and thereby
makes the product more satisfactory for the customer even before final release
• Beta testers test the reliability, usability, robustness of the software, and gives feedback/suggestions to developers
to improve the product to meet customer expectations
• Beta testing helps various organisational teams to make informed decisions about a product depending on
suggestions given by the testers who are the real-time users
• Many times, a large group of users performs this type of testing. This helps in greatly increasing the scope of
testing.
50.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 50
PROS AND CONS OF BETA TESTING
• Helps to cover bugs in the software which might not have been covered or have been missed during any of the testing cycles
• Gives actual insight into customer likes and dislikes about the product since the product is tested by real users in a production
environment
• Customers feel valued and their opinion is considered for improving product quality, even in beta stage
Disadvantages of Beta Testing
• Test Management is an issue. As compared to other testing types which are usually executed inside a company in a controlled
environment, beta testing is executed out in the real world where you seldom have control.
• Finding the right beta users and maintaining their participation could be a challenge
• This testing can be a time-consuming process and can delay the final release of the product.
• If there are a lot of issues, this can cause negative publicity of the product. This is because the person testing the software are
end-users only with no obligation to the development team.
51.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 51
KEY DIFFERENCES BETWEEN ALPHA AND BETA TESTING
• Alpha Testing is performed by the Testers within the organization whereas Beta Testing is performed by the end users.
• Alpha Testing is performed at Developer’s site whereas Beta Testing is performed at Client’s location.
• Reliability and Security testing are not performed in-depth in Alpha Testing while Reliability, Security and Robustness are
checked during Beta Testing.
• Alpha Testing involves both Whitebox and Blackbox testing whereas Beta Testing mainly involves Blackbox testing.
• Alpha Testing requires testing environment while Beta Testing doesn’t require testing environment.
• Critical issues and bugs are addressed and fixed immediately in Alpha Testing whereas issues and bugs are collected
from the end users and further implemented in Beta Testing.
52.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 52
WHITE BOX TESTING VS BLACK BOX TESTING
White Box Testing is software testing technique in which internal structure, design and coding of software are tested
to verify flow of input-output and to improve design, usability and security. In white box testing, code is visible to
testers so it is also called Clear box testing, Open box testing, Transparent box testing, Code-based testing and
Glass box testing.
The term “WhiteBox” was used because of the see-through box concept. The clear box or WhiteBox name
symbolizes the ability to see through the software’s outer shell (or “box”) into its inner workings.
White Box Testing (Unit Testing) validates internal structure and working of your software code
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 54
Black Box Testing is a software testing method in which the functionalities of software applications are
tested without having knowledge of internal code structure, implementation details and internal paths.
Black Box Testing mainly focuses on input and output of software applications and it is entirely based on
software requirements and specifications. It is also known as Behavioral Testing.
Likewise, the “black box” in “Black Box Testing” symbolizes not being able to see the inner workings of the
software so that only the end-user experience can be tested.
[ADD PRESENTATION TITLEIN SLIDE MASTER MODE] | 56
Blackbox testing, involves testing from an external or end-user type perspective.
On the other hand, White box testing in software engineering is based on the inner workings
of an application and revolves around internal testing.
The main focus of black box testing is on the validation of your functional requirements.