Manual testing is still very important and widespread because some kinds of tests cannot be
automated (e.g., usability testing can be only automated partially).
Moreover, some complicated faults are found by means of manual testing techniques only.
Automation is realized with the help of special testing tools developed by such leading
manufacturers as IBM (Rational Robot, Rational Performance Tester),
Mercury Interactive (Quick Test Professional, LoadRunner),
Segue Software (Silk Software), AutomatedQA (TestComplete), and others
(see also Software testing technologies, tools).
Sometimes it is necessary to use specialized automation tools, for example, for unit
or code style testing.
|
- Black-box testing
Black-box testing implies that a tester doesn't know how an application is designed
at the code level, i.e., it involves dynamic testing of compiled applications.
The tester interacts with the software system via its interface and analyzes the
application reaction. Therefore black-box testing is one of the most popular testing types
as:
1) It doesn't require access to the code, algorithms, and internal data
structure (all of them can be a closely guarded trade secret of a software development
company);
2) It gives an opportunity to test software products from the point of view of the
end-user.
- White-box testing (also called glass-box or clear box testing)
In this case a tester knows the internal program structure and its code. As a result,
the tester can execute each program statement and function; check each intended error handling,
etc. This testing involves source code reviews, walkthroughs, as well as
design and execution of tests based on the access to the program code.
White-box testing requires deeper knowledge of programming languages and technologies
than black-box testing.
|
Here are some of the white-box testing activities:
- Code testing
The task of code testing is to test program classes, functions, modules as separate
code units and check their interaction.
As a rule, it is accompanied by development of special test classes, start functions,
test data sets (including illegal/invalid data), design and execution of
appropriate test cases.
- Static testing
Static testing takes place without running an application or its modules. It can include
source code reviews, code inspections, and software walkthroughs.
- Code style testing
This type of testing
involves the code check-up for accordance with development standards:
the rules of code comments use; variables, classes, functions naming;
the maximum line length; separation symbols order; tabling terms on
a new line, etc. There are special tools for code style testing automation.
|
- Functional testing
It is testing of application functionality and examination of its compliance with
the software requirements specification (SRS).
- Regression testing
The main aim of this type of testing is to make sure that the bugs revealed in previous
tests are fixed properly and no new bugs appeared during such bug fixing.
If possible, it's recommended to automate regression testing, as the number
of software development / bug fixing iterations is usually large.
- Performance testing
Test of application productivity and its conformity to requirements.
It is especially important for complex Web applications
and mobile software. For example, graphics processing can be crucial on mobile devices,
so, it is necessary to check if the application works properly and, e.g., doesn't lead to
display "freezing". Special tools allow getting productivity metrics.
One of the subtypes of this testing is benchmark testing.
- Load testing
It tests system work under loading. This type of testing is very important for client-server
systems including Web application (e-Communities, e-Auctions, etc.), ERP, CRM and other
business systems with numerous concurrent users.
- Stress testing
Stress testing examines system behavior in unusual ("stress", or beyond the bounds
of normal circumstances) situations.
E.g., a system behavior under heavy loading, system crash, and lack of memory or hard disk
space can be considered as a stress situation. Fool-proof testing is another case
which is useful for GUI systems, especially if they are oriented at a wide circle
of users.
- Boundary testing
It tests correctness of application work when entering the boundary values of input data
as well as proper processing of over-boundary values. For example, for a percent entry field
boundary checks can be 0% processing (it should be processed correctly) and -1% treatment
(it should not be allowed to be entered). Boundary values can
be much more complex and demand much more complex boundary testing.
- Usability testing
This is one of the most complex and interesing types of testing. It is very important for all
sorts of application but it is the most acute for Web, mobile/wireless and
mobile internet systems
(see more in the article Mobile usability testing: problems and solutions).
- Configuration testing
It checks how an application works in different configuration environments (OSs,
DBMS, peripherals, mobile carriers, network capacity, hardware, etc.).
A typical example is a printing application: configuration testing would
include test printing on all printers available in the market or the most popular ones.
- Installation testing
One of the widespread problems with software products is the installation issue.
You might have faced a situation when after buying an application which you liked at your
friends' place; you had serious troubles with the installation. Installation testing is
aimed at making the installation as simple as possible, so that you understand what is
necessary to be done without quitting the installation process. This testing is often
combined with documentation testing.
- Documentation testing
The aim of this testing is to help in preparation of the cover documentation (User guide,
Installation guide, etc.) in as simple, precise and true way as possible.
- Security testing
Security testing is conducted to examine an application from the point of view of
possibility to affect the user safety and/or make his/her data available to third parties.
This testing is especially important for payment systems and other applications
which use critical data about a user.
|
- Unit, integration, system, and acceptance testing
These types of testing reflect application testing at the different levels: modules,
their interaction with each other and hardware (if necessary),
and a system in whole. Before a new function,
module, block is added to the system, it must work properly when tested separately
and pass unit tests successfully. Ideally, after integration of a module into a system,
there only appear bugs associated with the interaction of the system and the module.
Acceptance testing is performed by the producer, customer or end-user to validate
whether or not the product is ready to be launched into the market or accepted by the client.
- Exploratory and scripted testing
Scripted testing means that test cases are to be developed before tests execution
and some results (and/or system reaction) are expected to be shown. These test cases can
be designed by one
(usually more experienced) specialist and performed by another tester.
Exploratory testing doesn't imply test cases developed beforehand. A tester investigates
a system from different points of view and tries it in diverse situations using his/her
knowledge about this type of software products (e.g., their typical faults), experience
and intuition. The more the tester
understands the application and is proficient in testing, the better results will be
achieved. Exploratory testing allows finding defects which are difficult to reveal otherwise
and is very important when testing mission-critical systems.
- Verification and validation (V&V)
Verification and Validation is a set of activities aimed to check that the software meets
requirements specification and the intended purpose.
Verification examines that developers built the product right
and it matches the original design. Verification is based on static testing methods.
Validation tests that the developers built the right product which
satisfies the intended usage. It involves predominantly dynamic testing methods.
Usually V&V is a part of the general software testing process.
If V&V is performed by an external company or a group of specialists then
it is called Independent verification and validation (IV&V). In this case it can involve
special formal procedures and be used as a part of an independent quality examination and assessment
of the software developed by subcontractors, 3rd party providers, outsourcing
software development vendors, etc.
- Logo/compliance testing
The aim of this type of testing is to ensure that the application is developed in compliance
with certain standards and can be awarded with a corresponding compliance/quality logo.
How these testing techniques and testing activities are put into practice you
can find out in the section
Software testing methodology.
|
|
| Analytical Materials |
| About Ukraine | | Testing Inside | | Testing Process |
|
|