Advantages of Pair Programming
1) It supports the idea of collective ownership and responsibility for the
system.
Individuals are not held responsible for problems with the code.
Instead, the team has collective responsibility for resolving these
problems.
2) It acts as an informal review process because each line of code is
looked at by at least two people (Code inspections).
3) It helps support refactoring, which is a process of software improvement.
Where pair programming and collective ownership are used, others
benefit immediately from the refactoring so they are likely to support
the process.
1
Chapter 3 – Agile Software Development
Part 2
Chapter 4 Requirements engineering 2
Topics covered
Testing in XP
Agile project management
Scaling agile methods
30/10/2014 Chapter 3 Agile Software Development 3
Testing in Extreme Programming
4
Test-first development
Testing is central to XP and XP has developed an approach
where the program is tested after every change has been made.
XP testing features:
Test-first development.
Incremental test development from scenarios.
User involvement in test development and validation.
Automated test harnesses are used to run all component tests each
time that a new release is built.
Note: In software engineering, a harness is a framework or
tool that provides an infrastructure for testing or evaluating
software components or systems. It is designed to facilitate
the execution, monitoring, and analysis of tests or
experiments.
It is impossible to test code with many classes and
methods manually. 5
Search activity
AI in Testing
The application of AI techniques and technologies to
enhance and automate various aspects of software
testing
6
Test-driven development
Instead of writing some code and then writing tests for that
code, you write the tests before you write the code
• Writing tests before code clarifies the requirements to be
implemented.
Tests are written as programs rather than data so that
they can be executed automatically. The test includes
a check that it has executed correctly.
Usually relies on a testing framework such as Junit.
All previous and new tests are run automatically when
new functionality is added, thus checking that the new
functionality has not introduced errors.
https://www.youtube.com/watch?v=eILy4p99ac8
7
Examples of popular testing frameworks used in
software development
1. JUnit: a widely-used testing framework for Java.
2. NUnit: a unit-testing framework for .NET applications.
3. Pytest: a testing framework for Python that emphasizes simplicity and ease of use.
It provides a concise syntax for writing tests and offers powerful features
4. Selenium: Selenium is a popular testing framework for web applications. It allows
automated testing of web browsers across different platforms and supports
multiple programming languages, including Java, C#, Python, and Ruby.
Search for other frameworks ……
8
Test-Driven Development (TDD)
9
Customer involvement
The role of the customer in the testing process is to help
develop acceptance tests for the stories that are to be
implemented in the next release of the system.
The customer who is part of the team writes tests as
development proceeds. All new code is therefore validated to
ensure that it is what the customer needs.
However, people adopting the customer role have limited time
available and so cannot work full-time with the development
team. They may feel that providing the requirements was
enough of a contribution and so may be reluctant to get
involved in the testing process.
10
Test case description for dose checking
30/10/2014 Chapter 3 Agile Software Development 11
Test automation
Explain test automation???
Test automation means that tests are written as executable
components before the task is implemented
These testing components should be stand-alone, should simulate the
submission of input to be tested and should check that the result meets
the output specification. An automated test framework (e.g. Junit) is a
system that makes it easy to write executable tests and submit a set of
tests for execution.
Advantage? As testing is automated, there is always a set of
tests that can be quickly and easily executed
Whenever any functionality is added to the system, the tests can be run
and problems that the new code has introduced can be caught
immediately.
It is impossible to test code with many classes and
methods manually. 12
XP testing difficulties
Programmers prefer programming to testing and
sometimes they take short cuts when writing tests. For
example, they may write incomplete tests that do not check
for all possible exceptions that may occur.
Some tests can be very difficult to write incrementally. For
example, in a complex user interface, it is often difficult to
write unit tests for the code that implements the ‘display
logic’ and workflow between screens.
It difficult to judge the completeness of a set of tests. Although
you may have a lot of system tests, your test set may not
provide complete coverage.
13
Next Lecture
Agile Project Management
Scaling Agile Methods
14
Agile Project Management
15
Agile project management
The principal responsibility of software project managers is to
manage the project so that the software is delivered on time and
within the planned budget for the project.
The standard approach to project management is plan-driven.
Managers draw up a plan for the project showing what should be
delivered, when it should be delivered and who will work on the
development of the project deliverables.
Agile project management requires a different approach, which is
adapted to incremental development and the practices used in agile
methods.
agile development has to be managed
16
Scrum
What is scrum?
Scrum is a general agile method but its focus is on
managing iterative development rather than specific
agile practices. [Agile management framework ]
There are three phases in Scrum.
The initial phase is an outline planning phase where you
establish the general objectives for the project and design the
software architecture.
This is followed by a series of sprint cycles, where each cycle
develops an increment of the system.
The project closure phase wraps up the project, completes
required documentation such as system help frames and user
manuals and assesses the lessons learned from the project.
30/10/2014 Chapter 3 Agile Software Development 17
Discussion
Scrum is a management framework.
Scrum does not prescribe the use of programming practices
such as pair programming and test-first development.
It can therefore be used with more technical agile approaches,
such as XP, to provide a management framework for the project
18
The scrum Process
The innovative feature of Scrum is its central phase, namely the sprint cycles
The work to be done is assessed, features are selected for development,
and the software is implemented. At the end of a sprint, the completed
functionality is delivered to stakeholders (review)
19
The Sprint cycle
Sprints are fixed length, normally 2–4 weeks. They
correspond to the development of a release of the system in
XP.
The starting point for planning is the product backlog
(what is), which is the list of work to be done on the project.
The selection phase involves all of the project team who
work with the customer to select the features and
functionality to be developed during the sprint.
20
The Sprint cycle
Once these are agreed, the team organize themselves to develop the
software. Short daily meetings involving all team members are held to
review progress and if necessary, reprioritize work. During this stage the
team is isolated from the customer and the organization, with all
communications channelled through the so-called
‘Scrum master’.
The role of the Scrum master is to protect the development team from
external distractions.
At the end of the sprint, the work done is reviewed and presented to
stakeholders. The next sprint cycle then begins.
21