Software Testing
Renan F. Neto1, Alex S. Chervenski1Arthur P. Pugliero1Leandro R. Abi1,
Vinicius N. Machado1
1
Software Engineering - Federal University of Pampa (UNIPAMPA)
91.501-970–Alegrete–RS–Brasil
{[Link],[Link],vini-machado}@[Link],{ledz409,
arthurpugliero}@[Link]
Summary. This article describes the software testing context done through
a literature review of several authors. It describes the definition, application,
tools, benefits, and challenges of software testing in order to bring
clarity for people who do not have experience or knowledge of this
subject, prioritizing unit, system, and integration testing.
1. Introduction
Software is present in our lives with numerous purposes. Whether for
make a purchase until doing a simple calculation. But for them to work effectively
full, it is necessary that its functionalities have no errors.
Software testing aims to find and correct errors.
this paper addresses what they are, the tools and techniques that assist in
test performance, benefiting the quality of the program.
2. Definition
Testing is one of the stages of software development, and most of the time these
tests are done by the developers and users of the system, which serves only
to ensure that what was requested in the software has actually been implemented [Mauro Pezze,
Michal Young
But that is not the main objective of testing software, it's the whole process.
has three objectives:
Improve the software process (Prevention, detection, and removal of errors)
Evaluate the quality of the product (Quality goals)
Improve the quality and profitability of the product.
These three test objectives being carried out only by developers and
users are not enough, no matter how many software developers there are,
sometimes qualified professionals are needed who use methods and processes of
clearly defined testes.
The testing process should begin alongside the software development,
for the sooner a problem is detected, the cheaper it will be to resolve it, and the
the total cost of software becomes cheaper when well tested [Anderson Bastos].
2.1. Unit Test
Esse teste focaliza em verificar a menor unidade do projeto do software, ele testa cada
component and path to discover and show each system error. This test can
to be done in parallel for several components and tests [Pressman].
2.2. Integration test
The integration test is a technique to build the architecture of the software at the same time.
time in which he conducts tests to discover errors in the interfaces. The objective of this
the test is to build a program structure from the unit tests conducted
Pressman.
2.3. System test
Ele irá avaliar e testar o software em busca de erros como se fosse o usuário final do
software, it will check if the product is meeting its requirements [Arilo
Cláudio Dias Neto, Scientific article].
2.4. White box testing
Tests based on the source code of the system, with the aim of its lines
they have been executed at least once, ensuring their good operation [Pezzé
M., Young M., Software Testing and Analysis, 2007.
2.5. Black box testing
It is based on the inputs and outputs of the program, focusing on the requirements.
functionalities of the Software, leaving aside the internal details of the system. It is more effective
in finding faults that escape white box testing [Pezzé M., Young M., Testing
and software analysis, 2007.
3. Application
In this section, we will talk about some techniques and strategies that contribute to improvement.
software.
3.1 Unit Test
Process carried out in the development phase, where the smallest units are tested or
code snippets from the software, requiring that these units be ready in
some stage. There is an automation tool, known as [Link], that
this test facilitates [Molinari L., Software Testing, 2011].
This test brings some benefits [Molinari, 2010, p.62]:
Find problems earlier in the development process, avoiding loss.
of time and expenses beyond what was planned.
The unit test can be reused in another software.
3.2. Disintegration test
It begins after the completion of the unit test. Its purpose is to ensure that one or more
components that have already passed the unit test individually are
fulfilling its purposes in an integrated manner [Bastos L., Emerson R., Database
knowledge in Software testing, 2007.
3.3. System Test
It should begin immediately after the integration test. Its objective is to verify the
system behavior, if its functionalities are really in accordance with the
desired by the user. This test allows the application to be released for production, in
if it has been approved [Bastos L., Emerson R., Knowledge base in tests of
Software, 2007].
For this test to be successfully executed, some steps must be followed:
The test environment must be configured to be close to the production environment;
Evaluate the results and verify if the problems are truly defects;
Run the test again if the defect is fixed.
The types of tests are varied, each contributing to the improvement of
applications. It would be difficult to use them all, so each case should be analyzed:
If the focus of the application is the business, black box testing is used [Molinari L.
Software Testing, 2011.
If it is the interface, black box testing is used [Molinari L., Software Testing, 2011].
If it is a component, use White box [Molinari L., Software Testing,
2011.
Functional tests are usually cheaper to design and execute than cases.
of structural testing [Pezzé M., Young M., Software Testing and Analysis, 2007].
4. Tools
The application of testing criteria without the support of automated tools tends to be
an activity prone to errors and limited to very simple programs. Such an aspect
motivates the development of automated tools to assist in conducting
effective tests and the analysis of the results obtained.
The testing phase is an expensive part of the software process. Therefore, the
test tools are among the first software tools to be
developed, offering a variety of features and their use can reduce
significantly the costs of testing [Sommerville].
Two basic reasons for the importance of software test automation:
Growth of systems and applications (Increasingly Larger)
Increase in the complexity of systems (Increasingly larger) [Molinari L. 2008].
Table 1. Tools and applications
When used for testing large-scale systems, the tools must be
configured and adapted for the specific system to be tested. For example:
New tools can be added to test specific features
of the application and some existing testing tools may not be
necessary.
Scripts can be written for interface simulators such as the user and
defined standards for test data generators. Report formats
can also be defined.
Expected test result sets can be prepared manually.
if previous versions of the program are not available for
function as an oracle.
It is possible to write file comparators with specific purposes that
include knowledge of the test results structure in the file
[Molinari 2008].
4.1. Tool Problem
The choice of tools was poorly conducted so that the most
the adequate one was not chosen.
The implementation was poorly done: installations, licenses with issues, etc.
Pensou que a ferramenta seria a solução para tudo, mas não é.
The tool has many defects that have not been corrected.
5. Benefits
The greatest advantage of conducting software testing is to achieve lower costs for repairs and
save time with techniques during the process.
The software with tests performed during the program will be more
software quality, your budget margin will be closer to the forecast by the end
of the process of engineering a program [Mauro Pezzé, Michael Young, 2008].
The sooner the tests are implemented, the greater the benefits.
prevents bugs from spreading throughout the application and makes them easier to fix;
the test must be carried out throughout the software development process for greater
security that errors are not repeated during programming
Molinari, 2008
Software testing seeks to prove that the program does not work, and debugging.
must identify the causes that led the software to fail and indicate how it should be
corrected. There are people assigned to debug the errors, but recently they have
many efforts have been made, aiming at the technique to improve quality and the
productivity in this activity, such as better application of tests in
top of the program, gathering more accurate information about where failures occurred,
will leave with a more specific field of where errors should be debugged; what is a
great benefit as it allows to debug errors in tests more quickly and safely,
to ensure greater reliability in the program, which is the highest existing goal in
software development team [Márcio Eduardo Delamaro, José
Carlos Maldonado, Mario Jino, 2007.
5.1. Integration Test
The benefit in integration lies in the fact that the test can unify subsystems, and
to be able to control a collection of modules and watch the interactions, those that many times,
Due to their complexity, they hide flaws when alone, optimizing time.
[Mauro Pezzé, Michael Young, 2008].
5.2. System Test
In this test, as it is a test that will require the entire complexity of the program, it will indicate if the
even is with its subsystems in perfect conditions, where the benefit is found
to see if the program works perfectly as a whole, allowing for the creation of software
with greater quality security e greater to be ableof to maintenance
[Mauro Pezzé, Michael Young, 2008].
5.3. Unit Test
This test can be a very detailed test, due to the fact that it tests the system by its
smaller units, he is able to achieve greater success in the tests generating a large
benefit regarding the estimated time to make better use of it and also generating
a greater quality in the certainty of compiling errors with greater confidence
[Mauro Pezzé, Michael Young, 2008].
6. Challenges
6.1. Human factor
Nowadays, software is everywhere, from toys to weapons, from micro systems
companies to the banking system, however are written by human beings who can
to err.
And there is no denying it, as bugs always exist. But then, what to do about it?
Respect? Test. There is no way to keep an application free of flaws, what is done in the
the truth is to reduce the risk of such things happening.
For this, it must be taken into account that the human factor is a great challenge to be
overcome and therefore good management is necessary [Molinari L., 2011].
6.2. Management
In some organizations, the testing work is left to the programmers themselves.
which is actually wrong, due to the high workload it causes for the professional. Already
others have a specific team of testers, which also creates a certain "relaxation"
in the development team, which sometimes lets bugs slip that could be
corrected at the time of programming, delegating an additional function to the testers.
There are also cases of enmity between programmers and testers, as these
point out the failures that occur in programming. But it is up to the production manager
resolve these problems, as it is not possible to work as a team if these situations
occur [Molinari L., 2011].
6.3. Time available for testing
Something that greatly interferes with test performance is the time allotted to them. Many
managers prefer to spend most of their time developing, and the remaining time
they leave to test, when in fact, the tasks should be joint, since the tests
should be carried out as soon as possible to reduce costs with corrections and risks
but later. Thinking that the tests are superficial is a big mistake, because the good
the performance of these is vital for the quality of the application. To be able to carry out the tests
In an appropriate manner, even with little time available, some should be followed.
stages such as:
Definir o que deve ser testado na aplicação.
In what order of priority should it be tested.
Develop a test schedule.
Generate analysis of results for comparison and determination of test status
[Molinari L., 2011].
6.4 Know when the test ends
Muitas vezes implica em dúvidas, pois na maioria das vezes os testadores se deparam
with the expiration of the testing period, and they decide that this would be the moment to finish
lo.
But it should be taken into account that there are ways to circumvent this difficulty, using
for example, methods to determine if the software has been tested sufficiently, by
example:
average time between defects found.
The percentage that the test covered the application's code.
See the number of defects found that were not corrected.
Evaluate the risks between releasing the application still with missing fixes and not
free her [Bastos L., et al, 2007].
6.5 Costs in defect correction
The risks of releasing an application without having tested it thoroughly, given the deadlines
for the delivery are tight, they must be better understood according to a rule¹
described by Glenford Myers, in which he states that the sooner we discover
mistakes, the lower the correction costs will be.
Figure 1. Myers' Rule of 10
6.6. Test is forever
Understanding this, we must remember that software produced today may be
active in ten or fifteen years, when new systems and technologies will be in
vigor. In this view, how is it possible to calculate the defects that will arise over time in
that perhaps even the programming and testing tools themselves are becoming obsolete?
Thus, it is practically impossible to define the occurrence and costs of defects at
long years [Bastos L., et al, 2007].
7. Conclusion
Throughout the article, the importance of testing software was demonstrated.
presenting tools, applications and also the benefits and challenges of testing
software offers. The article simply but objectively shows some actions and
methods that should be adopted to make an application as free as possible from
errors, highlighting the processes that involve testing software.
8. References
Pressman .R.S. (2011) Engenharia de Software Uma Abordagem Profissional. McGraw
Hill Brazil.
Molinari L. (2008) Testes Funcionais de Software. Visual Books.
Sommerville I. (2007) Software Engineering. Pearson Education.
Molinari L. (2011) Software Testing, 4th edition, Érica Publishing.
Molinari L. (2010) Inovação e Automoção de testes de Software, Editora Érica, 1ª
edition.
Molinari, L. (2011), Software testing, producing better and more reliable systems,
editor Erica.
Bastos, A. and Rios, E. and Cristalli, R. and Moreira, T. (2012), Knowledge Base
in software testing, publisher Martins.
Delamaro, M. E. and Maldonado, J. C. and Jino, M. (2007), Introduction to testing
software, Campus publisher.
Pezzè, M. and Young, M. (2008), Software testing and analysis, processes, principles and
techniques, Artmed publisher.
Arilo C., Introduction to Software Testing, [Link]