2. An effective System Development Life Cycle (SDLC) should result in a high quality system that meets
customer expectations, reaches completion within time and cost evaluations, and works effectively and
efficiently in the current and planned Information Technology infrastructure.
System Development Life Cycle (SDLC) is a conceptual model which includes policies and procedures for
developing or altering systems throughout their life cycles.
SDLC is used by analysts to develop an information system. SDLC includes the following activities −
•requirements
•design
•implementation
•testing
•deployment
•operations
•maintenance
3. Phases of SDLC
Systems Development Life Cycle is a systematic approach which explicitly breaks down the work into phases
that are required to implement either new or modified Information System.
4. Feasibility Study or Planning
•Define the problem and scope of existing system.
•Overview the new system and determine its objectives.
•Confirm project feasibility and produce the project Schedule.
•During this phase, threats, constraints, integration and security of system are also considered.
•A feasibility report for the entire project is created at the end of this phase.
5. Analysis and Specification
•Gather, analyze, and validate the information.
•Define the requirements and prototypes for new system.
•Evaluate the alternatives and prioritize the requirements.
•Examine the information needs of end-user and enhances the system goal.
•A Software Requirement Specification (SRS) document, which specifies the software, hardware, functional,
and network requirements of the system is prepared at the end of this phase.
6. System Design
•Includes the design of application, network, databases, user interfaces, and system interfaces.
•Transform the SRS document into logical structure, which contains detailed and complete set of
specifications that can be implemented in a programming language.
•Create a contingency, training, maintenance, and operation plan.
•Review the proposed design. Ensure that the final design must meet the requirements stated in SRS
document.
•Finally, prepare a design document which will be used during next phases.
7. Implementation
•Implement the design into source code through coding.
•Combine all the modules together into training environment that detects errors and defects.
•A test report which contains errors is prepared through test plan that includes test related tasks such as
test case generation, testing criteria, and resource allocation for testing.
•Integrate the information system into its environment and install the new system.
8. Maintenance/Support
•Include all the activities such as phone support or physical on-site support for users that is required once the
system is installing.
•Implement the changes that software might undergo over a period of time, or implement any new
requirements after the software is deployed at the customer location.
•It also includes handling the residual errors and resolve any issues that may exist in the system even after
the testing phase.
•Maintenance and support may be needed for a longer time for large systems and for a short time for smaller
systems.
9. Life Cycle of System Analysis and Design
The following diagram shows the complete life cycle of the system during analysis and design phase.
10. InformationGathering Techniques
The main aim of fact finding techniques is to determine the information requirements of an organization
used by analysts to prepare a precise SRS understood by user.
Ideal SRS Document should −
•be complete, Unambiguous, and Jargon-free.
•specify operational, tactical, and strategic information requirements.
•solve possible disputes between users and analyst.
•use graphical aids which simplify understanding and design.
11. There are various information gathering techniques −
• Interviewing
Systems analyst collects information from individuals or groups by interviewing. The analyst can be formal,
legalistic, play politics, or be informal; as the success of an interview depends on the skill of analyst as
interviewer.
It can be done in two ways −
•Unstructured Interview − The system analyst conducts question-answer session to acquire basic
information of the system.
•Structured Interview − It has standard questions which user need to respond in either close (objective) or
open (descriptive) format.
12. Advantages of Interviewing
•This method is frequently the best source of gathering qualitative information.
•It is useful for them, who do not communicate effectively in writing or who may not have the time to
complete questionnaire.
•Information can easily be validated and cross checked immediately.
•It can handle the complex subjects.
•It is easy to discover key problem by seeking opinions.
•It bridges the gaps in the areas of misunderstandings and minimizes future problems.
13. Questionnaires
This method is used by analyst to gather information about various issues of system from large number of
persons.
There are two types of questionnaires −
•Open-ended Questionnaires − It consists of questions that can be easily and correctly interpreted. They
can explore a problem and lead to a specific direction of answer.
•Closed-ended Questionnaires − It consists of questions that are used when the systems analyst
effectively lists all possible responses, which are mutually exclusive.
14. Advantages of questionnaires
•It is very effective in surveying interests, attitudes, feelings, and beliefs of users which are not co-located.
•It is useful in situation to know what proportion of a given group approves or disapproves of a particular
feature of the proposed system.
•It is useful to determine the overall opinion before giving any specific direction to the system project.
•It is more reliable and provides high confidentiality of honest responses.
•It is appropriate for electing factual information and for statistical data collection which can be emailed
and sent by post.
15. Review of Records, Procedures, and Forms
Review of existing records, procedures, and forms helps to seek insight into a system which describes the
current system capabilities, its operations, or activities.
Advantages
•It helps user to gain some knowledge about the organization or operations by themselves before they impose
upon others.
•It helps in documenting current operations within short span of time as the procedure manuals and forms
describe the format and functions of present system.
•It can provide a clear understanding about the transactions that are handled in the organization, identifying
input for processing, and evaluating performance.
•It can help an analyst to understand the system in terms of the operations that must be supported.
•It describes the problem, its affected parts, and the proposed solution.
16. Observation
This is a method of gathering information by noticing and observing the people, events, and objects. The
analyst visits the organization to observe the working of current system and understands the
requirements of the system.
Advantages
•It is a direct method for gleaning information.
•It is useful in situation where authenticity of data collected is in question or when complexity of certain
aspects of system prevents clear explanation by end-users.
•It produces more accurate and reliable data.
•It produces all the aspect of documentation that are incomplete and outdated.
17. System Analysis & Design - System Planning
Systems development is systematic process which includes phases such as planning, analysis, design,
deployment, and maintenance. Here, in this tutorial, we will primarily focus on −
•Systems analysis
•Systems design
Systems Analysis
It is a process of collecting and interpreting facts, identifying the problems, and decomposition of a system into
its components.
System analysis is conducted for the purpose of studying a system or its parts in order to identify its
objectives. It is a problem solving technique that improves the system and ensures that all the components of
the system work efficiently to accomplish their purpose.
Analysis specifies what the system should do.
18. Systems Design
It is a process of planning a new business system or replacing an existing system by defining its components
or modules to satisfy the specific requirements. Before planning, you need to understand the old system
thoroughly and determine how computers can best be used in order to operate efficiently.
System Design focuses on how to accomplish the objective of the system.
System Analysis and Design (SAD) mainly focuses on −
•Systems
•Processes
•Technology
19. What is a System?
The word System is derived from Greek word Systema, which means an organized relationship between
any set of components to achieve some common cause or objective.
A system is “an orderly grouping of interdependent components linked together according to a plan to
achieve a specific goal.”
Constraints of a System
A system must have three basic constraints −
•A system must have some structure and behavior which is designed to achieve a predefined objective.
•Interconnectivity and interdependence must exist among the system components.
•The objectives of the organization have a higher priority than the objectives of its subsystems.
20. Properties of a System
A system has the following properties −
Organization
• Organization implies structure and order. It is the arrangement of components that helps to achieve
predetermined objectives.
• Interaction
It is defined by the manner in which the components operate with each other.
For example, in an organization, purchasing department must interact with production department and payroll with
personnel department.
• Interdependence
Interdependence means how the components of a system depend on one another. For proper functioning, the
components are coordinated and linked together according to a specified plan. The output of one subsystem is the
required by other subsystem as input.
• Integration
Integration is concerned with how a system components are connected together. It means that the parts of the
system work together within the system even if each part performs a unique function.
21. Objective
The objective of system must be central. It may be real or stated. It is not uncommon for an organization to
state an objective and operate to achieve another.
The users must know the main objective of a computer application early in the analysis for a successful design
and conversion.
Elements of a System
The following diagram shows the elements of a system −
22. Feasibility Study
Feasibility Study can be considered as preliminary investigation that helps the management to take decision
about whether study of system should be feasible for development or not.
•It identifies the possibility of improving an existing system, developing a new system, and produce refined
estimates for further development of system.
•It is used to obtain the outline of the problem and decide whether feasible or appropriate solution exists or not.
•The main objective of a feasibility study is to acquire problem scope instead of solving the problem.
•The output of a feasibility study is a formal system proposal act as decision document which includes the
complete nature and scope of the proposed system.
23. Steps Involved in Feasibility Analysis
The following steps are to be followed while performing feasibility analysis −
•Form a project team and appoint a project leader.
•Develop system flowcharts.
•Identify the deficiencies of current system and set goals.
•Enumerate the alternative solution or potential candidate system to meet goals.
•Determine the feasibility of each alternative such as technical feasibility, operational feasibility, etc.
•Weight the performance and cost effectiveness of each candidate system.
•Rank the other alternatives and select the best candidate system.
•Prepare a system proposal of final project directive to management for approval.
24. Role of System Analyst
The system analyst is a person who is thoroughly aware of the system and guides the system development
project by giving proper directions. He is an expert having technical and interpersonal skills to carry out
development tasks required at each phase.
He pursues to match the objectives of information system with the organization goal.
Main Roles
•Defining and understanding the requirement of user through various Fact finding techniques.
•Prioritizing the requirements by obtaining user consensus.
•Gathering the facts or information and acquires the opinions of users.
•Maintains analysis and evaluation to arrive at appropriate system which is more user friendly.
•Suggests many flexible alternative solutions, pick the best solution, and quantify cost and benefits.
•Draw certain specifications which are easily understood by users and programmer in precise and detailed
form.
•Implemented the logical design of system which must be modular.
•Plan the periodicity for evaluation after it has been used for some time, and modify the system as needed.
25. Data Flow Diagram
Data flow diagram is graphical representation of flow of data in an information system. It is capable of
depicting incoming data flow, outgoing data flow and stored data. The DFD does not mention anything about
how data flows through the system.
There is a prominent difference between DFD and Flowchart. The flowchart depicts flow of control in
program modules. DFDs depict flow of data in the system at various levels. DFD does not contain any
control or branch elements.
Types of DFD
Data Flow Diagrams are either Logical or Physical.
•Logical DFD - This type of DFD concentrates on the system process, and flow of data in the system.For
example in a Banking software system, how data is moved between different entities.
•Physical DFD - This type of DFD shows how the data flow is actually implemented in the system. It is more
specific and close to the implementation.
26. DFD Components
DFD can represent Source, destination, storage and flow of data using the following set of components -
•Entities - Entities are source and destination of information data. Entities are represented by a rectangles with
their respective names.
•Process - Activities and action taken on the data are represented by Circle or Round-edged rectangles.
•Data Storage - There are two variants of data storage - it can either be represented as a rectangle with absence
of both smaller sides or as an open-sided rectangle with only one side missing.
•Data Flow - Movement of data is shown by pointed arrows. Data movement is shown from the base of arrow as
its source towards head of the arrow as destination.
27. Entity-Relationship Model
Entity-Relationship model is a type of database model based on the notion of real world entities and
relationship among them. We can map real world scenario onto ER database model. ER Model creates a set
of entities with their attributes, a set of constraints and relation among them.
ER Model is best used for the conceptual design of database. ER Model can be represented as follows :
28. •Entity - An entity in ER Model is a real world being, which has some properties called attributes. Every
attribute is defined by its corresponding set of values, called domain.
•For example, Consider a school database. Here, a student is an entity. Student has various attributes like
name, id, age and class etc.
•Relationship - The logical association among entities is called relationship. Relationships are mapped
with entities in various ways. Mapping cardinalities define the number of associations between two entities.
•Mapping cardinalities:
• one to one
• one to many
• many to one
• many to many
29. Data Dictionary
Data dictionary is the centralized collection of information about data. It stores meaning and origin of data, its
relationship with other data, data format for usage etc. Data dictionary has rigorous definitions of all names in
order to facilitate user and software designers.
Data dictionary is often referenced as meta-data (data about data) repository. It is created along with DFD (Data
Flow Diagram) model of software program and is expected to be updated whenever DFD is changed or updated.
Requirement of Data Dictionary
The data is referenced via data dictionary while designing and implementing software. Data dictionary removes
any chances of ambiguity. It helps keeping work of programmers and designers synchronized while using same
object reference everywhere in the program.
Data dictionary provides a way of documentation for the complete database system in one place. Validation of
DFD is carried out using data dictionary.
Contents
Data dictionary should contain information about the following
Data Flow
Data Structure
Data Elements
Data Stores
Data Processing
30. A Decision Tree offers a graphic read of the processing logic concerned in a higher cognitive process and
therefore the corresponding actions are taken. The perimeters of a choice tree represent conditions and
therefore the leaf nodes represent the actions to be performed looking at the result of testing the condition.
Decision Tree
A decision tree is a graph that always uses a branching method in order to demonstrate all the possible
outcomes of any decision. Decision Trees are graphical and show a better representation of decision
outcomes. It consists of three nodes namely Decision Nodes, Chance Nodes, and Terminal Nodes.
Types of the decision tree:
•Categorical variable decision tree
•Continuous variable decision tree
31. Benefits:
•A decision tree is simple to comprehend and use.
•New scenarios are simple to add.
•Can be combined with other decision-making methods.
•Handling of both numerical and categorial variables
•The classification does not require many computations.
•Useful in analyzing and solving various business problems.
Drawbacks:
•They are inherently unstable, which means that a slight change in the data can have a result in a change in
the structure of the optimal decision tree, and they are frequently wrong.
•These are less suitable for estimation tasks where the outcome required is the value of a continuous
variable.
•The alternative options perform better with the same data. A random forest of decision trees can be used as
a replacement but it is not as straightforward to comprehend as a single decision tree.
•Calculations can become quite complicated, especially when several values are uncertain and/or multiple
outcomes are related.
32. . Decision Table: Decision Table is just a tabular representation of all conditions and actions.
Decision Trees are always used whenever the processing logic is very complicated and involves
multiple conditions. The main components used for the formation of the Data Table are Conditions
Stubs, Action Stubs, and rules.
Types of decision tables:
•Extended entry table
•Limited entry table
33. Benefits:
•Visualization of Cause and effect relationships in the table.
•Easy to understand
•In the case of a complex table, it can be readily broken down into simpler tables.
•Tables are formatted consistently.
•Suggestions of possible actions need to be taken from the summarized outcomes of a situation.
•In these tables, semi-standardized languages might be used.
•Table users are not necessarily know how to use a computer.
Drawbacks:
•Decision tables are not well suited to large-scale applications. There is a requirement of splitting huge
tables into smaller ones to eliminate redundancy.
•The complete sequence of actions is not reflected in the decision tables.
•A partial solution is presented.
34. Testing and Implementation Testing
Testing Software Testing is the process of executing a program or system with the intent of finding errors.
The scope of software testing often includes examination of code as well as execution of that code in various
environments and conditions. Testing stages of the project can be explained as below and system was
tested for all these stages.
● Component or unit testing - Individual components are tested independently; - Components may be
functions or objects or coherent groupings of these entities.
● System testing - Testing of the system as a whole. Testing of emergent properties is particularly important.
● Acceptance testing - Testing with customer data to check that the system meets the customer’s needs
35. Black Box Testing
Black Box Testing is testing without the knowledge of the internal workings of the item being tested. When
black box testing is applied to software engineering, the tester selects valid and invalid input and what the
expected outputs should be, but not how the program actually arrives at those outputs. Black box testing
methods include equivalence partitioning, boundary value analysis, all-pairs testing, fuzz testing, model-
based testing, traceability matrix, exploratory testing and specification-based testing. This method of test
design is applicable to all levels of software testing: unit, integration, functional testing, system and
acceptance. Black box testing is a type of software testing in which the functionality of the software is not
known. The testing is done without the internal knowledge of the products.
36. Black Box Testing Type
The following are the several categories of black box testing:
1.Functional Testing
2.Regression Testing
3.Nonfunctional Testing (NFT)
Functional Testing: It determines the system’s software functional requirements.
Regression Testing: It ensures that the newly added code is compatible with the existing code. In other
words, a new software update has no impact on the functionality of the software. This is carried out after a
system maintenance operation and upgrades.
Nonfunctional Testing:Nonfunctional testing is also known as NFT. This testing is not functional testing o
37. Advantages of Black Box Testing:
•The tester does not need to have more functional knowledge or programming skills to implement the Black
Box Testing.
•It is efficient for implementing the tests in the larger system.
•Tests are executed from the user’s or client’s point of view.
•Test cases are easily reproducible.
•It is used in finding the ambiguity and contradictions in the functional specifications.
Disadvantages of Black Box Testing:
•There is a possibility of repeating the same tests while implementing the testing process.
•Without clear functional specifications, test cases are difficult to implement.
•It is difficult to execute the test cases because of complex inputs at different stages of testing.
•Sometimes, the reason for the test failure cannot be detected.
•Some programs in the application are not tested.
•It does not reveal the errors in the control structure.
•Working with a large sample space of inputs can be exhaustive and consumes a lot of time.
38. White Box Testing
White box testing (glass box testing) strategy deals with the internal data structures and algorithms. The tests
written based on the white box testing strategy incorporate coverage of the code written, branches, paths,
statements and internal logic of the code etc. These testers require programming skills to identify all paths through
the software. Types of white box testing includes code coverage ( creating tests to satisfy some criteria of code
coverage.),mutation testing methods, fault injection methods, static testing. White box testing techniques analyze
the internal structures the used data structures, internal design, code structure and the working of the software
rather than just the functionality as in black box testing. It is also called glass box testing or clear box testing or
structural testing.
39. Working process of white box testing:
•Input: Requirements, Functional specifications, design documents, source code.
•Processing: Performing risk analysis for guiding through the entire process.
•Proper test planning: Designing test cases so as to cover entire code. Execute rinse-repeat until error-free
software is reached. Also, the results are communicated.
•Output: Preparing final report of the entire testing process.
40. Advantages:
1.White box testing is very thorough as the entire code and structures are tested.
2.It results in the optimization of code removing error and helps in removing extra lines of code.
3.It can start at an earlier stage as it doesn’t require any interface as in case of black box testing.
4.Easy to automate.
Disadvantages:
1.Main disadvantage is that it is very expensive.
2.Redesign of code and rewriting code needs test cases to be written again.
3.Testers are required to have in-depth knowledge of the code and programming language as opposed to black
box testing.
4.Missing functionalities cannot be detected as the code that exists is tested.
5.Very complex and at times not realistic.
41. Comparison - Black Box Testing Vs White Box Testing
. No. Black Box Testing White Box Testing
1.
It is a way of software testing in which the internal structure or the program or the code is hidden
and nothing is known about it.
It is a way of testing the software in which the tester has
knowledge about the internal structure or the code or the
program of the software.
2. Implementation of code is not needed for black box testing. Code implementation is necessary for white box testing.
3. It is mostly done by software testers. It is mostly done by software developers.
4. No knowledge of implementation is needed. Knowledge of implementation is required.
5. It can be referred to as outer or external software testing. It is the inner or the internal software testing.
6. It is a functional test of the software. It is a structural test of the software.
7. This testing can be initiated based on the requirement specifications document.
This type of testing of software is started after a detail
design document.
8. No knowledge of programming is required. It is mandatory to have knowledge of programming.
9. It is the behavior testing of the software. It is the logic testing of the software.
10. It is applicable to the higher levels of testing of software.
It is generally applicable to the lower levels of software
testing.
11. It is also called closed testing. It is also called as clear box testing.
12. It is least time consuming. It is most time consuming.
13. It is not suitable or preferred for algorithm testing. It is suitable for algorithm testing.
14. Can be done by trial and error ways and methods.
Data domains along with inner or internal boundaries can
be better tested.
15. Example: Search something on google by using keywords Example: By input to check and verify loops
42. Types of Testing
Unit Testing is a type of software testing where individual units or components of a software are tested.
The purpose is to validate that each unit of the software code performs as expected. Unit Testing is done
during the development (coding phase) of an application by the developers. Unit Tests isolate a section of
code and verify its correctness. A unit may be an individual function, method, procedure, module, or object.
Unit testing is first level of testing done before integration testing. Unit testing is a WhiteBox testing
technique that is usually performed by the developer. Though, in a practical world due to time crunch or
reluctance of developers to tests, QA engineers also do unit testing.
Why perform Unit Testing?
Unit Testing is important because software developers sometimes try saving time doing minimal unit
testing and this is myth because inappropriate unit testing leads to high cost Defect fixing during System
Testing, Integration Testing and even Beta Testing after application is built. If proper unit testing is done in
early development, then it saves time and money in the end.
43. 1.Unit tests help to fix bugs early in the development cycle and save costs.
2.It helps the developers to understand the testing code base and enables them to make changes quickly
3.Good unit tests serve as project documentation
4.Unit tests help with code re-use. Migrate both your code and your tests to your new project. Tweak the
code until the tests run again.
44. Unit Testing Advantage
•Developers looking to learn what functionality is provided by a unit and how to use it can look at the unit
tests to gain a basic understanding of the unit API.
•Unit testing allows the programmer to refactor code at a later date, and make sure the module still works
correctly (i.e. Regression testing). The procedure is to write test cases for all functions and methods so
that whenever a change causes a fault, it can be quickly identified and fixed.
•Due to the modular nature of the unit testing, we can test parts of the project without waiting for others to
be completed.
Unit Testing Disadvantages
•Unit testing can’t be expected to catch every error in a program. It is not possible to evaluate all
execution paths even in the most trivial programs.
•Unit testing by its very nature focuses on a unit of code. Hence it can’t catch integration errors or broad
system level errors.
45. What is Integration Testing?
Integration Testing is defined as a type of testing where software modules are integrated logically
and tested as a group. A typical software project consists of multiple software modules, coded by
different programmers. The purpose of this level of testing is to expose defects in the interaction
between these software modules when they are integrated
46. Types of Integration Testing
Software Engineering defines variety of strategies to execute Integration testing, viz.
• Big Bang Approach :
• Incremental Approach: which is further divided into the following
• Top Down Approach
• Bottom Up Approach
• Sandwich Approach – Combination of Top Down and Bottom U
47. Big Bang Testing
Big Bang Testing is an Integration testing approach in which all the components or modules are integrated
together at once and then tested as a unit. This combined set of components is considered as an entity while
testing. If all of the components in the unit are not completed, the integration process will not execute.
Advantages:
•Convenient for small systems.
Disadvantages:
•Fault Localization is difficult.
•Given the sheer number of interfaces that need to be tested in this approach, some interfaces link to be
tested could be missed easily.
•Since the Integration testing can commence only after “all” the modules are designed, the testing team will
have less time for execution in the testing phase.
•Since all modules are tested at once, high-risk critical modules are not isolated and tested on priority.
Peripheral modules which deal with user interfaces are also not isolated and tested on priority.
48. Incremental Testing
In the Incremental Testing approach, testing is done by integrating two or more modules that are logically
related to each other and then tested for proper functioning of the application. Then the other related modules
are integrated incrementally and the process continues until all the logically related modules are integrated
and tested successfully.
Incremental Approach, in turn, is carried out by two different Methods:
•Bottom Up
•Top Down
Bottom-up Integration Testing
Bottom-up Integration Testing is a strategy in which the lower level modules are tested first. These tested
modules are then further used to facilitate the testing of higher level modules. The process continues until
all modules at top level are tested. Once the lower level modules are tested and integrated, then the next
level of modules are formed.
49. Advantages:
•Fault localization is easier.
•No time is wasted waiting for all modules to be developed unlike Big-bang approach
Disadvantages:
•Critical modules (at the top level of software architecture) which control the flow of application are tested last
and may be prone to defects.
•An early prototype is not possible
50. Top-down Integration Testing
Top Down Integration Testing is a method in which integration testing takes place from top to bottom
following the control flow of software system. The higher level modules are tested first and then lower level
modules are tested and integrated in order to check the software functionality. Stubs are used for testing if
some modules are not ready.
Advantages:
•Fault Localization is easier.
•Possibility to obtain an early prototype.
•Critical Modules are tested on priority; major design flaws could be found and fixed first.
Disadvantages:
•Needs many Stubs.
•Modules at a lower level are tested inadequately.
51. Testing Strategies in Software Engineering
Here are important strategies in software engineering:
Unit Testing: This software testing basic approach is followed by the programmer to test the unit of the
program. It helps developers to know whether the individual unit of the code is working properly or not.
Integration testing: It focuses on the construction and design of the software. You need to see that the
integrated units are working without errors or not.
System testing: In this method, your software is compiled as a whole and then tested as a whole. This
testing strategy checks the functionality, security, portability, amongst others.
Program Testing
Program Testing in software testing is a method of executing an actual software program with the aim of
testing program behavior and finding errors. The software program is executed with test case data to analyse
the program behavior or response to the test data. A good program testing is one which has high chances of
finding bugs.
52. What are the 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
53. The different types of tests
1. Unit tests
Unit tests are very low level and close to the source of an application. They consist in testing individual
methods and functions of the classes, components, or modules used by your software. Unit tests are
generally quite cheap to automate and can run very quickly by a continuous integration server.
2. Integration tests
Integration tests verify that different modules or services used by your application work well together. For
example, it can be testing the interaction with the database or making sure that micro services work together
as expected. These types of tests are more expensive to run as they require multiple parts of the application
to be up and running.
3. Functional tests
Functional tests focus on the business requirements of an application. They only verify the output of an
action and do not check the intermediate states of the system when performing that action.
There is sometimes a confusion between integration tests and functional tests as they both require multiple
components to interact with each other. The difference is that an integration test may simply verify that you
can query the database while a functional test would expect to get a specific value from the database as
defined by the product requirements.
54. 4. End-to-end tests
End-to-end testing replicates a user behavior with the software in a complete application environment. It verifies
that various user flows work as expected and can be as simple as loading a web page or logging in or much
more complex scenarios verifying email notifications, online payments, etc...
End-to-end tests are very useful, but they're expensive to perform and can be hard to maintain when they're
automated. It is recommended to have a few key end-to-end tests and rely more on lower level types of testing
(unit and integration tests) to be able to quickly identify breaking changes.
5. Acceptance testing
Acceptance tests are formal tests that verify if a system satisfies business requirements. They require the entire
application to be running while testing and focus on replicating user behaviors. But they can also go further and
measure the performance of the system and reject changes if certain goals are not met.
6. Performance testing
Performance tests evaluate how a system performs under a particular workload. These tests help to measure
the reliability, speed, scalability, and responsiveness of an application. For instance, a performance test can
observe response times when executing a high number of requests, or determine how a system behaves with a
significant amount of data. It can determine if an application meets performance requirements, locate
bottlenecks, measure stability during peak traffic, and more.