STM - Unit 5
STM - Unit 5
UNIT 5
Page 2 of 7
SOFTWARE TESTING METHODOLOGIES
Tools for review and inspections: -
Since these tools are for static analysis on many items, some tools are designed to work with
specifications but there are far too many tools available that work exclusively with code. In this
category, the following types of tools are required:
Complexity analysis tools: - It is important for testers that complexity is analysed so that
testing time and resources can be estimated. The complexity analysis tools analyse the areas of
complexity and provide indication to testers.
Code comprehension: - These tools help in understanding dependencies, tracing program
logic, viewing graphical representations of the program, and identifying the dead code. All these
tasks enable the inspection team to analyse the code extensively.
Test data generator: - It automates the generation of test data based on a user defined format.
These tools can populate a database quickly based on a set of rules, whether data is needed for
functional testing, data-driven load testing, or performance testing.
Test case generator: - It automates the procedure of generating the test cases. But it works with a
requirement management tool which is meant to capture requirements information. Test case
generator uses the information provided by the requirement management tool and creates the test
cases. The test cases can also be generated with the information provided by the test engineer
regarding the previous failures that have been discovered by him. This information is entered into
this tool and it becomes the knowledge-based tool that uses the knowledge of historical figures to
generate test cases.
Capture/playback tools: - These tools record events (including keystrokes, mouse activity, and
display output) at the time of running the system and place the information into a script. The tool
can then replay the script to test the system.
Coverage analysis tools: - These tools automate the process of thoroughly testing the software
and provide a quantitative measure of the coverage of the system being tested. These tools are
helpful in the following:
Measuring structural coverage which enables the development and test teams to gain insight
into the effectiveness of tests and test suites.
Quantifying the complexity of the design
Help in specifying parts of the software which are not being covered
Measure the number of integration tests required to qualify the design
Help in producing integration tests
Measuring the number of integration tests that have not been executed
Measuring multiple levels of test coverage, including branch, condition, decision/condition,
multiple conditions, and path coverage.
Page 3 of 7
SOFTWARE TESTING METHODOLOGIES
Memory testing tools: - These tools verify that an application is properly using its memory
resources. They check whether an application is:
Not releasing memory allocated to it „
Overwriting/over reading array bounds „
Reading and using uninitialized memory
Test management tools: - Test management tools try to cover most of the activities in the testing
life cycle. These tools may cover planning, analysis, and design. Some test management tools such
as Rational’s TestStudio are integrated with requirement and configuration management and defect
tracking tools, in order to simplify the entire testing life cycle
Network-testing tools: - There are various applications running in the clientserver environments.
However, these applications pose new complexity to the testing effort and increases potential for
errors due to inter-platform connectivity. Therefore, these tools monitor, measure, test, and
diagnose performance across an entire network including the following:
Cover the performance of the server and the network
Overall system performance
Functionality across server, client, and the network
Performance testing tools: - There are various systems for which performance testing is a must
but this becomes a tedious job in real-time systems. Performance testing tools help in measuring
the response time and load capabilities of a system.
1. Match the tool to its appropriate use: - Before selecting the tool, it is necessary to know its
use. A tool may not be a general one or may not cover many features. Rather, most of the tools
are meant for specific tasks. Therefore, the tester needs to be familiar with both the tool and its
uses in order to make a proper selection.
2. Select the tool to its appropriate SDLC phase: - Since the methods of testing changes
according to the SDLC phase, the testing tools also change. Therefore, it is necessary to choose
the tool according to the SDLC phase, in which testing is to be done.
3. Select the tool to the skill of the tester: - The individual performing the test must select a tool
that conforms to his skill level. For example, it would be inappropriate for a user to select a tool
that requires programming skills when the user does not possess those skills.
4. Select a tool which is affordable: - Tools are always costly and increase the cost of the project.
Therefore, choose the tool which is within the budget of the project. Increasing the budget of the
project for a costlier tool is not desired. If the tool is underutilization, then added cost will have
no benefits to the project. Thus, once you are sure that a particular tool will really help the
project, then only go for it otherwise it can be managed without a tool also.
5. Determine how many tools are required for testing the system: - A single tool generally
cannot satisfy all test requirements. It may be possible that many test tools are required for the
entire project. Therefore, assess the tool as per the test requirements and determine the
number and type of tools required.
Page 4 of 7
SOFTWARE TESTING METHODOLOGIES
6. Select the tool after examining the schedule of testing: - First, get an idea of the entire
schedule of testing activities and then decide whether there is enough time for learning the
testing tool and then performing automation with that tool. If there is not enough time to
provide training on the tool, then there is no use of automation.
1. Automated script development: - Automated test tools do not create test scripts. Therefore, a
significant time is needed to program the tests. Scripts are themselves programming languages.
Thus, automating test execution requires programming exercises.
2. Training is required: - It is not necessary that the tester will be aware of all the tools and can
use them directly. He may require training regarding the tool, otherwise it ends up on the shelf
or implemented inefficiently. Therefore, it becomes necessary that in a new project, cost of
training on the tools should also be included in the project budget and schedule.
4. Learning curve for the tools: - There is a learning curve in using any new tool. For example,
test scripts generated by the tool during recording must be modified manually, requiring tool-
scripting knowledge in order to make the script robust, reusable, and maintainable.
5. Testing tools can be intrusive: - It may be necessary that for automation some tools require
that a special code is inserted in the system to work correctly and to be integrated with the
testing tools. These tools are known as intrusive tools which require addition of a piece of code
in the existing software system. Intrusive tools pose the risk that defects introduced by the code
inserted specifically to facilitate testing could interfere with the normal functioning of the
system.
6. Multiple tools are required: - As discussed earlier, it may be possible that your requirement is
not satisfied with just one tool for automation. In such a case, you have to go for many tools
which incur a lot of cost.
The guidelines to be followed if you have planned for automation in testing are
1. Consider building a tool instead of buying one, if possible: - It may not be possible every
time. But if the requirement is small and sufficient resources allow, then go for building the tool
instead of buying, after weighing the pros and cons. Whether to buy or build a tool requires
management commitment, including budget and resource approvals.
2. Test the tool on an application prototype: - While purchasing the tool, it is important to
verify that it works properly with the system being developed. However, it is not possible as the
Page 5 of 7
SOFTWARE TESTING METHODOLOGIES
system being developed is often not available. Therefore, it is suggested that if possible, the
development team can build a system prototype for evaluating the testing tool.
3. Not all the tests should be automated: - Automated testing is an enhancement of manual
testing, but it cannot be expected that all test on a project can be automated. It is important to
decide which parts need automation before going for tools. Some tests are impossible to
automate, such as verifying a printout. It has to be done manually.
4. Select the tools according to organizational needs: - Do not buy the tools just for their
popularity or to compete with other organizations. Focus on the needs of the organization and
know the resources (budget, schedule) before choosing the automation tool.
6. Automate the regression tests whenever feasible: - Regression testing consumes a lot of
time. If tools are used for this testing, the testing time can be reduced to a greater extent.
Therefore, whenever possible, automate the regression test cases.
Segue Software’s SilkTest: - This tool is also for functional/regression testing. It supports
4Test as a scripting language which is an object-oriented scripting language. SilkTest has a
provision for customized in-built recovery system which helps in continuing the automated
testing even if there is some failure in between.
IBM Rational SQA Robot: - It is another powerful tool for functional/regression testing.
Synchronization of test cases with a default delay of 20 seconds is also available.
Mercury Interactive’s LoadRunner: - This tool is used for performance and load testing of a
system. Generally, the tool is helpful for client/server applications of various parameters with
their actual load like response time, the number of users, etc. The major benefit of using this tool
is that it creates virtual users on a single machine and tests the system on various parameters.
Thus, performance and load testing is done with minimum infrastructure.
Page 6 of 7
SOFTWARE TESTING METHODOLOGIES
Apache’s JMeter: -This is an open-source software tool used for performance and load testing.
REVIEW QUESTIONS: -
1. What is the need of automating the testing activities?
2. What is the difference between static and dynamic tools?
3. Analyse and report which tools are available for test planning?
4. Analyse and report which tools are available for test design?
5. What are the guidelines for selecting a testing tool?
6. What are the costs incurred in adopting a testing tool?
7. Is a single testing tool sufficient for all testing activities?
8. Make a list of some important testing tools which are open-source on the Internet. Use them for
testing your software.
Page 7 of 7