Course – Black Friday 2025 – NPI EA (cat= Baeldung)
announcement - icon

Yes, we're now running our Black Friday Sale. All Access and Pro are 33% off until 2nd December, 2025:

>> EXPLORE ACCESS NOW

Partner – Orkes – NPI EA (cat=Spring)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

Partner – Orkes – NPI EA (tag=Microservices)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

eBook – Guide Spring Cloud – NPI EA (cat=Spring Cloud)
announcement - icon

Let's get started with a Microservice Architecture with Spring Cloud:

>> Join Pro and download the eBook

eBook – Mockito – NPI EA (tag = Mockito)
announcement - icon

Mocking is an essential part of unit testing, and the Mockito library makes it easy to write clean and intuitive unit tests for your Java code.

Get started with mocking and improve your application tests using our Mockito guide:

Download the eBook

eBook – Reactive – NPI EA (cat=Reactive)
announcement - icon

Spring 5 added support for reactive programming with the Spring WebFlux module, which has been improved upon ever since. Get started with the Reactor project basics and reactive programming in Spring Boot:

>> Join Pro and download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Jackson – NPI EA (cat=Jackson)
announcement - icon

Do JSON right with Jackson

Download the E-book

eBook – HTTP Client – NPI EA (cat=Http Client-Side)
announcement - icon

Get the most out of the Apache HTTP Client

Download the E-book

eBook – Maven – NPI EA (cat = Maven)
announcement - icon

Get Started with Apache Maven:

Download the E-book

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

eBook – RwS – NPI EA (cat=Spring MVC)
announcement - icon

Building a REST API with Spring?

Download the E-book

Course – LS – NPI EA (cat=Jackson)
announcement - icon

Get started with Spring and Spring Boot, through the Learn Spring course:

>> LEARN SPRING
Course – RWSB – NPI EA (cat=REST)
announcement - icon

Explore Spring Boot 3 and Spring 6 in-depth through building a full REST API with the framework:

>> The New “REST With Spring Boot”

Course – LSS – NPI EA (cat=Spring Security)
announcement - icon

Yes, Spring Security can be complex, from the more advanced functionality within the Core to the deep OAuth support in the framework.

I built the security material as two full courses - Core and OAuth, to get practical with these more complex scenarios. We explore when and how to use each feature and code through it on the backing project.

You can explore the course here:

>> Learn Spring Security

Partner – Orkes – NPI EA (cat=Java)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

Course – LSD – NPI EA (tag=Spring Data JPA)
announcement - icon

Spring Data JPA is a great way to handle the complexity of JPA with the powerful simplicity of Spring Boot.

Get started with Spring Data JPA through the guided reference course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (cat=Spring Boot)
announcement - icon

Refactor Java code safely — and automatically — with OpenRewrite.

Refactoring big codebases by hand is slow, risky, and easy to put off. That’s where OpenRewrite comes in. The open-source framework for large-scale, automated code transformations helps teams modernize safely and consistently.

Each month, the creators and maintainers of OpenRewrite at Moderne run live, hands-on training sessions — one for newcomers and one for experienced users. You’ll see how recipes work, how to apply them across projects, and how to modernize code with confidence.

Join the next session, bring your questions, and learn how to automate the kind of work that usually eats your sprint time.

Course – Black Friday 2025 – NPI (cat=Baeldung)
announcement - icon

Yes, we're now running our Black Friday Sale. All Access and Pro are 33% off until 2nd December, 2025:

>> EXPLORE ACCESS NOW

 1. Introduction

In this article, we’ll explore the basics of testing. We’ll also explore some of the differences between functional and non-functional testing. Finally, we’ll discuss some of the types of both functional and non-functional testing.

2. Testing and Its Significance

Testing plays a significant role in the Software Development Lifecycle. It is essential to protect the software from defects, vulnerabilities, and malfunctioning, and to provide guaranteed quality assurance. Moreover, the bugs or errors, if any, should be identified early and fixed. Testing helps us do that.

We evaluate the software against the requirements and report the defects to make it reliable and robust. If the software doesn’t match the specified requirements, functional as well as non-functional, it’s of no use. Moreover, it must always efficiently handle all the exceptional and corner cases. Software testing is essential and unavoidable for delivering an efficient, accurate, and usable product.

3. Functional and Non-Functional Testing

Let’s understand the two important categories of testing: functional and non-functional testing.

In functional testing, we ensure that the functionality of the software meets the business requirements. We prepare tests to specifically focus on the functional requirements such as business use cases. This means we prepare a set of inputs and the expected outputs and test the system for accurate values. Thus, functional testing is a way to guarantee that the application is built to satisfy all the business use cases as expected.

We generally perform non-functional testing after functional testing. In non-functional testing, we focus on the evaluation of the non-functional aspects of the system such as performance, usability, reliability, and scalability. It ensures that the user gets the best experience while using the software. Non-functional tests are as important as functional tests since they help us understand how the system behaves under certain circumstances. Therefore, non-functional testing is a way to guarantee that the application is robust enough to handle unknown external factors.

4. Types of Functional Testing

Let’s understand the types of tests that fall under functional testing.

4.1. Unit Testing

Unit testing is the “white box” approach to testing the functionality of the code against the requirements. We write tests to check if the written code works correctly. As a result, we can cover the defects and report those at the earliest phase of the Software Development Lifecycle.

As soon as we develop a new feature, we can write the unit tests in parallel to check that the feature works as expected even in unexpected scenarios. Moreover, we should ensure that the unit tests cover the functional reliability of the product. Finally, we should ensure that we follow the best practices for writing unit tests in Java.

4.2. Integration Testing

Once all the components and modules are built, we can perform integration testing of those modules. Here, we test that the integration of all the individual components of a product work according to the business expectations. We verify that the individual modules and components work as efficiently after the integration as they do independently. Furthermore, we should ensure that the unit tests and integration tests are successfully evaluated before deployment.

4.3. Sanity Testing

We perform sanity testing once an upgraded version of the software is available after fixing a small issue in the functionality. We verify that the developers have fixed all the reported defects and there are no further issues because of the new changes. Therefore, this type of testing specifically focuses on the parts of the software being changed.

4.4. Regression Testing

We perform regression testing if a new feature is introduced in the software or if some code changes are done. The untouched features of the software must function the same as before even after the code changes or improvements. Thus, we re-test the functionality of the software to ensure that existing features still work as intended.

4.5. Smoke Testing

In smoke testing, we verify that the software build is stable and ready to perform the next rounds of testing. Sometimes, we call this build verification testing.

4.6. User Acceptance Testing (UAT)

UAT is the last step of testing that we perform before the release of the software. Generally, the end users perform this testing to ensure the software works just as expected.

4.7. System Testing

Once the entire product is built, we perform testing of the end-to-end product that may comprise both hardware and software testing. All the tests are run on the fully integrated product along with the peripherals to test how these components interact with each other. Additionally, we verify all the desired outputs for a specific set of inputs.

5. Types of Non-Functional Testing

Now, let’s also understand the types of tests that fall under non-functional testing.

5.1. Performance Testing

An application may crash if we load it with a huge number of requests at once. We do performance testing to ensure that the application remains stable and responsive under the given workload. This testing helps find performance bottlenecks, hence we essentially focus on the speed, stability, and scalability of the software. Thus, we need to verify that the application responds quickly, remains stable, and all the services remain available under the maximum user load.

Endurance testing, load testing, stress testing, spike testing, compatibility testing, volume testing, and scalability testing all fall under the performance testing umbrella.

5.2. Security Testing

Security Testing is an essential part of software testing to ensure that there are no vulnerabilities, threats, or risks in a software application. We run security tests to reveal flaws and loopholes in the security mechanisms of the system. This is necessary to protect the system against malicious attacks from intruders.

Network security, data security, authentication and authorization, client-side and server-side security, denial of service, and URL manipulation are a few of the focus areas of security testing.

Ethical hacking, Security Auditing, Security Scanning, Vulnerability Scanning, Risk Assessment, Posture Assessment, and Penetration testing fall under security testing.

5.3. Usability Testing

In usability testing, a certain designated set of users perform typical tasks using the software to evaluate a product. They focus on how easy a software application is to use in order to meet its objectives. Therefore, we also call it User Experience (UX) testing. It helps improve end-user satisfaction.

Some of the most important criteria for usability testing are:

  • Accessibility and ease of use
  • Efficiency
  • Desirability
  • Accuracy
  • The usefulness of the system

5.4. Localization Testing

Localization testing focuses on the behavior of the system for a specific geography or locale. We customize an application for a targeted language or country. Thus, we check if the language, messages, date and time format, notifications, and more, are designed according to the targeted region.

We specifically focus on the contents and UI to perform localization testing. Based on the regions, we may change the initial settings and user interface according to the requirements. Hence, for doing localization testing, we need expertise in the domain as well as in i18n engineering.

6. Conclusion

In this article, we learned the purpose of functional and non-functional testing and compared the two. We also learned various types of functional and non-functional testing. Lastly, we explored when to use the various types of functional and non-functional testing techniques.

Course – Black Friday 2025 – NPI EA (cat= Baeldung)
announcement - icon

Yes, we're now running our Black Friday Sale. All Access and Pro are 33% off until 2nd December, 2025:

>> EXPLORE ACCESS NOW

Partner – Orkes – NPI EA (cat = Spring)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

Partner – Orkes – NPI EA (tag = Microservices)
announcement - icon

Modern software architecture is often broken. Slow delivery leads to missed opportunities, innovation is stalled due to architectural complexities, and engineering resources are exceedingly expensive.

Orkes is the leading workflow orchestration platform built to enable teams to transform the way they develop, connect, and deploy applications, microservices, AI agents, and more.

With Orkes Conductor managed through Orkes Cloud, developers can focus on building mission critical applications without worrying about infrastructure maintenance to meet goals and, simply put, taking new products live faster and reducing total cost of ownership.

Try a 14-Day Free Trial of Orkes Conductor today.

eBook – HTTP Client – NPI EA (cat=HTTP Client-Side)
announcement - icon

The Apache HTTP Client is a very robust library, suitable for both simple and advanced use cases when testing HTTP endpoints. Check out our guide covering basic request and response handling, as well as security, cookies, timeouts, and more:

>> Download the eBook

eBook – Java Concurrency – NPI EA (cat=Java Concurrency)
announcement - icon

Handling concurrency in an application can be a tricky process with many potential pitfalls. A solid grasp of the fundamentals will go a long way to help minimize these issues.

Get started with understanding multi-threaded applications with our Java Concurrency guide:

>> Download the eBook

eBook – Java Streams – NPI EA (cat=Java Streams)
announcement - icon

Since its introduction in Java 8, the Stream API has become a staple of Java development. The basic operations like iterating, filtering, mapping sequences of elements are deceptively simple to use.

But these can also be overused and fall into some common pitfalls.

To get a better understanding on how Streams work and how to combine them with other language features, check out our guide to Java Streams:

>> Join Pro and download the eBook

eBook – Persistence – NPI EA (cat=Persistence)
announcement - icon

Working on getting your persistence layer right with Spring?

Explore the eBook

Course – LS – NPI EA (cat=REST)

announcement - icon

Get started with Spring Boot and with core Spring, through the Learn Spring course:

>> CHECK OUT THE COURSE

Partner – Moderne – NPI EA (tag=Refactoring)
announcement - icon

Modern Java teams move fast — but codebases don’t always keep up. Frameworks change, dependencies drift, and tech debt builds until it starts to drag on delivery. OpenRewrite was built to fix that: an open-source refactoring engine that automates repetitive code changes while keeping developer intent intact.

The monthly training series, led by the creators and maintainers of OpenRewrite at Moderne, walks through real-world migrations and modernization patterns. Whether you’re new to recipes or ready to write your own, you’ll learn practical ways to refactor safely and at scale.

If you’ve ever wished refactoring felt as natural — and as fast — as writing code, this is a good place to start.

Course – Black Friday 2025 – NPI (All)
announcement - icon

Yes, we're now running our Black Friday Sale. All Access and Pro are 33% off until 2nd December, 2025:

>> EXPLORE ACCESS NOW

eBook Jackson – NPI EA – 3 (cat = Jackson)