Managers of teams testing and lead tester often develop than necessary
working documents and artifacts, documents a higher level, describing the
general approaches to system testing and development of the software testing services process in
the project. On one of these documents, artifacts, and will be discussed below.
Many of us have been
developing a testing strategy, particularly often, such artifacts
are interested in the customers of major projects, the development period which
exceeds one year. Let’s try to clarify the concept of testing strategy and
to answer some questions dismantling the few examples in practice.
Terminology
STRATEGY - the art of
leadership, a general plan of this work, based on the current reality at the
present stage of development.
There is another
option, with a military slant:
The science of
warfare, the art of warfare. The overall plan of warfare, military operations.
I cite two
definitions, although the first to accurately describe what actually we are
dealing with. And although our everyday lives can be seen as waging war for the
quality of the product, as we shall see anything "military" in the
testing strategy is just not.
Definition
Testing Strategy - a plan of
work on testing the system or module-specific functionality and dependencies
with other components of systems and platforms. The strategy defines the types
of tests that need to perform for a given functional system includes a
description of the approaches in terms of testing purposes, and may specify or
describe the requirements necessary to conduct the test tools and
infrastructure.
It turns a little
scary? Let’s try to split into more detailed parts using, for example, the
breakdown of the issues that the strategy meets the test.
The strategy responds
to the questions:
·
How, how testing will answer that this functionality works?
·
What should be done and what use of the tools for achieving the goals of
testing?
·
When a specific functionality will be tested and therefore when to
expect the results?
As an additional
problem to be solved in the process of understanding the strategy of testing,
we can consider the problem of minimizing the cost of testing. Below is an
example we analyze a specific case, but now just confine ourselves to stating
the fact.
We see that the
testing strategy, as an artifact, fits well into the test plan. Templates, test
plans offered by different methodologies, often just one of the sections
include a description of a testing strategy or include a description of the
strategy in points of the plan is responsible for testing of specific parts of
the functional. For example, the pattern Rational Unified Process defines
testing strategy as the biggest section of the test plan.
That the
ideologically more correct: to provide a strategy for the entire project, or to
develop specific approaches for each area of ??testing depends on the project.
In modern distributed systems with several types of jobs and system agents that
also act as users of the system, allocate logical strategy for each set of
functional test: the module or subsystem. For simpler applications you can
offer testing of all applications on a single strategy.
The customer often
wants to control the testing process and see the understanding of the problem
of testing for implementing the project. For him, testing strategy is less
detailed document, the vision (vision) of how the system will be tested during
development.
Practice
In order to move from
theory to practical application, try to develop a testing strategy for the two
different software solutions: desktop applications, working in single user mode
and client-server system of average complexity.
Parsed following
examples use a simplified model of the application in the context of
interaction between application components and systems, as well as the internal
logic of the application.
As a simple desktop
application, take, for example, a new scientific calculator.
Scientific calculator
The whole set of
functions that applications can be divided into two logical groups: the logic
of engineering operations and interaction with the operating system (allocating
and freeing resources, the use of system components interact with the system
clipboard, etc.).
Of the requirements
for the application to provide support for the 5 operating systems in 4 main
languages ??of localization and implementation, for example, 50 engineering
functions, each of which is clearly covered by one test. Tests, of course,
include checking test cases, checking the boundary values, etc. In addition,
the application can perform, for example, 5 functions in the interaction with
the system (running an application, exit the application, save results to a
file, work with clipboard, etc.).
Full coverage of the
requirements specifies a set of 5 * 4 * (50 +5) = 1100 test runs. So how to
perform all operations available applications for all supported operating
systems and language localization.
For example, as you
know, picked up not by accident. Let’s try to illustrate the testing strategy
in action.
We return to the
breakdown of the application functionality into logical groups. There is a set
of engineering functionality is system interaction.
It is obvious that
the work and the validity of the calculations, implemented within an
application and do not use external components are not dependent on the
localization of the system. Moreover, if the application is successfully
running under a supported operating system and basic functionality for working
with engineering functions work, then having a successful run all the
engineering tests with the analysis of test results, you can talk about the
performance of engineering functions under all supported operating systems and
localization.
Thus, to guarantee
the availability of engineering operations, the calculator can be run of 50
tests under the same environment.
Interaction with the
system, starting, stopping the application, work with the buffer, writing the
results to a file in this example, delivers a 5 tests. We have 5 versions of
the operating system and 4 localization, which gives 20 combinations and 20 * 5
= 100 test runs.
Thus, for this
example, the full scope of functionality is determined by 50 +100 = 150 test
runs, including 50 tests of engineering functions are performed under the same
configuration and 5 tests of system functions under the 1920 test environment.
Testing strategy in action
In this case, we
figured out that it was necessary to test, defined the requirements for tests,
conducted a simple analysis of test conditions and dependencies. In essence,
defined the strategy: "how" and "what" test. Develop tests
can be in parallel to develop a strategy that in any case, the design and
development of test strategy is not a substitute.
Full coverage of the
requirements specifies 1100 test runs. Parsing functionality and definition of
the required set of testing gives the output from the strategy of testing 150
test runs.
For this particular
example, the development of a testing strategy provides a direct benefit in the
cost of testing at 1100/150 = 7, (3) times. As you can see, it makes sense. Try
to consider steps for developing a testing strategy for more complex
applications - distributed client-server system.
Distributed system
Approach in
developing a testing strategy for distributed systems in much the same
developing a testing strategy for a desktop calculator. For example, similar to
the previous example, we need to identify the main areas that can be tested
separately. To test the complex systems, also useful to distinguish not only,
so to speak, the operational steps for testing (that is, what, how and where to
be tested), but also to analyze the tactical steps for testing with the
development of the system over time.
We return to a
strategy of testing complex distributed systems. Carry out an indicative
breakdown of functionality to the test area in order to understand how to plan
testing and minimize costs.
Suppose that the
system has a "thick client, application server and database server, which
can operate on different physical platforms. The basic logic input / output
validation of values ??and the construction of printed forms focus on the
client, application server provides the presentation level and the necessary
service logic (automatic data archiving, alerting users about abnormal
situations, etc.), and the database provides the addition of direct storage
certain part of the data sold, for example, in the form of packages of
functions. Nothing particularly difficult to be selected and let the
description does not scare some over action - we just outlined the problem for
testing.
In order to not
overly complicate the problem, restrict the range of test environments by fixed
configurations of the database server (often in the industrial exploitation of
a dedicated server or a cluster solution for databases) and application server.
The client application provides the under with 2 operating systems and are
rigidly fixed configuration of the operating system components (for example, on
all user machines are regularly installed all the updates and service packs + a
set of software on client machines is strictly controlled by the internal IT
policy).
Volume problems
Try to describe the
problem in terms of test scenarios, then there will be used to assess the
complexity of the problem or part of the number of tests required for testing
the functional.
Client: 50 tests to
work with the data (input forms, data calculation, based on data stored in the
dictionaries, search data, editing dictionaries, etc.), 10 tests to work with
the printed forms (forming periods of sampling, the choice of types of records,
print or export to a predefined list formats, etc.). Let the testing of the
system is required, as in the previous case, 5 more tests. By analogy with the
previous example we can get the following picture: having 2 environment, we
obtain (5 +10) * 2 = 30 test runs to verify the functionality associated with
the operating system (including functional printing and exporting in which to create
new files in the filesystem) . We assume that the 50 test runs of implementing
validation logic of the data can be performed under the same environment.
Outcome - 80 test runs to test the client system.
Uniting under the
example in testing the functionality of the application server and database.
Let the application server implements the 20 teams for data processing and user
sessions (excluding the operation of system connection pooling, compression
functions transferred over the network traffic, etc.). The database server
implements the 1910 system for data archiving operations, construction, usage
statistics report, and several more operations. The general sense is that we
have a finite set of test operations, and as the configuration defined in advance,
we can talk about the final set of tests that must be done that would test the
server functionality of the system. Outcome - 30 tests on the server side. Note
that in this example, we do not touch the load carrying component testing: we
are talking only about the functional testing services.
More interesting from
the standpoint of developing a testing strategy in this example, will factor in
the development of the whole system: the creation of new modules in the client
application or entry into a system of new server agents.
What should I
consider developing a testing strategy for complex distributed or client-server
systems. One of the main factors influencing the strategy of testing (after
separation of the test areas and an understanding of test problems in each
area), is an analysis of the schedule the appearance of new functionality in
the system, and often plan to develop designs and specifications for the
modules and system components (from This depends on the task of design tests).
A clear project plan, divided by tasks of planning, design, design and
implementation of testing gives the manager the foundation needed to solve the
problem, which raises the question of "when", ie issues related to
test planning. Although the temporary assessment and evaluation of complexity
of the problem logically extend beyond the definition of the strategy and are
planning to direct testing, it is understood the application / system in the
context of its development over the project is a strategic component of the
test plan.
Thus, developing a
testing strategy for small applications, and serious enough systems similar to
the stage of the selection of test areas and understand the dependencies of the
application functionality from external modules and components. Vary the
strategy depending on the type of application under test can in part understand
the development of the system over time, since large systems are often
developed in several stages and are characterized by large in comparison with
desktop applications, a set of functionality that requires Retesting in each
new version. Understanding of what exactly should be tested as how specific
functionality will be tested, that is the result of satisfying the objectives
of testing is often the result of the development strategy of testing.
Conclusions
That in general gives
a strategy of testing? Analysis of test tasks on components, the selection of
test areas and, ultimately, a more complete understanding of the test tasks in
a specific project. As we have seen in testing engineering calculator, understanding
the problem allows us to separate the functionality of the application under
test or system areas that can be tested independently, thereby reducing (and
sometimes quite significant!) The costs of testing.
Let us return to the
definition of strategy: "a general plan of work based on the current
reality at this stage of development" - is applicable to the testing
strategy is understanding "what" "where" (in what
environment) and "when" will be tested. The answer to the question
"how" we can give an analysis of system requirements and design
tests. Agree that having a plan before the development of functional and can be
confident enough to schedule tasks for testing, prepare the necessary data and
test environment. At any given time, the head, relying on a strategy, he knows
where he is and where to go next. Planning a test, the head of department or
lead tester does not begin to understand the system and directly engaged in
planning, resource allocation and deadlines for specific tasks.
Visit: Software testing companies
nice post..Software Testing Training in Chennai | Certification | Online Courses
ReplyDeleteSoftware Testing Training in Chennai | Certification | Online Training Course | Software Testing Training in Bangalore | Certification | Online Training Course | Software Testing Training in Hyderabad | Certification | Online Training Course | Software Testing Training in Coimbatore | Certification | Online Training Course | Software Testing Training in Online | Certification | Online Training Course
Thank you for the nice article here. Really nice and keep update to explore more gaming tips and ideas.
ReplyDeleteSelenium Training in Chennai | Certification | Online Courses
selenium training in chennai
selenium training in chennai
selenium online training in chennai
selenium training in bangalore
selenium training in hyderabad
selenium training in coimbatore
selenium online training