Static Testing
Static test techniques provide a powerful way to improve the quality and productivity of software development.
The fundamental objective of
static testing is to improve the quality of software work products by
assisting engineers to recognize and fix their own defects early in the
software development process.
While static testing techniques will not solve all the
problems, they are enormously effective. Static techniques can improve
both quality and productivity by impressive factors.
Reviews and the Test Process
As indicated in the definition two approaches can be used to
achieve these objectives, static testing and dynamic testing.
With dynamic testing methods, software is executed using a set of input values
and its output is then examined and compared to what is expected.
During static testing, software work products are examined
manually, or with a set of tools, but not executed.
As a consequence, dynamic
testing can only be applied to software code.
Dynamic execution is applied as a technique to
detect defects and to determine quality attributes of the code. This
testing option is not applicable for the majority of the software work
products.
In principle all software work products can be tested using
static testing such as review techniques.
Dynamic testing and static
testing are complementary methods, as they tend to find different types of
defects effectively and efficiently.
Types of defects that are easier to find during static
testing are:
- deviations from standards
- missing requirements
- design defects
- non-maintainable code
- inconsistent interface specifications.
In contrast to dynamic testing, static testing finds defects
rather than failures.
In addition to finding defects, the objectives of reviews
are often also:
- informational,
- communicational and
- educational,
Reviews often represent project milestones, and support the
establishment of a baseline for a software product.
Reviews on software products have advantage such as :
- Since static testing can start early in the life cycle, early feedback on quality issues can be established, e.g.an early validation of user requirements and not just late in the life cycle during acceptance testing.
- By detecting defects at an early stage, rework costs are most often relatively low and thus a relatively cheap improvement of the quality of software products can be achieved.
- Since rework effort is substantially reduced, development productivity figures are likely to increase.
- The evaluation by a team has the additional advantage that there is an exchange of information between the participants.
- Static tests contribute to an increased awareness of quality issues.
- Static testing is a very suitable method for improving the quality of software work products. This applies primarily to the assessed products themselves, but it is also important that the quality improvement is not achieved once but has a more structural character.
- The feedback from the static testing process to the development process allows for process improvement, which supports the avoidance of similar errors being made in the future.
Nice post. Thanks for sharing. According to me both that is static and dynamic testing plays equally an important role in testing phase of the software. It depends on you which one suits your methodology. I would like to share an article that describes both and why they are important. Here's the link, please have a look - http://www.infotales.com/static-testing-vs-dynamic-testing-using-test-automation-tools
ReplyDeleteIt was a nice article on static testing tools. Thanks for sharing
ReplyDelete