IT project
failure has become a very common factor during the past 10 years; statistics
show that the root causes of many unsuccessful projects are due to poor
requirements. James Martin shows in his study that 56% percent of bugs
identified in projects are errors introduced in the requirements stage (Borland Software Corporation, 2005); therefore,
getting the requirement right is essential. This
can be achieved by requirements based testing approach, this essay is a
discussion on what is requirement based testing, why it is important, how can
it be applied to reduce bugs in software products, and what benefits can be
gained.
“Requirements
Based Testing is the practice of aligning requirements at the beginning of a
software project with quality expectations for testing –to ensure final
deliverables consistently meet business needs.”
(Alho, 2007). The above definition implies that using requirement based testing
practices help ensure that the final outcome of the software consistently meets the business needs. Requirement based testing address two major concepts,
first it focuses on validating whether the requirments are correct and makes
sure that the requirements are up to the standards (ie complete,unambigous and
logically consistent ), secondly it designs a set of test cases from the
requirements. The design and the code should fully meet those requirements. This
can be achived using black box testing. Therefore RBT can be defined as a
methodology which defines set of rules to test the requirements and maximize
the software quality by developing the right product.
However one can come
to the conclution that the RBT process is tredious aditional work when
developing a software product. But RBT is important because requirements are a
critical factor when developing a software and you must get it right from the
beginning of the development life cycle. Research has shown that most software
failures are due to the following reasons
- Requirements and specifications are incomplete.
- Requirements and specifications change too often.
- There is a lack of user input (to requirements). (Mogyorodi, 2003)
All
the above mention reasons are circled around requirements, therefore it is a
critical need to verify and validate the requirements from the requirement
stage itself.
Early
bug detection reduces the cost of bug fixing; as mentioned above most root
cause of bugs are due to inadequate requirements. According to the above definition of RBT, it improves
the requirement and reduces software bugs from the requirement stage itself.
This clarifies rather than following the traditional approach of testing which
is performed after the code is delivered; therefore, it is important to follow
the RBT process to eliminate software bugs and increase software quality.
To understand the RBT process it is
important to know the RBT methodology. RBT methodology can be defined in 12 steps (Mogyorodi, 2003). Out of the 12 steps, five of the most
important steps are taken in to consideration in-order to understand the effectiveness
of the RBT process.
1.
Validation of requirements against business
objectives – this ensures that the requirements satisfies the objectives of the
project and meets the business need of the project.
2.
Review of requirements by stakeholders- refines the
requirements by getting feedbacks from the stakeholder before going to the next
phase.
3.
Development of use-cases - Map
requirements against a task-oriented or interaction-oriented view of the system
to make sure the requirements are complete.
4.
Application of language analysis techniques- Identify ambiguous,
unclear or inconsistent phrases in the requirements and fix them to guarantee
the consistency and clarity of the requirements.
5. Logical consistency checks
performed and test cases designed. - Design test cases that are
100% equivalent to the functionality in the requirements.
(Mogyorodi, 2003)
Figure 1: Requirements Based Testing process flow (Aharonovitz,
2008)
Figure 1 show
the actives which are undertaken by the RBT process. This shows the goals of
RBT using separate boxes. Arrow heads direct how they can be achieved.
business
objectives, by domain experts/business users, and map the requirements against
use cases ambiguity analysis of requirements. (Aharonovitz, 2008)
Designing
logical test cases. This can be achieved by expressing the requirements using
cause-effect cards, generation of test cases, and the use of truth tables or
unique path detention can derive the equivalent test cases for the requirements
to optimize the number of test cases. (Aharonovitz, 2008)
The next two
goals, ensuring the quality of the test cases, and the quality of design and
code can be achieved by reviewing the test cases by requirement authors, domain
experts, end users and also by reviewing test cases by designers and developers
in the code review process.
Last goal of
the RBT process is completing and executing tests which ensure that the
actual behavior of the system is the expected behavior and meets the business
needs. (Borland Software Corporation., 2006)
Moty Aharonovitz,
senior director of Product Strategy at Borland Software, states that
traceability plays a critical role in the RBT process; he claims that
maintaining traceability information between requirements, test-cases and tests
is crucial. This determines which test cases or tests should be changed when a
specific requirement changes, and the impact of change. (Aharonovitz, 2008)
In conclusion RBT
process and activities describe that RBT depends on two major functionalities 1)
Quality assured requirements and 2) test cases. Using the following
functionalities throughout the development life cycle development teams can
guarantee that they are building the right product with the lowest defects.
Corporation., 2006). By using an automated RBT
process it would ease the software development cycle, and the final outcome
will avoid downstream defects and project delays.
From the above
discussion it is a fact that when a company follows RBT methodology, they will be
rewarded with better products and profit. Considering the facts discussed above
requirement based testing can be dived in to three forms from the business
point of view; 1) Business benefits, 2) Operational benefits and 3) financial
benefits.
According to the
RBT methodology as discussed above each of the categorized benefits are analyzed
using the RBT functionalities. Beginning with the business benefits which can
be achieved by clear, complete and correct requirements which lead to
developing what the customer really wants; thus resulting in higher customer
satisfaction and improved market agility. Operational benefits focus on
benefits while developing the software. As discussed above RBT has a well
structured methodology to improve tractability and visibility of the
requirements which eases the development cycle. This will optimize the QA
activities ensuring the quality of the product. Furthermore it enhances the
software quality by introducing requirements test coverage which will ensure
all requirements are satisfied by the end product. Furthermore financial benefits
can be looked at from the revenue prospect of an organization. By following the
RBT process and activities development teams can reduce compliance risks and
improve impact analysis. Moreover the most important aspect of financial
benefits are related to profit; by
identifying the defects early and fixing them in a very early stages it reduces
re-work, helping save time and money which will leads to gaining more profit.
Although there are many advantages
of using the RBT process in the development life cycle Robin F. Goldsmith, JD
claims that there can be draw backs associated with RBT process as well. He
states that there are limitations imposed by inadequately defined requirements,
assessing the extent to which the requirements are complete, the appropriate
level of test case details, and inclusion of requirements based unit tests by
developers. However he also states the above pitfalls can be overcome by
identifying the strengths and often unrecognized weakness of requirement base
tests, and understanding the importance of testing based on business as well as
system requirements and discovering how to identify more of the necessary but
often overlooked test cases (Goldsmith, 2008).
In conclusion the
requirements based testing approach is a very important process to be followed
due to the fact that many IT project failures are associated with requirements
and requirement management. The requirements based testing process introduces a
well formed procedure from the requirement gathering stage to the deploying
stage of the product. It has an effective methodology to gather requirements
without flaws, and defines how to test the requirements properly in-order to
ensure that the right requirements are captured. At the same time it has
methods to keep track of changing requirements, and ways to define requirement
based test cases including maximum coverage with a minimum number of test cases.
It is a fact that by following the above mentioned process most of the software
bugs can be identified early, requirements specifications can be produced
clearly, and requirements changes can be managed effectively. Even though there
can be pit falls in the RBT process, if it is followed properly one can avoid many
draw backs and gain a lot of benefits from it.