Welcome!

@DevOpsSummit Authors: Liz McMillan, Yeshim Deniz, Elizabeth White, Pat Romanski, Zakia Bouachraoui

Related Topics: @DevOpsSummit, Linux Containers, Containers Expo Blog

@DevOpsSummit: Blog Feed Post

What Is Functional Testing? | @DevOpsSummit #DevOps #ContinuousTesting

Types, tips, limitations and more

What is Functional Testing? Types, Tips, Limitations & More
By Angela Stringfellow

A Definition of Functional Testing
Functional testing is a type of software testing that evaluates the performance of individual functions of a software application. The purpose of functional testing is to ensure that the application and all of its individual functions work as they should in the real world and meet all requirements and specifications. It's a valuable testing method for verifying that the output provided by each application function is in line with what's expected.

How Functional Testing Works
Functional testing is typically conducted by providing an appropriate input to the function being tested (in line with the typical inputs expected in real-world use cases), and then verifying the result by comparing it to the expected result. This type of testing can answer questions about the capabilities of a software application, such as what actions users are able to perform.

It's typically approached from one of two perspectives:

  • Requirements-focused testing, which prioritizes requirements based on risk criteria in order to evaluate the most critical and important features and functions first.
  • Business-process-focused testing, which relies on knowledge of end-user business requirements to evaluate an application's performance in the context of typical use cases.

There are several specific testing techniques. The two primary techniques include white box testing and black box testing, although there are additional techniques including:

  • Smoke testing
  • Unit testing
  • User acceptance testing
  • Integration testing
  • Interface testing
  • System testing
  • Localization testing
  • Regression testing
  • Globalization testing

Benefits of Functional Testing
Functional testing is an essential step in evaluating the performance of a software application before it's delivered for real-world use. Releasing applications with serious functional shortcomings can create disastrous consequences for end users relying on a software application to meet their use requirements.

In the best-case scenario, an application that doesn't work as it should is a frustration for end users. But for applications designed for business use, the consequences can be serious. Many industries have specific compliance requirements and regulatory guidelines that must be met, and applications that fall short of meeting these requirements almost always result in negative outcomes for the user.

For instance, a payroll application that fails to accurately account for the various taxes the business is responsible for calculating and remitting can lead to underpayments, penalties, and even fines from regulatory agencies. From a minor inconvenience to a serious disaster, there are always consequences for applications that don't function properly, and functional testing is one of the most effective ways to avoid these negative outcomes.

Because functional testing is carried out with the end user's requirements in mind, it aids developers in creating test scenarios that closely mimic real-world use scenarios. The more specific the user specifications, the better functional testing works to ensure that these expectations are met by informing the design of appropriate functional tests. Ultimately, the effectiveness of the testing hinges on knowledge of user requirements coupled with savvy test design.

Limitations of Functional Testing
Functional testing focuses on how well an application does what it's supposed to do, although it doesn't include other performance issues that aren't directly related to its functions but are nonetheless crucial factors to consider when determining whether an application is ready to be deployed. Typically, evaluation and usability factors not falling under the functional testing umbrella are categorized as "non-functional testing," which may include:

  • Security testing
  • Usability testing
  • Operational readiness testing
  • Endurance testing
  • Interoperability testing
  • Maintainability testing
  • Ergonomics testing
  • Availability testing
  • Recoverability testing
  • And others

Essentially, functional testing encompasses the key components of an application's design, ensuring that each function does what it's expected to do based on the application's design and client or end user requirements, but it fails to account for other variables such as how long it takes specific functions to execute, security, and other concerns also of vital importance to most users. So while functional testing is an integral testing process, it alone doesn't ensure that an application is ready for real-world use.

According to Software Testing Fundamentals, other disadvantages of functional testing include the possibility of missing logical errors in applications and the high probability of conducting redundant testing. Functional testing also requires an in-depth knowledge of user requirements, which may not always be clear or readily available, and designing context-specific tests to evaluate functional performance can be time-consuming.

Best Practices for Functional Testing
Functional testing can be a lengthy process, and your timeline can change depending on whether functional shortcomings are identified in the testing process. That means you'll need to be flexible so that your team can easily adapt to changing demands.

Additionally, most software applications have a plethora of individual functions, so having an established system and defined criteria to help you prioritize tests will help your team to stay focused and ensure that the most critical functions are evaluated first. You'll also want to make sure that your testing plan covers all the primary business use cases - evaluating the functions through a typical process flow, start to finish. In fact, it's a good idea to craft user stories before you begin the functional testing process to provide guidance and context as you plan and design appropriate tests.

It's also a sound practice to ensure that all tests can be traced readily to application/user requirements and any bugs identified. Without a map that traces requirements, tests, and bugs, it's next to impossible to ensure that you've rectified every identified issue before release.

Some testers prefer to conduct functional and performance testing simultaneously, which can provide greater context for functional testing techniques. Plus, performance can actually impact testing in some cases, so it's pretty crucial to ensure that both function and performance are in sync and that one isn't hindering the other. Finally, maintaining functional and performance testing as two separate deliverables can, at times, result in performance testing falling lower on the priority scale, leading to assumptions that if the functions work, performance should follow - which isn't always the case.

To make the best use of functional testing efforts, map functions to business requirements, prioritize individual tests accordingly and maintain flexibility to adapt to your sure-to-change needs as functional issues are discovered. Above all, never limit testing to functional testing only. Failing to address performance issues can make or break the success of your application, with serious ramifications for end users if your application doesn't perform to expectations.

The post What is Functional Testing? Types, Tips, Limitations & More appeared first on Stackify.

Read the original blog entry...

More Stories By Stackify Blog

Stackify offers the only developers-friendly solution that fully integrates error and log management with application performance monitoring and management. Allowing you to easily isolate issues, identify what needs to be fixed quicker and focus your efforts – Support less, Code more. Stackify provides software developers, operations and support managers with an innovative cloud based solution that gives them DevOps insight and allows them to monitor, detect and resolve application issues before they affect the business to ensure a better end user experience. Start your free trial now stackify.com

@DevOpsSummit Stories
DXWordEXPO New York 2018, colocated with CloudEXPO New York 2018 will be held November 11-13, 2018, in New York City and will bring together Cloud Computing, FinTech and Blockchain, Digital Transformation, Big Data, Internet of Things, DevOps, AI, Machine Learning and WebRTC to one location.
In this presentation, you will learn first hand what works and what doesn't while architecting and deploying OpenStack. Some of the topics will include:- best practices for creating repeatable deployments of OpenStack- multi-site considerations- how to customize OpenStack to integrate with your existing systems and security best practices.
Most DevOps journeys involve several phases of maturity. Research shows that the inflection point where organizations begin to see maximum value is when they implement tight integration deploying their code to their infrastructure. Success at this level is the last barrier to at-will deployment. Storage, for instance, is more capable than where we read and write data. In his session at @DevOpsSummit at 20th Cloud Expo, Josh Atwell, a Developer Advocate for NetApp, will discuss the role and value extensible storage infrastructure has in accelerating software development activities, improve code quality, reveal multiple deployment options through automated testing, and support continuous integration efforts. All this will be described using tools common in DevOps organizations.
Modern software design has fundamentally changed how we manage applications, causing many to turn to containers as the new virtual machine for resource management. As container adoption grows beyond stateless applications to stateful workloads, the need for persistent storage is foundational - something customers routinely cite as a top pain point. In his session at @DevOpsSummit at 21st Cloud Expo, Bill Borsari, Head of Systems Engineering at Datera, explored how organizations can reap the benefits of the cloud without losing performance as containers become the new paradigm.
The current age of digital transformation means that IT organizations must adapt their toolset to cover all digital experiences, beyond just the end users’. Today’s businesses can no longer focus solely on the digital interactions they manage with employees or customers; they must now contend with non-traditional factors. Whether it's the power of brand to make or break a company, the need to monitor across all locations 24/7, or the ability to proactively resolve issues, companies must adapt to the new world.