Software Test Automation Problem
Software development is not possible without tests and quality
assurance. Software engineers use various testing methods to perform control
of their job. There is a number of approaches, called automated testing,
which involves methods that don't require human action.
Software test automation involves
automating a manual testing process that uses a formalized testing
procedure. Test automation involves the use of software in order to control
the execution of the tests, setting up the pre-conditions for the test,
comparisons of the predicted outcomes to the actual outcomes and many more
test reporting functions.
A number of test automation tools are now available which allow testers to
test the codes in less time. These tools also provide a record and playback
feature which allow users to record the actions and then replay them a
number of times to test the codes. All this sounds simple and easy but,
reliance on test automation tools can result in a number of problems.
One of the problems associated with test automation is the cost. Automated
testing is an expensive process as special tools are required for performing
the tests, creating test cases automatically and even for making
comparisons. In addition to this, software test automation is not a
replacement for the manual testing as it not easy to automate complex tests.
Automated testing saves time but manual testing is still required for
carrying out complex tests and so, automated testing seems to be an addition
to the testing process and not the replacement. Test automation requires more resources when compared to other testing
methods. Sometimes, it is not easy to decide the correct tool required for
the testing and sometimes it is not easy to maintain the test execution.
Skilled people are required to carry out automated testing and it can take
some good amount of time to train the testers. Being an expensive process,
an automated test needs to be well-planned or else there will be a risk of
losing time and money. In addition to planning and skilled resources, test
automation requires sufficient preparation before carrying out the tests.
Compromising on any of these will lead to failure of the automated test.
So, test automation is a useful process as it saves time but it has its
disadvantages as well. It can be a huge success with skilled people, careful
plans and good preparation but it can cause a disaster as well.
Record and Playback Test
Record and Playback test comes under automated testing as it uses record and
playback tools to simply record a set of test activities and then playback
them repeatedly to carry out the testing process. In this testing method, a separate file is created for recording the
different keystrokes entered by the user along with the timing information.
One you’ve saved the keystrokes in the file, you can play the file against
an application to test it and a log file is maintained which is analyzed
accordingly to see if the application performs correctly or not. Record and
playback test speeds up the testing process as the process can be repeated a
number of times once you’ve recorded the testing steps appropriately.
It might seem pretty easy to carry out test cases with this method but there
are certain drawbacks associated with this method. Usually, the scripts used
for this purpose contain hard coded values which must be changed if some
change is made to the application. This adds the overhead of updating the
script. Also, the cost of maintaining these scripts is at a higher side. In
addition to this, all the tests must be re-recorded if some changes are made
to the application being tested. Record and playback method is something that doesn’t work well in a
real-world situation as changes are made to the application at regular
intervals to improve the performance and the reliability. However, if
intelligent tools are used then this method can work in some cases but it is
not one of the most efficient testing methods. At the end, record and playback test might work in some simple situations
but it is not the best method to go with when compared to other available
automation testing processes and tools. Software Interface Testing
Interface testing is one of the most important tests carried out during any
Quality Assurance process. Human beings interact with hardware via an
interface and interface testing is carried out to validate the functionality
and the accuracy of the interface to the written specifications. Several
companies use interface testing to ensure that customers don’t face any
problem in using the software once the software is delivered to them. The
need for the interface testing comes from the fact that developers want to
support more than one language in their products and this makes it very
important to understand the interface so as to offer a reliable, easy-to-use
interface to the customers around the world.
In interface testing, feedback from the end-user is very important as
developers introduce changes to the application on the basis of user’s
feedback. As a part of the interface testing, users are asked to complete a
specific task. This is done to see if the program’s flow matches with the
user’s natural strategy or not and how easy is it to navigate within the
application. Interface testing is also done to see which areas of the
application are first accessed while solving a problem and how easy it is to
use the software. While an end-user is testing the product, a moderator remains silent and
keeps documenting the user’s reaction to the application. At the end of the
session, users are interviewed and appropriate changes are made to the
application. The changes made are based on the feedback received from the
users. Interface testing allows developers to see the real-time reactions of
the users and make suitable changes so as to make the product more
user-friendly. So, interface testing helps developers to improve the
product’s overall acceptance and it also helps them to improve the user
experience. Manual Software Testing
Software testing is a process to test the product against the
specifications. It involves interaction with the product to detect the
available bugs and also to check the reliability of the product. In manual
software testing, a team of
testers interact manually with the application
so as to test it against the well-written specifications.
Various test combinations are prepared by the testers and tests are executed
manually with an aim of detecting bugs. The results are then compared with
the expected results. A deviation from the expected results is a sign of
presence of a bug and more test cases are formed to detect the bug. Manual
software testing helps the developers to improve the quality of the product
before it is delivered to the users. However, skilled testers are required
to perform the testing process.
Manual software testing is one of the best testing practices but it has some
disadvantages as well. Sufficient domain knowledge is required to understand
the requirements and the organization’s process. So, skilled testers with
sufficient domain knowledge are required for carrying out different types of
tests efficiently. Lack of skilled testers is one of the serious problems
associated with manual software testing. Manual software testing is a time
consuming and a costly activity as everything is performed manually.
Deciding the tests to validate the product is also a difficult task as there
are a number of test combinations which can be carried out to validate a
product. However, this won’t be a problem if you have experienced testers in
your testing team.
Despite of its drawbacks, manual software testing is still a recommended
activity as no other testing method can replace it. If you manage the test
activities accordingly and if you’re thorough in the test design and
documentation then you’ll definitely see great results with manual testing.
Black Box Testing
Black box testing is a type of testing in which the system is considered as
a ‘black-box’ and the testers don’t use their knowledge of internal
structure or code to validate the application against the specifications.
Black box testing is also termed as ‘behavioral testing’ as it mainly
focuses on the functionality of the system as a whole. However, the tests
can be non-functional as well. The black box testing method is applicable to
all the levels of the software testing i.e. unit, integration, system,
functional and acceptance testing.
Some of the common black box test design techniques are:
- Equivalence Partitioning. In this, the input domain of a program is divided into classes of data which
can then be used to derive the test cases.
- Boundary Value Analysis. In this technique, the extreme boundary values are chosen as the systems
have a tendency to fail on the boundary. The extreme boundary values include
minimum, maximum, typical, just inside/outside and error values.
Some of the advantages associated with black box testing are:
- Once the functional specifications are complete, it is fairly easy to
design the test cases.
- It is simple to check the contradictions present between the
specifications and the actual system.
- Even a non-technical person can perform black box testing as internal
structure knowledge is not required to carry out the black box testing.
Some of the disadvantages associated with black box testing are:
- Writing test cases is a slow process as it is difficult to identify all
the possible inputs in a limited time.
- Black box testing requires the test inputs to be from large sample space.
- Since the internal structure knowledge is not required to carry out the
black box testing, there’s every chance of having some un-identified paths
during the testing which can lead to degradation in the performance.
To conclude, black-box testing is recommended to test the functionality of
the system as a whole and it comes with its own set of advantages and
disadvantages.
|