L02 RE Test
L02 RE Test
L02 RE Test
The requirements for a system are the descriptions of what the system should do— the
services that it provides and the constraints on its operation.
Requirements should describe what the system should do, but not how it should do it.
The process of finding out, analyzing, documenting and checking these services and
constraints is called requirements engineering (RE).
Requirement Engineering
Two kinds of requirements based on the intended purpose and target audience:
User Requirements – what services the system is expected to provide to
system users and the constraints under which it must operate.
System Requirements – more detailed descriptions of the software system’s
functions, services, and operational constraints.
User requirements & System requirements
User requirements
High-level abstract requirements
Written as statements, in a natural language plus diagrams,
Services the system is expected to provide to system users
Constraints under which it must operate.
System requirements
Detailed description of system
Functions, services, and operational constraints.
The system requirements document (sometimes called a functional specification) should
define exactly what is to be implemented.
Requirement Engineering
▪ Functional requirements - statements of services the system should provide, how the
system should react to particular inputs, and how the system should behave in
particular situations.
▪ Non-functional requirements - These are constraints on the services or functions
offered by the system. They include timing constraints, constraints on the development
process, and constraints imposed by standards.
Functional Requirements
Describe functionality or system services
Depends on the type of software, expected users and the type of system where the software is
used
May be high-level statements of what the system should do
Should describe the system services in detail
Problems arise when-
▪ Requirements are not precise and interpreted in different ways by developers and users.
Requirements should be both
▪ Complete: include descriptions of all facilities required
▪ Consistent: should be no contradictions in descriptions
In practice, it is impossible to produce a complete and consistent requirements document
Non-functional Requirements
▪ Organizational requirements
▪ Requirements which are a consequence of organizational policies and procedures
▪ e.g. process standards used, implementation requirements, etc.
▪ External requirements
▪ Requirements which arise from factors which are external to the system and its development process
▪ e.g. interoperability requirements, legislative requirements, etc.
Non-Functional Requirements
▪ Challenge-
▪ Requirements are ever changing
▪ New requirements emerge-
▪ As the system being developed
▪ After it has gone into use
▪ Reasons why requirements change after the system's deployment:
▪ Business and technical environment always changes
▪ Customers and Users are two different group people
▪ Large systems usually have a diverse user community
▪ different requirements and priorities that may be conflicting or contradictory.
Testing
▪ Testing is intended
▪ to show that a program does what it is intended to do
▪ to discover program defects before it is put into use.
▪ Testing can reveal the presence of errors, but NOT their absence
▪ Testing is part of a more general verification and validation process
▪ Error
▪ the actual result deviates from the expected.
▪ Our expected results should (theoretically) come from our requirements definition.
▪ Most often, the goals/concerns/expectations of stakeholders serve as the testing basis.
Testing
▪ Test Case
▪ a set of inputs, execution conditions, and expected results for testing an object
▪ Complete test coverage is impossible, so testing focuses on mitigating the
largest risks.
▪ Where’s the greatest potential for loss?
▪ What are the sources of this risk?
▪ Start testing as early as possible – even with restricted resources and
time.
Goals of Software Testing
▪ To demonstrate to the developer and the customer that the software meets its requirements.
▪ Leads to validation testing:
▪ you expect the system to perform correctly using a given set of test cases that reflect the system's expected use.
▪ A successful test shows that the system operates as intended.
▪ To discover situations in which the behavior of the software is incorrect, undesirable or does
not conform to its specification.
▪ Leads to defect testing: the test cases are designed to expose defects; the test cases can be
deliberately obscure and need not reflect how the system is normally used.
▪ A successful test is a test that makes the system perform incorrectly and so exposes a defect in the
system.
Verification and Validation
Verification: Are we building the product right?
▪ The software should conform to its specification.
▪ Validation: Are we building the right product?
▪ The software should do what the user really requires.
The aim of verification is to check that the software meets its stated functional and non-
functional requirements.
The aim of validation is to ensure that the software meets the customer’s expectations.
Aims of Verification and Validation
▪ Establish confidence that the system is good enough for its intended use, which depends
on:
▪ Software purpose: the level of confidence depends on how critical the software is to an
organization.
▪ User expectations: users may have low expectations of certain kinds of software.
▪ Marketing environment: getting a product to market early may be more important than finding
defects in the program.
Three Stages of Testing
▪ Development testing: the system is tested during development to discover bugs and
defects.
▪ Release testing: a separate testing team test a complete version of the system before it is
released to users.
▪ User testing: users or potential users of a system test the system in their own
environment.