Tor Stålhane Requirements Specification and Testing Requirements testability.

38
Tor Stålhane Requirements Specification and Testing Requirements testability

Transcript of Tor Stålhane Requirements Specification and Testing Requirements testability.

Page 1: Tor Stålhane Requirements Specification and Testing Requirements testability.

Tor Stålhane

Requirements Specification and TestingRequirements testability

Page 2: Tor Stålhane Requirements Specification and Testing Requirements testability.

Testability definitionAccording to ISO 9126, testability is defined

as:

Testability: The capability of the software product to enable modified software to be validated.

 

NOTE - Values of this sub-characteristic may be altered by the modifications under consideration.

Page 3: Tor Stålhane Requirements Specification and Testing Requirements testability.

Testability concerns

Testability touches upon two areas of concern:• How easy is it to test the implementation?• How test-friendly is the requirement?

These two concerns are not independent and need to be considered together. We will first look at it from the requirements side.

Page 4: Tor Stålhane Requirements Specification and Testing Requirements testability.

Testability Three basic ways to check that we have achieved our

goals:

• Executing a test. Give input, observe and check output. A test can be a

– Black box test

– White box test

– Grey box test

• Run experiments

• Inspect the code and other artifacts

Usually, we will include all of these activities in the term testing

Page 5: Tor Stålhane Requirements Specification and Testing Requirements testability.

When to use what

The diagram on the next slide is a high level overview of when to use

• T – Tests. Input / output. Involves the computer system and peripherals.

• E – Experiments. Input / output but involves also the users.

• I – Inspections. Evaluation based on documents.

Page 6: Tor Stålhane Requirements Specification and Testing Requirements testability.

TDT 4242

Concrete requirements from high level goals

E T

EE

I I

E

ET

T

Page 7: Tor Stålhane Requirements Specification and Testing Requirements testability.

Testability

In order to be testable, a requirement needs to be stated in a precise way. For some requirements this is in place right from the start:When the ACC system is turned on, the

“Active” light on the dashboard shall be turned on.

In other cases we need to change a requirement to get a testable version. The system shall be easy to use.

Page 8: Tor Stålhane Requirements Specification and Testing Requirements testability.

Testability challenges - 1

Some requirements are more difficult to test than others. Problems might rise due to:

• Volume of tests needed, e.g. response time or storage capacity.

• Type of event to be tested, e.g. error handling or safety mechanisms.

• The required state of the system before testing, e.g. a rare failure state or a certain transaction history.

Page 9: Tor Stålhane Requirements Specification and Testing Requirements testability.

Testability challenges – 2 We can test the requirements at any level. The formulation of the test will depend on the level

Page 10: Tor Stålhane Requirements Specification and Testing Requirements testability.

Making a requirement testable – 1

One way to make requirements testable is the “Design by Objective” method introduced by Tom Gilb.

The method is simple in principle but is in some cases difficult to use. There are two problems

• The resulting tests can in some be rather extensive and thus quite costly.

• The method requires access to the system’s end users.

Page 11: Tor Stålhane Requirements Specification and Testing Requirements testability.

Making a requirement testable – 2

1. What do you mean by <requirement>? This will give us either (a) a testable requirement or (b) a set of testable and non-testable sub-requirements.

2. In case (a) we are finished. In case (b) we will repeat question 1 for each non-testable sub-requirement

Page 12: Tor Stålhane Requirements Specification and Testing Requirements testability.

Making a requirement testable – 3

Requirement: Reverse thrust may only be used, when the airplane is landed.

The important questions are

• “How do you define landed?”

• Who should you ask – e.g. pilots, airplane construction engineers, or airplane designers?

Page 13: Tor Stålhane Requirements Specification and Testing Requirements testability.

Requirements for testability – 1

First and foremost:

The customer needs to know what he wants and why he wants it. In some cases it is easier to test if the user actually has achieved his goal than to test that the system implements the requirement.

Unfortunately, the “why”-part is usually not stated as part of a requirement.

Page 14: Tor Stålhane Requirements Specification and Testing Requirements testability.

Requirements for testability – 2

Each requirement needs to be• Correct, i.e. without errors• Complete, i.e. has all possible situations

been covered? • Consistent, i.e. not in disagreement with

other requirements.• Clear, i.e. stated in a way that is easy to

read and understand – e.g. using a commonly known notation.

Page 15: Tor Stålhane Requirements Specification and Testing Requirements testability.

Requirements for testability – 3 Each requirement needs to be• Relevant, i.e. pertinent to the system’s

purpose and at the right level of restrictiveness.

• Feasible, i.e. possible to realize. If it is difficult to implement, is might also be difficult to test.

• Traceable, i.e. it must be possible to relate it to one or more– Software components– Process steps

Page 16: Tor Stålhane Requirements Specification and Testing Requirements testability.

Completeness

All possible situations must be covered.“If X then….”, “If Y then….” Must also consider

what will happen “If neither X nor Y…”

Automatic door opener – what is missing?If the door is closed and a person is detected

then send signal Open_Door. If no person is detected after 10 sec., send signal Close_Door.

Page 17: Tor Stålhane Requirements Specification and Testing Requirements testability.

Consistency

Consistency is a challenge since we, at least in the general case, need a complete overview of all requirements.

In most cases, we can make do with checking all requirements that are related to the same event, function or parameter.

Page 18: Tor Stålhane Requirements Specification and Testing Requirements testability.

Clear – 1 This is mainly a question of representation

such as choice of

• Diagram notation

• Description language

• Level of details

Who shall understand the requirement?

• Customers

• Developers, including hired-in consultants

• Testers

Page 19: Tor Stålhane Requirements Specification and Testing Requirements testability.

Clear – 2

Simple example:

Print the “accounts ledger” for all accounts

This requirement is perfectly clear for developers who are working in the banking business.

Other developers might experience some problems.

Page 20: Tor Stålhane Requirements Specification and Testing Requirements testability.

Relevant Two questions are important:

• Do we really need this requirement?

• Is it at the right level of strictness – i.e. not too strict and not too lax.

Only the second question is important for the tester.

• Too strict means more work for the developers

• Too lax means more work for the tester.

Page 21: Tor Stålhane Requirements Specification and Testing Requirements testability.

Feasible This question is really related to the contract but

we should also consider it here – can we really do this?

Testers can contribute to the feasibility question by asking how it should be tested. This will help / force everybody involved to make the requirement more clear and thus improve on the requirement.

Requirements that are difficult to tests are also usually difficult to implement – mainly because they are badly defined.

Page 22: Tor Stålhane Requirements Specification and Testing Requirements testability.

Some sound advice

The following set of advices on requirements and testability are quoted from Ludwig Consulting Services, LLC.

They are not a definition and not “the final words” on requirements testability. Instead, they should be used as a checklist.

That one of the following rules are not obeyed does not mean that the requirement is wrong. It should, however, be reviewed for potential problems.

Page 23: Tor Stålhane Requirements Specification and Testing Requirements testability.

Modifying PhrasesWords and phrases that include: • as appropriate• if practical• as required• to the extent necessary / practical. Their meaning • is subject to interpretation • make the requirement optional Phrases like "at a minimum" only ensure the minimum,

while "shall be considered" only requires the contractor to think about it.

Page 24: Tor Stålhane Requirements Specification and Testing Requirements testability.

Vague WordsVague words inject confusion. Examples of frequently

used vague verbs are: • manage • track• handle • flag

Information systems receive, store, calculate, report, and transmit data. Use words that express what the system must do.

Requirement: The system shall process ABC data to the extent necessary to store it in an appropriate form for future access.

Correction: The system shall edit ABC data.

Page 25: Tor Stålhane Requirements Specification and Testing Requirements testability.

Pronouns With No Reference

Example: It shall be displayed.

When this occurs, the writer is usually relying on a nearby requirement in the requirements document for the meaning of "it."

As requirements are assigned for implementation, they are often reordered and regrouped, and the defining requirement is no longer nearby.

Page 26: Tor Stålhane Requirements Specification and Testing Requirements testability.

Passive Voice

Requirements should be written in active voice, which clearly shows X does or provides Y.

Passive voice: Z shall be calculated.

Active voice: the system shall calculate Z.

Page 27: Tor Stålhane Requirements Specification and Testing Requirements testability.

Negative RequirementsEverything outside the system is what the system

does not do. Testing would have to continue forever to prove

that the system does not do something. State what the system does. Substitute an active

verb that expresses what the system must do. • Change "the system shall not allow X," to "the

system shall prevent Y." • Use the prefix "un," such as: The system shall

reject unauthorized users.

Page 28: Tor Stålhane Requirements Specification and Testing Requirements testability.

Assumptions and Comparisons – 1

The requirement "the system shall increase throughput by 15%" sounds testable, but isn't.

The assumption is "over current system throughput." By comparing to another system, the meaning of the requirement changes when the other system changes

Page 29: Tor Stålhane Requirements Specification and Testing Requirements testability.

Assumptions and Comparisons – 2 An example, sometimes found in requests for

proposals, is: "The system shall address the future needs of

users." The writer is probably thinking ahead to after the

contract is awarded. The requirement is meaningless because whenever it is read, it will point to the future.

A requirement on change management included in the project management processes, would make more sense than making it a requirement for the system.

Page 30: Tor Stålhane Requirements Specification and Testing Requirements testability.

Indefinite Pronouns

• All• Another• Any• Anybody• Anything• Each• Either• Every

• Everybody• Everyone• Everything• Few• Many • Most• Much

Indefinite pronouns are “stand in” for unnamed people or things, which makes their meaning subject to interpretation. Some of these may find their way into requirements:

Page 31: Tor Stålhane Requirements Specification and Testing Requirements testability.

The implementation

We will shortly look at four concerns related to implementation and testability:

• Autonomy of the system under test• Observability of the testing progress• Re-test efficiency • Test restartability

Page 32: Tor Stålhane Requirements Specification and Testing Requirements testability.

Autonomy – 1

How many other systems are needed to test this requirement?

It is best if it can be tested using only the SUT and the autonomy and testability is successively reduced as the number of other, necessary systems increase.

If the other systems needed are difficult to include at the present we will have to write more or less complex stubs.

Page 33: Tor Stålhane Requirements Specification and Testing Requirements testability.

Example – 1 Requirement: “If the door is closed and a

person is detected then send signal Open_Door”

• Sensors and actuators can be tested in the lab.

• The system with a simulated actuator: simulate a “person detected” signal on the sensor and check if a Open_Door signal is sent to the actuator.

Page 34: Tor Stålhane Requirements Specification and Testing Requirements testability.

Example – 2

We can build a complete system – door, sensor, door motor and software system and test by

• Letting persons approach the sensor• Check if the door opens

– Early enough– Fast enough

Page 35: Tor Stålhane Requirements Specification and Testing Requirements testability.

Observability How easy is it to observe the • Progress of the test execution?

This is important for tests that do not produce output – e.g. the requirement is only concerned with an internal state change or update of a database.

• Results of the test? Important for tests where the output is dependent on an internal state or database content.

Page 36: Tor Stålhane Requirements Specification and Testing Requirements testability.

Re-test effiencey

Retest efficiency is concerned with how easy it is to perform the “test – check – change – re-test” cycle.

This includes • Observability – observe the test result• Traceability – identify all tests related to the

change

Page 37: Tor Stålhane Requirements Specification and Testing Requirements testability.

Test restartability

This is mostly a question of check points in the code. How easy is it to

• Stop the test temporarily• Study current state and output• Start the test again from

– The point where it was stopped– Start

Page 38: Tor Stålhane Requirements Specification and Testing Requirements testability.

Final comments

That a requirement is testable does not necessarily mean that it is easy to test.

In order to have testable requirements it is important that

• The testers are involved right from the start of the project. It is difficult to add testability later.

• The tests are an integrated part of the requirement