Holistic App Testing Strategies Ebook
Holistic App Testing Strategies Ebook
HOLISTIC APP
TESTING STRATEGIES
One of the few constants in software development is change. Languages, technologies and
methodologies are in constant flux. No matter how fast developers run, it can seem that
they’re only going backward.
A software engineering requirement that remains constant — and the one thing developers
are truly gauged on — is the quality of the work they produce. No matter what kind of fancy
technology, algorithm or language you use, the code must ultimately work.
Thus, software testing is one of the most critical development tasks, as it ensures the
application performs as expected before release to end users. A buggy application will,
at best, cost much more than was budgeted; at worst, a bad application can ruin your
reputation and alienate customers.
Testing is all about ensuring an application fulfills its requirements and provides a great user
experience. Opinions on the best software testing approach vary widely:
» Software developers generally believe that automated unit testing holds the key to
great quality.
» QA engineers tend to prefer a combination of manual test execution and exploratory
testing, along with some automated regression tests thrown into the mix.
» Project managers generally espouse automated integration testing as the only
path to perfect software quality.
In fact, the correct answer is often a combination of these methods. Thoroughly testing an
app demands more than one approach. Manual testing (including exploratory testing and
test case execution) and automated unit and integration testing all play an important role in
a holistic test strategy.
When choosing the correct testing strategy, first consider your testing velocity. If reducing
time to market is a crucial factor in your holistic test strategy, a well-honed automation
www.applause.com Page 2 of 12
Holistic App Testing Strategies
approach can help. Unfortunately, automation is not fool-proof; it simply cannot cover
every aspect of an app and requires ongoing adjustments to accommodate new features
or changes to existing ones. Automation can, however, save time when applied to stable,
repeatable test cases.
Another question to ask when choosing a testing strategy: are you trying to secure code
coverage or test coverage? QA teams often conflate the two. Understanding how to look
at these two areas separately will go a long way in creating the strongest holistic testing
plan possible.
Examine different testing strategies, as well as how they relate to coverage and velocity.
This insight will help you create the best strategy for your organization and applications: a
holistic software testing approach that ensures the right coverage and balance.
Definition
The percentage of code exercised while the How much the overall test plan ensures
application is running. each application feature and behavior
performs as expected.
Goal
Raise the percentage of code tested Test each feature and behavior, including
during execution to uncover as many bugs edge cases, to learn how well the written
as possible. Code coverage metrics help code adheres to application requirements.
monitor automated tests.
Subtypes
Statement coverage, condition coverage, None.
branch coverage, toggle coverage and
finite-state machine coverage.
www.applause.com Page 3 of 12
Holistic App Testing Strategies
Code coverage is the percentage of code complex business logic or more integrated
paths covered by testing. Most often, systems a task involves, the harder it is to
code coverage uses automated testing in automate — sometimes it just cannot be
the form of developer unit tests. Common done. Automating simple, repetitive tests
metrics in coverage reports include: makes the most sense.
www.applause.com Page 4 of 12
Holistic App Testing Strategies
seeing if the application meets a rigid set of specifications. For example, an organization
might add a new feature on a checkout page and deploy a team of testers to go through a
checkout cycle to confirm everything works.
Automated testing, another common approach, uses the power of machines to execute
a test script, then compares the results to expected output. After all automated tests are
complete, the results are compiled into a report which shows whether each test passes or
fails, and describes the failure reason.
User acceptance testing (UAT) is a testing approach that relies on application users
and other authorized parties. These users confirm whether software provides the
anticipated results and follows the expected business procedures or specifications. Even
if the application passes manual and automated tests, it might not meet user needs and
expectations. In many cases, UAT executes in a production-like environment, which exposes
environmental issues other tests miss.
Another QA approach is non-functional testing, which tests features like security, usability
and accessibility. The organization’s needs dictate which features call for non-functional
tests and the frequency of these tests. For example, you should test accessibility regularly,
but not necessarily with every release. However, in financial services, frequent security
testing is essential.
Refer to the image below to determine the types of testing best suited for manual or
automated assessment:
User
Functional Unit Integration Smoke System Regression Exploratory Acceptance Production
Test Types Testing Testing Testing Testing Testing Testing Testing Testing
www.applause.com Page 5 of 12
Holistic App Testing Strategies
Let’s explore how to best combine testing approaches. First, let’s review how each testing
type is used, with examples:
www.applause.com Page 6 of 12
What Is the Right Test Automation Percentage?
Test case automation has many benefits. With automation, you can execute many test
cases using minimal manpower with repeatable results, free from human error — as long
as the scripts are accurate and maintained. Test automation has its drawbacks, however:
writing and maintaining automated test scripts can be time-consuming, especially when the
automation involves integration with other applications.
While each project is different, automated testing must balance defect removal with
development efficiency. If automation requires more work to build, update and maintain than
manual efforts, test automation is not the best approach. Set a goal, such as automating 30%
to 50% of the total project effort.
A developer can and should take advantage of automated testing while coding an
application or feature. Automated unit testing checks each unit of code to assure
correctness. With unit test automation, the developer can earn a high degree of confidence
that the code works as expected without the need to run the entire application. Unit tests
also enable other programmers to corroborate that the functionality remains intact. Run
automated unit tests during the build process for confidence that the entire unit test suite
will pass before it is released to a QA or production environment.
www.applause.com Page 7 of 12
Holistic App Testing Strategies
www.applause.com Page 8 of 12
Holistic App Testing Strategies
The chart below shows how the combination of an organization’s maturity, release velocity
and product value impact the percentage of exploratory, manual and automated test cases.
As the organization and product change, so will the mix of test methodologies that provide
the greatest value.
Exploratory
Scope of Testing
Automation
The first product release should have a high percentage of exploratory testing, which
ensures all features and edge cases get thoroughly vetted. The first release will likely also
have a high percentage of manual test case execution and little to no automation.
As a product matures, most organizations automate more test cases, and the percentage
of manual and exploratory tests decreases. That said, you should maintain a small set of
manual test case executions for portions of the application where automation is too costly or
cumbersome. Likewise, keep a small percentage of time for exploratory testing, because you
cannot predict how everything will work in a real-world environment.
www.applause.com Page 9 of 12
Holistic App Testing Strategies
Deciding which option is better, an Automated tests are useful for regression
automated or manual test, greatly depends testing. Consider automating test cases
on the test complexity. Consider how much where part of your application will remain
time and effort it will take to automate constant and any change that occurs
the test versus executing manually. Also, should be considered an error. The more
think about the likelihood that the test will stable automated regression tests you
change over time. Tests that are unlikely have, the more confident you can feel that
to change, such as those that don’t require changes did not break existing functionality
feedback from users, are better candidates — and the quicker you can get to market.
for automation.
So what is the right mix of the various
Use caution when automating tests that are test methods? Choose a blend of QA
apt to change over time, as automated tests strategies where test types complement
are coded scripts that you must maintain. each other based on the given application.
An automated test framework typically Automate as much as you can to quickly
reads a script coded in the language see if a code change breaks existing
recognized by the test harness. Not only functionality, expedite time to market and
does the script need to be coded, but the reduce costs by running more tests faster.
output of the test must be provided for Apply test automation for repeatable
the testing engine to validate results using application features that rarely change.
known outcomes. The larger the test suite, When automation does not fit, implement
the more scripts and staged results to manual tests with very well-defined test
maintain. cases. Make sure to include a combination
of exploratory and user acceptance tests to
For example, let’s say an automated test
stress new features and ensure they meet
suite has 100 tests for a given application.
user requirements. Each test type has its
The application writes to three tables in
own purpose — and each one, when used
a database, and the values for all three
correctly, complements other types of
tables need verification. This translates
testing.
into 100 test scripts and 300 staged pieces
of output to verify — 3 tables multiplied
by 100 tests. If the application changes
how it executes, it also changes the data
written to the database tables. That means
the entire automated test suite would
need to be updated. If changing each test
www.applause.com Page 10 of 12
Holistic App Testing Strategies
Key Takeaways
A holistic testing strategy incorporates both code coverage and test coverage, as well as
multiple testing approaches, including manual, automated, exploratory, user acceptance and
non-functional. Each type of test fulfills a different role in assuring product quality. Combine
code coverage with test coverage to gain confidence that you have exercised a good
percentage of the code and thoroughly vetted application features. Combine automation
with manual tests to guarantee that the application was sufficiently regression tested and to
ensure new features meet your end users’ needs and expectations.
The types of tests you should prioritize can vary dramatically between different
organizations and products. Put some deep thought into the business, application and users
to find your ideal balance, understanding that your test strategy will evolve over time. For
more information about holistic testing, explore the Applause website.
About Applause
Applause is the worldwide leader in crowdtesting and digital quality. Software is at the heart
of how all brands engage users, and digital experiences must work flawlessly everywhere.
With highly vetted testers available on-demand around the globe, Applause provides brands
with a full suite of testing and feedback capabilities. This approach drastically improves
testing coverage, eliminates the limitations of offshoring and traditional QA labs, and speeds
time-to-market for websites, mobile apps, IoT, and in-store experiences.
Thousands of leading companies — including Ford, Fox, Google, and Dow Jones — rely on
Applause as a best practice to deliver high-quality digital experiences that customers love.